git: 2a78083fc2a1 - main - route(8): fix `route not found` exit code and warn with netlink
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 19 Sep 2023 17:39:36 UTC
The branch main has been updated by kp:
URL: https://cgit.FreeBSD.org/src/commit/?id=2a78083fc2a14af863afb098925b0682698a2838
commit 2a78083fc2a14af863afb098925b0682698a2838
Author: R. Christian McDonald <rcm@rcm.sh>
AuthorDate: 2023-09-19 16:46:49 +0000
Commit: Kristof Provost <kp@FreeBSD.org>
CommitDate: 2023-09-19 17:34:02 +0000
route(8): fix `route not found` exit code and warn with netlink
Fix route(8) incorrectly returning a zero exit code even when unable to
find the specified route with route -n get <route>.
Reviewed by: kp
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D41882
---
sbin/route/route_netlink.c | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/sbin/route/route_netlink.c b/sbin/route/route_netlink.c
index 0dbd90151e10..cad1c8030535 100644
--- a/sbin/route/route_netlink.c
+++ b/sbin/route/route_netlink.c
@@ -271,22 +271,27 @@ rtmsg_nl_int(struct nl_helper *h, int cmd, int rtm_flags, int fib, int rtm_addrs
hdr = snl_read_reply(ss, hdr->nlmsg_seq);
if (nl_type == NL_RTM_GETROUTE) {
- if (hdr->nlmsg_type == NL_RTM_NEWROUTE)
+ if (hdr->nlmsg_type == NL_RTM_NEWROUTE) {
print_getmsg(h, hdr, dst);
- else {
- snl_parse_errmsg(ss, hdr, &e);
- if (e.error == ESRCH)
- warn("route has not been found");
- else
- warn("message indicates error %d", e.error);
+ return (0);
}
-
- return (0);
}
- if (snl_parse_errmsg(ss, hdr, &e))
+ if (snl_parse_errmsg(ss, hdr, &e)) {
+ switch (e.error) {
+ case (ESRCH):
+ warnx("route has not been found");
+ break;
+ default:
+ if (e.error == 0)
+ break;
+ warnc(e.error, "message indicates error");
+ }
+
return (e.error);
+ }
}
+
return (EINVAL);
}