Message ID | 20250228133431.20296-1-kirjanov@gmail.com (mailing list archive) |
---|---|
State | Rejected |
Delegated to: | Stephen Hemminger |
Headers | show |
Series | [iproute] libgenl: report a verbose error if rtnl_talk fails | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Guessing tree name failed - patch did not apply |
On Fri, 28 Feb 2025 16:34:31 +0300 Denis Kirjanov <kirjanov@gmail.com> wrote: > Currenlty rtnl_talk() doesn't give us the reason > if it fails. > > Signed-off-by: Denis Kirjanov <kirjanov@gmail.com> > --- Don't think this is needed. - inside rtnl_talk, it already prints (using perror) if it is a kernel reported error - lots of other places call rtnl_talk() what is special about genl Better to move any required error prints into libnetlink.c Even better is to make sure any errors in kernel are using extack to give better messages.
diff --git a/lib/libgenl.c b/lib/libgenl.c index fca07f9f..9927af84 100644 --- a/lib/libgenl.c +++ b/lib/libgenl.c @@ -58,7 +58,8 @@ int genl_resolve_family(struct rtnl_handle *grth, const char *family) family, strlen(family) + 1); if (rtnl_talk(grth, &req.n, &answer) < 0) { - fprintf(stderr, "Error talking to the kernel\n"); + fprintf(stderr, "Error talking to the kernel: %s (errno %d)\n", + strerror(errno), errno); return -2; } @@ -103,7 +104,8 @@ int genl_add_mcast_grp(struct rtnl_handle *grth, __u16 fnum, const char *group) addattr16(&req.n, sizeof(req), CTRL_ATTR_FAMILY_ID, fnum); if (rtnl_talk(grth, &req.n, &answer) < 0) { - fprintf(stderr, "Error talking to the kernel\n"); + fprintf(stderr, "Error talking to the kernel: %s (errno %d)\n", + strerror(errno), errno); return -2; }
Currenlty rtnl_talk() doesn't give us the reason if it fails. Signed-off-by: Denis Kirjanov <kirjanov@gmail.com> --- lib/libgenl.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)