Skip to contentSkip to conversation

New: XFRM IS NOT UPDATING ETH TYPE FIELD FOR INNER PACKET ON ETH

Bugme-new Andrew Morton 1 participant 2 messages Apr 5, 2010 1 message not in the archive

Subsystems (2)
lore
Share & tools
lore
#1 lore raw
In reply to a message not in the archive

(switched to email. Please respond via emailed reply-to-all, not via the bugzilla web interface).

Quoted 35 lines · On Fri, 2 Apr 2010 18:17:07 GMT [email protected] wrote:

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: [email protected]
        ReportedBy: [email protected]
        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

...

#2 lore raw
In reply to a message not in the archive

(resend - I forgot to cc Eduardo)

(switched to email. Please respond via emailed reply-to-all, not via the bugzilla web interface).

Quoted 35 lines · On Fri, 2 Apr 2010 18:17:07 GMT [email protected] wrote:

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: [email protected]
        ReportedBy: [email protected]
        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

...