>
https://bugzilla.kernel.org/show_bug.cgi?id=15683
>
> Summary: XFRM IS NOT UPDATING ETH TYPE FIELD FOR INNER PACKET
> ON ETH
> Product: Networking
> Version: 2.5
> Kernel Version: 2.6.28-2
> Platform: All
> OS/Version: Linux
> Tree: Mainline
> Status: NEW
> Severity: normal
> Priority: P1
> Component: Other
> AssignedTo:
acme@ghostprotocols.net
> ReportedBy:
eduardo.panisset@gmail.com
> Regression: No
>
>
> Before doing this change wireshark was showing the inner packet as
> "malformed" as it uses the ethernet's type field to classify the L3
> packets as IPv6, IPv4 and so on.
> The problem is when the inner packet is reinserted into Linux stack
> and the ethernet header keeps holding on its type field a value for
> the protocol of outer packet.
>
> Below my correction on file net/xfrm/xfrm_input.c, function xfrm_prepare_input:
>
> ...
>
> skb->protocol = inner_mode->afinfo->eth_proto; // existing code
> eth_hdr(skb)->h_proto = skb->protocol; // my change, adding this line
>
> ...
>