• Home
  • Raw
  • Download

Lines Matching refs:net

54 static int __net_init fib4_rules_init(struct net *net)  in fib4_rules_init()  argument
67 &net->ipv4.fib_table_hash[TABLE_LOCAL_INDEX]); in fib4_rules_init()
69 &net->ipv4.fib_table_hash[TABLE_MAIN_INDEX]); in fib4_rules_init()
78 struct fib_table *fib_new_table(struct net *net, u32 id) in fib_new_table() argument
85 tb = fib_get_table(net, id); in fib_new_table()
89 if (id == RT_TABLE_LOCAL && !net->ipv4.fib_has_custom_rules) in fib_new_table()
90 alias = fib_new_table(net, RT_TABLE_MAIN); in fib_new_table()
98 rcu_assign_pointer(net->ipv4.fib_main, tb); in fib_new_table()
101 rcu_assign_pointer(net->ipv4.fib_default, tb); in fib_new_table()
108 hlist_add_head_rcu(&tb->tb_hlist, &net->ipv4.fib_table_hash[h]); in fib_new_table()
114 struct fib_table *fib_get_table(struct net *net, u32 id) in fib_get_table() argument
124 head = &net->ipv4.fib_table_hash[h]; in fib_get_table()
133 static void fib_replace_table(struct net *net, struct fib_table *old, in fib_replace_table() argument
139 rcu_assign_pointer(net->ipv4.fib_main, new); in fib_replace_table()
142 rcu_assign_pointer(net->ipv4.fib_default, new); in fib_replace_table()
153 int fib_unmerge(struct net *net) in fib_unmerge() argument
158 old = fib_get_table(net, RT_TABLE_LOCAL); in fib_unmerge()
171 fib_replace_table(net, old, new); in fib_unmerge()
175 main_table = fib_get_table(net, RT_TABLE_MAIN); in fib_unmerge()
185 static void fib_flush(struct net *net) in fib_flush() argument
191 struct hlist_head *head = &net->ipv4.fib_table_hash[h]; in fib_flush()
196 flushed += fib_table_flush(net, tb, false); in fib_flush()
200 rt_cache_flush(net); in fib_flush()
207 static inline unsigned int __inet_dev_addr_type(struct net *net, in __inet_dev_addr_type() argument
223 table = fib_get_table(net, tb_id); in __inet_dev_addr_type()
236 unsigned int inet_addr_type_table(struct net *net, __be32 addr, u32 tb_id) in inet_addr_type_table() argument
238 return __inet_dev_addr_type(net, NULL, addr, tb_id); in inet_addr_type_table()
242 unsigned int inet_addr_type(struct net *net, __be32 addr) in inet_addr_type() argument
244 return __inet_dev_addr_type(net, NULL, addr, RT_TABLE_LOCAL); in inet_addr_type()
248 unsigned int inet_dev_addr_type(struct net *net, const struct net_device *dev, in inet_dev_addr_type() argument
253 return __inet_dev_addr_type(net, dev, addr, rt_table); in inet_dev_addr_type()
260 unsigned int inet_addr_type_dev_table(struct net *net, in inet_addr_type_dev_table() argument
266 return __inet_dev_addr_type(net, NULL, addr, rt_table); in inet_addr_type_dev_table()
276 struct net *net; in fib_compute_spec_dst() local
286 net = dev_net(dev); in fib_compute_spec_dst()
299 if (!fib_lookup(net, &fl4, &res, 0)) in fib_compute_spec_dst()
300 return FIB_RES_PREFSRC(net, res); in fib_compute_spec_dst()
323 struct net *net = dev_net(dev); in __fib_validate_source() local
336 fl4.flowi4_uid = sock_net_uid(net, NULL); in __fib_validate_source()
344 if (fib_lookup(net, &fl4, &res, 0)) in __fib_validate_source()
349 if (!rpf && !fib_num_tclassid_users(net) && in __fib_validate_source()
382 if (fib_lookup(net, &fl4, &res, FIB_LOOKUP_IGNORE_LINKSTATE) == 0) { in __fib_validate_source()
433 static int rtentry_to_fib_config(struct net *net, int cmd, struct rtentry *rt, in rtentry_to_fib_config() argument
440 cfg->fc_nlinfo.nl_net = net; in rtentry_to_fib_config()
501 dev = __dev_get_by_name(net, devname); in rtentry_to_fib_config()
526 addr_type = inet_addr_type_table(net, addr, cfg->fc_table); in rtentry_to_fib_config()
569 int ip_rt_ioctl(struct net *net, unsigned int cmd, void __user *arg) in ip_rt_ioctl() argument
578 if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) in ip_rt_ioctl()
585 err = rtentry_to_fib_config(net, cmd, &rt, &cfg); in ip_rt_ioctl()
590 tb = fib_get_table(net, cfg.fc_table); in ip_rt_ioctl()
592 err = fib_table_delete(net, tb, &cfg, in ip_rt_ioctl()
597 tb = fib_new_table(net, cfg.fc_table); in ip_rt_ioctl()
599 err = fib_table_insert(net, tb, in ip_rt_ioctl()
632 static int rtm_to_fib_config(struct net *net, struct sk_buff *skb, in rtm_to_fib_config() argument
659 cfg->fc_nlinfo.nl_net = net; in rtm_to_fib_config()
728 struct net *net = sock_net(skb->sk); in inet_rtm_delroute() local
733 err = rtm_to_fib_config(net, skb, nlh, &cfg, extack); in inet_rtm_delroute()
737 tb = fib_get_table(net, cfg.fc_table); in inet_rtm_delroute()
744 err = fib_table_delete(net, tb, &cfg, extack); in inet_rtm_delroute()
752 struct net *net = sock_net(skb->sk); in inet_rtm_newroute() local
757 err = rtm_to_fib_config(net, skb, nlh, &cfg, extack); in inet_rtm_newroute()
761 tb = fib_new_table(net, cfg.fc_table); in inet_rtm_newroute()
767 err = fib_table_insert(net, tb, &cfg, extack); in inet_rtm_newroute()
774 struct net *net = sock_net(skb->sk); in inet_dump_fib() local
792 head = &net->ipv4.fib_table_hash[h]; in inet_dump_fib()
830 struct net *net = dev_net(ifa->ifa_dev->dev); in fib_magic() local
842 .nl_net = net, in fib_magic()
849 tb = fib_new_table(net, tb_id); in fib_magic()
861 fib_table_insert(net, tb, &cfg, NULL); in fib_magic()
863 fib_table_delete(net, tb, &cfg, NULL); in fib_magic()
1065 static void nl_fib_lookup(struct net *net, struct fib_result_nl *frn) in nl_fib_lookup() argument
1079 tb = fib_get_table(net, frn->tb_id_in); in nl_fib_lookup()
1102 struct net *net; in nl_fib_input() local
1107 net = sock_net(skb->sk); in nl_fib_input()
1120 nl_fib_lookup(net, frn); in nl_fib_input()
1125 netlink_unicast(net->ipv4.fibnl, skb, portid, MSG_DONTWAIT); in nl_fib_input()
1128 static int __net_init nl_fib_lookup_init(struct net *net) in nl_fib_lookup_init() argument
1135 sk = netlink_kernel_create(net, NETLINK_FIB_LOOKUP, &cfg); in nl_fib_lookup_init()
1138 net->ipv4.fibnl = sk; in nl_fib_lookup_init()
1142 static void nl_fib_lookup_exit(struct net *net) in nl_fib_lookup_exit() argument
1144 netlink_kernel_release(net->ipv4.fibnl); in nl_fib_lookup_exit()
1145 net->ipv4.fibnl = NULL; in nl_fib_lookup_exit()
1162 struct net *net = dev_net(dev); in fib_inetaddr_event() local
1170 atomic_inc(&net->ipv4.dev_addr_genid); in fib_inetaddr_event()
1175 atomic_inc(&net->ipv4.dev_addr_genid); in fib_inetaddr_event()
1195 struct net *net = dev_net(dev); in fib_netdev_event() local
1216 atomic_inc(&net->ipv4.dev_addr_genid); in fib_netdev_event()
1217 rt_cache_flush(net); in fib_netdev_event()
1228 rt_cache_flush(net); in fib_netdev_event()
1232 rt_cache_flush(net); in fib_netdev_event()
1255 static int __net_init ip_fib_net_init(struct net *net) in ip_fib_net_init() argument
1260 err = fib4_notifier_init(net); in ip_fib_net_init()
1267 net->ipv4.fib_table_hash = kzalloc(size, GFP_KERNEL); in ip_fib_net_init()
1268 if (!net->ipv4.fib_table_hash) { in ip_fib_net_init()
1273 err = fib4_rules_init(net); in ip_fib_net_init()
1279 kfree(net->ipv4.fib_table_hash); in ip_fib_net_init()
1281 fib4_notifier_exit(net); in ip_fib_net_init()
1285 static void ip_fib_net_exit(struct net *net) in ip_fib_net_exit() argument
1291 RCU_INIT_POINTER(net->ipv4.fib_main, NULL); in ip_fib_net_exit()
1292 RCU_INIT_POINTER(net->ipv4.fib_default, NULL); in ip_fib_net_exit()
1300 struct hlist_head *head = &net->ipv4.fib_table_hash[i]; in ip_fib_net_exit()
1306 fib_table_flush(net, tb, true); in ip_fib_net_exit()
1312 fib4_rules_exit(net); in ip_fib_net_exit()
1315 kfree(net->ipv4.fib_table_hash); in ip_fib_net_exit()
1316 fib4_notifier_exit(net); in ip_fib_net_exit()
1319 static int __net_init fib_net_init(struct net *net) in fib_net_init() argument
1324 net->ipv4.fib_num_tclassid_users = 0; in fib_net_init()
1326 error = ip_fib_net_init(net); in fib_net_init()
1329 error = nl_fib_lookup_init(net); in fib_net_init()
1332 error = fib_proc_init(net); in fib_net_init()
1339 nl_fib_lookup_exit(net); in fib_net_init()
1341 ip_fib_net_exit(net); in fib_net_init()
1345 static void __net_exit fib_net_exit(struct net *net) in fib_net_exit() argument
1347 fib_proc_exit(net); in fib_net_exit()
1348 nl_fib_lookup_exit(net); in fib_net_exit()
1349 ip_fib_net_exit(net); in fib_net_exit()