10#include "internal/internal.h"
11#include <libmnl/libmnl.h>
14set_filter_dump_attr_mark(
struct nfct_filter_dump *filter_dump,
19 filter_dump->mark.val = this->val;
20 filter_dump->mark.mask = this->mask;
24set_filter_dump_attr_status(
struct nfct_filter_dump *filter_dump,
29 filter_dump->status.val = this->val;
30 filter_dump->status.mask = this->mask;
34set_filter_dump_attr_family(
struct nfct_filter_dump *filter_dump,
37 filter_dump->l3num = *((uint8_t *)value);
41set_filter_dump_attr_zone(
struct nfct_filter_dump *filter_dump,
44 filter_dump->zone = *((uint16_t *)value);
48set_filter_dump_attr_tuple(
struct nfct_filter_dump *filter_dump,
51 memcpy(&filter_dump->ct, value,
sizeof(
struct nf_conntrack));
54const set_filter_dump_attr set_filter_dump_attr_array[NFCT_FILTER_DUMP_MAX] = {
55 [NFCT_FILTER_DUMP_MARK] = set_filter_dump_attr_mark,
56 [NFCT_FILTER_DUMP_L3NUM] = set_filter_dump_attr_family,
57 [NFCT_FILTER_DUMP_STATUS] = set_filter_dump_attr_status,
58 [NFCT_FILTER_DUMP_ZONE] = set_filter_dump_attr_zone,
59 [NFCT_FILTER_DUMP_TUPLE] = set_filter_dump_attr_tuple,
62int __build_filter_dump(
struct nfnlhdr *req,
size_t size,
63 const struct nfct_filter_dump *filter_dump)
65 return nfct_nlmsg_build_filter(&req->nlh, filter_dump);
68int __build_filter_flush(
struct nfnlhdr *req,
size_t size,
69 const struct nfct_filter_dump *filter_dump)
71 if (filter_dump->set & (1 << NFCT_FILTER_DUMP_TUPLE)) {
75 return nfct_nlmsg_build_filter(&req->nlh, filter_dump);