Lines Matching refs:net

150 static void addrconf_verify(struct net *net);
151 static void addrconf_verify_rtnl(struct net *net);
576 void inet6_netconf_notify_devconf(struct net *net, int event, int type, in inet6_netconf_notify_devconf() argument
594 rtnl_notify(skb, net, 0, RTNLGRP_IPV6_NETCONF, NULL, GFP_KERNEL); in inet6_netconf_notify_devconf()
597 rtnl_set_sk_err(net, RTNLGRP_IPV6_NETCONF, err); in inet6_netconf_notify_devconf()
650 struct net *net = sock_net(in_skb->sk); in inet6_netconf_get_devconf() local
670 devconf = net->ipv6.devconf_all; in inet6_netconf_get_devconf()
673 devconf = net->ipv6.devconf_dflt; in inet6_netconf_get_devconf()
676 dev = dev_get_by_index(net, ifindex); in inet6_netconf_get_devconf()
701 err = rtnl_unicast(skb, net, NETLINK_CB(in_skb).portid); in inet6_netconf_get_devconf()
711 static u32 inet6_base_seq(const struct net *net) in inet6_base_seq() argument
713 u32 res = atomic_read(&net->ipv6.dev_addr_genid) + in inet6_base_seq()
714 net->dev_base_seq; in inet6_base_seq()
729 struct net *net = sock_net(skb->sk); in inet6_netconf_dump_devconf() local
756 head = &net->dev_index_head[h]; in inet6_netconf_dump_devconf()
758 cb->seq = inet6_base_seq(net); in inet6_netconf_dump_devconf()
784 net->ipv6.devconf_all, in inet6_netconf_dump_devconf()
795 net->ipv6.devconf_dflt, in inet6_netconf_dump_devconf()
859 static void addrconf_forward_change(struct net *net, __s32 newf) in addrconf_forward_change() argument
864 for_each_netdev(net, dev) { in addrconf_forward_change()
877 struct net *net; in addrconf_fixup_forwarding() local
883 net = (struct net *)table->extra2; in addrconf_fixup_forwarding()
887 if (p == &net->ipv6.devconf_dflt->forwarding) { in addrconf_fixup_forwarding()
889 inet6_netconf_notify_devconf(net, RTM_NEWNETCONF, in addrconf_fixup_forwarding()
892 net->ipv6.devconf_dflt); in addrconf_fixup_forwarding()
897 if (p == &net->ipv6.devconf_all->forwarding) { in addrconf_fixup_forwarding()
898 int old_dflt = net->ipv6.devconf_dflt->forwarding; in addrconf_fixup_forwarding()
900 net->ipv6.devconf_dflt->forwarding = newf; in addrconf_fixup_forwarding()
902 inet6_netconf_notify_devconf(net, RTM_NEWNETCONF, in addrconf_fixup_forwarding()
905 net->ipv6.devconf_dflt); in addrconf_fixup_forwarding()
907 addrconf_forward_change(net, newf); in addrconf_fixup_forwarding()
909 inet6_netconf_notify_devconf(net, RTM_NEWNETCONF, in addrconf_fixup_forwarding()
912 net->ipv6.devconf_all); in addrconf_fixup_forwarding()
918 rt6_purge_dflt_routers(net); in addrconf_fixup_forwarding()
922 static void addrconf_linkdown_change(struct net *net, __s32 newf) in addrconf_linkdown_change() argument
927 for_each_netdev(net, dev) { in addrconf_linkdown_change()
945 struct net *net; in addrconf_fixup_linkdown() local
951 net = (struct net *)table->extra2; in addrconf_fixup_linkdown()
955 if (p == &net->ipv6.devconf_dflt->ignore_routes_with_linkdown) { in addrconf_fixup_linkdown()
957 inet6_netconf_notify_devconf(net, in addrconf_fixup_linkdown()
961 net->ipv6.devconf_dflt); in addrconf_fixup_linkdown()
966 if (p == &net->ipv6.devconf_all->ignore_routes_with_linkdown) { in addrconf_fixup_linkdown()
967 net->ipv6.devconf_dflt->ignore_routes_with_linkdown = newf; in addrconf_fixup_linkdown()
968 addrconf_linkdown_change(net, newf); in addrconf_fixup_linkdown()
970 inet6_netconf_notify_devconf(net, in addrconf_fixup_linkdown()
974 net->ipv6.devconf_all); in addrconf_fixup_linkdown()
1026 static u32 inet6_addr_hash(const struct net *net, const struct in6_addr *addr) in inet6_addr_hash() argument
1028 u32 val = ipv6_addr_hash(addr) ^ net_hash_mix(net); in inet6_addr_hash()
1033 static bool ipv6_chk_same_addr(struct net *net, const struct in6_addr *addr, in ipv6_chk_same_addr() argument
1038 hlist_for_each_entry(ifp, &net->ipv6.inet6_addr_lst[hash], addr_lst) { in ipv6_chk_same_addr()
1049 struct net *net = dev_net(dev); in ipv6_add_addr_hash() local
1050 unsigned int hash = inet6_addr_hash(net, &ifa->addr); in ipv6_add_addr_hash()
1053 spin_lock_bh(&net->ipv6.addrconf_hash_lock); in ipv6_add_addr_hash()
1056 if (ipv6_chk_same_addr(net, &ifa->addr, dev, hash)) { in ipv6_add_addr_hash()
1060 hlist_add_head_rcu(&ifa->addr_lst, &net->ipv6.inet6_addr_lst[hash]); in ipv6_add_addr_hash()
1063 spin_unlock_bh(&net->ipv6.addrconf_hash_lock); in ipv6_add_addr_hash()
1076 struct net *net = dev_net(idev->dev); in ipv6_add_addr() local
1129 f6i = addrconf_f6i_alloc(net, idev, cfg->pfx, false, gfp_flags, extack); in ipv6_add_addr()
1293 struct net *net = dev_net(ifp->idev->dev); in ipv6_del_addr() local
1307 spin_lock_bh(&net->ipv6.addrconf_hash_lock); in ipv6_del_addr()
1309 spin_unlock_bh(&net->ipv6.addrconf_hash_lock); in ipv6_del_addr()
1513 static bool ipv6_use_optimistic_addr(struct net *net, in ipv6_use_optimistic_addr() argument
1519 if (!net->ipv6.devconf_all->optimistic_dad && !idev->cnf.optimistic_dad) in ipv6_use_optimistic_addr()
1521 if (!net->ipv6.devconf_all->use_optimistic && !idev->cnf.use_optimistic) in ipv6_use_optimistic_addr()
1530 static bool ipv6_allow_optimistic_dad(struct net *net, in ipv6_allow_optimistic_dad() argument
1536 if (!net->ipv6.devconf_all->optimistic_dad && !idev->cnf.optimistic_dad) in ipv6_allow_optimistic_dad()
1545 static int ipv6_get_saddr_eval(struct net *net, in ipv6_get_saddr_eval() argument
1609 if (!ipv6_use_optimistic_addr(net, score->ifa->idev)) in ipv6_get_saddr_eval()
1631 ret = ipv6_addr_label(net, in ipv6_get_saddr_eval()
1679 static int __ipv6_dev_get_saddr(struct net *net, in __ipv6_dev_get_saddr() argument
1719 minihiscore = ipv6_get_saddr_eval(net, hiscore, dst, i); in __ipv6_dev_get_saddr()
1720 miniscore = ipv6_get_saddr_eval(net, score, dst, i); in __ipv6_dev_get_saddr()
1751 static int ipv6_get_saddr_master(struct net *net, in ipv6_get_saddr_master() argument
1762 hiscore_idx = __ipv6_dev_get_saddr(net, dst, idev, in ipv6_get_saddr_master()
1767 hiscore_idx = __ipv6_dev_get_saddr(net, dst, idev, in ipv6_get_saddr_master()
1773 int ipv6_dev_get_saddr(struct net *net, const struct net_device *dst_dev, in ipv6_dev_get_saddr() argument
1790 dst.label = ipv6_addr_label(net, daddr, dst_type, dst.ifindex); in ipv6_dev_get_saddr()
1825 hiscore_idx = __ipv6_dev_get_saddr(net, &dst, idev, scores, hiscore_idx); in ipv6_dev_get_saddr()
1838 hiscore_idx = ipv6_get_saddr_master(net, dst_dev, in ipv6_dev_get_saddr()
1846 for_each_netdev_rcu(net, dev) { in ipv6_dev_get_saddr()
1855 hiscore_idx = __ipv6_dev_get_saddr(net, &dst, idev, scores, hiscore_idx); in ipv6_dev_get_saddr()
1919 int ipv6_chk_addr(struct net *net, const struct in6_addr *addr, in ipv6_chk_addr() argument
1922 return ipv6_chk_addr_and_flags(net, addr, dev, !dev, in ipv6_chk_addr()
1937 __ipv6_chk_addr_and_flags(struct net *net, const struct in6_addr *addr, in __ipv6_chk_addr_and_flags() argument
1941 unsigned int hash = inet6_addr_hash(net, addr); in __ipv6_chk_addr_and_flags()
1952 hlist_for_each_entry_rcu(ifp, &net->ipv6.inet6_addr_lst[hash], addr_lst) { in __ipv6_chk_addr_and_flags()
1977 int ipv6_chk_addr_and_flags(struct net *net, const struct in6_addr *addr, in ipv6_chk_addr_and_flags() argument
1981 return __ipv6_chk_addr_and_flags(net, addr, dev, skip_dev_check, in ipv6_chk_addr_and_flags()
2042 struct net_device *ipv6_dev_find(struct net *net, const struct in6_addr *addr, in ipv6_dev_find() argument
2045 return __ipv6_chk_addr_and_flags(net, addr, dev, !dev, 1, in ipv6_dev_find()
2050 struct inet6_ifaddr *ipv6_get_ifaddr(struct net *net, const struct in6_addr *addr, in ipv6_get_ifaddr() argument
2053 unsigned int hash = inet6_addr_hash(net, addr); in ipv6_get_ifaddr()
2057 hlist_for_each_entry_rcu(ifp, &net->ipv6.inet6_addr_lst[hash], addr_lst) { in ipv6_get_ifaddr()
2125 struct net *net = dev_net(idev->dev); in addrconf_dad_failure() local
2150 if (retries > net->ipv6.sysctl.idgen_retries) { in addrconf_dad_failure()
2180 addrconf_mod_dad_work(ifp2, net->ipv6.sysctl.idgen_delay); in addrconf_dad_failure()
2616 int addrconf_prefix_rcv_add_addr(struct net *net, struct net_device *dev, in addrconf_prefix_rcv_add_addr() argument
2623 struct inet6_ifaddr *ifp = ipv6_get_ifaddr(net, addr, dev, 1); in addrconf_prefix_rcv_add_addr()
2639 if ((net->ipv6.devconf_all->optimistic_dad || in addrconf_prefix_rcv_add_addr()
2641 !net->ipv6.devconf_all->forwarding && sllao) in addrconf_prefix_rcv_add_addr()
2711 addrconf_verify(net); in addrconf_prefix_rcv_add_addr()
2726 struct net *net = dev_net(dev); in addrconf_prefix_rcv() local
2795 ip6_del_rt(net, rt, false); in addrconf_prefix_rcv()
2851 err = addrconf_prefix_rcv_add_addr(net, dev, pinfo, in6_dev, in addrconf_prefix_rcv()
2862 ndisc_ops_prefix_rcv_add_addr(net, dev, pinfo, in6_dev, &addr, in addrconf_prefix_rcv()
2873 static int addrconf_set_sit_dstaddr(struct net *net, struct net_device *dev, in addrconf_set_sit_dstaddr() argument
2894 dev = __dev_get_by_name(net, p.name); in addrconf_set_sit_dstaddr()
2905 int addrconf_set_dstaddr(struct net *net, void __user *arg) in addrconf_set_dstaddr() argument
2917 dev = __dev_get_by_index(net, ireq.ifr6_ifindex); in addrconf_set_dstaddr()
2919 err = addrconf_set_sit_dstaddr(net, dev, &ireq); in addrconf_set_dstaddr()
2944 static int inet6_addr_add(struct net *net, int ifindex, in inet6_addr_add() argument
2973 dev = __dev_get_by_index(net, ifindex); in inet6_addr_add()
2984 int ret = ipv6_mc_config(net->ipv6.mc_autojoin_sk, in inet6_addr_add()
3036 addrconf_verify_rtnl(net); in inet6_addr_add()
3039 ipv6_mc_config(net->ipv6.mc_autojoin_sk, false, in inet6_addr_add()
3046 static int inet6_addr_del(struct net *net, int ifindex, u32 ifa_flags, in inet6_addr_del() argument
3059 dev = __dev_get_by_index(net, ifindex); in inet6_addr_del()
3083 addrconf_verify_rtnl(net); in inet6_addr_del()
3085 ipv6_mc_config(net->ipv6.mc_autojoin_sk, in inet6_addr_del()
3098 int addrconf_add_ifaddr(struct net *net, void __user *arg) in addrconf_add_ifaddr() argument
3108 if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) in addrconf_add_ifaddr()
3118 err = inet6_addr_add(net, ireq.ifr6_ifindex, &cfg, NULL); in addrconf_add_ifaddr()
3123 int addrconf_del_ifaddr(struct net *net, void __user *arg) in addrconf_del_ifaddr() argument
3128 if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) in addrconf_del_ifaddr()
3135 err = inet6_addr_del(net, ireq.ifr6_ifindex, 0, &ireq.ifr6_addr, in addrconf_del_ifaddr()
3171 struct net *net = dev_net(idev->dev); in add_v4_addrs() local
3203 for_each_netdev(net, dev) { in add_v4_addrs()
3314 struct net *net = dev_net(idev->dev); in ipv6_generate_stable_address() local
3320 else if (net->ipv6.devconf_dflt->stable_secret.initialized) in ipv6_generate_stable_address()
3321 secret = net->ipv6.devconf_dflt->stable_secret.secret; in ipv6_generate_stable_address()
3527 static int fixup_permanent_addr(struct net *net, in fixup_permanent_addr() argument
3538 f6i = addrconf_f6i_alloc(net, idev, &ifp->addr, false, in fixup_permanent_addr()
3564 static void addrconf_permanent_addr(struct net *net, struct net_device *dev) in addrconf_permanent_addr() argument
3577 fixup_permanent_addr(net, idev, ifp) < 0) { in addrconf_permanent_addr()
3598 struct net *net = dev_net(dev); in addrconf_notify() local
3614 addrconf_ifdown(dev, dev != net->loopback_dev); in addrconf_notify()
3649 addrconf_permanent_addr(net, dev); in addrconf_notify()
3722 addrconf_ifdown(dev, dev != net->loopback_dev); in addrconf_notify()
3798 struct net *net = dev_net(dev); in addrconf_ifdown() local
3834 int _keep_addr = net->ipv6.devconf_all->keep_addr_on_down; in addrconf_ifdown()
3844 struct hlist_head *h = &net->ipv6.inet6_addr_lst[i]; in addrconf_ifdown()
3846 spin_lock_bh(&net->ipv6.addrconf_hash_lock); in addrconf_ifdown()
3862 spin_unlock_bh(&net->ipv6.addrconf_hash_lock); in addrconf_ifdown()
3929 ip6_del_rt(net, rt, false); in addrconf_ifdown()
4047 struct net *net; in addrconf_dad_begin() local
4056 net = dev_net(dev); in addrconf_dad_begin()
4058 (net->ipv6.devconf_all->accept_dad < 1 && in addrconf_dad_begin()
4094 ip6_ins_rt(net, ifp->rt); in addrconf_dad_begin()
4095 if (ipv6_use_optimistic_addr(net, idev)) { in addrconf_dad_begin()
4358 struct net *net = seq_file_net(seq); in if6_get_first() local
4369 hlist_for_each_entry_rcu(ifa, &net->ipv6.inet6_addr_lst[state->bucket], in if6_get_first()
4390 struct net *net = seq_file_net(seq); in if6_get_next() local
4400 &net->ipv6.inet6_addr_lst[state->bucket], addr_lst) { in if6_get_next()
4450 static int __net_init if6_proc_net_init(struct net *net) in if6_proc_net_init() argument
4452 if (!proc_create_net("if_inet6", 0444, net->proc_net, &if6_seq_ops, in if6_proc_net_init()
4458 static void __net_exit if6_proc_net_exit(struct net *net) in if6_proc_net_exit() argument
4460 remove_proc_entry("if_inet6", net->proc_net); in if6_proc_net_exit()
4481 int ipv6_chk_home_addr(struct net *net, const struct in6_addr *addr) in ipv6_chk_home_addr() argument
4483 unsigned int hash = inet6_addr_hash(net, addr); in ipv6_chk_home_addr()
4488 hlist_for_each_entry_rcu(ifp, &net->ipv6.inet6_addr_lst[hash], addr_lst) { in ipv6_chk_home_addr()
4510 int ipv6_chk_rpl_srh_loop(struct net *net, const struct in6_addr *segs, in ipv6_chk_rpl_srh_loop() argument
4523 hash = inet6_addr_hash(net, addr); in ipv6_chk_rpl_srh_loop()
4526 hlist_for_each_entry_rcu(ifp, &net->ipv6.inet6_addr_lst[hash], addr_lst) { in ipv6_chk_rpl_srh_loop()
4555 static void addrconf_verify_rtnl(struct net *net) in addrconf_verify_rtnl() argument
4567 cancel_delayed_work(&net->ipv6.addr_chk_work); in addrconf_verify_rtnl()
4571 hlist_for_each_entry_rcu_bh(ifp, &net->ipv6.inet6_addr_lst[i], addr_lst) { in addrconf_verify_rtnl()
4674 mod_delayed_work(addrconf_wq, &net->ipv6.addr_chk_work, next_sched - now); in addrconf_verify_rtnl()
4680 struct net *net = container_of(to_delayed_work(w), struct net, in addrconf_verify_work() local
4684 addrconf_verify_rtnl(net); in addrconf_verify_work()
4688 static void addrconf_verify(struct net *net) in addrconf_verify() argument
4690 mod_delayed_work(addrconf_wq, &net->ipv6.addr_chk_work, 0); in addrconf_verify()
4726 struct net *net = sock_net(skb->sk); in inet6_rtm_deladdr() local
4748 return inet6_addr_del(net, ifm->ifa_index, ifa_flags, pfx, in inet6_rtm_deladdr()
4787 static int inet6_addr_modify(struct net *net, struct inet6_ifaddr *ifp, in inet6_addr_modify() argument
4903 addrconf_verify_rtnl(net); in inet6_addr_modify()
4912 struct net *net = sock_net(skb->sk); in inet6_rtm_newaddr() local
4953 dev = __dev_get_by_index(net, ifm->ifa_index); in inet6_rtm_newaddr()
4973 if (!ipv6_allow_optimistic_dad(net, idev)) in inet6_rtm_newaddr()
4982 ifa = ipv6_get_ifaddr(net, cfg.pfx, dev, 1); in inet6_rtm_newaddr()
4988 return inet6_addr_add(net, ifm->ifa_index, &cfg, extack); in inet6_rtm_newaddr()
4996 err = inet6_addr_modify(net, ifa, &cfg); in inet6_rtm_newaddr()
5275 struct net **tgt_net, struct sock *sk, in inet6_valid_dump_ifaddr_req()
5310 struct net *net; in inet6_valid_dump_ifaddr_req() local
5313 net = rtnl_get_net_ns_capable(sk, fillargs->netnsid); in inet6_valid_dump_ifaddr_req()
5314 if (IS_ERR(net)) { in inet6_valid_dump_ifaddr_req()
5317 return PTR_ERR(net); in inet6_valid_dump_ifaddr_req()
5319 *tgt_net = net; in inet6_valid_dump_ifaddr_req()
5340 struct net *tgt_net = sock_net(skb->sk); in inet6_dump_addr()
5479 struct net *tgt_net = sock_net(in_skb->sk); in inet6_rtm_getaddr()
5550 struct net *net = dev_net(ifa->idev->dev); in inet6_ifa_notify() local
5571 rtnl_notify(skb, net, 0, RTNLGRP_IPV6_IFADDR, NULL, GFP_ATOMIC); in inet6_ifa_notify()
5575 rtnl_set_sk_err(net, RTNLGRP_IPV6_IFADDR, err); in inet6_ifa_notify()
5914 static int check_stable_privacy(struct inet6_dev *idev, struct net *net, in check_stable_privacy() argument
5919 !net->ipv6.devconf_dflt->stable_secret.initialized) in check_stable_privacy()
6059 struct net *net = sock_net(skb->sk); in inet6_dump_ifinfo() local
6082 head = &net->dev_index_head[h]; in inet6_dump_ifinfo()
6109 struct net *net = dev_net(idev->dev); in inet6_ifinfo_notify() local
6123 rtnl_notify(skb, net, 0, RTNLGRP_IPV6_IFINFO, NULL, GFP_ATOMIC); in inet6_ifinfo_notify()
6127 rtnl_set_sk_err(net, RTNLGRP_IPV6_IFINFO, err); in inet6_ifinfo_notify()
6177 struct net *net = dev_net(idev->dev); in inet6_prefix_notify() local
6191 rtnl_notify(skb, net, 0, RTNLGRP_IPV6_PREFIX, NULL, GFP_ATOMIC); in inet6_prefix_notify()
6195 rtnl_set_sk_err(net, RTNLGRP_IPV6_PREFIX, err); in inet6_prefix_notify()
6200 struct net *net = dev_net(ifp->idev->dev); in __ipv6_ifa_notify() local
6218 ip6_ins_rt(net, ifp->rt); in __ipv6_ifa_notify()
6242 ip6_del_rt(net, rt, false); in __ipv6_ifa_notify()
6245 ip6_del_rt(net, ifp->rt, false); in __ipv6_ifa_notify()
6248 rt_genid_bump_ipv6(net); in __ipv6_ifa_notify()
6251 atomic_inc(&net->ipv6.dev_addr_genid); in __ipv6_ifa_notify()
6315 static void addrconf_disable_change(struct net *net, __s32 newf) in addrconf_disable_change() argument
6320 for_each_netdev(net, dev) { in addrconf_disable_change()
6334 struct net *net; in addrconf_disable_ipv6() local
6340 net = (struct net *)table->extra2; in addrconf_disable_ipv6()
6344 if (p == &net->ipv6.devconf_dflt->disable_ipv6) { in addrconf_disable_ipv6()
6349 if (p == &net->ipv6.devconf_all->disable_ipv6) { in addrconf_disable_ipv6()
6350 WRITE_ONCE(net->ipv6.devconf_dflt->disable_ipv6, newf); in addrconf_disable_ipv6()
6351 addrconf_disable_change(net, newf); in addrconf_disable_ipv6()
6396 struct net *net = ctl->extra2; in addrconf_sysctl_proxy_ndp() local
6401 if (valp == &net->ipv6.devconf_dflt->proxy_ndp) in addrconf_sysctl_proxy_ndp()
6402 inet6_netconf_notify_devconf(net, RTM_NEWNETCONF, in addrconf_sysctl_proxy_ndp()
6405 net->ipv6.devconf_dflt); in addrconf_sysctl_proxy_ndp()
6406 else if (valp == &net->ipv6.devconf_all->proxy_ndp) in addrconf_sysctl_proxy_ndp()
6407 inet6_netconf_notify_devconf(net, RTM_NEWNETCONF, in addrconf_sysctl_proxy_ndp()
6410 net->ipv6.devconf_all); in addrconf_sysctl_proxy_ndp()
6414 inet6_netconf_notify_devconf(net, RTM_NEWNETCONF, in addrconf_sysctl_proxy_ndp()
6432 struct net *net = (struct net *)ctl->extra2; in addrconf_sysctl_addr_gen_mode() local
6455 if (check_stable_privacy(idev, net, new_val) < 0) { in addrconf_sysctl_addr_gen_mode()
6464 } else if (&net->ipv6.devconf_all->addr_gen_mode == ctl->data) { in addrconf_sysctl_addr_gen_mode()
6467 net->ipv6.devconf_dflt->addr_gen_mode = new_val; in addrconf_sysctl_addr_gen_mode()
6468 for_each_netdev(net, dev) { in addrconf_sysctl_addr_gen_mode()
6495 struct net *net = ctl->extra2; in addrconf_sysctl_stable_secret() local
6498 if (&net->ipv6.devconf_all->stable_secret == ctl->data) in addrconf_sysctl_stable_secret()
6530 if (&net->ipv6.devconf_dflt->stable_secret == ctl->data) { in addrconf_sysctl_stable_secret()
6533 for_each_netdev(net, dev) { in addrconf_sysctl_stable_secret()
6625 struct net *net; in addrconf_disable_policy() local
6632 net = (struct net *)ctl->extra2; in addrconf_disable_policy()
6633 if (valp == &net->ipv6.devconf_dflt->disable_policy) { in addrconf_disable_policy()
6638 if (valp == &net->ipv6.devconf_all->disable_policy) { in addrconf_disable_policy()
6641 for_each_netdev(net, dev) { in addrconf_disable_policy()
7127 static int __addrconf_sysctl_register(struct net *net, char *dev_name, in __addrconf_sysctl_register() argument
7146 table[i].extra2 = net; in __addrconf_sysctl_register()
7152 p->sysctl_header = register_net_sysctl_sz(net, path, table, in __addrconf_sysctl_register()
7163 inet6_netconf_notify_devconf(net, RTM_NEWNETCONF, NETCONFA_ALL, in __addrconf_sysctl_register()
7173 static void __addrconf_sysctl_unregister(struct net *net, in __addrconf_sysctl_unregister() argument
7186 inet6_netconf_notify_devconf(net, RTM_DELNETCONF, 0, ifindex, NULL); in __addrconf_sysctl_unregister()
7218 static int __net_init addrconf_init_net(struct net *net) in addrconf_init_net() argument
7223 spin_lock_init(&net->ipv6.addrconf_hash_lock); in addrconf_init_net()
7224 INIT_DEFERRABLE_WORK(&net->ipv6.addr_chk_work, addrconf_verify_work); in addrconf_init_net()
7225 net->ipv6.inet6_addr_lst = kcalloc(IN6_ADDR_HSIZE, in addrconf_init_net()
7228 if (!net->ipv6.inet6_addr_lst) in addrconf_init_net()
7239 if (!net_eq(net, &init_net)) { in addrconf_init_net()
7268 net->ipv6.devconf_all = all; in addrconf_init_net()
7269 net->ipv6.devconf_dflt = dflt; in addrconf_init_net()
7272 err = __addrconf_sysctl_register(net, "all", NULL, all); in addrconf_init_net()
7276 err = __addrconf_sysctl_register(net, "default", NULL, dflt); in addrconf_init_net()
7284 __addrconf_sysctl_unregister(net, all, NETCONFA_IFINDEX_ALL); in addrconf_init_net()
7287 net->ipv6.devconf_dflt = NULL; in addrconf_init_net()
7291 net->ipv6.devconf_all = NULL; in addrconf_init_net()
7293 kfree(net->ipv6.inet6_addr_lst); in addrconf_init_net()
7298 static void __net_exit addrconf_exit_net(struct net *net) in addrconf_exit_net() argument
7303 __addrconf_sysctl_unregister(net, net->ipv6.devconf_dflt, in addrconf_exit_net()
7305 __addrconf_sysctl_unregister(net, net->ipv6.devconf_all, in addrconf_exit_net()
7308 kfree(net->ipv6.devconf_dflt); in addrconf_exit_net()
7309 net->ipv6.devconf_dflt = NULL; in addrconf_exit_net()
7310 kfree(net->ipv6.devconf_all); in addrconf_exit_net()
7311 net->ipv6.devconf_all = NULL; in addrconf_exit_net()
7313 cancel_delayed_work_sync(&net->ipv6.addr_chk_work); in addrconf_exit_net()
7318 WARN_ON_ONCE(!hlist_empty(&net->ipv6.inet6_addr_lst[i])); in addrconf_exit_net()
7320 kfree(net->ipv6.inet6_addr_lst); in addrconf_exit_net()
7321 net->ipv6.inet6_addr_lst = NULL; in addrconf_exit_net()