On Sat, 2009-01-17 at 14:12 -0500, jamal wrote:
>
> I could move everything i need into xtables.h - i am sure there will
> be a few things still left in internal.h. Would this be fine by you?
>
As an example of something that would work and i could use as a base,
see attached against git tree - compile tested.
cheers,
jamal
diff --git a/include/xtables.h.in b/include/xtables.h.in
index 8327c42..3e0c311 100644
--- a/include/xtables.h.in
+++ b/include/xtables.h.in
@@ -219,6 +219,59 @@ extern void save_string(const char *value);
/* Present in both iptables.c and ip6tables.c */
extern u_int16_t parse_protocol(const char *s);
+#ifndef XT_LIB_DIR
+# define XT_LIB_DIR "/usr/local/lib/iptables"
+#endif
+
+/* protocol family dependent informations */
+struct afinfo {
+ /* protocol family */
+ int family;
+
+ /* prefix of library name (ex "libipt_" */
+ char *libprefix;
+
+ /* used by setsockopt (ex IPPROTO_IP */
+ int ipproto;
+
+ /* kernel module (ex "ip_tables" */
+ char *kmod;
+
+ /* optname to check revision support of match */
+ int so_rev_match;
+
+ /* optname to check revision support of match */
+ int so_rev_target;
+};
+
+enum xt_tryload {
+ DONT_LOAD,
+ DURING_LOAD,
+ TRY_LOAD,
+ LOAD_MUST_SUCCEED
+};
+
+extern char *lib_dir;
+
+extern void *fw_calloc(size_t count, size_t size);
+extern void *fw_malloc(size_t size);
+
+/* This is decleared in ip[6]tables.c */
+extern struct afinfo afinfo;
+
+
+struct xtables_rule_match {
+ struct xtables_rule_match *next;
+ struct xtables_match *match;
+ /* Multiple matches of the same type: the ones before
+ the current one are completed from parsing point of view */
+ unsigned int completed;
+};
+
+
+extern struct xtables_target *find_target(const char *name, enum xt_tryload);
+extern struct xtables_match *find_match(const char *name, enum xt_tryload,
+ struct xtables_rule_match **match);
#ifdef XTABLES_INTERNAL
# include <xtables/internal.h>
#endif
diff --git a/include/xtables/internal.h b/include/xtables/internal.h
index 24a5078..0f9fed3 100644
--- a/include/xtables/internal.h
+++ b/include/xtables/internal.h
@@ -1,66 +1,16 @@
#ifndef _XTABLES_INTERNAL_H
#define _XTABLES_INTERNAL_H 1
-#ifndef XT_LIB_DIR
-# define XT_LIB_DIR "/usr/local/lib/iptables"
-#endif
-
-/* protocol family dependent informations */
-struct afinfo {
- /* protocol family */
- int family;
-
- /* prefix of library name (ex "libipt_" */
- char *libprefix;
-
- /* used by setsockopt (ex IPPROTO_IP */
- int ipproto;
-
- /* kernel module (ex "ip_tables" */
- char *kmod;
-
- /* optname to check revision support of match */
- int so_rev_match;
-
- /* optname to check revision support of match */
- int so_rev_target;
-};
-
-enum xt_tryload {
- DONT_LOAD,
- DURING_LOAD,
- TRY_LOAD,
- LOAD_MUST_SUCCEED
-};
-
-struct xtables_rule_match {
- struct xtables_rule_match *next;
- struct xtables_match *match;
- /* Multiple matches of the same type: the ones before
- the current one are completed from parsing point of view */
- unsigned int completed;
-};
-
-extern char *lib_dir;
-
-extern void *fw_calloc(size_t count, size_t size);
-extern void *fw_malloc(size_t size);
extern const char *modprobe_program;
extern int xtables_insmod(const char *modname, const char *modprobe, int quiet);
extern int load_xtables_ko(const char *modprobe, int quiet);
-/* This is decleared in ip[6]tables.c */
-extern struct afinfo afinfo;
/* Keeping track of external matches and targets: linked lists. */
extern struct xtables_match *xtables_matches;
extern struct xtables_target *xtables_targets;
-extern struct xtables_match *find_match(const char *name, enum xt_tryload,
- struct xtables_rule_match **match);
-extern struct xtables_target *find_target(const char *name, enum xt_tryload);
-
extern void _init(void);
#endif /* _XTABLES_INTERNAL_H */