diff options
author | Phil Sutter <phil@nwl.cc> | 2024-11-27 18:52:10 +0100 |
---|---|---|
committer | Phil Sutter <phil@nwl.cc> | 2024-12-04 15:44:05 +0100 |
commit | 3de0f574bd8d56b4a9ab72c0b78e6bb95a1f09ba (patch) | |
tree | e29d34905dbea7608165e9735ff0409ebd2f325c | |
parent | 7cb2a63d67af14576988631e916404592f261fd4 (diff) |
tests: Extend set test by NFTNL_SET_DESC_CONCAT
Just to cover setter and getter code for that attribute.
Signed-off-by: Phil Sutter <phil@nwl.cc>
-rw-r--r-- | tests/nft-set-test.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/nft-set-test.c b/tests/nft-set-test.c index e264c73..1cb66e4 100644 --- a/tests/nft-set-test.c +++ b/tests/nft-set-test.c @@ -21,6 +21,9 @@ static void print_err(const char *msg) static void cmp_nftnl_set(struct nftnl_set *a, struct nftnl_set *b) { + const uint8_t *data_a, *data_b; + uint32_t datalen_a, datalen_b; + if (strcmp(nftnl_set_get_str(a, NFTNL_SET_TABLE), nftnl_set_get_str(b, NFTNL_SET_TABLE)) != 0) print_err("Set table mismatches"); @@ -45,11 +48,18 @@ static void cmp_nftnl_set(struct nftnl_set *a, struct nftnl_set *b) if (strcmp(nftnl_set_get_str(a, NFTNL_SET_USERDATA), nftnl_set_get_str(b, NFTNL_SET_USERDATA)) != 0) print_err("Set userdata mismatches"); + + data_a = nftnl_set_get_data(a, NFTNL_SET_DESC_CONCAT, &datalen_a); + data_b = nftnl_set_get_data(b, NFTNL_SET_DESC_CONCAT, &datalen_b); + if (datalen_a != datalen_b || + memcmp(data_a, data_b, datalen_a)) + print_err("Set desc concat mismatches"); } int main(int argc, char *argv[]) { struct nftnl_set *a, *b = NULL; + uint8_t field_lengths[16]; char buf[4096]; struct nlmsghdr *nlh; @@ -68,6 +78,13 @@ int main(int argc, char *argv[]) nftnl_set_set_u32(a, NFTNL_SET_FAMILY, 0x12345678); nftnl_set_set_str(a, NFTNL_SET_USERDATA, "testing user data"); + memset(field_lengths, 0xff, sizeof(field_lengths)); + if (!nftnl_set_set_data(a, NFTNL_SET_DESC_CONCAT, field_lengths, 17)) + print_err("oversized NFTNL_SET_DESC_CONCAT data accepted"); + if (nftnl_set_set_data(a, NFTNL_SET_DESC_CONCAT, field_lengths, 16)) + print_err("setting NFTNL_SET_DESC_CONCAT failed"); + + /* cmd extracted from include/linux/netfilter/nf_tables.h */ nlh = nftnl_nlmsg_build_hdr(buf, NFT_MSG_NEWSET, AF_INET, 0, 1234); nftnl_set_nlmsg_build_payload(nlh, a); |