• Main Page
  • Modules
  • Data Structures
  • Files
  • File List

expect_get.c

00001 #include <stdio.h>
00002 #include <stdlib.h>
00003 #include <string.h>
00004 #include <errno.h>
00005 #include <arpa/inet.h>
00006 
00007 #include <libnetfilter_conntrack/libnetfilter_conntrack.h>
00008 
00009 static int cb(enum nf_conntrack_msg_type type,
00010               struct nf_expect *exp,
00011               void *data)
00012 {
00013         char buf[1024];
00014 
00015         nfexp_snprintf(buf, 1024, exp, NFCT_T_UNKNOWN, NFCT_O_DEFAULT, 0);
00016         printf("%s\n", buf);
00017 
00018         return NFCT_CB_CONTINUE;
00019 }
00020 
00021 int main(void)
00022 {
00023         int ret;
00024         struct nfct_handle *h;
00025         struct nf_conntrack *master;
00026         struct nf_expect *exp;
00027 
00028         master = nfct_new();
00029         if (!master) {
00030                 perror("nfct_new");
00031                 exit(EXIT_FAILURE);
00032         }
00033 
00034         nfct_set_attr_u8(master, ATTR_L3PROTO, AF_INET);
00035         nfct_set_attr_u32(master, ATTR_IPV4_SRC, inet_addr("4.4.4.4"));
00036         nfct_set_attr_u32(master, ATTR_IPV4_DST, inet_addr("5.5.5.5"));
00037 
00038         nfct_set_attr_u8(master, ATTR_L4PROTO, IPPROTO_TCP);
00039         nfct_set_attr_u16(master, ATTR_PORT_SRC, htons(10240));
00040         nfct_set_attr_u16(master, ATTR_PORT_DST, htons(10241));
00041 
00042         exp = nfexp_new();
00043         if (!exp) {
00044                 perror("nfexp_new");
00045                 exit(EXIT_FAILURE);
00046         }
00047 
00048         nfexp_set_attr(exp, ATTR_EXP_MASTER, master);
00049 
00050         h = nfct_open(EXPECT, 0);
00051         if (!h) {
00052                 perror("nfct_open");
00053                 return -1;
00054         }
00055 
00056         nfexp_callback_register(h, NFCT_T_ALL, cb, NULL);
00057         ret = nfexp_query(h, NFCT_Q_GET, exp);
00058 
00059         printf("TEST: get expectation ");
00060         if (ret == -1)
00061                 printf("(%d)(%s)\n", ret, strerror(errno));
00062         else
00063                 printf("(OK)\n");
00064 
00065         nfct_close(h);
00066 
00067         ret == -1 ? exit(EXIT_FAILURE) : exit(EXIT_SUCCESS);
00068 }

Generated on Wed Jan 26 2011 23:11:37 for libnetfilter_conntrack by  doxygen 1.7.1