]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
libnetlink: Add RTNL_HANDLE_F_STRICT_CHK flag
authorDavid Ahern <dsahern@gmail.com>
Thu, 3 Jan 2019 00:31:38 +0000 (16:31 -0800)
committerDavid Ahern <dsahern@gmail.com>
Fri, 4 Jan 2019 20:17:17 +0000 (12:17 -0800)
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 <idosch@mellanox.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
include/libnetlink.h
lib/libnetlink.c

index 148951510d1e5cb1f9437b662e7e86ce5c4b8e44..0854d6ad2fabec5ad41756c5c6fbab1318e87c3a 100644 (file)
@@ -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;
 };
 
index 19318b445266d8aa4060ad5b6ca8304932d531d2..98cb9d9471aedaf9088d26cd8e8215fd0305f871 100644 (file)
@@ -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)