Re: [iptables PATCH] ebtables-compat: parser cleanups

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Feb 12, 2015 at 11:44:08AM +0100, Arturo Borrero Gonzalez wrote:
> Kill:
>  * commented code in the parser
>  * ebtables daemon stuff
>  * ebtables 'atomic' operations
>
> We can bring back the code later and get in shape if required.

Users will likely run their old scripts, and those will break if they
use these options. See below.

> Signed-off-by: Arturo Borrero Gonzalez <arturo.borrero.glez@xxxxxxxxx>
> ---
>  iptables/xtables-eb.c |  167 ++-----------------------------------------------
>  1 file changed, 7 insertions(+), 160 deletions(-)
> 
> diff --git a/iptables/xtables-eb.c b/iptables/xtables-eb.c
> index efbb3cd..632a3a0 100644
> --- a/iptables/xtables-eb.c
> +++ b/iptables/xtables-eb.c
> @@ -282,12 +282,6 @@ static struct option ebt_original_options[] =
>  	{ "new-chain"      , required_argument, 0, 'N' },
>  	{ "rename-chain"   , required_argument, 0, 'E' },
>  	{ "delete-chain"   , optional_argument, 0, 'X' },
> -	{ "atomic-init"    , no_argument      , 0, 7   },
> -	{ "atomic-commit"  , no_argument      , 0, 8   },
> -	{ "atomic-file"    , required_argument, 0, 9   },
> -	{ "atomic-save"    , no_argument      , 0, 10  },
> -	{ "init-table"     , no_argument      , 0, 11  },
> -	{ "concurrent"     , no_argument      , 0, 13  },

I would need to double check, but I think that depending on the option
we can:

#1 Bail out with an message: "This option is not supported, sorry", so
the user knows that options is not implemented in compat. It would
still break some stuff, but the user will know.

#2 If the option is superfluous when running over nft, then just
silently turn them into noop.

Please, have a look at this.

>  	{ 0 }
>  };
>  
> @@ -425,10 +419,6 @@ static void print_help(const struct xtables_target *t,
>  "--new-chain -N chain          : create a user defined chain\n"
>  "--rename-chain -E old new     : rename a chain\n"
>  "--delete-chain -X [chain]     : delete a user defined chain\n"
> -"--atomic-commit               : update the kernel w/t table contained in <FILE>\n"
> -"--atomic-init                 : put the initial kernel table into <FILE>\n"
> -"--atomic-save                 : put the current kernel table into <FILE>\n"
> -"--atomic-file file            : set <FILE> to file\n\n"
>  "Options:\n"
>  "--proto  -p [!] proto         : protocol hexadecimal, by name or LENGTH\n"
>  "--src    -s [!] address[/mask]: source mac address\n"
> @@ -440,10 +430,7 @@ static void print_help(const struct xtables_target *t,
>  "--set-counters -c chain\n"
>  "          pcnt bcnt           : set the counters of the to be added rule\n"
>  "--modprobe -M program         : try to insert modules using this program\n"
> -"--concurrent                  : use a file lock to support concurrent scripts\n"
>  "--version -V                  : print package version\n\n"
> -"Environment variable:\n"
> -/*ATOMIC_ENV_VARIABLE "          : if set <FILE> (see above) will equal its value"*/
>  "\n\n");
>  	for (; m != NULL; m = m->next) {
>  		printf("\n");
> @@ -453,9 +440,6 @@ static void print_help(const struct xtables_target *t,
>  		printf("\n");
>  		t->help();
>  	}
> -
> -//	if (table->help)
> -//		table->help(ebt_hooknames);
>  }
>  
>  /* Execute command L */
> @@ -791,10 +775,6 @@ int do_commandeb(struct nft_handle *h, int argc, char *argv[], char **table)
>  			chain = optarg;
>  			selected_chain = get_current_chain(chain);
>  			flags |= OPT_COMMAND;
> -			/*if (!(replace->flags & OPT_KERNELDATA))
> -				ebt_get_kernel_table(replace, 0);*/
> -			/*if (optarg && (optarg[0] == '-' || !strcmp(optarg, "!")))
> -				ebt_print_error2("No chain name specified");*/
>  			if (c == 'N') {
>  				ret = nft_chain_user_add(h, chain, *table);
>  				break;
> @@ -876,27 +856,6 @@ print_zero:
>  				if (flags & OPT_ZERO && c != 'L')
>  					goto print_zero;
>  			}
> -
> -#ifdef SILENT_DAEMON
> -			if (c== 'L' && exec_style == EXEC_STYLE_DAEMON)
> -				xtables_error(PARAMETER_PROBLEM,
> -					      "-L not supported in daemon mode");
> -#endif
> -
> -			/*if (!(replace->flags & OPT_KERNELDATA))
> -				ebt_get_kernel_table(replace, 0);
> -			i = -1;
> -			if (optind < argc && argv[optind][0] != '-') {
> -				if ((i = ebt_get_chainnr(replace, argv[optind])) == -1)
> -					ebt_print_error2("Chain '%s' doesn't exist", argv[optind]);
> -				optind++;
> -			}
> -			if (i != -1) {
> -				if (c == 'Z')
> -					zerochain = i;
> -				else
> -					replace->selected_chain = i;
> -			}*/
>  			break;
>  		case 'V': /* Version */
>  			if (OPT_COMMANDS)
> @@ -909,11 +868,6 @@ print_zero:
>  			printf("%s %s\n", prog_name, prog_vers);
>  			exit(0);
>  		case 'h': /* Help */
> -#ifdef SILENT_DAEMON
> -			if (exec_style == EXEC_STYLE_DAEMON)
> -				xtables_error(PARAMETER_PROBLEM,
> -					      "-h not supported in daemon mode");
> -#endif
>  			if (OPT_COMMANDS)
>  				xtables_error(PARAMETER_PROBLEM,
>  					      "Multiple commands are not allowed");
> @@ -921,25 +875,16 @@ print_zero:
>  
>  			/* All other arguments should be extension names */
>  			while (optind < argc) {
> -				/*struct ebt_u_match *m;
> -				struct ebt_u_watcher *w;*/
> -
>  				if (!strcasecmp("list_extensions", argv[optind])) {
>  					ebt_list_extensions(xtables_targets, cs.matches);
>  					exit(0);
>  				}
> -				/*if ((m = ebt_find_match(argv[optind])))
> -					ebt_add_match(new_entry, m);
> -				else if ((w = ebt_find_watcher(argv[optind])))
> -					ebt_add_watcher(new_entry, w);
> -				else {*/
> -					if (!(t = xtables_find_target(argv[optind], XTF_TRY_LOAD)))
> -						xtables_error(PARAMETER_PROBLEM,"Extension '%s' not found", argv[optind]);
> -					if (flags & OPT_JUMP)
> -						xtables_error(PARAMETER_PROBLEM,"Sorry, you can only see help for one target extension at a time");
> -					flags |= OPT_JUMP;
> -					cs.target = t;
> -				//}
> +				if (!(t = xtables_find_target(argv[optind], XTF_TRY_LOAD)))
> +					xtables_error(PARAMETER_PROBLEM,"Extension '%s' not found", argv[optind]);
> +				if (flags & OPT_JUMP)
> +					xtables_error(PARAMETER_PROBLEM,"Sorry, you can only see help for one target extension at a time");
> +				flags |= OPT_JUMP;
> +				cs.target = t;
>  				optind++;
>  			}
>  			break;
> @@ -1152,65 +1097,6 @@ big_iface_length:
>  					       "Use --Lmac2 with -L");
>  			flags |= LIST_MAC2;
>  			break;
> -		case 8 : /* atomic-commit */
> -/*			if (exec_style == EXEC_STYLE_DAEMON)
> -				ebt_print_error2("--atomic-commit is not supported in daemon mode");
> -			replace->command = c;
> -			if (OPT_COMMANDS)
> -				ebt_print_error2("Multiple commands are not allowed");
> -			replace->flags |= OPT_COMMAND;
> -			if (!replace->filename)
> -				ebt_print_error2("No atomic file specified");*/
> -			/* Get the information from the file */
> -			/*ebt_get_table(replace, 0);*/
> -			/* We don't want the kernel giving us its counters,
> -			 * they would overwrite the counters extracted from
> -			 * the file */
> -			/*replace->num_counters = 0;*/
> -			/* Make sure the table will be written to the kernel */
> -			/*free(replace->filename);
> -			replace->filename = NULL;
> -			break;*/
> -		/*case 7 :*/ /* atomic-init */
> -		/*case 10:*/ /* atomic-save */
> -		/*case 11:*/ /* init-table */
> -		/*	if (exec_style == EXEC_STYLE_DAEMON) {
> -				if (c == 7) {
> -					ebt_print_error2("--atomic-init is not supported in daemon mode");
> -				} else if (c == 10)
> -					ebt_print_error2("--atomic-save is not supported in daemon mode");
> -				ebt_print_error2("--init-table is not supported in daemon mode");
> -			}
> -			replace->command = c;
> -			if (OPT_COMMANDS)
> -				ebt_print_error2("Multiple commands are not allowed");
> -			if (c != 11 && !replace->filename)
> -				ebt_print_error2("No atomic file specified");
> -			replace->flags |= OPT_COMMAND;
> -			{
> -				char *tmp = replace->filename;*/
> -
> -				/* Get the kernel table */
> -				/*replace->filename = NULL;
> -				ebt_get_kernel_table(replace, c == 10 ? 0 : 1);
> -				replace->filename = tmp;
> -			}
> -			break;
> -		case 9 :*/ /* atomic */
> -			/*if (exec_style == EXEC_STYLE_DAEMON)
> -				ebt_print_error2("--atomic is not supported in daemon mode");
> -			if (OPT_COMMANDS)
> -				ebt_print_error2("--atomic has to come before the command");*/
> -			/* A possible memory leak here, but this is not
> -			 * executed in daemon mode */
> -			/*replace->filename = (char *)malloc(strlen(optarg) + 1);
> -			strcpy(replace->filename, optarg);
> -			break;
> -		case 13 : *//* concurrent */
> -			/*signal(SIGINT, sighandler);
> -			signal(SIGTERM, sighandler);
> -			use_lockfd = 1;
> -			break;*/
>  		case 1 :
>  			if (!strcmp(optarg, "!"))
>  				ebt_check_inverse2(optarg, argc, argv);
> @@ -1248,21 +1134,6 @@ big_iface_length:
>  					goto check_extension;
>  				}
>  			}
> -			/*
> -			if (w == NULL && c == '?')
> -				ebt_print_error2("Unknown argument: '%s'", argv[optind - 1], (char)optopt, (char)c);
> -			else if (w == NULL) {
> -				if (!strcmp(t->name, "standard"))
> -					ebt_print_error2("Unknown argument: don't forget the -t option");
> -				else
> -					ebt_print_error2("Target-specific option does not correspond with specified target");
> -			}
> -			if (ebt_errormsg[0] != '\0')
> -				return -1;
> -			if (w->used == 0) {
> -				ebt_add_watcher(new_entry, w);
> -				w->used = 1;
> -			}*/
>  check_extension:
>  			if (command != 'A' && command != 'I' &&
>  			    command != 'D' && command != 'C')
> @@ -1272,13 +1143,6 @@ check_extension:
>  		ebt_invert = 0;
>  	}
>  
> -	/* Just in case we didn't catch an error */
> -	/*if (ebt_errormsg[0] != '\0')
> -		return -1;
> -
> -	if (!(table = ebt_find_table(replace->name)))
> -		ebt_print_error2("Bad table name");*/
> -
>  	if (command == 'h' && !(flags & OPT_ZERO)) {
>  		print_help(cs.target, cs.matches, *table);
>  		if (exec_style == EXEC_STYLE_PRG)
> @@ -1342,24 +1206,7 @@ check_extension:
>  	} else if (command == 'D') {
>  		ret = delete_entry(h, chain, *table, &cs, rule_nr - 1,
>  				   rule_nr_end, flags&OPT_VERBOSE);
> -	} /*else if (replace->command == 'C') {
> -		ebt_change_counters(replace, new_entry, rule_nr, rule_nr_end, &(new_entry->cnt_surplus), chcounter);
> -		if (ebt_errormsg[0] != '\0')
> -			return -1;
> -	}*/
> -	/* Commands -N, -E, -X, --atomic-commit, --atomic-commit, --atomic-save,
> -	 * --init-table fall through */
> -
> -	/*if (ebt_errormsg[0] != '\0')
> -		return -1;
> -	if (table->check)
> -		table->check(replace);
> -
> -	if (exec_style == EXEC_STYLE_PRG) {*//* Implies ebt_errormsg[0] == '\0' */
> -		/*ebt_deliver_table(replace);
> -
> -		if (replace->nentries)
> -			ebt_deliver_counters(replace);*/
> +	}
>  
>  	ebt_cs_clean(&cs);
>  	return ret;
> 
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux