On Tue, Nov 20, 2012 at 5:59 PM, Pravin B Shelar <[email protected]> wrote:
> diff --git a/lib/match.c b/lib/match.c
> index 81b7173..c3187d3 100644
> --- a/lib/match.c
> +++ b/lib/match.c
> @@ -62,14 +62,17 @@ match_wc_init(struct match *match, const struct flow
> *flow)
> }
> }
>
> - if (flow->tunnel.ip_dst || flow->tunnel.tun_id) {
> + if (flow->tunnel.tun_id) {
> memset(&wc->masks.tunnel.tun_id, 0xff, sizeof
> wc->masks.tunnel.tun_id);
> + }
> + if (flow->tunnel.ip_dst) {
> memset(&wc->masks.tunnel.ip_src, 0xff, sizeof
> wc->masks.tunnel.ip_src);
> memset(&wc->masks.tunnel.ip_dst, 0xff, sizeof
> wc->masks.tunnel.ip_dst);
> memset(&wc->masks.tunnel.flags, 0xff, sizeof wc->masks.tunnel.flags);
> memset(&wc->masks.tunnel.ip_tos, 0xff, sizeof
> wc->masks.tunnel.ip_tos);
> memset(&wc->masks.tunnel.ip_ttl, 0xff, sizeof
> wc->masks.tunnel.ip_ttl);
> }
For the flow->tunnel.ip_dst case I think we should use the key bit in
the flags to decide whether to mask the tun_id or not, rather than
falling back to the old tun_id != 0.
> +static void
> +flow_tunnel_format(const struct match *match, struct ds *s)
> +{
> + const struct flow_wildcards *wc = &match->wc;
> + const struct flow_tnl *tnl = &match->flow.tunnel;
> +
> + switch (wc->masks.tunnel.tun_id) {
> + case 0:
> + return;
If tun_id is completely masked out then I think we want to skip
printing it but still move on to the other fields.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev