On 6/11/2014 10:26 AM, Avinash wrote:
Combining parse_remaining_vlans() with the parse_vlan() might not skip
the inner VLANs present in the packet when the execution enters the
condition vlan_tx_tag_present().
For example, if an ARP packet having mulitpl VLANs (say double VLANs)
is received as shown below
ARP Request
| ETHER ADDR | 88A8 | 15 | 8100 | 10 | 806 |
During the formation of flowkey, the execution initially enters the condition
if (vlan_tx_tag_present)
key->eth.tci = htons(vlan_get_tci(skb)); // 15;
but the remaining VLANs are still present as part of skb->data.
| 8100 | 10 | 806 |
In this case, the function parse_ethertype() return 0x8100 instead of
actual ARP type as the remaining VLANs are not skipped.
Andrew,
My original patch for 802.1ad didn't work in testing. The flow structure
needs to have the 802.1ad fields for the C-Vlan tag added to the layer2
part of the flow structure added in order for push and pop vlans to
work as specified in 802.1ad.
Even with the patch, currently pushing a provider vlan over a customer
vlan does not work, only the tci and vid get replaced. I have been
working on a new patch to add the fields to the flow structure and hope
to have it tested and submitted soon.
--Tom
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev