]> git.ipfire.org Git - thirdparty/libnftnl.git/commitdiff
tests: Extend set test by NFTNL_SET_DESC_CONCAT
authorPhil Sutter <phil@nwl.cc>
Wed, 27 Nov 2024 17:52:10 +0000 (18:52 +0100)
committerPhil Sutter <phil@nwl.cc>
Wed, 4 Dec 2024 14:44:05 +0000 (15:44 +0100)
Just to cover setter and getter code for that attribute.

Signed-off-by: Phil Sutter <phil@nwl.cc>
tests/nft-set-test.c

index e264c735a2de66d05d54075c29899337c321298d..1cb66e4a3ea641eca0b0afe0ac8ed0091653042a 100644 (file)
@@ -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);