7#include <libnetfilter_conntrack/libnetfilter_conntrack.h>
9static int cb(
const struct nlmsghdr *nlh,
10 enum nf_conntrack_msg_type type,
11 struct nf_conntrack *ct,
16 if (!(nlh->nlmsg_flags & NLM_F_DUMP_FILTERED))
18 fprintf(stderr,
"No filtering in kernel, do filtering in userspace\n");
19 return NFCT_CB_FAILURE;
22 nfct_snprintf(buf,
sizeof(buf), ct, NFCT_T_UNKNOWN, NFCT_O_DEFAULT, NFCT_OF_SHOW_LAYER3 | NFCT_OF_TIMESTAMP);
25 return NFCT_CB_CONTINUE;
31 struct nfct_handle *h;
39 if (filter_dump == NULL) {
40 perror(
"nfct_filter_dump_alloc");
44 struct nf_conntrack *ct;
57 ret =
nfct_query(h, NFCT_Q_DUMP_FILTER, filter_dump);
61 printf(
"TEST: get conntrack ");
63 printf(
"(%d)(%s)\n", ret, strerror(errno));
69 ret == -1 ? exit(EXIT_FAILURE) : exit(EXIT_SUCCESS);
struct nfct_handle * nfct_open(uint8_t, unsigned)
int nfct_close(struct nfct_handle *cth)
int nfct_callback_register2(struct nfct_handle *h, enum nf_conntrack_msg_type type, int(*cb)(const struct nlmsghdr *nlh, enum nf_conntrack_msg_type type, struct nf_conntrack *ct, void *data), void *data)
int nfct_query(struct nfct_handle *h, const enum nf_conntrack_query query, const void *data)
void nfct_set_attr_u32(struct nf_conntrack *ct, const enum nf_conntrack_attr type, uint32_t value)
void nfct_set_attr_u8(struct nf_conntrack *ct, const enum nf_conntrack_attr type, uint8_t value)
int nfct_snprintf(char *buf, unsigned int size, const struct nf_conntrack *ct, const unsigned int msg_type, const unsigned int out_type, const unsigned int out_flags)
struct nf_conntrack * nfct_new(void)
struct nfct_filter_dump * nfct_filter_dump_create(void)
void nfct_filter_dump_destroy(struct nfct_filter_dump *filter)
void nfct_filter_dump_set_attr(struct nfct_filter_dump *filter_dump, const enum nfct_filter_dump_attr type, const void *data)