Commit db983c1144884cab10d6397532f4bf05eb0c01d2

Authored by Alexey Dobriyan
Committed by David S. Miller
1 parent 7067802e26

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

... ... @@ -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);
... ... @@ -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);