diff options
Diffstat (limited to 'include/conntrack.h')
-rw-r--r-- | include/conntrack.h | 65 |
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 |