diff options
Diffstat (limited to 'net/ipv6/mip6.c')
-rw-r--r-- | net/ipv6/mip6.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/net/ipv6/mip6.c b/net/ipv6/mip6.c index e1767aec3334..6a137355311c 100644 --- a/net/ipv6/mip6.c +++ b/net/ipv6/mip6.c | |||
@@ -208,14 +208,15 @@ static int mip6_destopt_reject(struct xfrm_state *x, struct sk_buff *skb, | |||
208 | { | 208 | { |
209 | struct net *net = xs_net(x); | 209 | struct net *net = xs_net(x); |
210 | struct inet6_skb_parm *opt = (struct inet6_skb_parm *)skb->cb; | 210 | struct inet6_skb_parm *opt = (struct inet6_skb_parm *)skb->cb; |
211 | const struct flowi6 *fl6 = &fl->u.ip6; | ||
211 | struct ipv6_destopt_hao *hao = NULL; | 212 | struct ipv6_destopt_hao *hao = NULL; |
212 | struct xfrm_selector sel; | 213 | struct xfrm_selector sel; |
213 | int offset; | 214 | int offset; |
214 | struct timeval stamp; | 215 | struct timeval stamp; |
215 | int err = 0; | 216 | int err = 0; |
216 | 217 | ||
217 | if (unlikely(fl->flowi_proto == IPPROTO_MH && | 218 | if (unlikely(fl6->flowi6_proto == IPPROTO_MH && |
218 | fl->fl6_mh_type <= IP6_MH_TYPE_MAX)) | 219 | fl6->uli.mht.type <= IP6_MH_TYPE_MAX)) |
219 | goto out; | 220 | goto out; |
220 | 221 | ||
221 | if (likely(opt->dsthao)) { | 222 | if (likely(opt->dsthao)) { |
@@ -240,14 +241,14 @@ static int mip6_destopt_reject(struct xfrm_state *x, struct sk_buff *skb, | |||
240 | sizeof(sel.saddr)); | 241 | sizeof(sel.saddr)); |
241 | sel.prefixlen_s = 128; | 242 | sel.prefixlen_s = 128; |
242 | sel.family = AF_INET6; | 243 | sel.family = AF_INET6; |
243 | sel.proto = fl->flowi_proto; | 244 | sel.proto = fl6->flowi6_proto; |
244 | sel.dport = xfrm_flowi_dport(fl, &fl->u.ip6.uli); | 245 | sel.dport = xfrm_flowi_dport(fl, &fl6->uli); |
245 | if (sel.dport) | 246 | if (sel.dport) |
246 | sel.dport_mask = htons(~0); | 247 | sel.dport_mask = htons(~0); |
247 | sel.sport = xfrm_flowi_sport(fl, &fl->u.ip6.uli); | 248 | sel.sport = xfrm_flowi_sport(fl, &fl6->uli); |
248 | if (sel.sport) | 249 | if (sel.sport) |
249 | sel.sport_mask = htons(~0); | 250 | sel.sport_mask = htons(~0); |
250 | sel.ifindex = fl->flowi_oif; | 251 | sel.ifindex = fl6->flowi6_oif; |
251 | 252 | ||
252 | err = km_report(net, IPPROTO_DSTOPTS, &sel, | 253 | err = km_report(net, IPPROTO_DSTOPTS, &sel, |
253 | (hao ? (xfrm_address_t *)&hao->addr : NULL)); | 254 | (hao ? (xfrm_address_t *)&hao->addr : NULL)); |