FreeBSD interface up/down monitoring

freebsdifconfiginterfacenetwork-monitoringnetworking

How to get informed about specific interface status in FreeBSD?

ifconfig <ifname> | grep "status: active" 

works fine but I want to avoid polling and be informed as fast as possible about ifup/ifdown.

Best Answer

devd(8) will do the trick. You need to configure it to run an action if LINK_UP or LINK_DOWN event happened on an interface. A sample configuration to be added to /etc/devd.conf or even better, create /etc/devd/interface.conf:

notify 0 {
    match "system"        "IFNET";
    match "subsystem"     "(em0|em1)";
    match "type"          "LINK_DOWN";
    action "/usr/local/sbin/notifier.sh $subsystem"
}

Above configuration assumes that you want to be notified when interface em0 or em1 goes down, and invokes the script upon occurrence of the event. It will also pass the interface name (hence $subsystem) to the script.

Related Topic