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.
70 lines
1.9 KiB
70 lines
1.9 KiB
6 years ago
|
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;
|