diff options
author | Denis Kirjanov <denis.kirjanov@suse.com> | 2024-01-26 05:08:55 -0500 |
---|---|---|
committer | Stephen Hemminger <stephen@networkplumber.org> | 2024-01-30 12:39:50 -0800 |
commit | ddcc9329352a2158241cb21fa11df21ca23759d6 (patch) | |
tree | 607009c0f4b6d24f9744b006f7e98aaedb48be3d | |
parent | 69e3b2fadcd32683db2942f31fe41f0fbb2185f8 (diff) | |
download | iproute2-ddcc9329352a2158241cb21fa11df21ca23759d6.tar.gz |
ifstat: make load_info() more verbose on error
convert frprintf calls to perror() so the caller
can see the reason of an error
Signed-off-by: Denis Kirjanov <dkirjanov@suse.de>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r-- | misc/ifstat.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/misc/ifstat.c b/misc/ifstat.c index f6f9ba502..721f49149 100644 --- a/misc/ifstat.c +++ b/misc/ifstat.c @@ -117,16 +117,20 @@ static int get_nlmsg_extended(struct nlmsghdr *m, void *arg) return 0; len -= NLMSG_LENGTH(sizeof(*ifsm)); - if (len < 0) + if (len < 0) { + errno = EINVAL; return -1; + } parse_rtattr(tb, IFLA_STATS_MAX, IFLA_STATS_RTA(ifsm), len); if (tb[filter_type] == NULL) return 0; n = malloc(sizeof(*n)); - if (!n) - abort(); + if (!n) { + errno = ENOMEM; + return -1; + } n->ifindex = ifsm->ifindex; n->name = strdup(ll_index_to_name(ifsm->ifindex)); @@ -161,8 +165,10 @@ static int get_nlmsg(struct nlmsghdr *m, void *arg) return 0; len -= NLMSG_LENGTH(sizeof(*ifi)); - if (len < 0) + if (len < 0) { + errno = EINVAL; return -1; + } if (!(ifi->ifi_flags&IFF_UP)) return 0; @@ -172,8 +178,10 @@ static int get_nlmsg(struct nlmsghdr *m, void *arg) return 0; n = malloc(sizeof(*n)); - if (!n) - abort(); + if (!n) { + errno = ENOMEM; + return -1; + } n->ifindex = ifi->ifi_index; n->name = strdup(RTA_DATA(tb[IFLA_IFNAME])); memcpy(&n->ival, RTA_DATA(tb[IFLA_STATS]), sizeof(n->ival)); @@ -204,7 +212,7 @@ static void load_info(void) } if (rtnl_dump_filter(&rth, get_nlmsg_extended, NULL) < 0) { - fprintf(stderr, "Dump terminated\n"); + perror("Dump terminated\n"); exit(1); } } else { @@ -214,7 +222,7 @@ static void load_info(void) } if (rtnl_dump_filter(&rth, get_nlmsg, NULL) < 0) { - fprintf(stderr, "Dump terminated\n"); + perror("Dump terminated\n"); exit(1); } } |