Hi, some months ago I've sent a patch to the linux kernel list that enabled notification of network driver link state changes over the netlink socket. Technically, this has been implemented by a kernel thread that mirrored dev->state:__LINK_STATE_NO_CARRIER into dev->flags:IFF_RUNNING and sent netlink messages. Note: The in-kernel-flag IFF_RUNNING is unused at least since 2.4, it is the LINK_STATE_NO_CARRIER bit that is seen as RUNNING from user mode. This was followed by a discussion with Jamal (look at http://marc.theaimsgroup.com/?t=101751064400001&r=1&w=2), however, it took ...ahem.. a while until the revised version I attach to this mail. Don't ask ;-) I had quite positive feedback from LVS and zebra people, so I tried to remove most of the objections against the patch. -Anyway, I wanted to keep the current semantics of netif_carrier_on()/_off(). The extended states that can be found RFC2863 did not seem to useful to me for linux, mainly because "notPresent" is already implemented with netif_device_detach()/_attach() and especially for ethernet drivers there is no real difference between "testing" and "down". -Using Ingos workqueue implementation, I removed the need for the first versions' own kernel thread. -I changed the simple approach of iterating over all network devices, now the handler only looks at devices that had an event. This change also increases compatibility to broken drivers that manipulate IFF_RUNNING directly, there is a good chance that these drivers will never generate state notification events. I kept the semantic not to create a list of events for one device, only the latest state change is forwarded when the queue is run. Patch against 2.5.41 is attached for comments, of course with the aim of kernel inclusion. I have tested it on a UP machine, but hope that I've got the locking stuff right. Cheers, Stefan