18a44513648da0c5f5551f96b329cf56b66f5b303pkanwar#include <stdio.h>
28a44513648da0c5f5551f96b329cf56b66f5b303pkanwar#include <stdlib.h>
38a44513648da0c5f5551f96b329cf56b66f5b303pkanwar#include <string.h>
48a44513648da0c5f5551f96b329cf56b66f5b303pkanwar#include <errno.h>
58a44513648da0c5f5551f96b329cf56b66f5b303pkanwar
68a44513648da0c5f5551f96b329cf56b66f5b303pkanwar#include <libnetfilter_conntrack/libnetfilter_conntrack.h>
78a44513648da0c5f5551f96b329cf56b66f5b303pkanwar
88a44513648da0c5f5551f96b329cf56b66f5b303pkanwarstatic int cb(enum nf_conntrack_msg_type type,
98a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	      struct nf_conntrack *ct,
108a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	      void *data)
118a44513648da0c5f5551f96b329cf56b66f5b303pkanwar{
128a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	char buf[1024];
138a44513648da0c5f5551f96b329cf56b66f5b303pkanwar
148a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	nfct_snprintf(buf, sizeof(buf), ct, NFCT_T_UNKNOWN, NFCT_O_DEFAULT, NFCT_OF_SHOW_LAYER3 | NFCT_OF_TIMESTAMP);
158a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	printf("%s\n", buf);
168a44513648da0c5f5551f96b329cf56b66f5b303pkanwar
178a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	return NFCT_CB_CONTINUE;
188a44513648da0c5f5551f96b329cf56b66f5b303pkanwar}
198a44513648da0c5f5551f96b329cf56b66f5b303pkanwar
208a44513648da0c5f5551f96b329cf56b66f5b303pkanwarint main(void)
218a44513648da0c5f5551f96b329cf56b66f5b303pkanwar{
228a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	int ret;
238a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	uint32_t family = AF_INET;
248a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	struct nfct_handle *h;
258a44513648da0c5f5551f96b329cf56b66f5b303pkanwar
268a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	h = nfct_open(CONNTRACK, 0);
278a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	if (!h) {
288a44513648da0c5f5551f96b329cf56b66f5b303pkanwar		perror("nfct_open");
298a44513648da0c5f5551f96b329cf56b66f5b303pkanwar		return -1;
308a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	}
318a44513648da0c5f5551f96b329cf56b66f5b303pkanwar
328a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	nfct_callback_register(h, NFCT_T_ALL, cb, NULL);
338a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	ret = nfct_query(h, NFCT_Q_DUMP, &family);
348a44513648da0c5f5551f96b329cf56b66f5b303pkanwar
358a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	printf("TEST: get conntrack ");
368a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	if (ret == -1)
378a44513648da0c5f5551f96b329cf56b66f5b303pkanwar		printf("(%d)(%s)\n", ret, strerror(errno));
388a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	else
398a44513648da0c5f5551f96b329cf56b66f5b303pkanwar		printf("(OK)\n");
408a44513648da0c5f5551f96b329cf56b66f5b303pkanwar
418a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	nfct_close(h);
428a44513648da0c5f5551f96b329cf56b66f5b303pkanwar
438a44513648da0c5f5551f96b329cf56b66f5b303pkanwar	ret == -1 ? exit(EXIT_FAILURE) : exit(EXIT_SUCCESS);
448a44513648da0c5f5551f96b329cf56b66f5b303pkanwar}
45