Introduce xtables_free_opts() an xtables variant of
free_opts() which uses xtables_globals already set
by xtables_set_params(). The end goal is to have all internal
references in xtables.c use xtables_free_opts() instead of
depending on external defined free_opts()
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: Patrick McHardy <kaber@trash.net>
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);
+void xtables_free_opts(int reset_offset, struct option *original_opts);
extern struct xtables_match *xtables_find_match(const char *name,
enum xtables_tryload, struct xtables_rule_match **match);
return 0;
}
+void xtables_free_opts(int reset_offset, struct option *original_opts)
+{
+ if (xt_params->opts != original_opts) {
+ if (original_opts)
+ free(xt_params->opts);
+ xt_params->opts = original_opts;
+ if (reset_offset)
+ xt_params->option_offset = 0;
+ }
+}
+
/**
* xtables_afinfo - protocol family dependent information
* @kmod: kernel module basename (e.g. "ip_tables")