On Fri, 22 Apr 2016 14:07:01 -0700, pravin shelar wrote: > On Fri, Apr 22, 2016 at 10:44 AM, Jiri Benc <jb...@redhat.com> wrote: > > For ipgre interfaces in collect metadata mode, receive also traffic with > > encapsulated Ethernet headers. The lwtunnel users are supposed to sort this > > out correctly. This allows to have mixed Ethernet + L3-only traffic on the > > same lwtunnel interface. > > > How user is suppose to sort out the type of packet? whether it is L2 or L3.
By skb->protocol, of course. Will be ETH_P_TEB if the inner packet was Ethernet. There's no problem with this, for lwtunnels used with encap routes, such packets are just discarded (which is the expected behavior), as there's no protocol handler for ETH_P_TEB. More clever lwtunnel users (such as openvswitch) can process the packets. This is important in order to have a single tunnel interface for everything. > Is it fine to receive L2 packet over L3 device? > At least ip_tunnel_rcv() is not ready to handle such packet. I don't see why. Could you please elaborate? Seems safe to me. The desired result is skb->protocol == htons(ETH_P_TEB), network header(!) pointing to the start of the Ethernet frame (because we're tunneling Ethernet via ARPHRD_IPGRE interface, there's no L2 header to have), mac header not being set. Jiri