aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2012-02-14 13:12:11 -0800
committerBen Pfaff <blp@nicira.com>2012-02-27 09:33:51 -0800
commitd8256121c4ca1b7d0deb756f69acb9585e0dc005 (patch)
treedbeed3395b41eaa4b80bc292ec93274fd5dfb052
parent0c9560b7ded6d556762f9fd74ffd9fdfac12afc0 (diff)
nlmon: Also print ifinfomsg flags.
This was useful for observing IFF_RUNNING change as I removed and inserted cables. (nlmon is a test utility that doesn't get installed.) Signed-off-by: Ben Pfaff <blp@nicira.com>
-rw-r--r--utilities/nlmon.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/utilities/nlmon.c b/utilities/nlmon.c
index b6396d50b..1b2f1e211 100644
--- a/utilities/nlmon.c
+++ b/utilities/nlmon.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2010, 2011 Nicira Networks.
+ * Copyright (c) 2009, 2010, 2011, 2012 Nicira Networks.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -66,9 +66,34 @@ main(int argc OVS_UNUSED, char *argv[])
} else if (error) {
ovs_fatal(error, "error on network monitor socket");
} else {
+ struct iff_flag {
+ unsigned int flag;
+ const char *name;
+ };
+
+ static const struct iff_flag flags[] = {
+ { IFF_UP, "UP", },
+ { IFF_BROADCAST, "BROADCAST", },
+ { IFF_DEBUG, "DEBUG", },
+ { IFF_LOOPBACK, "LOOPBACK", },
+ { IFF_POINTOPOINT, "POINTOPOINT", },
+ { IFF_NOTRAILERS, "NOTRAILERS", },
+ { IFF_RUNNING, "RUNNING", },
+ { IFF_NOARP, "NOARP", },
+ { IFF_PROMISC, "PROMISC", },
+ { IFF_ALLMULTI, "ALLMULTI", },
+ { IFF_MASTER, "MASTER", },
+ { IFF_SLAVE, "SLAVE", },
+ { IFF_MULTICAST, "MULTICAST", },
+ { IFF_PORTSEL, "PORTSEL", },
+ { IFF_AUTOMEDIA, "AUTOMEDIA", },
+ { IFF_DYNAMIC, "DYNAMIC", },
+ };
+
struct nlattr *attrs[ARRAY_SIZE(rtnlgrp_link_policy)];
struct nlmsghdr *nlh;
struct ifinfomsg *iim;
+ int i;
nlh = ofpbuf_at(buf, 0, NLMSG_HDRLEN);
iim = ofpbuf_at(buf, NLMSG_HDRLEN, sizeof *iim);
@@ -92,6 +117,13 @@ main(int argc OVS_UNUSED, char *argv[])
: nlh->nlmsg_type == RTM_GETLINK ? "RTM_GETLINK"
: nlh->nlmsg_type == RTM_SETLINK ? "RTM_SETLINK"
: "other"));
+ printf("\tflags:");
+ for (i = 0; i < ARRAY_SIZE(flags); i++) {
+ if (iim->ifi_flags & flags[i].flag) {
+ printf(" %s", flags[i].name);
+ }
+ }
+ printf("\n");
if (attrs[IFLA_MASTER]) {
uint32_t idx = nl_attr_get_u32(attrs[IFLA_MASTER]);
char ifname[IFNAMSIZ];