ipaddress: print OPERSTATEs and NO-CARRIER
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Tue, 25 May 2010 07:55:42 +0000 (09:55 +0200)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Tue, 25 May 2010 08:25:52 +0000 (10:25 +0200)
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
networking/libiproute/ipaddress.c

index daea9dd037cde654bbd4e665551017ee5fa33474..3f360f4559f056f7932172273663a96b3acdfa7a 100644 (file)
@@ -54,6 +54,8 @@ static void print_link_flags(unsigned flags, unsigned mdown)
                "MULTICAST\0""NOARP\0""UP\0""LOWER_UP\0";
 
        bb_putchar('<');
+       if (flags & IFF_UP && !(flags & IFF_RUNNING))
+               printf("NO-CARRIER,");
        flags &= ~IFF_RUNNING;
 #if 0
        _PF(ALLMULTI);
@@ -162,6 +164,13 @@ static NOINLINE int print_linkinfo(const struct nlmsghdr *n)
                printf("master %s ", ll_idx_n2a(*(int*)RTA_DATA(tb[IFLA_MASTER]), b1));
        }
 #endif
+       if (tb[IFLA_OPERSTATE]) {
+               static const char operstate_labels[] ALIGN1 =
+                       "UNKNOWN\0""NOTPRESENT\0""DOWN\0""LOWERLAYERDOWN\0"
+                       "TESTING\0""DORMANT\0""UP\0";
+               printf("state %s ", nth_string(operstate_labels,
+                                       *(__u8 *)RTA_DATA(tb[IFLA_OPERSTATE])));
+       }
        if (G_filter.showqueue)
                print_queuelen((char*)RTA_DATA(tb[IFLA_IFNAME]));