From: Lorenzo Colitti lorenzo@google.com
commit 6f3f65d80dac8f2bafce2213005821fccdce194c upstream.
This allows TC eBPF programs to modify and forward (redirect) packets from interfaces without ethernet headers (for example cellular) to interfaces with (for example ethernet/wifi).
The lack of this appears to simply be an oversight.
Tested: in active use in Android R on 4.14+ devices for ipv6 cellular to wifi tethering offload.
Signed-off-by: Lorenzo Colitti lorenzo@google.com Signed-off-by: Maciej Żenczykowski maze@google.com Signed-off-by: Alexei Starovoitov ast@kernel.org Cc: Nicolas Dichtel nicolas.dichtel@6wind.com Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org --- net/core/filter.c | 2 ++ 1 file changed, 2 insertions(+)
--- a/net/core/filter.c +++ b/net/core/filter.c @@ -6196,6 +6196,8 @@ tc_cls_act_func_proto(enum bpf_func_id f return &bpf_skb_adjust_room_proto; case BPF_FUNC_skb_change_tail: return &bpf_skb_change_tail_proto; + case BPF_FUNC_skb_change_head: + return &bpf_skb_change_head_proto; case BPF_FUNC_skb_get_tunnel_key: return &bpf_skb_get_tunnel_key_proto; case BPF_FUNC_skb_set_tunnel_key: