From f86faf6ba8dcad98aa3a0a063af4d2fc5b14a26e Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 17 Jul 2026 09:32:47 -0400 Subject: [PATCH] MT#55283 unify skb_pull to transport Use the existing offsets to network/transport header to determine how much needs to be pulled back. Then we can combine these code snippets into one. No functional change. Change-Id: I34eeb707da9baad0891d2fbb2d8d9fc95e027204 --- kernel-module/nft_rtpengine.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/kernel-module/nft_rtpengine.c b/kernel-module/nft_rtpengine.c index e4d711543..25558d0f4 100644 --- a/kernel-module/nft_rtpengine.c +++ b/kernel-module/nft_rtpengine.c @@ -7301,12 +7301,14 @@ static int rtpengine4(struct sk_buff *oskb, struct net *net, struct rtpengine_ta return NFT_CONTINUE; skb_gso_reset(skb); - skb_reset_network_header(skb); ih = ip_hdr(skb); - skb_pull(skb, (ih->ihl << 2)); + if (ih->protocol != IPPROTO_UDP) goto out; + // pull to transport (UDP) header + skb_pull(skb, skb->transport_header - skb->network_header); + memset(&src, 0, sizeof(src)); memset(&dst, 0, sizeof(dst)); src.family = AF_INET; @@ -7348,13 +7350,14 @@ static int rtpengine6(struct sk_buff *oskb, struct net *net, struct rtpengine_ta return NFT_CONTINUE; skb_gso_reset(skb); - skb_reset_network_header(skb); ih = ipv6_hdr(skb); - skb_pull(skb, sizeof(*ih)); if (ih->nexthdr != IPPROTO_UDP) goto out; + // pull to transport (UDP) header + skb_pull(skb, skb->transport_header - skb->network_header); + memset(&src, 0, sizeof(src)); memset(&dst, 0, sizeof(dst)); src.family = AF_INET6;