Bond devices can have any name the user configures, so
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Wed, 9 Dec 2009 00:33:04 +0000 (11:33 +1100)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Wed, 9 Dec 2009 00:33:04 +0000 (11:33 +1100)
when checking link status for an interface, first
check if this interface is in fact a bond device
(by the precense of a /proc/net/bonding/IFACE file)
and use that file for checking status.

Othervise assume ib* is an infiniband interface which we donnt know how
to check, or otherwise it is an ethernet interface and ethtool should
hopefully work.

config/events.d/10.interface

index cf109f3ef8af5beca3be096e57c6fb959c0d845b..f881808f1154257680838091962ef9e14e840e7a 100755 (executable)
@@ -142,18 +142,23 @@ case "$1" in
        INTERFACES=`for IFACE in $INTERFACES ; do echo $IFACE ; done | sort | uniq`
 
        for IFACE in $INTERFACES ; do
-           case $IFACE in 
-           ethX*|bond*)
-               IFACE=`echo $IFACE |sed -e 's/\....$//'`
-               grep -q 'Currently Active Slave: None' /proc/net/bonding/$IFACE && {
-                       echo "ERROR: No active slaves for bond device $IFACE"
+           # These interfaces are sometimes bond devices
+           # When we use VLANs for bond interfaces, there will only
+           # be an entry in /proc for the underlying real interface
+           REALIFACE=`echo $IFACE |sed -e 's/\..*$//'`
+           [ -f /proc/net/bonding/$REALIFACE ] && {
+               grep -q 'Currently Active Slave: None' /proc/net/bonding/$REALIFACE && {
+                       echo "ERROR: No active slaves for bond device $REALIFACE"
                        exit 1
                }
-               grep -q '^MII Status: up' /proc/net/bonding/$IFACE || {
-                       echo "ERROR: public network interface $IFACE is down"
+               grep -q '^MII Status: up' /proc/net/bonding/$REALIFACE || {
+                       echo "ERROR: public network interface $REALIFACE is down"
                        exit 1
                }
-               ;;
+               exit 0;
+           }
+
+           case $IFACE in 
            ib*)
                # we dont know how to test ib links
                ;;