Created attachment 525215 [details] patch Description of problem: Adding an alias entry to dhclient.conf leads to dhclient-script overwriting the a newly bound ip address with the alias address when address is configured with initscripts (untested with NetworkManager). Version-Release number of selected component (if applicable): dhclient-4.2.1-11.P1 iproute-2.6.38.1-4 initscripts-9.30-2 How reproducible: Always with an alias configured in dhclient.conf Add an entry for an alias to dhclient.conf on an interface configured for dhcp via initscripts. Steps to Reproduce: 1. Configure an interface for dhcp in initscripts, eg: ifcfg-em1 File: ifcfg-em1 DEVICE=em1 BOOTPROTO=dhcp ONBOOT=yes NM_CONTROLLED=no File: ifcfg-em1:0 DEVICE=em1:0 ONPARENT=yes IPADDR=192.168.100.2 NETMASK=255.255.255.0 NM_CONTROLLED=no 2. Add an entry for alias for the interface in dhclient.conf, eg: File: dhclient.conf alias { interface "em1"; fixed-address 192.168.100.2; option subnet-mask 255.255.255.0; option broadcast-address 192.168.100.255; } 3. Bring the interface up: # ifup em1 Actual results: Only alias address is present on device after bind, eg: # ip addr show dev em1 1: em: <BROADCAST,MULTICAST,UP,LOWER_UP> ... inet 192.168.100.2/24 scope global em1 Expected results: Both alias and newly bound address should be on link, with alias correctly labeled. # ip addr show dev em1 1: em: <BROADCAST,MULTICAST,UP,LOWER_UP> ... inet 10.0.10.121/24 brd 255.255.255.255 scope global em1 inet 192.168.100.2/24 brd 192.168.100.255 scope global em1:0 Additional info: It appears that the script is performing a flush on ${interface}:0, however iproute2 will flush the device, not the alias, removing the existing bound address. When configured with initscripts, aliases such as "${interface}:0" are created with ifconfig which uses labels to distinguish the alias address from the primary address on the interface. To flush just the labeled address, the correct syntax is: # ip addr flush dev ${interface} label ${interface}:0 There appears to be numerous errors in dhclient-script with respect to aliases, with the script using the "dev ${interface}:0" syntax rather than "dev ${interface} label ${interface}:0" In addition, there appears to be a few places where dhclient-script sets the link down when it appears to actually just wish to purge the alias address. Also, the alias address is set without using the "broadcast ${alias_broadcast_address}" clause. I've attached a patch to dhclient-script with some proposed fixes, including: 1. label the alias using the ${interface}:0 label 2. add "broadcast ${alias_broadcast_address}" clause where appropriate 3. correct syntax of "dev ${interface}:0" clauses where appropriate 4. replace alias link down with flush on the alias label
I've applied your patch. Thank you !
dhcp-4.2.2-9.fc16 has been submitted as an update for Fedora 16. https://admin.fedoraproject.org/updates/dhcp-4.2.2-9.fc16
Package dhcp-4.2.2-9.fc16: * should fix your issue, * was pushed to the Fedora 16 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing dhcp-4.2.2-9.fc16' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/dhcp-4.2.2-9.fc16 then log in and leave karma (feedback).
dhcp-4.2.2-9.fc16 has been pushed to the Fedora 16 stable repository. If problems still persist, please make note of it in this bug report.