On Tue, May 13, 2014 at 05:02:15PM +0300, Lorand Jakab wrote:
> This commit relaxes the assumption that all packets have an Ethernet
> header, and adds support for layer 3 flows. For each packet received on
> the Linux kernel datapath the l2 and l3 members of struct ofpbuf are
> intialized appropriately, and some functions now expect this (notably
> flow_extract()), in order to differentiate between layer 2 and layer 3
> packets. struct flow has now a new 'base_layer' member, because we
> cannot assume that a flow has no Ethernet header when eth_src and
> eth_dst are 0. For layer 3 packets, the protocol type is still stored
> in the eth_type member.
>
> Switching L2->L3 and L3->L2 are both implemented by adding the pop_eth
> and push_eth actions respectively when a transition is detected. The
> push_eth action puts 0s on both source and destination MACs. These
> addresses can be modified with mod_dl_dst and mod_dl_src actions.
>
> Added new prerequisite MFP_ETHERNET for fields MFF_ETH_SRC, MFF_ETH_DST,
> MFF_VLAN_TCI, MFF_DL_VLAN, MFF_VLAN_VID and MFF_DL_VLAN_PCP.
>
> Signed-off-by: Lorand Jakab <[email protected]>
GCC 4.7 is complaining about a possibly uninitialized variable:
cc1: warnings being treated as errors
../lib/flow.c: In function 'miniflow_extract':
../lib/flow.c:388: error: 'frame' may be used uninitialized in
this function
I see at least one direct reference to the 'data_' member of struct
ofpbuf in this patch. This will break builds that include DPDK
support. Please use the helper functions.
In miniflow_extract(), I am not sure that it is necessary to do this
in L3 case, because all of the contents of a miniflow is assumed to be
0 unless otherwise specified:
+ miniflow_push_be16(mf, vlan_tci, 0);
I suspect that xlate_actions__() needs to mark wc->base_layer as
"unwildcarded", just as it does with in_port, skb_priority, dl_type,
and so on.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev