git: arp: Don't send gratuitous ARP in arp_ifinit

Sepherosa Ziehau sephe at
Tue Feb 28 05:41:27 PST 2012

commit 69b66ae83cb218bcdc1c4c16e75a10e206906901
Author: Sepherosa Ziehau <sephe at>
Date:   Tue Feb 28 20:57:57 2012 +0800

    arp: Don't send gratuitous ARP in arp_ifinit
    - Move the CARP's ifaddr_event handler to the first of the
      registered ifaddr_event handlers.
    - Register ifaddr_event handler for gratuituous ARP; it won't
      send gratuitous ARP for CARP interface or CARP interface's
      parent.  The event handler is registered as the last
      ifaddr_event handler, so it is called after CARP's ifaddr_event
      handler.  It is mainly used to fix following problem before
      this commit:
          ifconfig emx0 up
          ifconfig carp0 create
          ifconfig carp0 vhid 1
          ifconfig carp0 inet
          ifconfig emx0 inet
      Originally, you always saw gratuitous ARP from emx0 first,
      then gratuitous ARP from carp0, which is quite confusing.
      After this change, only gratuitous ARP from carp0.
    - arp_ifinit() now only set ifa_rtrequest and CLONING flags
    - Rename arp_iainit() to arp_gratuitous(); call it when CARP
      wants to send gratuitous ARP and when link layer address
      is changed.

Summary of changes:
 sys/net/if.c           |    2 +-
 sys/netinet/if_ether.c |   45 ++++++++++++++++++++++++++++++---------------
 sys/netinet/if_ether.h |    2 +-
 sys/netinet/ip_carp.c  |    4 ++--
 4 files changed, 34 insertions(+), 19 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list