Lines Matching refs:net

59 	possible_net_t		net;  member
108 static struct mr6_table *ip6mr_new_table(struct net *net, u32 id);
111 static void ip6_mr_forward(struct net *net, struct mr6_table *mrt,
125 #define ip6mr_for_each_table(mrt, net) \ argument
126 list_for_each_entry_rcu(mrt, &net->ipv6.mr6_tables, list)
128 static struct mr6_table *ip6mr_get_table(struct net *net, u32 id) in ip6mr_get_table() argument
132 ip6mr_for_each_table(mrt, net) { in ip6mr_get_table()
139 static int ip6mr_fib_lookup(struct net *net, struct flowi6 *flp6, in ip6mr_fib_lookup() argument
149 err = fib_rules_lookup(net->ipv6.mr6_rules_ops, in ip6mr_fib_lookup()
227 static int __net_init ip6mr_rules_init(struct net *net) in ip6mr_rules_init() argument
233 ops = fib_rules_register(&ip6mr_rules_ops_template, net); in ip6mr_rules_init()
237 INIT_LIST_HEAD(&net->ipv6.mr6_tables); in ip6mr_rules_init()
239 mrt = ip6mr_new_table(net, RT6_TABLE_DFLT); in ip6mr_rules_init()
249 net->ipv6.mr6_rules_ops = ops; in ip6mr_rules_init()
259 static void __net_exit ip6mr_rules_exit(struct net *net) in ip6mr_rules_exit() argument
264 list_for_each_entry_safe(mrt, next, &net->ipv6.mr6_tables, list) { in ip6mr_rules_exit()
268 fib_rules_unregister(net->ipv6.mr6_rules_ops); in ip6mr_rules_exit()
272 #define ip6mr_for_each_table(mrt, net) \ argument
273 for (mrt = net->ipv6.mrt6; mrt; mrt = NULL)
275 static struct mr6_table *ip6mr_get_table(struct net *net, u32 id) in ip6mr_get_table() argument
277 return net->ipv6.mrt6; in ip6mr_get_table()
280 static int ip6mr_fib_lookup(struct net *net, struct flowi6 *flp6, in ip6mr_fib_lookup() argument
283 *mrt = net->ipv6.mrt6; in ip6mr_fib_lookup()
287 static int __net_init ip6mr_rules_init(struct net *net) in ip6mr_rules_init() argument
289 net->ipv6.mrt6 = ip6mr_new_table(net, RT6_TABLE_DFLT); in ip6mr_rules_init()
290 return net->ipv6.mrt6 ? 0 : -ENOMEM; in ip6mr_rules_init()
293 static void __net_exit ip6mr_rules_exit(struct net *net) in ip6mr_rules_exit() argument
296 ip6mr_free_table(net->ipv6.mrt6); in ip6mr_rules_exit()
297 net->ipv6.mrt6 = NULL; in ip6mr_rules_exit()
302 static struct mr6_table *ip6mr_new_table(struct net *net, u32 id) in ip6mr_new_table() argument
307 mrt = ip6mr_get_table(net, id); in ip6mr_new_table()
315 write_pnet(&mrt->net, net); in ip6mr_new_table()
330 list_add_tail_rcu(&mrt->list, &net->ipv6.mr6_tables); in ip6mr_new_table()
352 static struct mfc6_cache *ipmr_mfc_seq_idx(struct net *net, in ipmr_mfc_seq_idx() argument
388 static struct mif_device *ip6mr_vif_seq_idx(struct net *net, in ip6mr_vif_seq_idx() argument
407 struct net *net = seq_file_net(seq); in ip6mr_vif_seq_start() local
410 mrt = ip6mr_get_table(net, RT6_TABLE_DFLT); in ip6mr_vif_seq_start()
417 return *pos ? ip6mr_vif_seq_idx(net, seq->private, *pos - 1) in ip6mr_vif_seq_start()
424 struct net *net = seq_file_net(seq); in ip6mr_vif_seq_next() local
429 return ip6mr_vif_seq_idx(net, iter, 0); in ip6mr_vif_seq_next()
491 struct net *net = seq_file_net(seq); in ipmr_mfc_seq_start() local
494 mrt = ip6mr_get_table(net, RT6_TABLE_DFLT); in ipmr_mfc_seq_start()
499 return *pos ? ipmr_mfc_seq_idx(net, seq->private, *pos - 1) in ipmr_mfc_seq_start()
507 struct net *net = seq_file_net(seq); in ipmr_mfc_seq_next() local
513 return ipmr_mfc_seq_idx(net, seq->private, 0); in ipmr_mfc_seq_next()
628 struct net *net = dev_net(skb->dev); in pim6_rcv() local
657 if (ip6mr_fib_lookup(net, &fl6, &mrt) < 0) in pim6_rcv()
697 struct net *net = dev_net(dev); in reg_vif_xmit() local
706 err = ip6mr_fib_lookup(net, &fl6, &mrt); in reg_vif_xmit()
741 static struct net_device *ip6mr_reg_vif(struct net *net, struct mr6_table *mrt) in ip6mr_reg_vif() argument
755 dev_net_set(dev, net); in ip6mr_reg_vif()
846 struct net *net = read_pnet(&mrt->net); in ip6mr_destroy_unres() local
858 rtnl_unicast(skb, net, NETLINK_CB(skb).portid); in ip6mr_destroy_unres()
931 static int mif6_add(struct net *net, struct mr6_table *mrt, in mif6_add() argument
953 dev = ip6mr_reg_vif(net, mrt); in mif6_add()
965 dev = dev_get_by_index(net, vifc->mif6c_pifi); in mif6_add()
1100 static void ip6mr_cache_resolve(struct net *net, struct mr6_table *mrt, in ip6mr_cache_resolve() argument
1121 rtnl_unicast(skb, net, NETLINK_CB(skb).portid); in ip6mr_cache_resolve()
1123 ip6_mr_forward(net, mrt, skb, c); in ip6mr_cache_resolve()
1333 struct net *net = dev_net(dev); in ip6mr_device_event() local
1342 ip6mr_for_each_table(mrt, net) { in ip6mr_device_event()
1362 static int __net_init ip6mr_net_init(struct net *net) in ip6mr_net_init() argument
1366 err = ip6mr_rules_init(net); in ip6mr_net_init()
1372 if (!proc_create("ip6_mr_vif", 0, net->proc_net, &ip6mr_vif_fops)) in ip6mr_net_init()
1374 if (!proc_create("ip6_mr_cache", 0, net->proc_net, &ip6mr_mfc_fops)) in ip6mr_net_init()
1382 remove_proc_entry("ip6_mr_vif", net->proc_net); in ip6mr_net_init()
1384 ip6mr_rules_exit(net); in ip6mr_net_init()
1390 static void __net_exit ip6mr_net_exit(struct net *net) in ip6mr_net_exit() argument
1393 remove_proc_entry("ip6_mr_cache", net->proc_net); in ip6mr_net_exit()
1394 remove_proc_entry("ip6_mr_vif", net->proc_net); in ip6mr_net_exit()
1396 ip6mr_rules_exit(net); in ip6mr_net_exit()
1454 static int ip6mr_mfc_add(struct net *net, struct mr6_table *mrt, in ip6mr_mfc_add() argument
1535 ip6mr_cache_resolve(net, mrt, uc, c); in ip6mr_mfc_add()
1592 struct net *net = sock_net(sk); in ip6mr_sk_init() local
1598 net->ipv6.devconf_all->mc_forwarding++; in ip6mr_sk_init()
1599 inet6_netconf_notify_devconf(net, NETCONFA_MC_FORWARDING, in ip6mr_sk_init()
1601 net->ipv6.devconf_all); in ip6mr_sk_init()
1615 struct net *net = sock_net(sk); in ip6mr_sk_done() local
1619 ip6mr_for_each_table(mrt, net) { in ip6mr_sk_done()
1623 net->ipv6.devconf_all->mc_forwarding--; in ip6mr_sk_done()
1624 inet6_netconf_notify_devconf(net, in ip6mr_sk_done()
1627 net->ipv6.devconf_all); in ip6mr_sk_done()
1640 struct sock *mroute6_socket(struct net *net, struct sk_buff *skb) in mroute6_socket() argument
1649 if (ip6mr_fib_lookup(net, &fl6, &mrt) < 0) in mroute6_socket()
1668 struct net *net = sock_net(sk); in ip6_mroute_setsockopt() local
1671 mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT); in ip6_mroute_setsockopt()
1676 if (sk != mrt->mroute6_sk && !ns_capable(net->user_ns, CAP_NET_ADMIN)) in ip6_mroute_setsockopt()
1701 ret = mif6_add(net, mrt, &vif, sk == mrt->mroute6_sk); in ip6_mroute_setsockopt()
1734 ret = ip6mr_mfc_add(net, mrt, &mfc, in ip6_mroute_setsockopt()
1792 if (!ip6mr_new_table(net, v)) in ip6_mroute_setsockopt()
1817 struct net *net = sock_net(sk); in ip6_mroute_getsockopt() local
1820 mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT); in ip6_mroute_getsockopt()
1864 struct net *net = sock_net(sk); in ip6mr_ioctl() local
1867 mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT); in ip6mr_ioctl()
1938 struct net *net = sock_net(sk); in ip6mr_compat_ioctl() local
1941 mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT); in ip6mr_compat_ioctl()
2003 static int ip6mr_forward2(struct net *net, struct mr6_table *mrt, in ip6mr_forward2() argument
2033 dst = ip6_route_output(net, NULL, &fl6); in ip6mr_forward2()
2088 static void ip6_mr_forward(struct net *net, struct mr6_table *mrt, in ip6_mr_forward() argument
2162 ip6mr_forward2(net, mrt, skb2, cache, psend); in ip6_mr_forward()
2169 ip6mr_forward2(net, mrt, skb, cache, psend); in ip6_mr_forward()
2185 struct net *net = dev_net(skb->dev); in ip6_mr_input() local
2193 err = ip6mr_fib_lookup(net, &fl6, &mrt); in ip6_mr_input()
2229 ip6_mr_forward(net, mrt, skb, cache); in ip6_mr_input()
2283 int ip6mr_get_route(struct net *net, in ip6mr_get_route() argument
2291 mrt = ip6mr_get_table(net, RT6_TABLE_DFLT); in ip6mr_get_route()
2428 struct net *net = read_pnet(&mrt->net); in mr6_netlink_event() local
2441 rtnl_notify(skb, net, 0, RTNLGRP_IPV6_MROUTE, NULL, GFP_ATOMIC); in mr6_netlink_event()
2447 rtnl_set_sk_err(net, RTNLGRP_IPV6_MROUTE, err); in mr6_netlink_event()
2452 struct net *net = sock_net(skb->sk); in ip6mr_rtm_dumproute() local
2464 ip6mr_for_each_table(mrt, net) { in ip6mr_rtm_dumproute()