Commit db983c1144884cab10d6397532f4bf05eb0c01d2
Committed by
David S. Miller
1 parent
7067802e26
Exists in
master
and in
39 other branches
netns xfrm: KM reporting in netns
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 4 changed files with 8 additions and 8 deletions Side-by-side Diff
include/net/xfrm.h
... | ... | @@ -552,7 +552,7 @@ |
552 | 552 | struct xfrm_policy *(*compile_policy)(struct sock *sk, int opt, u8 *data, int len, int *dir); |
553 | 553 | int (*new_mapping)(struct xfrm_state *x, xfrm_address_t *ipaddr, __be16 sport); |
554 | 554 | int (*notify_policy)(struct xfrm_policy *x, int dir, struct km_event *c); |
555 | - int (*report)(u8 proto, struct xfrm_selector *sel, xfrm_address_t *addr); | |
555 | + int (*report)(struct net *net, u8 proto, struct xfrm_selector *sel, xfrm_address_t *addr); | |
556 | 556 | int (*migrate)(struct xfrm_selector *sel, u8 dir, u8 type, struct xfrm_migrate *m, int num_bundles, struct xfrm_kmaddress *k); |
557 | 557 | }; |
558 | 558 | |
... | ... | @@ -1471,7 +1471,7 @@ |
1471 | 1471 | |
1472 | 1472 | extern int km_new_mapping(struct xfrm_state *x, xfrm_address_t *ipaddr, __be16 sport); |
1473 | 1473 | extern void km_policy_expired(struct xfrm_policy *pol, int dir, int hard, u32 pid); |
1474 | -extern int km_report(u8 proto, struct xfrm_selector *sel, xfrm_address_t *addr); | |
1474 | +extern int km_report(struct net *net, u8 proto, struct xfrm_selector *sel, xfrm_address_t *addr); | |
1475 | 1475 | |
1476 | 1476 | extern void xfrm_input_init(void); |
1477 | 1477 | extern int xfrm_parse_spi(struct sk_buff *skb, u8 nexthdr, __be32 *spi, __be32 *seq); |
net/ipv6/mip6.c
... | ... | @@ -205,6 +205,7 @@ |
205 | 205 | |
206 | 206 | static int mip6_destopt_reject(struct xfrm_state *x, struct sk_buff *skb, struct flowi *fl) |
207 | 207 | { |
208 | + struct net *net = xs_net(x); | |
208 | 209 | struct inet6_skb_parm *opt = (struct inet6_skb_parm *)skb->cb; |
209 | 210 | struct ipv6_destopt_hao *hao = NULL; |
210 | 211 | struct xfrm_selector sel; |
... | ... | @@ -247,7 +248,7 @@ |
247 | 248 | sel.sport_mask = htons(~0); |
248 | 249 | sel.ifindex = fl->oif; |
249 | 250 | |
250 | - err = km_report(IPPROTO_DSTOPTS, &sel, | |
251 | + err = km_report(net, IPPROTO_DSTOPTS, &sel, | |
251 | 252 | (hao ? (xfrm_address_t *)&hao->addr : NULL)); |
252 | 253 | |
253 | 254 | out: |
net/xfrm/xfrm_state.c
... | ... | @@ -1833,7 +1833,7 @@ |
1833 | 1833 | EXPORT_SYMBOL(km_migrate); |
1834 | 1834 | #endif |
1835 | 1835 | |
1836 | -int km_report(u8 proto, struct xfrm_selector *sel, xfrm_address_t *addr) | |
1836 | +int km_report(struct net *net, u8 proto, struct xfrm_selector *sel, xfrm_address_t *addr) | |
1837 | 1837 | { |
1838 | 1838 | int err = -EINVAL; |
1839 | 1839 | int ret; |
... | ... | @@ -1842,7 +1842,7 @@ |
1842 | 1842 | read_lock(&xfrm_km_lock); |
1843 | 1843 | list_for_each_entry(km, &xfrm_km_list, list) { |
1844 | 1844 | if (km->report) { |
1845 | - ret = km->report(proto, sel, addr); | |
1845 | + ret = km->report(net, proto, sel, addr); | |
1846 | 1846 | if (!ret) |
1847 | 1847 | err = ret; |
1848 | 1848 | } |
net/xfrm/xfrm_user.c
... | ... | @@ -2520,10 +2520,9 @@ |
2520 | 2520 | return -EMSGSIZE; |
2521 | 2521 | } |
2522 | 2522 | |
2523 | -static int xfrm_send_report(u8 proto, struct xfrm_selector *sel, | |
2524 | - xfrm_address_t *addr) | |
2523 | +static int xfrm_send_report(struct net *net, u8 proto, | |
2524 | + struct xfrm_selector *sel, xfrm_address_t *addr) | |
2525 | 2525 | { |
2526 | - struct net *net = &init_net; | |
2527 | 2526 | struct sk_buff *skb; |
2528 | 2527 | |
2529 | 2528 | skb = nlmsg_new(xfrm_report_msgsize(), GFP_ATOMIC); |