]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bpf: lwtunnel: Prepare bpf_lwt_xmit_reroute() to future .flowi4_tos conversion.
authorGuillaume Nault <gnault@redhat.com>
Fri, 8 Nov 2024 16:47:15 +0000 (17:47 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 15 Nov 2024 03:07:49 +0000 (19:07 -0800)
Use ip4h_dscp() to get the DSCP from the IPv4 header, then convert the
dscp_t value to __u8 with inet_dscp_to_dsfield().

Then, when we'll convert .flowi4_tos to dscp_t, we'll just have to drop
the inet_dscp_to_dsfield() call.

Signed-off-by: Guillaume Nault <gnault@redhat.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/8338a12377c44f698a651d1ce357dd92bdf18120.1731064982.git.gnault@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/lwt_bpf.c

index 8a78bff53b2c58920db62906e9cab700ec29ede4..ae74634310a37a8ba59ca80a464500f7032af6b0 100644 (file)
@@ -209,7 +209,7 @@ static int bpf_lwt_xmit_reroute(struct sk_buff *skb)
                fl4.flowi4_oif = oif;
                fl4.flowi4_mark = skb->mark;
                fl4.flowi4_uid = sock_net_uid(net, sk);
-               fl4.flowi4_tos = iph->tos & INET_DSCP_MASK;
+               fl4.flowi4_tos = inet_dscp_to_dsfield(ip4h_dscp(iph));
                fl4.flowi4_flags = FLOWI_FLAG_ANYSRC;
                fl4.flowi4_proto = iph->protocol;
                fl4.daddr = iph->daddr;