libnetfilter_conntrack  1.0.6
conntrack_dump_filter.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <errno.h>
5 
6 #include <libnetfilter_conntrack/libnetfilter_conntrack.h>
7 
8 static int cb(enum nf_conntrack_msg_type type,
9  struct nf_conntrack *ct,
10  void *data)
11 {
12  char buf[1024];
13 
14  nfct_snprintf(buf, sizeof(buf), ct, NFCT_T_UNKNOWN, NFCT_O_DEFAULT, NFCT_OF_SHOW_LAYER3 | NFCT_OF_TIMESTAMP);
15  printf("%s\n", buf);
16 
17  return NFCT_CB_CONTINUE;
18 }
19 
20 int main(void)
21 {
22  int ret;
23  struct nfct_handle *h;
24 
25  h = nfct_open(CONNTRACK, 0);
26  if (!h) {
27  perror("nfct_open");
28  return -1;
29  }
30  struct nfct_filter_dump *filter_dump = nfct_filter_dump_create();
31  if (filter_dump == NULL) {
32  perror("nfct_filter_dump_alloc");
33  return -1;
34  }
35  struct nfct_filter_dump_mark filter_dump_mark = {
36  .val = 1,
37  .mask = 0xffffffff,
38  };
39  nfct_filter_dump_set_attr(filter_dump, NFCT_FILTER_DUMP_MARK,
40  &filter_dump_mark);
41  nfct_filter_dump_set_attr_u8(filter_dump, NFCT_FILTER_DUMP_L3NUM,
42  AF_INET);
43 
44  nfct_callback_register(h, NFCT_T_ALL, cb, NULL);
45  ret = nfct_query(h, NFCT_Q_DUMP_FILTER, filter_dump);
46 
47  nfct_filter_dump_destroy(filter_dump);
48 
49  printf("TEST: get conntrack ");
50  if (ret == -1)
51  printf("(%d)(%s)\n", ret, strerror(errno));
52  else
53  printf("(OK)\n");
54 
55  nfct_close(h);
56 
57  ret == -1 ? exit(EXIT_FAILURE) : exit(EXIT_SUCCESS);
58 }
int nfct_query(struct nfct_handle *h, const enum nf_conntrack_query query, const void *data)
int nfct_close(struct nfct_handle *cth)
Definition: main.c:105
void nfct_filter_dump_set_attr(struct nfct_filter_dump *filter_dump, const enum nfct_filter_dump_attr type, const void *data)
void nfct_filter_dump_set_attr_u8(struct nfct_filter_dump *filter_dump, const enum nfct_filter_dump_attr type, uint8_t data)
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)
int nfct_callback_register(struct nfct_handle *h, enum nf_conntrack_msg_type type, int(*cb)(enum nf_conntrack_msg_type type, struct nf_conntrack *ct, void *data), void *data)
void nfct_filter_dump_destroy(struct nfct_filter_dump *filter)
struct nfct_handle * nfct_open(uint8_t, unsigned)
Definition: main.c:84
struct nfct_filter_dump * nfct_filter_dump_create(void)