[ovs-dev] [PATCH] ofp-util: Properly handle "tun_id"s in tun_id_from_cookie flows.

Ethan Jackson ethan at nicira.com
Mon Apr 18 17:51:23 UTC 2011


Looks Good.

Ethan

On Mon, Apr 18, 2011 at 10:13 AM, Ben Pfaff <blp at nicira.com> wrote:
> Just setting the tun_id field isn't enough--it's also necessary to set
> the tun_id_mask.  Otherwise the call to cls_rule_zero_wildcarded_fields()
> at the end of ofputil_cls_rule_from_match() will zero out the tun_id again.
>
> This was broken by commit 8368c090cab "Implement arbitrary bitwise masks
> for tun_id field" back in January.  (This makes me wonder whether we can
> drop support for tun_id_from_cookie now.)
>
> Reported-by: Dan Wendlandt <dan at nicira.com>
> ---
>  lib/ofp-util.c   |    2 +-
>  tests/ofproto.at |    8 ++++++--
>  2 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/lib/ofp-util.c b/lib/ofp-util.c
> index c49b079..1e9db1d 100644
> --- a/lib/ofp-util.c
> +++ b/lib/ofp-util.c
> @@ -137,7 +137,7 @@ ofputil_cls_rule_from_match(const struct ofp_match *match,
>     wc->nw_dst_mask = ofputil_wcbits_to_netmask(ofpfw >> OFPFW_NW_DST_SHIFT);
>
>     if (flow_format == NXFF_TUN_ID_FROM_COOKIE && !(ofpfw & NXFW_TUN_ID)) {
> -        rule->flow.tun_id = htonll(ntohll(cookie) >> 32);
> +        cls_rule_set_tun_id(rule, htonll(ntohll(cookie) >> 32));
>     }
>
>     if (ofpfw & OFPFW_DL_DST) {
> diff --git a/tests/ofproto.at b/tests/ofproto.at
> index 9506756..fc7ff57 100644
> --- a/tests/ofproto.at
> +++ b/tests/ofproto.at
> @@ -48,10 +48,14 @@ AT_CHECK([ovs-ofctl dump-flows br0 | STRIP_XIDS], [0], [NXST_FLOW reply:
>  ])
>  AT_CHECK([echo 'in_port=1,actions=0' | ovs-ofctl add-flows br0 -])
>  AT_CHECK([ovs-ofctl add-flow br0 in_port=0,actions=1])
> -AT_CHECK([ovs-ofctl dump-flows br0 | STRIP_XIDS | STRIP_DURATION], [0], [dnl
> -NXST_FLOW reply:
> +dnl Tests for a bug in which ofproto ignored tun_id in tun_id_from_cookie
> +dnl flow_mod commands.
> +AT_CHECK([ovs-ofctl add-flow -F tun_id_from_cookie br0 tun_id=1,actions=mod_vlan_vid:4])
> +AT_CHECK([ovs-ofctl dump-flows br0 | STRIP_XIDS | STRIP_DURATION | sort], [0], [dnl
>  cookie=0x0, duration=?s, table_id=0, n_packets=0, n_bytes=0, in_port=1 actions=output:0
>  cookie=0x0, duration=?s, table_id=0, n_packets=0, n_bytes=0, in_port=65534 actions=output:1
> + cookie=0x100000000, duration=?s, table_id=0, n_packets=0, n_bytes=0, tun_id=0x1 actions=mod_vlan_vid:4
> +NXST_FLOW reply:
>  ])
>  AT_CHECK([ovs-ofctl del-flows br0])
>  AT_CHECK([ovs-ofctl dump-flows br0 | STRIP_XIDS], [0], [NXST_FLOW reply:
> --
> 1.7.1
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>



More information about the dev mailing list