[dpdk-dev] [PATCH v6 5/9] librte_ether:add data structures of VxLAN filter
Thomas Monjalon
thomas.monjalon at 6wind.com
Wed Oct 22 11:31:06 CEST 2014
2014-10-22 02:25, Liu, Jijiang:
> From: Thomas Monjalon [mailto:thomas.monjalon at 6wind.com]
> > 2014-10-21 16:46, Jijiang Liu:
> > > +#define RTE_TUNNEL_FILTER_IMAC_IVLAN (ETH_TUNNEL_FILTER_IMAC | \
> > > + ETH_TUNNEL_FILTER_IVLAN)
> > > +#define RTE_TUNNEL_FILTER_IMAC_IVLAN_TENID (ETH_TUNNEL_FILTER_IMAC | \
> > > + ETH_TUNNEL_FILTER_IVLAN | \
> > > + ETH_TUNNEL_FILTER_TENID)
> > > +#define RTE_TUNNEL_FILTER_IMAC_TENID (ETH_TUNNEL_FILTER_IMAC | \
> > > + ETH_TUNNEL_FILTER_TENID)
> > > +#define RTE_TUNNEL_FILTER_OMAC_TENID_IMAC (ETH_TUNNEL_FILTER_OMAC | \
> > > + ETH_TUNNEL_FILTER_TENID | \
> > > + ETH_TUNNEL_FILTER_IMAC)
> >
> > I thought you agree that these definitions are useless?
>
> Sorry, this MAY be some misunderstanding, I don't think these definition
> are useless. I just thought change "uint16_t filter_type" is better than
> define "enum filter_type".
>
> Let me explain here again.
> The filter condition are:
> 1. inner MAC + inner VLAN
> 2. inner MAC + IVLAN + tenant ID
> ..
> 5. outer MAC + tenant ID + inner MAC
>
> For each filter condition, we need to check if the mandatory parameters are
> valid by checking corresponding bit MASK.
Checking bit mask doesn't imply to define all combinations of bit masks.
There's probably something obvious that one of us is missing.
> An pseudo code example:
>
> Switch (filter_type)
> Case 1: //inner MAC + inner VLAN
> If (filter_type & ETH_TUNNEL_FILTER_IMAC )
> if (IMAC==NULL)
> return -1;
>
> case 5: // outer MAC + tenant ID + inner MAC
> If (filter_type & ETH_TUNNEL_FILTER_IMAC )
> if (IMAC==NULL)
> return -1;
>
> If (filter_type & ETH_TUNNEL_FILTER_OMAC )
> if (IMAC==NULL)
> return -1;
> ......
More information about the dev
mailing list