On Tue, Jul 17, 2012 at 09:45:04AM -0700, Ben Pfaff wrote:
> When an output OF1.0 match uses OFP_VLAN_NONE to match only when the 802.1Q
> header is not present, it is somewhat contradictory to specify any value
> for the VLAN PCP, since none can be present without an 802.1Q header, but
> the match output by Open vSwitch did so.  This fixes it.
> 
> Signed-off-by: Ben Pfaff <[email protected]>
> ---
> v1->v2: Fix test failure in "test flow extractor" test, reported by
> Simon Horman.

Tested-by: Simon Horman <[email protected]>

> 
>  lib/ofp-util.c   |    1 +
>  tests/flowgen.pl |    9 ++++++---
>  2 files changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/lib/ofp-util.c b/lib/ofp-util.c
> index 5fb8d8f..a62b554 100644
> --- a/lib/ofp-util.c
> +++ b/lib/ofp-util.c
> @@ -234,6 +234,7 @@ ofputil_cls_rule_to_ofp10_match(const struct cls_rule 
> *rule,
>      } else if (rule->wc.vlan_tci_mask & htons(VLAN_CFI)
>                 && !(rule->flow.vlan_tci & htons(VLAN_CFI))) {
>          match->dl_vlan = htons(OFP10_VLAN_NONE);
> +        ofpfw |= OFPFW10_DL_VLAN_PCP;
>      } else {
>          if (!(rule->wc.vlan_tci_mask & htons(VLAN_VID_MASK))) {
>              ofpfw |= OFPFW10_DL_VLAN;
> diff --git a/tests/flowgen.pl b/tests/flowgen.pl
> index 2f68869..536fb32 100755
> --- a/tests/flowgen.pl
> +++ b/tests/flowgen.pl
> @@ -1,6 +1,6 @@
>  #! /usr/bin/perl
>  
> -# Copyright (c) 2009, 2010, 2011 Nicira, Inc.
> +# Copyright (c) 2009, 2010, 2011, 2012 Nicira, Inc.
>  #
>  # Licensed under the Apache License, Version 2.0 (the "License");
>  # you may not use this file except in compliance with the License.
> @@ -109,10 +109,13 @@ sub output {
>  
>      # Compose packet.
>      my $packet = '';
> +    my $wildcards = 0;
>      $packet .= pack_ethaddr($flow{DL_DST});
>      $packet .= pack_ethaddr($flow{DL_SRC});
>      if ($flow{DL_VLAN} != 0xffff) {
>          $packet .= pack('nn', 0x8100, $flow{DL_VLAN});
> +    } else {
> +        $wildcards |= 1 << 20;   # OFPFW10_DL_VLAN_PCP
>      }
>      my $len_ofs = length($packet);
>      $packet .= pack('n', 0) if $attrs{DL_HEADER} =~ /^802.2/;
> @@ -204,8 +207,8 @@ sub output {
>      print "\n";
>  
>      print FLOWS pack('Nn',
> -                     0,         # wildcards
> -                     1);        # in_port
> +                     $wildcards, # wildcards
> +                     1);         # in_port
>      print FLOWS pack_ethaddr($flow{DL_SRC});
>      print FLOWS pack_ethaddr($flow{DL_DST});
>      print FLOWS pack('nCxnCCxxNNnn',
> -- 
> 1.7.2.5
> 
> _______________________________________________
> dev mailing list
> [email protected]
> http://openvswitch.org/mailman/listinfo/dev
> 
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to