From 8e90ce66a99e5dc9b055a9fd14e8e9216f90233c Mon Sep 17 00:00:00 2001 From: Jamal Hadi Salim Date: Wed, 11 Feb 2009 12:58:54 +0100 Subject: libxtables: Introduce global params structuring introduce a new struct,xtables_globals, so as to localize the globals used and help in symbol renames. The applications must invoke xtables_set_params() before starting to use any iptables APIs. xtables_set_params() is intended to free xtables from depending (as it does right now) on existence of such externally definitions (from iptables/iptables6 etc). At the moment, xtables wont even compile without presence of at least one of {iptables/iptables6 etc} Signed-off-by: Jamal Hadi Salim Signed-off-by: Patrick McHardy --- include/xtables.h.in | 9 +++++++++ xtables.c | 22 ++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/include/xtables.h.in b/include/xtables.h.in index 02750fb9..61dbc767 100644 --- a/include/xtables.h.in +++ b/include/xtables.h.in @@ -33,6 +33,14 @@ struct in_addr; +struct xtables_globals +{ + unsigned int option_offset; + char *program_version; + char *program_name; + struct option *opts; +}; + /* Include file for additions: new matches and targets. */ struct xtables_match { @@ -195,6 +203,7 @@ extern void *xtables_malloc(size_t); extern int xtables_insmod(const char *, const char *, bool); extern int xtables_load_ko(const char *, bool); +int xtables_set_params(struct xtables_globals *xtp); extern struct xtables_match *xtables_find_match(const char *name, enum xtables_tryload, struct xtables_rule_match **match); diff --git a/xtables.c b/xtables.c index 6c954754..aad5e533 100644 --- a/xtables.c +++ b/xtables.c @@ -46,6 +46,28 @@ #define PROC_SYS_MODPROBE "/proc/sys/kernel/modprobe" #endif +struct xtables_globals *xt_params; +/** + * xtables_set_params - set the global parameters used by xtables + * @xtp: input xtables_globals structure + * + * The app is expected to pass a valid xtables_globals data-filled + * with proper values + * @xtp cannot be NULL + * + * Returns -1 on failure to set and 0 on success + */ +int xtables_set_params(struct xtables_globals *xtp) +{ + if (!xtp) { + fprintf(stderr, "%s: Illegal global params\n",__func__); + return -1; + } + + xt_params = xtp; + return 0; +} + /** * xtables_afinfo - protocol family dependent information * @kmod: kernel module basename (e.g. "ip_tables") -- cgit v1.2.3