addrconf.c (320424c7d44f54c18df9812fd7c45f6963524002) addrconf.c (6126891c6d4f6f4ef50323d2020635ee255a796e)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * IPv6 Address [auto]configuration
4 * Linux INET6 implementation
5 *
6 * Authors:
7 * Pedro Roque <roque@di.fc.ul.pt>
8 * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>

--- 1066 unchanged lines hidden (view full) ---

1075 };
1076
1077 err = inet6addr_validator_notifier_call_chain(NETDEV_UP, &i6vi);
1078 err = notifier_to_errno(err);
1079 if (err < 0)
1080 goto out;
1081 }
1082
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * IPv6 Address [auto]configuration
4 * Linux INET6 implementation
5 *
6 * Authors:
7 * Pedro Roque <roque@di.fc.ul.pt>
8 * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>

--- 1066 unchanged lines hidden (view full) ---

1075 };
1076
1077 err = inet6addr_validator_notifier_call_chain(NETDEV_UP, &i6vi);
1078 err = notifier_to_errno(err);
1079 if (err < 0)
1080 goto out;
1081 }
1082
1083 ifa = kzalloc(sizeof(*ifa), gfp_flags);
1083 ifa = kzalloc(sizeof(*ifa), gfp_flags | __GFP_ACCOUNT);
1084 if (!ifa) {
1085 err = -ENOBUFS;
1086 goto out;
1087 }
1088
1089 f6i = addrconf_f6i_alloc(net, idev, cfg->pfx, false, gfp_flags);
1090 if (IS_ERR(f6i)) {
1091 err = PTR_ERR(f6i);

--- 4114 unchanged lines hidden (view full) ---

5206 const struct nlmsghdr *nlh = cb->nlh;
5207 struct inet6_fill_args fillargs = {
5208 .portid = NETLINK_CB(cb->skb).portid,
5209 .seq = cb->nlh->nlmsg_seq,
5210 .flags = NLM_F_MULTI,
5211 .netnsid = -1,
5212 .type = type,
5213 };
1084 if (!ifa) {
1085 err = -ENOBUFS;
1086 goto out;
1087 }
1088
1089 f6i = addrconf_f6i_alloc(net, idev, cfg->pfx, false, gfp_flags);
1090 if (IS_ERR(f6i)) {
1091 err = PTR_ERR(f6i);

--- 4114 unchanged lines hidden (view full) ---

5206 const struct nlmsghdr *nlh = cb->nlh;
5207 struct inet6_fill_args fillargs = {
5208 .portid = NETLINK_CB(cb->skb).portid,
5209 .seq = cb->nlh->nlmsg_seq,
5210 .flags = NLM_F_MULTI,
5211 .netnsid = -1,
5212 .type = type,
5213 };
5214 struct net *net = sock_net(skb->sk);
5215 struct net *tgt_net = net;
5214 struct net *tgt_net = sock_net(skb->sk);
5216 int idx, s_idx, s_ip_idx;
5217 int h, s_h;
5218 struct net_device *dev;
5219 struct inet6_dev *idev;
5220 struct hlist_head *head;
5221 int err = 0;
5222
5223 s_h = cb->args[0];

--- 122 unchanged lines hidden (view full) ---

5346 }
5347
5348 return 0;
5349}
5350
5351static int inet6_rtm_getaddr(struct sk_buff *in_skb, struct nlmsghdr *nlh,
5352 struct netlink_ext_ack *extack)
5353{
5215 int idx, s_idx, s_ip_idx;
5216 int h, s_h;
5217 struct net_device *dev;
5218 struct inet6_dev *idev;
5219 struct hlist_head *head;
5220 int err = 0;
5221
5222 s_h = cb->args[0];

--- 122 unchanged lines hidden (view full) ---

5345 }
5346
5347 return 0;
5348}
5349
5350static int inet6_rtm_getaddr(struct sk_buff *in_skb, struct nlmsghdr *nlh,
5351 struct netlink_ext_ack *extack)
5352{
5354 struct net *net = sock_net(in_skb->sk);
5353 struct net *tgt_net = sock_net(in_skb->sk);
5355 struct inet6_fill_args fillargs = {
5356 .portid = NETLINK_CB(in_skb).portid,
5357 .seq = nlh->nlmsg_seq,
5358 .event = RTM_NEWADDR,
5359 .flags = 0,
5360 .netnsid = -1,
5361 };
5354 struct inet6_fill_args fillargs = {
5355 .portid = NETLINK_CB(in_skb).portid,
5356 .seq = nlh->nlmsg_seq,
5357 .event = RTM_NEWADDR,
5358 .flags = 0,
5359 .netnsid = -1,
5360 };
5362 struct net *tgt_net = net;
5363 struct ifaddrmsg *ifm;
5364 struct nlattr *tb[IFA_MAX+1];
5365 struct in6_addr *addr = NULL, *peer;
5366 struct net_device *dev = NULL;
5367 struct inet6_ifaddr *ifa;
5368 struct sk_buff *skb;
5369 int err;
5370

--- 1527 unchanged lines hidden (view full) ---

6898 {
6899 .procname = "enhanced_dad",
6900 .data = &ipv6_devconf.enhanced_dad,
6901 .maxlen = sizeof(int),
6902 .mode = 0644,
6903 .proc_handler = proc_dointvec,
6904 },
6905 {
5361 struct ifaddrmsg *ifm;
5362 struct nlattr *tb[IFA_MAX+1];
5363 struct in6_addr *addr = NULL, *peer;
5364 struct net_device *dev = NULL;
5365 struct inet6_ifaddr *ifa;
5366 struct sk_buff *skb;
5367 int err;
5368

--- 1527 unchanged lines hidden (view full) ---

6896 {
6897 .procname = "enhanced_dad",
6898 .data = &ipv6_devconf.enhanced_dad,
6899 .maxlen = sizeof(int),
6900 .mode = 0644,
6901 .proc_handler = proc_dointvec,
6902 },
6903 {
6906 .procname = "addr_gen_mode",
6907 .data = &ipv6_devconf.addr_gen_mode,
6908 .maxlen = sizeof(int),
6909 .mode = 0644,
6904 .procname = "addr_gen_mode",
6905 .data = &ipv6_devconf.addr_gen_mode,
6906 .maxlen = sizeof(int),
6907 .mode = 0644,
6910 .proc_handler = addrconf_sysctl_addr_gen_mode,
6911 },
6912 {
6913 .procname = "disable_policy",
6914 .data = &ipv6_devconf.disable_policy,
6915 .maxlen = sizeof(int),
6916 .mode = 0644,
6917 .proc_handler = addrconf_sysctl_disable_policy,

--- 353 unchanged lines hidden ---
6908 .proc_handler = addrconf_sysctl_addr_gen_mode,
6909 },
6910 {
6911 .procname = "disable_policy",
6912 .data = &ipv6_devconf.disable_policy,
6913 .maxlen = sizeof(int),
6914 .mode = 0644,
6915 .proc_handler = addrconf_sysctl_disable_policy,

--- 353 unchanged lines hidden ---