bpf: flowlabel in bpf_fib_lookup should be flowinfo
authorDavid Ahern <dsahern@gmail.com>
Sun, 3 Jun 2018 15:15:19 +0000 (08:15 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 4 Jun 2018 01:29:07 +0000 (18:29 -0700)
As Michal noted the flow struct takes both the flow label and priority.
Update the bpf_fib_lookup API to note that it is flowinfo and not just
the flow label.

Cc: Michal Kubecek <mkubecek@suse.cz>
Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
include/uapi/linux/bpf.h
net/core/filter.c
samples/bpf/xdp_fwd_kern.c

index 18712b0..eeb6237 100644 (file)
@@ -2629,7 +2629,7 @@ struct bpf_fib_lookup {
        union {
                /* inputs to lookup */
                __u8    tos;            /* AF_INET  */
-               __be32  flowlabel;      /* AF_INET6 */
+               __be32  flowinfo;       /* AF_INET6, flow_label + priority */
 
                /* output: metric of fib result (IPv4/IPv6 only) */
                __u32   rt_metric;
index a72ea9f..3d9ba7e 100644 (file)
@@ -4221,7 +4221,7 @@ static int bpf_ipv6_fib_lookup(struct net *net, struct bpf_fib_lookup *params,
                fl6.flowi6_oif = 0;
                strict = RT6_LOOKUP_F_HAS_SADDR;
        }
-       fl6.flowlabel = params->flowlabel;
+       fl6.flowlabel = params->flowinfo;
        fl6.flowi6_scope = 0;
        fl6.flowi6_flags = 0;
        fl6.mp_hash = 0;
index 4a6be0f..6673cdb 100644 (file)
@@ -88,7 +88,7 @@ static __always_inline int xdp_fwd_flags(struct xdp_md *ctx, u32 flags)
                        return XDP_PASS;
 
                fib_params.family       = AF_INET6;
-               fib_params.flowlabel    = *(__be32 *)ip6h & IPV6_FLOWINFO_MASK;
+               fib_params.flowinfo     = *(__be32 *)ip6h & IPV6_FLOWINFO_MASK;
                fib_params.l4_protocol  = ip6h->nexthdr;
                fib_params.sport        = 0;
                fib_params.dport        = 0;