1 #ifndef _XTABLES_INTERNAL_H 2 #define _XTABLES_INTERNAL_H 1 3 4 #ifndef XT_LIB_DIR 5 # define XT_LIB_DIR "/lib/xtables" 6 #endif 7 8 /* protocol family dependent informations */ 9 struct afinfo { 10 /* protocol family */ 11 int family; 12 13 /* prefix of library name (ex "libipt_" */ 14 char *libprefix; 15 16 /* used by setsockopt (ex IPPROTO_IP */ 17 int ipproto; 18 19 /* kernel module (ex "ip_tables" */ 20 char *kmod; 21 22 /* optname to check revision support of match */ 23 int so_rev_match; 24 25 /* optname to check revision support of match */ 26 int so_rev_target; 27 }; 28 29 enum xt_tryload { 30 DONT_LOAD, 31 DURING_LOAD, 32 TRY_LOAD, 33 LOAD_MUST_SUCCEED 34 }; 35 36 struct xtables_rule_match { 37 struct xtables_rule_match *next; 38 struct xtables_match *match; 39 /* Multiple matches of the same type: the ones before 40 the current one are completed from parsing point of view */ 41 unsigned int completed; 42 }; 43 44 extern char *lib_dir; 45 46 extern void *fw_calloc(size_t count, size_t size); 47 extern void *fw_malloc(size_t size); 48 49 extern const char *modprobe_program; 50 extern int xtables_insmod(const char *modname, const char *modprobe, int quiet); 51 extern int load_xtables_ko(const char *modprobe, int quiet); 52 53 /* This is decleared in ip[6]tables.c */ 54 extern struct afinfo afinfo; 55 56 /* Keeping track of external matches and targets: linked lists. */ 57 extern struct xtables_match *xtables_matches; 58 extern struct xtables_target *xtables_targets; 59 60 extern struct xtables_match *find_match(const char *name, enum xt_tryload, 61 struct xtables_rule_match **match); 62 extern struct xtables_target *find_target(const char *name, enum xt_tryload); 63 64 extern void _init(void); 65 66 #endif /* _XTABLES_INTERNAL_H */ 67