]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
ip6tables-restore: implement missing -T option
authorJan Engelhardt <jengelh@medozas.de>
Sat, 27 Aug 2011 07:29:30 +0000 (09:29 +0200)
committerJan Engelhardt <jengelh@medozas.de>
Thu, 8 Sep 2011 16:07:45 +0000 (18:07 +0200)
Commit v1.4.0-rc1-12-ge8665f8 forgot to port the change to the
ip6tables part.

Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
iptables/ip6tables-restore.c

index 985744d654f36b7ea13e8bd7f2e55780f0ad99a9..1487504b389779b34a5822f8eb6bcefbe6c0b52d 100644 (file)
@@ -36,6 +36,7 @@ static const struct option options[] = {
        {.name = "help",     .has_arg = false, .val = 'h'},
        {.name = "noflush",  .has_arg = false, .val = 'n'},
        {.name = "modprobe", .has_arg = true,  .val = 'M'},
+       {.name = "table",    .has_arg = true,  .val = 'T'},
        {NULL},
 };
 
@@ -121,6 +122,7 @@ int ip6tables_restore_main(int argc, char *argv[])
        char curtable[IP6T_TABLE_MAXNAMELEN + 1];
        FILE *in;
        int in_table = 0, testing = 0;
+       const char *tablename = NULL;
 
        line = 0;
 
@@ -137,7 +139,7 @@ int ip6tables_restore_main(int argc, char *argv[])
        init_extensions6();
 #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;
@@ -161,6 +163,9 @@ int ip6tables_restore_main(int argc, char *argv[])
                        case 'M':
                                xtables_modprobe_program = optarg;
                                break;
+                       case 'T':
+                               tablename = optarg;
+                               break;
                }
        }
 
@@ -216,6 +221,8 @@ int ip6tables_restore_main(int argc, char *argv[])
                        strncpy(curtable, table, IP6T_TABLE_MAXNAMELEN);
                        curtable[IP6T_TABLE_MAXNAMELEN] = '\0';
 
+                       if (tablename != NULL && strcmp(tablename, table) != 0)
+                               continue;
                        if (handle)
                                ip6tc_free(handle);
 
@@ -442,6 +449,8 @@ int ip6tables_restore_main(int argc, char *argv[])
                        free_argv();
                        fflush(stdout);
                }
+               if (tablename != NULL && strcmp(tablename, curtable) != 0)
+                       continue;
                if (!ret) {
                        fprintf(stderr, "%s: line %u failed\n",
                                        ip6tables_globals.program_name,