svn commit: r223862 - in head/sys: net netinet netinet6

Marko Zec zec at freebsd.org
Fri Jul 8 11:51:05 UTC 2011


On Friday 08 July 2011 12:08:49 Andre Oppermann wrote:
> On 08.07.2011 11:38, Marko Zec wrote:
> > Author: zec
> > Date: Fri Jul  8 09:38:33 2011
> > New Revision: 223862
> > URL: http://svn.freebsd.org/changeset/base/223862
> >
> > Log:
> >    Permit ARP to proceed for IPv4 host routes for which the gateway is
> > the same as the host address.  This already works fine for INET6 and ND6.
>
> Can you give an example what this does? Is it some sort of proxy ARP?


It is a bugfix.  Consider this example on a pre-223862 kernel:

cp12# ifconfig re0 10.0.0.2/24

cp12# ping -c 1 10.0.0.1
PING 10.0.0.1 (10.0.0.1): 56 data bytes
64 bytes from 10.0.0.1: icmp_seq=0 ttl=64 time=0.335 ms

--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.285/0.285/0.285/0.000 ms

So far, so good, but:

cp12# arp -da
10.0.0.2 (10.0.0.2) deleted
10.0.0.1 (10.0.0.1) deleted

cp12# route add 10.0.0.1 10.0.0.1
add host 10.0.0.1: gateway 10.0.0.1

cp12# netstat -rnf inet
Destination        Gateway            Flags    Refs      Use  Netif Expire
10.0.0.0/24        link#1             U           0        1    re0
10.0.0.1           10.0.0.1           UGHS        0        0    re0
10.0.0.2           link#1             UHS         0        0    lo0
127.0.0.1          link#11            UH          0        5    lo0

cp12# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1): 56 data bytes
ping: sendto: Invalid argument
ping: sendto: Invalid argument
^C
--- 10.0.0.1 ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss

cp12# dmesg | tail -2
arpresolve: can't allocate llinfo for 10.0.0.1
arpresolve: can't allocate llinfo for 10.0.0.1


With 223862 this scenario is no longer a problem:

cp12# ifconfig re0 10.0.0.2/24

cp12# route add 10.0.0.1 10.0.0.1
add host 10.0.0.1: gateway 10.0.0.1

cp12# netstat -rnf inet
Destination        Gateway            Flags    Refs      Use  Netif Expire
10.0.0.0/24        link#1             U           0        0    re0
10.0.0.1           10.0.0.1           UGHS        0        0    re0
10.0.0.2           link#1             UHS         0        0    lo0
127.0.0.1          link#11            UH          0        4    lo0

cp12# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1): 56 data bytes
64 bytes from 10.0.0.1: icmp_seq=0 ttl=64 time=0.578 ms  <-- ARP pingpong here
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.134 ms
^C
--- 10.0.0.1 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.134/0.356/0.578/0.222 ms


> >    While here, remove two function pointers from struct lltable which are
> >    only initialized but never used.
>
> Ideally this would have been a separate commit because it has nothing to
> do with primary functional change.


You're right, sorry for the noise...

Marko


More information about the svn-src-all mailing list