• Nicolas Dichtel's avatar
    ping: fix address binding wrt vrf · e1a7ac6f
    Nicolas Dichtel authored
    When ping_group_range is updated, 'ping' uses the DGRAM ICMP socket,
    instead of an IP raw socket. In this case, 'ping' is unable to bind its
    socket to a local address owned by a vrflite.
    
    Before the patch:
    $ sysctl -w net.ipv4.ping_group_range='0  2147483647'
    $ ip link add blue type vrf table 10
    $ ip link add foo type dummy
    $ ip link set foo master blue
    $ ip link set foo up
    $ ip addr add 192.168.1.1/24 dev foo
    $ ip addr add 2001::1/64 dev foo
    $ ip vrf exec blue ping -c1 -I 192.168.1.1 192.168.1.2
    ping: bind: Cannot assign requested address
    $ ip vrf exec blue ping6 -c1 -I 2001::1 2001::2
    ping6: bind icmp socket: Cannot assign requested address
    
    CC: stable@vger.kernel.org
    Fixes: 1b69c6d0 ("net: Introduce L3 Master device abstraction")
    Signed-off-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
    Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    e1a7ac6f
ping.c 28.1 KB