Description of problem: zeroconf route appears in routing table with no interfaces using dhcp Version-Release number of selected component (if applicable): initscripts-8.76.2-1.i386 How reproducible: Look at the any routing table, zeroconf route on the last interface to be enabled. Steps to Reproduce: 1. /sbin/down eth0 2. /sbin/up eth0 3. look at the routing table Actual results: 169.254.0.0/16 dev eth0 scope link Expected results: no zeroconf route Additional info: diff to ifup-eth # Add Zeroconf route. -if [ -z "${NOZEROCONF}" -a "${ISALIAS}" = "no" -a "${REALDEVICE}" != "lo" ]; then +if [ -z "${NOZEROCONF}" -a "${DYNACONFIG}" = "true" -a "${ISALIAS}" = "no" -a "${REALDEVICE}" != "lo" ]; then ip route replace 169.254.0.0/16 dev ${REALDEVICE} fi
make that: 1. /sbin/ifdown eth0 2. /sbin/ifup eth0
There's no reason to not have the route for static IPs as well. Or am I misunderstanding what you're asking?
Ok, lets expand a bit, a dhcp device would be un-configured until it's plugged in and received a lease, while you can have a static ip address for a device that, I would consider to be configured because of the network info, even if not plugged in. If you have 2 or interfaces, one dhcp while the rest are static, the last one to be enabled will get that route, not the newly "configured" dhcp interface, done by a dhcp server. Is that not the point of zeroconf? adding a ipaddr/route to a device that is not configured? Would this not be better added(created?) when dhcp couldn't get/renew a lease? What ip address is used with this 169.254 route?
While it is the last interface configured, keying off of DYNCONFIG is the wrong key - after all, you could have your static/dynamic devices ordered in any way. Using the last device is the same algorithm used for gateway; considering that, leaving the code as-is makes sense.