* tests/netlink_netfilter.c(test_nfgenmsg): Add check for decoding
of netfilter subsystem.
---
 tests/netlink_netfilter.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/tests/netlink_netfilter.c b/tests/netlink_netfilter.c
index e2cecd6..1d20320 100644
--- a/tests/netlink_netfilter.c
+++ b/tests/netlink_netfilter.c
@@ -158,9 +158,26 @@ test_nfgenmsg(const int fd)
                     printf(", version=%#x /* NFNETLINK_??? */", msg.version);
 #  endif
                     printf(", res_id=htons(%d)", NFNL_SUBSYS_NFTABLES));
+# endif /* NFNL_MSG_BATCH_BEGIN */
 
        char str_buf[NLMSG_ALIGN(sizeof(msg)) + 4];
+       msg.res_id = htons(0xefab);
+       memcpy(str_buf, &msg, sizeof(msg));
+       memcpy(str_buf + NLMSG_ALIGN(sizeof(msg)), "1234", 4);
+       TEST_NETLINK_(fd, nlh0,
+                     0xffff, "0xff /* NFNL_SUBSYS_??? */<<8|0xff",
+                     NLM_F_REQUEST, "NLM_F_REQUEST",
+                     sizeof(str_buf), str_buf, sizeof(str_buf),
+                     printf("{nfgen_family=AF_UNIX");
+# ifdef NFNETLINK_V0
+                     printf(", version=NFNETLINK_V0");
+# else
+                     printf(", version=%#x /* NFNETLINK_??? */", msg.version);
+# endif
+                     printf(", res_id=htons(%d)"
+                            ", \"\\x31\\x32\\x33\\x34\"", 0xefab));
 
+# ifdef NFNL_MSG_BATCH_BEGIN
        msg.res_id = htons(0xabcd);
        memcpy(str_buf, &msg, sizeof(msg));
        memcpy(str_buf + NLMSG_ALIGN(sizeof(msg)), "1234", 4);
@@ -177,6 +194,31 @@ test_nfgenmsg(const int fd)
                     printf(", res_id=htons(%d)"
                            ", \"\\x31\\x32\\x33\\x34\"", 0xabcd));
 # endif /* NFNL_MSG_BATCH_BEGIN */
+
+       static const struct nlattr nla = {
+               .nla_len = sizeof(nla),
+               .nla_type = 0x0bcd
+       };
+       char nla_buf[NLMSG_ALIGN(sizeof(msg)) + sizeof(nla)];
+
+       msg.res_id = htons(NFNL_SUBSYS_NFTABLES);
+       memcpy(nla_buf, &msg, sizeof(msg));
+       memcpy(nla_buf + NLMSG_ALIGN(sizeof(msg)), &nla, sizeof(nla));
+
+       TEST_NETLINK_(fd, nlh0,
+                     NFNL_SUBSYS_NFTABLES << 8 | 0xff,
+                     "NFNL_SUBSYS_NFTABLES<<8|0xff /* NFT_MSG_??? */",
+                     NLM_F_REQUEST, "NLM_F_REQUEST",
+                     sizeof(nla_buf), nla_buf, sizeof(nla_buf),
+                     printf("{nfgen_family=AF_UNIX");
+# ifdef NFNETLINK_V0
+                     printf(", version=NFNETLINK_V0");
+# else
+                     printf(", version=%#x /* NFNETLINK_??? */", msg.version);
+# endif
+                     printf(", res_id=htons(NFNL_SUBSYS_NFTABLES)"
+                            ", {nla_len=%d, nla_type=%#x}",
+                            nla.nla_len, nla.nla_type));
 }
 
 int main(void)
-- 
2.7.4


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to