path: root/ip6tables.c
diff options
authorPablo Neira Ayuso <>2009-03-03 17:46:17 +0100
committerPablo Neira Ayuso <>2009-03-03 17:46:17 +0100
commitf503cb8ad6360ca646e985f02c2eb0c4bfe8a2c8 (patch)
treec014bc1ca33bb6f17783789ff620571cbe3d9d32 /ip6tables.c
parent409f2a8e3b2706c8c6c5e345a4bc77fca8ad7105 (diff)
iptables: fix broken options-merging during libxtables rework
This patch fixes options-merging that was broken somewhere during the libxtables rework. Before this patch, two pointers were used to keep the current options, however, the options field in xt_params was not appropritely updated. Thus, xtables_free_opts() was not restoring the original options. This patch fixes iptables-restore and ip6tables-restore that stopped working in my personal firewall. % iptables-restore *filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables-restore v1.4.3-rc1: Unknown arg `ESTABLISHED,RELATED' Error occurred at line: 4 Try `iptables-restore -h' or 'iptables-restore --help' for more information. Signed-off-by: Pablo Neira Ayuso <>
Diffstat (limited to 'ip6tables.c')
1 files changed, 1 insertions, 1 deletions
diff --git a/ip6tables.c b/ip6tables.c
index 87663ef3..54366b05 100644
--- a/ip6tables.c
+++ b/ip6tables.c
@@ -141,7 +141,6 @@ static struct option original_opts[] = {
* magic number of -1 */
int line = -1;
-static struct option *opts = original_opts;
void ip6tables_exit_error(enum xtables_exittype status, const char *msg, ...) __attribute__((noreturn, format(printf,2,3)));
struct xtables_globals ip6tables_globals = {
.option_offset = 0,
@@ -194,6 +193,7 @@ static int inverse_for_options[NUMBER_OF_OPT] =
/* -c */ 0,
+#define opts ip6tables_globals.opts
#define prog_name ip6tables_globals.program_name
#define prog_vers ip6tables_globals.program_version
/* A few hardcoded protocols for 'all' and in case the user has no