[ovs-dev] [metaflow-cleanup 2/3] flow: New functions for setting a VLAN VID or PCP value.

Ethan Jackson ethan at nicira.com
Mon Nov 14 20:50:33 UTC 2011


Looks good to me.

I think the flow_set_vlan_vid() function could possibly use a comment.
 In particular, it may be worth noting that it clears the pcp value
when vid is OFP_VLAN_NONE.  I don't feel strongly about it though.

Ethan

On Mon, Nov 7, 2011 at 21:50, Ben Pfaff <blp at nicira.com> wrote:
> ---
>  lib/flow.c |   21 +++++++++++++++++++++
>  lib/flow.h |    3 +++
>  2 files changed, 24 insertions(+), 0 deletions(-)
>
> diff --git a/lib/flow.c b/lib/flow.c
> index 1263734..bf7ba6d 100644
> --- a/lib/flow.c
> +++ b/lib/flow.c
> @@ -985,6 +985,27 @@ flow_hash_fields_valid(enum nx_hash_fields fields)
>         || fields == NX_HASH_FIELDS_SYMMETRIC_L4;
>  }
>
> +void
> +flow_set_vlan_vid(struct flow *flow, ovs_be16 vid)
> +{
> +    if (vid == htons(OFP_VLAN_NONE)) {
> +        flow->vlan_tci = htons(0);
> +    } else {
> +        vid &= htons(VLAN_VID_MASK);
> +        flow->vlan_tci &= ~htons(VLAN_VID_MASK);
> +        flow->vlan_tci |= htons(VLAN_CFI) | vid;
> +    }
> +}
> +
> +void
> +flow_set_vlan_pcp(struct flow *flow, uint8_t pcp)
> +{
> +    pcp &= 0x07;
> +    flow->vlan_tci &= ~htons(VLAN_PCP_MASK);
> +    flow->vlan_tci |= htons((pcp << VLAN_PCP_SHIFT) | VLAN_CFI);
> +}
> +
> +
>  /* Puts into 'b' a packet that flow_extract() would parse as having the given
>  * 'flow'.
>  *
> diff --git a/lib/flow.h b/lib/flow.h
> index 0abfe5a..b26949c 100644
> --- a/lib/flow.h
> +++ b/lib/flow.h
> @@ -97,6 +97,9 @@ static inline int flow_compare(const struct flow *, const struct flow *);
>  static inline bool flow_equal(const struct flow *, const struct flow *);
>  static inline size_t flow_hash(const struct flow *, uint32_t basis);
>
> +void flow_set_vlan_vid(struct flow *, ovs_be16 vid);
> +void flow_set_vlan_pcp(struct flow *, uint8_t pcp);
> +
>  void flow_compose(struct ofpbuf *, const struct flow *);
>
>  static inline int
> --
> 1.7.2.5
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>



More information about the dev mailing list