adds --table to iptables-restore which allows to restore only the supplied table Signed-off-by: Peter Warasin <peter@xxxxxxxxxx> -- :: e n d i a n :: open source - open minds :: peter warasin :: http://www.endian.com :: peter@xxxxxxxxxx
--- iptables-1.3.8.patch/iptables-restore.c.orig 2007-10-19 01:17:49.000000000 +0200 +++ iptables-1.3.8.patch/iptables-restore.c 2007-10-19 01:33:06.000000000 +0200 @@ -32,6 +32,7 @@ { "help", 0, 0, 'h' }, { "noflush", 0, 0, 'n'}, { "modprobe", 1, 0, 'M'}, + { "table", 1, 0, 'T'}, { 0 } }; @@ -46,6 +47,7 @@ " [ --test ]\n" " [ --help ]\n" " [ --noflush ]\n" + " [ --table=<TABLE> ]\n" " [ --modprobe=<command>]\n", name); exit(1); @@ -114,6 +116,7 @@ FILE *in; const char *modprobe = 0; int in_table = 0, testing = 0; + const char *tablename = 0; program_name = "iptables-restore"; program_version = IPTABLES_VERSION; @@ -127,7 +130,7 @@ init_extensions(); #endif - while ((c = getopt_long(argc, argv, "bcvthnM:", options, NULL)) != -1) { + while ((c = getopt_long(argc, argv, "bcvthnM:T:", options, NULL)) != -1) { switch (c) { case 'b': binary = 1; @@ -151,6 +154,9 @@ case 'M': modprobe = optarg; break; + case 'T': + tablename = optarg; + break; } } @@ -203,6 +209,8 @@ strncpy(curtable, table, IPT_TABLE_MAXNAMELEN); curtable[IPT_TABLE_MAXNAMELEN] = '\0'; + if (tablename && (strcmp(tablename, table) != 0)) + continue; if (handle) iptc_free(&handle); @@ -429,6 +437,8 @@ free_argv(); } + if (tablename && (strcmp(tablename, curtable) != 0)) + continue; if (!ret) { fprintf(stderr, "%s: line %u failed\n", program_name, line);