diff options
-rw-r--r-- | include/net/ndisc.h | 8 | ||||
-rw-r--r-- | net/ipv6/ndisc.c | 7 |
2 files changed, 8 insertions, 7 deletions
diff --git a/include/net/ndisc.h b/include/net/ndisc.h index ec48f42db5ed..745bf741e029 100644 --- a/include/net/ndisc.h +++ b/include/net/ndisc.h | |||
@@ -127,13 +127,19 @@ static int ndisc_addr_option_pad(unsigned short type) | |||
127 | } | 127 | } |
128 | } | 128 | } |
129 | 129 | ||
130 | static inline int ndisc_opt_addr_space(struct net_device *dev) | ||
131 | { | ||
132 | return NDISC_OPT_SPACE(dev->addr_len + | ||
133 | ndisc_addr_option_pad(dev->type)); | ||
134 | } | ||
135 | |||
130 | static inline u8 *ndisc_opt_addr_data(struct nd_opt_hdr *p, | 136 | static inline u8 *ndisc_opt_addr_data(struct nd_opt_hdr *p, |
131 | struct net_device *dev) | 137 | struct net_device *dev) |
132 | { | 138 | { |
133 | u8 *lladdr = (u8 *)(p + 1); | 139 | u8 *lladdr = (u8 *)(p + 1); |
134 | int lladdrlen = p->nd_opt_len << 3; | 140 | int lladdrlen = p->nd_opt_len << 3; |
135 | int prepad = ndisc_addr_option_pad(dev->type); | 141 | int prepad = ndisc_addr_option_pad(dev->type); |
136 | if (lladdrlen != NDISC_OPT_SPACE(dev->addr_len + prepad)) | 142 | if (lladdrlen != ndisc_opt_addr_space(dev)) |
137 | return NULL; | 143 | return NULL; |
138 | return lladdr + prepad; | 144 | return lladdr + prepad; |
139 | } | 145 | } |
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 49dfc2a73ee0..82ccf0a43063 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c | |||
@@ -143,17 +143,12 @@ struct neigh_table nd_tbl = { | |||
143 | .gc_thresh3 = 1024, | 143 | .gc_thresh3 = 1024, |
144 | }; | 144 | }; |
145 | 145 | ||
146 | static inline int ndisc_opt_addr_space(struct net_device *dev) | ||
147 | { | ||
148 | return NDISC_OPT_SPACE(dev->addr_len + ndisc_addr_option_pad(dev->type)); | ||
149 | } | ||
150 | |||
151 | static u8 *ndisc_fill_addr_option(u8 *opt, int type, void *data, | 146 | static u8 *ndisc_fill_addr_option(u8 *opt, int type, void *data, |
152 | struct net_device *dev) | 147 | struct net_device *dev) |
153 | { | 148 | { |
154 | int pad = ndisc_addr_option_pad(dev->type); | 149 | int pad = ndisc_addr_option_pad(dev->type); |
155 | int data_len = dev->addr_len; | 150 | int data_len = dev->addr_len; |
156 | int space = NDISC_OPT_SPACE(data_len + pad); | 151 | int space = ndisc_opt_addr_space(dev); |
157 | 152 | ||
158 | opt[0] = type; | 153 | opt[0] = type; |
159 | opt[1] = space>>3; | 154 | opt[1] = space>>3; |