From: Thomas Haller Date: Fri, 31 Jan 2014 13:15:13 +0000 (+0100) Subject: route: fix return value of nl_rtgen_request() X-Git-Tag: libnl3_2_25rc1~65 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b70174668b9867de573cf51471bc98bfe7fd2bc3;p=thirdparty%2Flibnl.git route: fix return value of nl_rtgen_request() According to documentation, nl_rtgen_request() returns 0 on success, but before it returned the number of bytes sent. Signed-off-by: Thomas Haller --- diff --git a/lib/route/rtnl.c b/lib/route/rtnl.c index 82397e9..6a55ca1 100644 --- a/lib/route/rtnl.c +++ b/lib/route/rtnl.c @@ -34,15 +34,20 @@ * Fills out a routing netlink request message and sends it out * using nl_send_simple(). * - * @return 0 on success or a negative error code. + * @return 0 on success or a negative error code. Due to a bug in + * older versions, this returned the number of bytes sent. So for + * compatibility, treat positive return values as success too. */ int nl_rtgen_request(struct nl_sock *sk, int type, int family, int flags) { + int err; struct rtgenmsg gmsg = { .rtgen_family = family, }; - return nl_send_simple(sk, type, flags, &gmsg, sizeof(gmsg)); + err = nl_send_simple(sk, type, flags, &gmsg, sizeof(gmsg)); + + return err >= 0 ? 0 : err; } /** @} */