kern/152235: [net] Permanent local ARP entries are not properly updated after MAC address change

Gleb Kurtsou gleb.kurtsou at gmail.com
Sun Nov 14 13:50:09 UTC 2010


>Number:         152235
>Category:       kern
>Synopsis:       [net] Permanent local ARP entries are not properly updated after MAC address change
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Nov 14 13:50:08 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Gleb Kurtsou
>Release:        9.0-CURRENT
>Organization:
>Environment:
>Description:
The bug exists for a while already, it's probably related to import of new ARP/lltable code.

If interface has more than one ip addressed assigned and interface ether (MAC) addresses is changed entries in ARP table are not properly updated. It happens because ARP tables are updated lazily but not on mac address change and all entries but one are always missed.

>How-To-Repeat:
# ifconfig em0 192.168.1.1
# dhclient em0
DHCPREQUEST on em0 to 255.255.255.255 port 67
DHCPACK from 10.0.2.2
bound to 10.0.2.15 -- renewal in 43200 seconds.
# ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
	ether 08:00:27:9f:f7:81
	inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
	inet 10.0.2.15 netmask 0xffffff00 broadcast 10.0.2.255
	media: Ethernet autoselect (1000baseT <full-duplex>)
	status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
	options=3<RXCSUM,TXCSUM>
	inet 127.0.0.1 netmask 0xff000000 
	inet6 ::1 prefixlen 128 
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
# ping 10.0.2.2
PING 10.0.2.2 (10.0.2.2): 56 data bytes
64 bytes from 10.0.2.2: icmp_seq=0 ttl=63 time=0.768 ms
64 bytes from 10.0.2.2: icmp_seq=1 ttl=63 time=3.293 ms
^C
--- 10.0.2.2 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.768/2.030/3.293/1.263 ms
# arp -an
? (10.0.2.15) at 08:00:27:9f:f7:81 on em0 permanent [ethernet]
? (192.168.1.1) at 08:00:27:9f:f7:81 on em0 permanent [ethernet]
? (10.0.2.2) at 52:54:00:12:35:02 on em0 expires in 1196 seconds [ethernet]
# ifconfig em0 ether 08:00:27:9f:f7:aa
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
	ether 08:00:27:9f:f7:aa
	inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
	inet 10.0.2.15 netmask 0xffffff00 broadcast 10.0.2.255
	media: Ethernet autoselect (1000baseT <full-duplex>)
	status: active
### not updated until used again
# arp -an
? (10.0.2.15) at 08:00:27:9f:f7:81 on em0 permanent [ethernet]
? (192.168.1.1) at 08:00:27:9f:f7:81 on em0 permanent [ethernet]
? (10.0.2.2) at 52:54:00:12:35:02 on em0 expires in 1160 seconds [ethernet]
# ping 10.0.2.2
PING 10.0.2.2 (10.0.2.2): 56 data bytes
^C
--- 10.0.2.2 ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss
zsh: exit 2     ping 10.0.2.2
# dhclient em0
DHCPREQUEST on em0 to 255.255.255.255 port 67
DHCPACK from 10.0.2.2
bound to 10.0.2.15 -- renewal in 43200 seconds.
# arp -an
? (10.0.2.15) at 08:00:27:9f:f7:aa on em0 permanent [ethernet]
? (192.168.1.1) at 08:00:27:9f:f7:81 on em0 permanent [ethernet]
#### I don't expect entries to be deleted, they are permanent
# arp -da
10.0.2.15 (10.0.2.15) deleted
192.168.1.1 (192.168.1.1) deleted
# arp -an
? (10.0.2.15) at 08:00:27:9f:f7:aa on em0 permanent [ethernet]
? (192.168.1.1) at 08:00:27:9f:f7:81 on em0 permanent [ethernet]
# arp -d 192.168.1.1
192.168.1.1 (192.168.1.1) deleted
# arp -an
? (10.0.2.15) at 08:00:27:9f:f7:aa on em0 permanent [ethernet]
? (192.168.1.1) at 08:00:27:9f:f7:81 on em0 permanent [ethernet]


>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list