[PATCH v3 4/4] tests: add check for decoding of netfilter subsystem
Chen Jingpiao
chenjingpiao at gmail.com
Wed Mar 7 04:34:47 UTC 2018
* 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 0047b0a38..331246e08 100644
--- a/tests/netlink_netfilter.c
+++ b/tests/netlink_netfilter.c
@@ -164,9 +164,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);
@@ -183,6 +200,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.16.2.347.gba1b3b449.dirty
More information about the Strace-devel
mailing list