--- 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=
]\n"
" [ --modprobe=]\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);