The err->errno value reported by netlink is already negative. Prepending ierr->errno with '-' when forwarding it to the caller results in a positive value and thus not detected as error.
Fix error handling in sitnl by not negating the sign of the value returned by sitnl_send() in case of generic error. While at it, print the errno in decimal form along with its string represenation. Reported-by: Richard Bonhomme <tincantek...@gmail.com> Signed-off-by: Antonio Quartulli <a...@unstable.cc> --- src/openvpn/networking_sitnl.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/openvpn/networking_sitnl.c b/src/openvpn/networking_sitnl.c index b93697e9..7adcb64c 100644 --- a/src/openvpn/networking_sitnl.c +++ b/src/openvpn/networking_sitnl.c @@ -365,9 +365,9 @@ sitnl_send(struct nlmsghdr *payload, pid_t peer, unsigned int groups, } else { - msg(M_WARN, "%s: rtnl: generic error: %s", - __func__, strerror(-err->error)); - ret = -err->error; + msg(M_WARN, "%s: rtnl: generic error (%d): %s", + __func__, err->error, strerror(-err->error)); + ret = err->error; } } goto out; -- 2.26.1 _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel