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 */
9struct 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
29enum xt_tryload {
30	DONT_LOAD,
31	DURING_LOAD,
32	TRY_LOAD,
33	LOAD_MUST_SUCCEED
34};
35
36struct 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
44extern char *lib_dir;
45
46extern void *fw_calloc(size_t count, size_t size);
47extern void *fw_malloc(size_t size);
48
49extern const char *modprobe_program;
50extern int xtables_insmod(const char *modname, const char *modprobe, int quiet);
51extern int load_xtables_ko(const char *modprobe, int quiet);
52
53/* This is decleared in ip[6]tables.c */
54extern struct afinfo afinfo;
55
56/* Keeping track of external matches and targets: linked lists.  */
57extern struct xtables_match *xtables_matches;
58extern struct xtables_target *xtables_targets;
59
60extern struct xtables_match *find_match(const char *name, enum xt_tryload,
61					struct xtables_rule_match **match);
62extern struct xtables_target *find_target(const char *name, enum xt_tryload);
63
64extern void _init(void);
65
66#endif /* _XTABLES_INTERNAL_H */
67