addrconf.c (e291c116f60f3c1ca98090f0f8e7c77e658562fb) addrconf.c (8a321cf7becc6c065ae595b837b826a2a81036b9)
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>

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

3315{
3316 struct in6_addr addr;
3317
3318 /* no link local addresses on L3 master devices */
3319 if (netif_is_l3_master(idev->dev))
3320 return;
3321
3322 /* no link local addresses on devices flagged as slaves */
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>

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

3315{
3316 struct in6_addr addr;
3317
3318 /* no link local addresses on L3 master devices */
3319 if (netif_is_l3_master(idev->dev))
3320 return;
3321
3322 /* no link local addresses on devices flagged as slaves */
3323 if (idev->dev->flags & IFF_SLAVE)
3323 if (idev->dev->priv_flags & IFF_NO_ADDRCONF)
3324 return;
3325
3326 ipv6_addr_set(&addr, htonl(0xFE800000), 0, 0, 0);
3327
3328 switch (idev->cnf.addr_gen_mode) {
3329 case IN6_ADDR_GEN_MODE_RANDOM:
3330 ipv6_gen_mode_random_init(idev);
3331 fallthrough;

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

3555
3556 run_pending = 1;
3557 fallthrough;
3558 case NETDEV_UP:
3559 case NETDEV_CHANGE:
3560 if (idev && idev->cnf.disable_ipv6)
3561 break;
3562
3324 return;
3325
3326 ipv6_addr_set(&addr, htonl(0xFE800000), 0, 0, 0);
3327
3328 switch (idev->cnf.addr_gen_mode) {
3329 case IN6_ADDR_GEN_MODE_RANDOM:
3330 ipv6_gen_mode_random_init(idev);
3331 fallthrough;

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

3555
3556 run_pending = 1;
3557 fallthrough;
3558 case NETDEV_UP:
3559 case NETDEV_CHANGE:
3560 if (idev && idev->cnf.disable_ipv6)
3561 break;
3562
3563 if (dev->flags & IFF_SLAVE) {
3563 if (dev->priv_flags & IFF_NO_ADDRCONF) {
3564 if (event == NETDEV_UP && !IS_ERR_OR_NULL(idev) &&
3565 dev->flags & IFF_UP && dev->flags & IFF_MULTICAST)
3566 ipv6_mc_up(idev);
3567 break;
3568 }
3569
3570 if (event == NETDEV_UP) {
3571 /* restore routes for permanent addresses */

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

7209#endif
7210 return 0;
7211
7212#ifdef CONFIG_SYSCTL
7213err_reg_dflt:
7214 __addrconf_sysctl_unregister(net, all, NETCONFA_IFINDEX_ALL);
7215err_reg_all:
7216 kfree(dflt);
3564 if (event == NETDEV_UP && !IS_ERR_OR_NULL(idev) &&
3565 dev->flags & IFF_UP && dev->flags & IFF_MULTICAST)
3566 ipv6_mc_up(idev);
3567 break;
3568 }
3569
3570 if (event == NETDEV_UP) {
3571 /* restore routes for permanent addresses */

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

7209#endif
7210 return 0;
7211
7212#ifdef CONFIG_SYSCTL
7213err_reg_dflt:
7214 __addrconf_sysctl_unregister(net, all, NETCONFA_IFINDEX_ALL);
7215err_reg_all:
7216 kfree(dflt);
7217 net->ipv6.devconf_dflt = NULL;
7217#endif
7218err_alloc_dflt:
7219 kfree(all);
7218#endif
7219err_alloc_dflt:
7220 kfree(all);
7221 net->ipv6.devconf_all = NULL;
7220err_alloc_all:
7221 kfree(net->ipv6.inet6_addr_lst);
7222err_alloc_addr:
7223 return err;
7224}
7225
7226static void __net_exit addrconf_exit_net(struct net *net)
7227{

--- 154 unchanged lines hidden ---
7222err_alloc_all:
7223 kfree(net->ipv6.inet6_addr_lst);
7224err_alloc_addr:
7225 return err;
7226}
7227
7228static void __net_exit addrconf_exit_net(struct net *net)
7229{

--- 154 unchanged lines hidden ---