• Alvin Šipraga's avatar
    macvlan: validate setting of multiple remote source MAC addresses · b1215198
    Alvin Šipraga authored
    [ Upstream commit 8b61fba5 ]
    
    Remote source MAC addresses can be set on a 'source mode' macvlan
    interface via the IFLA_MACVLAN_MACADDR_DATA attribute. This commit
    tightens the validation of these MAC addresses to match the validation
    already performed when setting or adding a single MAC address via the
    IFLA_MACVLAN_MACADDR attribute.
    
    iproute2 uses IFLA_MACVLAN_MACADDR_DATA for its 'macvlan macaddr set'
    command, and IFLA_MACVLAN_MACADDR for its 'macvlan macaddr add' command,
    which demonstrates the inconsistent behaviour that this commit
    addresses:
    
     # ip link add link eth0 name macvlan0 type macvlan mode source
     # ip link set link dev macvlan0 type macvlan macaddr add 01:00:00:00:00:00
     RTNETLINK answers: Cannot assign requested address
     # ip link set link dev macvlan0 type macvlan macaddr set 01:00:00:00:00:00
     # ip -d link show macvlan0
     5: macvlan0@eth0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 1500 ...
         link/ether 2e:ac:fd:2d:69:f8 brd ff:ff:ff:ff:ff:ff promiscuity 0
         macvlan mode source remotes (1) 01:00:00:00:00:00 numtxqueues 1 ...
    
    With this change, the 'set' command will (rightly) fail in the same way
    as the 'add' command.
    Signed-off-by: default avatarAlvin Šipraga <alsi@bang-olufsen.dk>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    b1215198
macvlan.c 44.2 KB