Subject: Re: [iproute2-next] tc flower: use right ethertype in icmp/arp parsing

From: Simon Horman <[email-masked]>
Date: Mon, 26 Oct 2020 09:48:24 +0100

On Sun, Oct 25, 2020 at 03:18:48PM -0600, David Ahern wrote:
> On 10/19/20 5:47 AM, Zahari Doychev wrote:
> > Currently the icmp and arp prsing functions are called with inccorect
> > ethtype in case of vlan or cvlan filter options. In this case either
> > cvlan_ethtype or vlan_ethtype has to be used.
> > 
> > Signed-off-by: Zahari Doychev <[email-masked]>
> > ---
> >  tc/f_flower.c | 43 ++++++++++++++++++++++++++-----------------
> >  1 file changed, 26 insertions(+), 17 deletions(-)
> > 
> > diff --git a/tc/f_flower.c b/tc/f_flower.c
> > index 00c919fd..dd9f3446 100644
> > --- a/tc/f_flower.c
> > +++ b/tc/f_flower.c
> > @@ -1712,7 +1712,10 @@ static int flower_parse_opt(struct filter_util *qu, char *handle,
> >  			}
> >  		} else if (matches(*argv, "type") == 0) {
> >  			NEXT_ARG();
> > -			ret = flower_parse_icmp(*argv, eth_type, ip_proto,
> > +			ret = flower_parse_icmp(*argv, cvlan_ethtype ?
> > +						cvlan_ethtype : vlan_ethtype ?
> > +						vlan_ethtype : eth_type,
> > +						ip_proto,
> 
> looks correct to me, but would like confirmation of the intent from Simon.

Thanks, this appears to be correct to me as ultimately
the code wants to operate on ETH_P_IP or ETH_P_IPV6 rather
than a VLAN Ether type.

> Also, I am not a fan of the readability of that coding style. Rather
> than repeat that expression multiple times, make a short helper to
> return the relevant eth type and use a temp variable for it. You should
> also comment that relevant eth type changes as arguments are parsed.
> 
> Thanks,
> 
>