Skip to content
  • Eric Dumazet's avatar
    arp: filter NOARP neighbours for SIOCGARP · 11c91ef9
    Eric Dumazet authored
    
    
    When arp is off on a device, and ioctl(SIOCGARP) is queried,
    a buggy answer is given with MAC address of the device, instead
    of the mac address of the destination/gateway.
    
    We filter out NUD_NOARP neighbours for /proc/net/arp,
    we must do the same for SIOCGARP ioctl.
    
    Tested:
    
    lpaa23:~# ./arp 10.246.7.190
    MAC=00:01:e8:22:cb:1d      // correct answer
    
    lpaa23:~# ip link set dev eth0 arp off
    lpaa23:~# cat /proc/net/arp   # check arp table is now 'empty'
    IP address       HW type     Flags       HW address    Mask     Device
    lpaa23:~# ./arp 10.246.7.190
    MAC=00:1a:11:c3:0d:7f   // buggy answer before patch (this is eth0 mac)
    
    After patch :
    
    lpaa23:~# ip link set dev eth0 arp off
    lpaa23:~# ./arp 10.246.7.190
    ioctl(SIOCGARP) failed: No such device or address
    
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Reported-by: default avatarVytautas Valancius <valas@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    11c91ef9