• Jakub Kicinski's avatar
    net: check for altname conflicts when changing netdev's netns · 7663d522
    Jakub Kicinski authored
    It's currently possible to create an altname conflicting
    with an altname or real name of another device by creating
    it in another netns and moving it over:
    
     [ ~]$ ip link add dev eth0 type dummy
    
     [ ~]$ ip netns add test
     [ ~]$ ip -netns test link add dev ethX netns test type dummy
     [ ~]$ ip -netns test link property add dev ethX altname eth0
     [ ~]$ ip -netns test link set dev ethX netns 1
    
     [ ~]$ ip link
     ...
     3: eth0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
         link/ether 02:40:88:62:ec:b8 brd ff:ff:ff:ff:ff:ff
     ...
     5: ethX: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
         link/ether 26:b7:28:78:38:0f brd ff:ff:ff:ff:ff:ff
         altname eth0
    
    Create a macro for walking the altnames, this hopefully makes
    it clearer that the list we walk contains only altnames.
    Which is otherwise not entirely intuitive.
    
    Fixes: 36fbf1e5 ("net: rtnetlink: add linkprop commands to add and delete alternative ifnames")
    Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    7663d522
dev.c 291 KB