Message ID | 20220712175837.16267-1-andrea.mayer@uniroma2.it (mailing list archive) |
---|---|
Headers | show |
Series | seg6: fix skb checksum for SRH encapsulation/insertion | expand |
On 07/12, Andrea Mayer wrote: > The Linux kernel supports Segment Routing Header (SRH) > encapsulation/insertion operations by providing the capability to: i) > encapsulate a packet in an outer IPv6 header with a specified SRH; ii) > insert a specified SRH directly after the IPv6 header of the packet. > Note that the insertion operation is also referred to as 'injection'. > The two operations are respectively supported by seg6_do_srh_encap() and > seg6_do_srh_inline(), which operate on the skb associated to the packet as > needed (e.g. adding the necessary headers and initializing them, while > taking care to recalculate the skb checksum). > seg6_do_srh_encap() and seg6_do_srh_inline() do not initialize the payload > length of the IPv6 header, which is carried out by the caller functions. > However, this approach causes the corruption of the skb checksum which > needs to be updated only after initialization of headers is completed > (thanks to Paolo Abeni for detecting this issue). > The patchset fixes the skb checksum corruption by moving the IPv6 header > payload length initialization from the callers of seg6_do_srh_encap() and > seg6_do_srh_inline() directly into these functions. > This patchset is organized as follows: > - patch 1/3, seg6: fix skb checksum evaluation in SRH > encapsulation/insertion; > (* SRH encapsulation/insertion available since v4.10) > - patch 2/3, seg6: fix skb checksum in SRv6 End.B6 and End.B6.Encaps > behaviors; > (* SRv6 End.B6 and End.B6.Encaps behaviors available since v4.14) > - patch 3/3, seg6: bpf: fix skb checksum in bpf_push_seg6_encap(); > (* bpf IPv6 Segment Routing helpers available since v4.18) BPF changes make sense. I've tested them by applying the whole series and running test_lwt_seg6local.sh. Reviewed-by: Stanislav Fomichev <sdf@google.com> Tested-by: Stanislav Fomichev <sdf@google.com> > Thank you all, > Andrea > Andrea Mayer (3): > seg6: fix skb checksum evaluation in SRH encapsulation/insertion > seg6: fix skb checksum in SRv6 End.B6 and End.B6.Encaps behaviors > seg6: bpf: fix skb checksum in bpf_push_seg6_encap() > net/core/filter.c | 1 - > net/ipv6/seg6_iptunnel.c | 5 ++++- > net/ipv6/seg6_local.c | 2 -- > 3 files changed, 4 insertions(+), 4 deletions(-) > -- > 2.20.1
Hello: This series was applied to netdev/net.git (master) by Paolo Abeni <pabeni@redhat.com>: On Tue, 12 Jul 2022 19:58:34 +0200 you wrote: > The Linux kernel supports Segment Routing Header (SRH) > encapsulation/insertion operations by providing the capability to: i) > encapsulate a packet in an outer IPv6 header with a specified SRH; ii) > insert a specified SRH directly after the IPv6 header of the packet. > Note that the insertion operation is also referred to as 'injection'. > > The two operations are respectively supported by seg6_do_srh_encap() and > seg6_do_srh_inline(), which operate on the skb associated to the packet as > needed (e.g. adding the necessary headers and initializing them, while > taking care to recalculate the skb checksum). > > [...] Here is the summary with links: - [net,1/3] seg6: fix skb checksum evaluation in SRH encapsulation/insertion https://git.kernel.org/netdev/net/c/df8386d13ea2 - [net,2/3] seg6: fix skb checksum in SRv6 End.B6 and End.B6.Encaps behaviors https://git.kernel.org/netdev/net/c/f048880fc770 - [net,3/3] seg6: bpf: fix skb checksum in bpf_push_seg6_encap() https://git.kernel.org/netdev/net/c/4889fbd98dea You are awesome, thank you!