[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f602eefc-20b5-b742-128b-7d1aae749a01@gmail.com>
Date: Wed, 25 Apr 2018 17:24:45 -0600
From: David Ahern <dsahern@...il.com>
To: Daniel Borkmann <daniel@...earbox.net>, netdev@...r.kernel.org,
ast@...nel.org
Cc: shm@...ulusnetworks.com, roopa@...ulusnetworks.com,
brouer@...hat.com, toke@...e.dk, john.fastabend@...il.com
Subject: Re: [RFC bpf-next 8/9] bpf: Provide helper to do lookups in kernel
FIB table
On 4/25/18 1:55 PM, Daniel Borkmann wrote:
>> @@ -3861,6 +4090,8 @@ sk_filter_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
>> return &bpf_get_socket_cookie_proto;
>> case BPF_FUNC_get_socket_uid:
>> return &bpf_get_socket_uid_proto;
>> + case BPF_FUNC_fib_lookup:
>> + return &bpf_fib_lookup_proto;
> This part doesn't belong to sk_filter_func_proto(), but to the
> tc_cls_act_func_proto() instead.
oops, somewhere in all of the re-basing it got added to the wrong
function. Will fix.
>
>> default:
>> return bpf_base_func_proto(func_id);
>> }
>> @@ -3957,6 +4188,8 @@ xdp_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
>> return &bpf_xdp_redirect_map_proto;
>> case BPF_FUNC_xdp_adjust_tail:
>> return &bpf_xdp_adjust_tail_proto;
>> + case BPF_FUNC_fib_lookup:
>> + return &bpf_fib_lookup_proto;
> Basically, you're using the very same bpf_fib_lookup_proto for
> both XDP and skb. In the skb case, you're reusing the two functions
> bpf_ipv{4,6}_fib_lookup(), so when you get the netdev pointer for
> retrieving the netns, you'll crash at dev_net(ctx->rxq->dev) since
> this is XDP only and not skb meta data.
>
> Therefore, as mentioned, pass the netdev to bpf_ipv{4,6}_fib_lookup()
> to have it generic and have bpf_xdp_fib_lookup_proto and
> bpf_skb_fib_lookup_proto where both are under the case BPF_FUNC_fib_lookup
> in the respective *func_proto(), but using the proper prototypes according
> to their correct context. Meaning, both reuse bpf_ipv{4,6}_fib_lookup()
> from each of their BPF_CALL_4() helper implementation.
ok. I have been focused on the xdp program and not the tc path. Will fix.
Powered by blists - more mailing lists