Re: [PATCH nft] src: get rid of nft_ctx_output_{get,set}_numeric()

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

 



On Mon, Oct 29, 2018 at 06:50:13PM +0100, Phil Sutter wrote:
> On Mon, Oct 29, 2018 at 06:31:10PM +0100, Pablo Neira Ayuso wrote:
> > @Phil, thinking here we could probably get rid of
> > NFT_CTX_OUTPUT_NUMERIC_PROTO, since it is contained already in
> > NFT_CTX_OUTPUT_NUMERIC_SYMBOL.
> > 
> > There's no option for -p anymore, so we could simply things a bit
> > before.
> 
> I think it's feasible to provide cmdline options for each bit '-n'
> enables. Not only because this gives users control, it also simplifies
> documentation a bit, like:
> 
> | -a - numeric a
> | -b - numeric b
> | -n - enable all numeric options from above
> 
> :

I can just take this v1 patch, instead of v2, and reintroduce -p to
enable numerical protocol number, sending new patchset.

> [...]
> > > diff --git a/include/nftables/libnftables.h b/include/nftables/libnftables.h
> > > index fb81edc0df07..82b4181de0cc 100644
> > > --- a/include/nftables/libnftables.h
> > > +++ b/include/nftables/libnftables.h
> [...]
> > > @@ -54,13 +47,12 @@ enum {
> > >  	NFT_CTX_OUTPUT_GUID		= (1 << 6),
> > >  	NFT_CTX_OUTPUT_NUMERIC_PROTO	= (1 << 7),
> > >  	NFT_CTX_OUTPUT_NUMERIC_PRIO     = (1 << 8),
> > > +	NFT_CTX_OUTPUT_NUMERIC_SYMBOL	= (1 << 9),
> > >  };
> 
> + #define NFT_CTX_OUTPUT_NUMERIC_ALL (NFT_CTX_OUTPUT_NUMERIC_PROTO |
> + 				      NFT_CTX_OUTPUT_NUMERIC_PRIO |
> + 				      NFT_CTX_OUTPUT_NUMERIC_SYMBOL)

Yes, -n is exactly doing this. I'll add this definition.

> [...]
> 
> > > diff --git a/src/main.c b/src/main.c
> > > index 883261fc9d8b..952ce356490f 100644
> > > --- a/src/main.c
> > > +++ b/src/main.c
> [...]
> > > @@ -229,14 +226,10 @@ int main(int argc, char * const *argv)
> > >  			}
> > >  			break;
> > >  		case OPT_NUMERIC:
> > > -			numeric = nft_ctx_output_get_numeric(nft);
> > > -			if (numeric == NFT_NUMERIC_ALL) {
> > > -				fprintf(stderr, "Too many numeric options "
> > > -						"used, max. %u\n",
> > > -					NFT_NUMERIC_ALL);
> > > -				exit(EXIT_FAILURE);
> > > -			}
> > > -			nft_ctx_output_set_numeric(nft, numeric + 1);
> > > +			numeric = true;
> > > +			output_flags |= (NFT_CTX_OUTPUT_NUMERIC_PROTO |
> > > +					 NFT_CTX_OUTPUT_NUMERIC_PRIO |
> > > +					 NFT_CTX_OUTPUT_NUMERIC_SYMBOL);
> 
> + output_flags |= NFT_CTX_OUTPUT_NUMERIC_ALL;
> 
> > > @@ -298,6 +291,13 @@ int main(int argc, char * const *argv)
> > >  		}
> > >  	}
> > >  
> > > +	if (numeric &&
> > > +	    (output_flags &
> > > +		(NFT_CTX_OUTPUT_REVERSEDNS |
> > > +		 NFT_CTX_OUTPUT_SERVICE |
> > > +		 NFT_CTX_OUTPUT_GUID)))
> > > +		fprintf(stderr, "cannot combine `-n' with `-N', `-S', '-u'\n");
> > > +
> 
> Why not? We could allow people to call 'nft -n -N' to make all numeric
> but enable reverse DNS (IIRC).

I didn't think about this combination, sounds reasonable.

> All we need to do is document that '-n' is an alias for '-p -q ...'
> and that later flags overwrite earlier ones (as usual with
> getopt()-based tools). Would simplify code a bit, too.
> 
> > > diff --git a/src/monitor.c b/src/monitor.c
> > > index b2267e1f63e4..0e735ed5b1aa 100644
> > > --- a/src/monitor.c
> > > +++ b/src/monitor.c
> > > @@ -835,11 +835,9 @@ static int netlink_events_newgen_cb(const struct nlmsghdr *nlh, int type,
> > >  	}
> > >  	if (genid >= 0) {
> > >  		nft_mon_print(monh, "# new generation %d", genid);
> > > -		if (pid >= 0) {
> > > -			nft_mon_print(monh, " by process %d", pid);
> > > -			if (!monh->ctx->nft->output.numeric)
> > > -				nft_mon_print(monh, " (%s)", name);
> > > -		}
> > > +		if (pid >= 0)
> > > +			nft_mon_print(monh, " by process %d (%s)", pid, name);
> > > +
> > >  		nft_mon_print(monh, "\n");
> > >  	}
> > >  
> 
> Yes, I think that's OK. People may still do 's/ (.*$//' if they don't
> want it there.

OK.



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

  Powered by Linux