From: David Ahern Date: Thu, 3 Jan 2019 00:31:38 +0000 (-0800) Subject: libnetlink: Add RTNL_HANDLE_F_STRICT_CHK flag X-Git-Tag: v5.0.0~36^2~2^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=285033bfebbd287e41176611ac7c95c4c3d84eff;p=thirdparty%2Fiproute2.git libnetlink: Add RTNL_HANDLE_F_STRICT_CHK flag Add RTNL_HANDLE_F_STRICT_CHK flag and set in rth flags to let know commands know if the kernel supports strict checking. Extracted from patch from Ido to fix filtering with strict checking enabled. Cc: Ido Schimmel Signed-off-by: David Ahern --- diff --git a/include/libnetlink.h b/include/libnetlink.h index 148951510..0854d6ad2 100644 --- a/include/libnetlink.h +++ b/include/libnetlink.h @@ -23,6 +23,7 @@ struct rtnl_handle { FILE *dump_fp; #define RTNL_HANDLE_F_LISTEN_ALL_NSID 0x01 #define RTNL_HANDLE_F_SUPPRESS_NLERR 0x02 +#define RTNL_HANDLE_F_STRICT_CHK 0x04 int flags; }; diff --git a/lib/libnetlink.c b/lib/libnetlink.c index 19318b445..98cb9d947 100644 --- a/lib/libnetlink.c +++ b/lib/libnetlink.c @@ -166,8 +166,11 @@ void rtnl_set_strict_dump(struct rtnl_handle *rth) { int one = 1; - setsockopt(rth->fd, SOL_NETLINK, NETLINK_GET_STRICT_CHK, - &one, sizeof(one)); + if (setsockopt(rth->fd, SOL_NETLINK, NETLINK_GET_STRICT_CHK, + &one, sizeof(one)) < 0) + return; + + rth->flags |= RTNL_HANDLE_F_STRICT_CHK; } void rtnl_close(struct rtnl_handle *rth)