]> git.baikalelectronics.ru Git - kernel.git/commitdiff
bonding: NS target should accept link local address
authorHangbin Liu <liuhangbin@gmail.com>
Fri, 27 May 2022 06:44:39 +0000 (14:44 +0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 28 May 2022 14:29:56 +0000 (15:29 +0100)
When setting bond NS target, we use bond_is_ip6_target_ok() to check
if the address valid. The link local address was wrongly rejected in
bond_changelink(), as most time the user just set the ARP/NS target to
gateway, while the IPv6 gateway is always a link local address when user
set up interface via SLAAC.

So remove the link local addr check when setting bond NS target.

Fixes: 6d07932dd659 ("bonding: add new option ns_ip6_target")
Reported-by: Li Liang <liali@redhat.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Reviewed-by: Jonathan Toppins <jtoppins@redhat.com>
Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_netlink.c

index f427fa1737c7727013e5c5549efe033e05ad0a64..6f404f9c34e34a4375c8d44e58d4af15f741e79e 100644 (file)
@@ -290,11 +290,6 @@ static int bond_changelink(struct net_device *bond_dev, struct nlattr *tb[],
 
                        addr6 = nla_get_in6_addr(attr);
 
-                       if (ipv6_addr_type(&addr6) & IPV6_ADDR_LINKLOCAL) {
-                               NL_SET_ERR_MSG(extack, "Invalid IPv6 addr6");
-                               return -EINVAL;
-                       }
-
                        bond_opt_initextra(&newval, &addr6, sizeof(addr6));
                        err = __bond_opt_set(bond, BOND_OPT_NS_TARGETS,
                                             &newval);