]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bpf: ipv4: Prepare __bpf_redirect_neigh_v4() to future .flowi4_tos conversion.
authorGuillaume Nault <gnault@redhat.com>
Fri, 8 Nov 2024 16:47:12 +0000 (17:47 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 15 Nov 2024 03:07:48 +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/35eacc8955003e434afb1365d404193cc98a9579.1731064982.git.gnault@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/filter.c

index bc33692acabcc8329638cdee89b30362e56d3437..4c396305cd4d5a7d1f7554c50109a8cb3f323599 100644 (file)
@@ -2355,7 +2355,7 @@ static int __bpf_redirect_neigh_v4(struct sk_buff *skb, struct net_device *dev,
                struct flowi4 fl4 = {
                        .flowi4_flags = FLOWI_FLAG_ANYSRC,
                        .flowi4_mark  = skb->mark,
-                       .flowi4_tos   = ip4h->tos & INET_DSCP_MASK,
+                       .flowi4_tos   = inet_dscp_to_dsfield(ip4h_dscp(ip4h)),
                        .flowi4_oif   = dev->ifindex,
                        .flowi4_proto = ip4h->protocol,
                        .daddr        = ip4h->daddr,