You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.9 KiB
69 lines
1.9 KiB
commit 3a25ae2361da048f24524d8e63d70f4cd40444f3 |
|
Author: Sanket Shah <sanket.shah@cyberoam.com> |
|
Date: Wed Jul 31 21:40:08 2013 +0200 |
|
|
|
Add --noflush command line support for ebtables-restore |
|
|
|
diff --git a/ebtables-restore.c b/ebtables-restore.c |
|
index ea02960..bb4d0cf 100644 |
|
--- a/ebtables-restore.c |
|
+++ b/ebtables-restore.c |
|
@@ -22,13 +22,25 @@ |
|
#include <string.h> |
|
#include <errno.h> |
|
#include <unistd.h> |
|
+#include <getopt.h> |
|
#include "include/ebtables_u.h" |
|
|
|
+static const struct option options[] = { |
|
+ {.name = "noflush", .has_arg = 0, .val = 'n'}, |
|
+ { 0 } |
|
+}; |
|
+ |
|
static struct ebt_u_replace replace[3]; |
|
void ebt_early_init_once(); |
|
|
|
#define OPT_KERNELDATA 0x800 /* Also defined in ebtables.c */ |
|
|
|
+static void print_usage() |
|
+{ |
|
+ fprintf(stderr, "Usage: ebtables-restore [ --noflush ]\n"); |
|
+ exit(1); |
|
+} |
|
+ |
|
static void copy_table_names() |
|
{ |
|
strcpy(replace[0].name, "filter"); |
|
@@ -41,11 +53,20 @@ static void copy_table_names() |
|
int main(int argc_, char *argv_[]) |
|
{ |
|
char *argv[EBTD_ARGC_MAX], cmdline[EBTD_CMDLINE_MAXLN]; |
|
- int i, offset, quotemode = 0, argc, table_nr = -1, line = 0, whitespace; |
|
+ int i, offset, quotemode = 0, argc, table_nr = -1, line = 0, whitespace, c, flush = 1; |
|
char ebtables_str[] = "ebtables"; |
|
|
|
- if (argc_ != 1) |
|
- ebtrest_print_error("options are not supported"); |
|
+ while ((c = getopt_long(argc_, argv_, "n", options, NULL)) != -1) { |
|
+ switch(c) { |
|
+ case 'n': |
|
+ flush = 0; |
|
+ break; |
|
+ default: |
|
+ print_usage(); |
|
+ break; |
|
+ } |
|
+ } |
|
+ |
|
ebt_silent = 0; |
|
copy_table_names(); |
|
ebt_early_init_once(); |
|
@@ -68,7 +89,7 @@ int main(int argc_, char *argv_[]) |
|
ebtrest_print_error("table '%s' was not recognized", cmdline+1); |
|
table_nr = i; |
|
replace[table_nr].command = 11; |
|
- ebt_get_kernel_table(&replace[table_nr], 1); |
|
+ ebt_get_kernel_table(&replace[table_nr], flush); |
|
replace[table_nr].command = 0; |
|
replace[table_nr].flags = OPT_KERNELDATA; /* Prevent do_command from initialising replace */ |
|
continue;
|
|
|