Lines Matching refs:net
76 possible_net_t net; member
125 static struct mr_table *ipmr_new_table(struct net *net, u32 id);
128 static void ip_mr_forward(struct net *net, struct mr_table *mrt,
141 #define ipmr_for_each_table(mrt, net) \ argument
142 list_for_each_entry_rcu(mrt, &net->ipv4.mr_tables, list)
144 static struct mr_table *ipmr_get_table(struct net *net, u32 id) in ipmr_get_table() argument
148 ipmr_for_each_table(mrt, net) { in ipmr_get_table()
155 static int ipmr_fib_lookup(struct net *net, struct flowi4 *flp4, in ipmr_fib_lookup() argument
165 err = fib_rules_lookup(net->ipv4.mr_rules_ops, in ipmr_fib_lookup()
243 static int __net_init ipmr_rules_init(struct net *net) in ipmr_rules_init() argument
249 ops = fib_rules_register(&ipmr_rules_ops_template, net); in ipmr_rules_init()
253 INIT_LIST_HEAD(&net->ipv4.mr_tables); in ipmr_rules_init()
255 mrt = ipmr_new_table(net, RT_TABLE_DEFAULT); in ipmr_rules_init()
265 net->ipv4.mr_rules_ops = ops; in ipmr_rules_init()
275 static void __net_exit ipmr_rules_exit(struct net *net) in ipmr_rules_exit() argument
280 list_for_each_entry_safe(mrt, next, &net->ipv4.mr_tables, list) { in ipmr_rules_exit()
284 fib_rules_unregister(net->ipv4.mr_rules_ops); in ipmr_rules_exit()
288 #define ipmr_for_each_table(mrt, net) \ argument
289 for (mrt = net->ipv4.mrt; mrt; mrt = NULL)
291 static struct mr_table *ipmr_get_table(struct net *net, u32 id) in ipmr_get_table() argument
293 return net->ipv4.mrt; in ipmr_get_table()
296 static int ipmr_fib_lookup(struct net *net, struct flowi4 *flp4, in ipmr_fib_lookup() argument
299 *mrt = net->ipv4.mrt; in ipmr_fib_lookup()
303 static int __net_init ipmr_rules_init(struct net *net) in ipmr_rules_init() argument
305 net->ipv4.mrt = ipmr_new_table(net, RT_TABLE_DEFAULT); in ipmr_rules_init()
306 return net->ipv4.mrt ? 0 : -ENOMEM; in ipmr_rules_init()
309 static void __net_exit ipmr_rules_exit(struct net *net) in ipmr_rules_exit() argument
312 ipmr_free_table(net->ipv4.mrt); in ipmr_rules_exit()
313 net->ipv4.mrt = NULL; in ipmr_rules_exit()
318 static struct mr_table *ipmr_new_table(struct net *net, u32 id) in ipmr_new_table() argument
323 mrt = ipmr_get_table(net, id); in ipmr_new_table()
330 write_pnet(&mrt->net, net); in ipmr_new_table()
346 list_add_tail_rcu(&mrt->list, &net->ipv4.mr_tables); in ipmr_new_table()
362 struct net *net = dev_net(dev); in ipmr_del_tunnel() local
366 dev = __dev_get_by_name(net, "tunl0"); in ipmr_del_tunnel()
392 struct net_device *ipmr_new_tunnel(struct net *net, struct vifctl *v) in ipmr_new_tunnel() argument
396 dev = __dev_get_by_name(net, "tunl0"); in ipmr_new_tunnel()
426 (dev = __dev_get_by_name(net, p.name)) != NULL) { in ipmr_new_tunnel()
457 struct net *net = dev_net(dev); in reg_vif_xmit() local
466 err = ipmr_fib_lookup(net, &fl4, &mrt); in reg_vif_xmit()
501 static struct net_device *ipmr_reg_vif(struct net *net, struct mr_table *mrt) in ipmr_reg_vif() argument
517 dev_net_set(dev, net); in ipmr_reg_vif()
632 struct net *net = read_pnet(&mrt->net); in ipmr_destroy_unres() local
648 rtnl_unicast(skb, net, NETLINK_CB(skb).portid); in ipmr_destroy_unres()
721 static int vif_add(struct net *net, struct mr_table *mrt, in vif_add() argument
743 dev = ipmr_reg_vif(net, mrt); in vif_add()
755 dev = ipmr_new_tunnel(net, vifc); in vif_add()
769 dev = dev_get_by_index(net, vifc->vifc_lcl_ifindex); in vif_add()
775 dev = ip_dev_find(net, vifc->vifc_lcl_addr.s_addr); in vif_add()
795 inet_netconf_notify_devconf(net, NETCONFA_MC_FORWARDING, dev->ifindex, in vif_add()
914 static void ipmr_cache_resolve(struct net *net, struct mr_table *mrt, in ipmr_cache_resolve() argument
938 rtnl_unicast(skb, net, NETLINK_CB(skb).portid); in ipmr_cache_resolve()
940 ip_mr_forward(net, mrt, skb, c, 0); in ipmr_cache_resolve()
1132 static int ipmr_mfc_add(struct net *net, struct mr_table *mrt, in ipmr_mfc_add() argument
1201 ipmr_cache_resolve(net, mrt, uc, c); in ipmr_mfc_add()
1255 struct net *net = sock_net(sk); in mrtsock_destruct() local
1259 ipmr_for_each_table(mrt, net) { in mrtsock_destruct()
1261 IPV4_DEVCONF_ALL(net, MC_FORWARDING)--; in mrtsock_destruct()
1262 inet_netconf_notify_devconf(net, NETCONFA_MC_FORWARDING, in mrtsock_destruct()
1264 net->ipv4.devconf_all); in mrtsock_destruct()
1284 struct net *net = sock_net(sk); in ip_mroute_setsockopt() local
1291 mrt = ipmr_get_table(net, raw_sk(sk)->ipmr_table ? : RT_TABLE_DEFAULT); in ip_mroute_setsockopt()
1297 !ns_capable(net->user_ns, CAP_NET_ADMIN)) in ip_mroute_setsockopt()
1315 IPV4_DEVCONF_ALL(net, MC_FORWARDING)++; in ip_mroute_setsockopt()
1316 inet_netconf_notify_devconf(net, NETCONFA_MC_FORWARDING, in ip_mroute_setsockopt()
1318 net->ipv4.devconf_all); in ip_mroute_setsockopt()
1336 ret = vif_add(net, mrt, &vif, in ip_mroute_setsockopt()
1363 ret = ipmr_mfc_add(net, mrt, &mfc, in ip_mroute_setsockopt()
1421 if (!ipmr_new_table(net, v)) in ip_mroute_setsockopt()
1447 struct net *net = sock_net(sk); in ip_mroute_getsockopt() local
1454 mrt = ipmr_get_table(net, raw_sk(sk)->ipmr_table ? : RT_TABLE_DEFAULT); in ip_mroute_getsockopt()
1497 struct net *net = sock_net(sk); in ipmr_ioctl() local
1500 mrt = ipmr_get_table(net, raw_sk(sk)->ipmr_table ? : RT_TABLE_DEFAULT); in ipmr_ioctl()
1571 struct net *net = sock_net(sk); in ipmr_compat_ioctl() local
1574 mrt = ipmr_get_table(net, raw_sk(sk)->ipmr_table ? : RT_TABLE_DEFAULT); in ipmr_compat_ioctl()
1627 struct net *net = dev_net(dev); in ipmr_device_event() local
1635 ipmr_for_each_table(mrt, net) { in ipmr_device_event()
1656 static void ip_encap(struct net *net, struct sk_buff *skb, in ip_encap() argument
1676 ip_select_ident(net, skb, NULL); in ip_encap()
1700 static void ipmr_queue_xmit(struct net *net, struct mr_table *mrt, in ipmr_queue_xmit() argument
1725 rt = ip_route_output_ports(net, &fl4, NULL, in ipmr_queue_xmit()
1734 rt = ip_route_output_ports(net, &fl4, NULL, iph->daddr, 0, in ipmr_queue_xmit()
1773 ip_encap(net, skb, vif->local, vif->remote); in ipmr_queue_xmit()
1814 static void ip_mr_forward(struct net *net, struct mr_table *mrt, in ip_mr_forward() argument
1907 ipmr_queue_xmit(net, mrt, skb2, cache, in ip_mr_forward()
1919 ipmr_queue_xmit(net, mrt, skb2, cache, psend); in ip_mr_forward()
1921 ipmr_queue_xmit(net, mrt, skb, cache, psend); in ip_mr_forward()
1931 static struct mr_table *ipmr_rt_fib_lookup(struct net *net, struct sk_buff *skb) in ipmr_rt_fib_lookup() argument
1949 err = ipmr_fib_lookup(net, &fl4, &mrt); in ipmr_rt_fib_lookup()
1963 struct net *net = dev_net(skb->dev); in ip_mr_input() local
1973 mrt = ipmr_rt_fib_lookup(net, skb); in ip_mr_input()
2038 ip_mr_forward(net, mrt, skb, cache, local); in ip_mr_input()
2103 struct net *net = dev_net(skb->dev); in pim_rcv_v1() local
2111 mrt = ipmr_rt_fib_lookup(net, skb); in pim_rcv_v1()
2130 struct net *net = dev_net(skb->dev); in pim_rcv() local
2143 mrt = ipmr_rt_fib_lookup(net, skb); in pim_rcv()
2199 int ipmr_get_route(struct net *net, struct sk_buff *skb, in ipmr_get_route() argument
2207 mrt = ipmr_get_table(net, RT_TABLE_DEFAULT); in ipmr_get_route()
2336 struct net *net = read_pnet(&mrt->net); in mroute_netlink_event() local
2349 rtnl_notify(skb, net, 0, RTNLGRP_IPV4_MROUTE, NULL, GFP_ATOMIC); in mroute_netlink_event()
2355 rtnl_set_sk_err(net, RTNLGRP_IPV4_MROUTE, err); in mroute_netlink_event()
2360 struct net *net = sock_net(skb->sk); in ipmr_rtm_dumproute() local
2372 ipmr_for_each_table(mrt, net) { in ipmr_rtm_dumproute()
2434 static struct vif_device *ipmr_vif_seq_idx(struct net *net, in ipmr_vif_seq_idx() argument
2453 struct net *net = seq_file_net(seq); in ipmr_vif_seq_start() local
2456 mrt = ipmr_get_table(net, RT_TABLE_DEFAULT); in ipmr_vif_seq_start()
2463 return *pos ? ipmr_vif_seq_idx(net, seq->private, *pos - 1) in ipmr_vif_seq_start()
2470 struct net *net = seq_file_net(seq); in ipmr_vif_seq_next() local
2475 return ipmr_vif_seq_idx(net, iter, 0); in ipmr_vif_seq_next()
2542 static struct mfc_cache *ipmr_mfc_seq_idx(struct net *net, in ipmr_mfc_seq_idx() argument
2572 struct net *net = seq_file_net(seq); in ipmr_mfc_seq_start() local
2575 mrt = ipmr_get_table(net, RT_TABLE_DEFAULT); in ipmr_mfc_seq_start()
2582 return *pos ? ipmr_mfc_seq_idx(net, seq->private, *pos - 1) in ipmr_mfc_seq_start()
2590 struct net *net = seq_file_net(seq); in ipmr_mfc_seq_next() local
2596 return ipmr_mfc_seq_idx(net, seq->private, 0); in ipmr_mfc_seq_next()
2714 static int __net_init ipmr_net_init(struct net *net) in ipmr_net_init() argument
2718 err = ipmr_rules_init(net); in ipmr_net_init()
2724 if (!proc_create("ip_mr_vif", 0, net->proc_net, &ipmr_vif_fops)) in ipmr_net_init()
2726 if (!proc_create("ip_mr_cache", 0, net->proc_net, &ipmr_mfc_fops)) in ipmr_net_init()
2733 remove_proc_entry("ip_mr_vif", net->proc_net); in ipmr_net_init()
2735 ipmr_rules_exit(net); in ipmr_net_init()
2741 static void __net_exit ipmr_net_exit(struct net *net) in ipmr_net_exit() argument
2744 remove_proc_entry("ip_mr_cache", net->proc_net); in ipmr_net_exit()
2745 remove_proc_entry("ip_mr_vif", net->proc_net); in ipmr_net_exit()
2747 ipmr_rules_exit(net); in ipmr_net_exit()