summaryrefslogtreecommitdiff
path: root/include/conntrack.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/conntrack.h')
-rw-r--r--include/conntrack.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/include/conntrack.h b/include/conntrack.h
new file mode 100644
index 0000000..3882de7
--- /dev/null
+++ b/include/conntrack.h
@@ -0,0 +1,65 @@
+#ifndef _CONNTRACK_H
+#define _CONNTRACK_H
+
+#include "linux_list.h"
+#include <stdint.h>
+#include <libnetfilter_conntrack/libnetfilter_conntrack.h>
+
+#define PROGNAME "conntrack"
+
+#include <netinet/in.h>
+
+#define NUMBER_OF_CMD 18
+#define NUMBER_OF_OPT 24
+
+struct ctproto_handler {
+ struct list_head head;
+
+ const char *name;
+ uint16_t protonum;
+ const char *version;
+
+ enum ctattr_protoinfo protoinfo_attr;
+
+ int (*parse_opts)(char c,
+ struct nf_conntrack *ct,
+ struct nf_conntrack *exptuple,
+ struct nf_conntrack *mask,
+ unsigned int *flags);
+
+ void (*final_check)(unsigned int flags,
+ unsigned int command,
+ struct nf_conntrack *ct);
+
+ void (*help)(void);
+
+ struct option *opts;
+
+ unsigned int option_offset;
+};
+
+enum exittype {
+ OTHER_PROBLEM = 1,
+ PARAMETER_PROBLEM,
+ VERSION_PROBLEM
+};
+
+int generic_opt_check(int options, int nops,
+ char *optset, const char *optflg[],
+ unsigned int *coupled_flags, int coupled_flags_size,
+ int *partial);
+void exit_error(enum exittype status, const char *msg, ...);
+
+extern void register_proto(struct ctproto_handler *h);
+
+extern void register_tcp(void);
+extern void register_udp(void);
+extern void register_udplite(void);
+extern void register_sctp(void);
+extern void register_dccp(void);
+extern void register_icmp(void);
+extern void register_icmpv6(void);
+extern void register_gre(void);
+extern void register_unknown(void);
+
+#endif