diff options
author | Ben Pfaff <blp@nicira.com> | 2012-02-14 13:12:11 -0800 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2012-02-27 09:33:51 -0800 |
commit | d8256121c4ca1b7d0deb756f69acb9585e0dc005 (patch) | |
tree | dbeed3395b41eaa4b80bc292ec93274fd5dfb052 /utilities | |
parent | 0c9560b7ded6d556762f9fd74ffd9fdfac12afc0 (diff) | |
download | openvswitch-d8256121c4ca1b7d0deb756f69acb9585e0dc005.tar.gz |
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>
Diffstat (limited to 'utilities')
-rw-r--r-- | utilities/nlmon.c | 34 |
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]; |