From e09d21f6752a02d1bec19d109e93b8e759627079 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Wed, 15 Aug 2018 14:29:42 -0700 Subject: [PATCH] ipmonitor: decode DELNETCONF message When device is deleted DELNETCONF is sent, but ipmonitor was unable to decode it. Signed-off-by: Stephen Hemminger --- ip/ipmonitor.c | 1 + ip/ipnetconf.c | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ip/ipmonitor.c b/ip/ipmonitor.c index 5552d98e..a93b62cd 100644 --- a/ip/ipmonitor.c +++ b/ip/ipmonitor.c @@ -133,6 +133,7 @@ static int accept_msg(const struct sockaddr_nl *who, return 0; case RTM_NEWNETCONF: + case RTM_DELNETCONF: print_headers(fp, "[NETCONF]", ctrl); print_netconf(who, ctrl, n, arg); return 0; diff --git a/ip/ipnetconf.c b/ip/ipnetconf.c index 03f98ace..04c4d608 100644 --- a/ip/ipnetconf.c +++ b/ip/ipnetconf.c @@ -66,8 +66,10 @@ int print_netconf(const struct sockaddr_nl *who, struct rtnl_ctrl_data *ctrl, if (n->nlmsg_type == NLMSG_ERROR) return -1; - if (n->nlmsg_type != RTM_NEWNETCONF) { - fprintf(stderr, "Not RTM_NEWNETCONF: %08x %08x %08x\n", + + if (n->nlmsg_type != RTM_NEWNETCONF && + n->nlmsg_type != RTM_DELNETCONF) { + fprintf(stderr, "Not a netconf message: %08x %08x %08x\n", n->nlmsg_len, n->nlmsg_type, n->nlmsg_flags); return -1; @@ -91,6 +93,9 @@ int print_netconf(const struct sockaddr_nl *who, struct rtnl_ctrl_data *ctrl, return 0; open_json_object(NULL); + if (n->nlmsg_type == RTM_DELNETCONF) + print_bool(PRINT_ANY, "deleted", "Deleted ", true); + print_string(PRINT_ANY, "family", "%s ", family_name(ncm->ncm_family));