lkml.org 
[lkml]   [2020]   [Apr]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 28/54] ipv6: dont auto-add link-local address to lag ports
    Date
    From: Jarod Wilson <jarod@redhat.com>

    [ Upstream commit 744fdc8233f6aa9582ce08a51ca06e59796a3196 ]

    Bonding slave and team port devices should not have link-local addresses
    automatically added to them, as it can interfere with openvswitch being
    able to properly add tc ingress.

    Basic reproducer, courtesy of Marcelo:

    $ ip link add name bond0 type bond
    $ ip link set dev ens2f0np0 master bond0
    $ ip link set dev ens2f1np2 master bond0
    $ ip link set dev bond0 up
    $ ip a s
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
    2: ens2f0np0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc
    mq master bond0 state UP group default qlen 1000
    link/ether 00:0f:53:2f:ea:40 brd ff:ff:ff:ff:ff:ff
    5: ens2f1np2: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc
    mq master bond0 state DOWN group default qlen 1000
    link/ether 00:0f:53:2f:ea:40 brd ff:ff:ff:ff:ff:ff
    11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc
    noqueue state UP group default qlen 1000
    link/ether 00:0f:53:2f:ea:40 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20f:53ff:fe2f:ea40/64 scope link
    valid_lft forever preferred_lft forever

    (above trimmed to relevant entries, obviously)

    $ sysctl net.ipv6.conf.ens2f0np0.addr_gen_mode=0
    net.ipv6.conf.ens2f0np0.addr_gen_mode = 0
    $ sysctl net.ipv6.conf.ens2f1np2.addr_gen_mode=0
    net.ipv6.conf.ens2f1np2.addr_gen_mode = 0

    $ ip a l ens2f0np0
    2: ens2f0np0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc
    mq master bond0 state UP group default qlen 1000
    link/ether 00:0f:53:2f:ea:40 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20f:53ff:fe2f:ea40/64 scope link tentative
    valid_lft forever preferred_lft forever
    $ ip a l ens2f1np2
    5: ens2f1np2: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc
    mq master bond0 state DOWN group default qlen 1000
    link/ether 00:0f:53:2f:ea:40 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20f:53ff:fe2f:ea40/64 scope link tentative
    valid_lft forever preferred_lft forever

    Looks like addrconf_sysctl_addr_gen_mode() bypasses the original "is
    this a slave interface?" check added by commit c2edacf80e15, and
    results in an address getting added, while w/the proposed patch added,
    no address gets added. This simply adds the same gating check to another
    code path, and thus should prevent the same devices from erroneously
    obtaining an ipv6 link-local address.

    Fixes: d35a00b8e33d ("net/ipv6: allow sysctl to change link-local address generation mode")
    Reported-by: Moshe Levi <moshele@mellanox.com>
    CC: Stephen Hemminger <stephen@networkplumber.org>
    CC: Marcelo Ricardo Leitner <mleitner@redhat.com>
    CC: netdev@vger.kernel.org
    Signed-off-by: Jarod Wilson <jarod@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/ipv6/addrconf.c | 4 ++++
    1 file changed, 4 insertions(+)

    --- a/net/ipv6/addrconf.c
    +++ b/net/ipv6/addrconf.c
    @@ -3241,6 +3241,10 @@ static void addrconf_addr_gen(struct ine
    if (netif_is_l3_master(idev->dev))
    return;

    + /* no link local addresses on devices flagged as slaves */
    + if (idev->dev->flags & IFF_SLAVE)
    + return;
    +
    ipv6_addr_set(&addr, htonl(0xFE800000), 0, 0, 0);

    switch (idev->cnf.addr_gen_mode) {

    \
     
     \ /
      Last update: 2020-04-11 14:26    [W:4.330 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site