From mboxrd@z Thu Jan 1 00:00:00 1970 From: Patrick McHardy Subject: Re: [PATCH] Cleanup ttl match option parsing Date: Mon, 23 Aug 2004 20:54:39 +0200 Sender: netfilter-devel-admin@lists.netfilter.org Message-ID: <412A3D6F.8070801@trash.net> References: <20040822173856.GA20772@linuxace.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Cc: netfilter-devel@lists.netfilter.org Return-path: To: Phil Oester In-Reply-To: <20040822173856.GA20772@linuxace.com> Errors-To: netfilter-devel-admin@lists.netfilter.org List-Help: List-Post: List-Subscribe: , List-Unsubscribe: , List-Archive: List-Id: netfilter-devel.vger.kernel.org Phil Oester wrote: >The below patch allows the ttl match to be used with other matches >without assuming it 'owns' all options. For example, this command >currently causes the '...TTL option twice error': > >iptables -A foo -d 1.2.3.4 -m ttl --ttl-eq 1 -m state --state NEW -j ACCEPT > >But works with the below patch. > >This fixes bugzilla #183 > > I get rejects with this patch, please send it again as attachment. Regards Patrick >Phil > > > >diff -ru ipt-orig/extensions/libipt_ttl.c ipt-new/extensions/libipt_ttl.c >--- ipt-orig/extensions/libipt_ttl.c 2002-05-29 09:08:16.000000000 -0400 >+++ ipt-new/extensions/libipt_ttl.c 2004-08-22 13:07:01.161108504 -0400 >@@ -40,10 +40,6 @@ > check_inverse(optarg, &invert, &optind, 0); > value = atoi(argv[optind-1]); > >- if (*flags) >- exit_error(PARAMETER_PROBLEM, >- "Can't specify TTL option twice"); >- > if (!optarg) > exit_error(PARAMETER_PROBLEM, > "ttl: You must specify a value"); >@@ -56,8 +52,6 @@ > > /* is 0 allowed? */ > info->ttl = value; >- *flags = 1; >- > break; > case '3': > if (invert) >@@ -66,8 +60,6 @@ > > info->mode = IPT_TTL_LT; > info->ttl = value; >- *flags = 1; >- > break; > case '4': > if (invert) >@@ -76,14 +68,17 @@ > > info->mode = IPT_TTL_GT; > info->ttl = value; >- *flags = 1; >- > break; > default: > return 0; > > } > >+ if (*flags) >+ exit_error(PARAMETER_PROBLEM, >+ "Can't specify TTL option twice"); >+ *flags = 1; >+ > return 1; > } > > > >