1#ifndef _CONNTRACK_H 2#define _CONNTRACK_H 3 4#include "linux_list.h" 5#include <stdint.h> 6#include <libnetfilter_conntrack/libnetfilter_conntrack.h> 7 8#define PROGNAME "conntrack" 9 10#include <netinet/in.h> 11 12#define NUMBER_OF_CMD 19 13#define NUMBER_OF_OPT 24 14 15struct ctproto_handler { 16 struct list_head head; 17 18 const char *name; 19 uint16_t protonum; 20 const char *version; 21 22 enum ctattr_protoinfo protoinfo_attr; 23 24 int (*parse_opts)(char c, 25 struct nf_conntrack *ct, 26 struct nf_conntrack *exptuple, 27 struct nf_conntrack *mask, 28 unsigned int *flags); 29 30 void (*final_check)(unsigned int flags, 31 unsigned int command, 32 struct nf_conntrack *ct); 33 34 void (*help)(void); 35 36 struct option *opts; 37 38 unsigned int option_offset; 39}; 40 41enum exittype { 42 OTHER_PROBLEM = 1, 43 PARAMETER_PROBLEM, 44 VERSION_PROBLEM 45}; 46 47int generic_opt_check(int options, int nops, 48 char *optset, const char *optflg[], 49 unsigned int *coupled_flags, int coupled_flags_size, 50 int *partial); 51void exit_error(enum exittype status, const char *msg, ...); 52 53extern void register_proto(struct ctproto_handler *h); 54 55extern void register_tcp(void); 56extern void register_udp(void); 57extern void register_udplite(void); 58extern void register_sctp(void); 59extern void register_dccp(void); 60extern void register_icmp(void); 61extern void register_icmpv6(void); 62extern void register_gre(void); 63extern void register_unknown(void); 64 65#endif 66