diff options
author | Peter Oskolkov <posk@google.com> | 2019-02-13 11:53:37 -0800 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2019-02-13 18:27:55 -0800 |
commit | ca78801a81e04a31f8088e96b2649a9cbace5499 (patch) | |
tree | 1fd2c1a1b785e58217ff93e8010acdb4a7473e0b /include/net/addrconf.h | |
parent | 52f278774e796a553be0c869dcaaee6f259ca795 (diff) | |
download | lwn-ca78801a81e04a31f8088e96b2649a9cbace5499.tar.gz lwn-ca78801a81e04a31f8088e96b2649a9cbace5499.zip |
bpf: handle GSO in bpf_lwt_push_encap
This patch adds handling of GSO packets in bpf_lwt_push_ip_encap()
(called from bpf_lwt_push_encap):
* IPIP, GRE, and UDP encapsulation types are deduced by looking
into iphdr->protocol or ipv6hdr->next_header;
* SCTP GSO packets are not supported (as bpf_skb_proto_4_to_6
and similar do);
* UDP_L4 GSO packets are also not supported (although they are
not blocked in bpf_skb_proto_4_to_6 and similar), as
skb_decrease_gso_size() will break it;
* SKB_GSO_DODGY bit is set.
Note: it may be possible to support SCTP and UDP_L4 gso packets;
but as these cases seem to be not well handled by other
tunneling/encapping code paths, the solution should
be generic enough to apply to all tunneling/encapping code.
v8 changes:
- make sure that if GRE or UDP encap is detected, there is
enough of pushed bytes to cover both IP[v6] + GRE|UDP headers;
- do not reject double-encapped packets;
- whitelist TCP GSO packets rather than block SCTP GSO and
UDP GSO.
Signed-off-by: Peter Oskolkov <posk@google.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'include/net/addrconf.h')
0 files changed, 0 insertions, 0 deletions