Files
linux-net/include/uapi/linux
Daniel Borkmann 6578171a7f bpf: add bpf_skb_change_proto helper
This patch adds a minimal helper for doing the groundwork of changing
the skb->protocol in a controlled way. Currently supported is v4 to
v6 and vice versa transitions, which allows f.e. for a minimal, static
nat64 implementation where applications in containers that still
require IPv4 can be transparently operated in an IPv6-only environment.
For example, host facing veth of the container can transparently do
the transitions in a programmatic way with the help of clsact qdisc
and cls_bpf.

Idea is to separate concerns for keeping complexity of the helper
lower, which means that the programs utilize bpf_skb_change_proto(),
bpf_skb_store_bytes() and bpf_lX_csum_replace() to get the job done,
instead of doing everything in a single helper (and thus partially
duplicating helper functionality). Also, bpf_skb_change_proto()
shouldn't need to deal with raw packet data as this is done by other
helpers.

bpf_skb_proto_6_to_4() and bpf_skb_proto_4_to_6() unclone the skb to
operate on a private one, push or pop additionally required header
space and migrate the gso/gro meta data from the shared info. We do
mark the gso type as dodgy so that headers are checked and segs
recalculated by the gso/gro engine. The gso_size target is adapted
as well. The flags argument added is currently reserved and can be
used for future extensions.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-06-30 05:54:40 -04:00
..
2016-04-03 11:14:01 +01:00
2016-04-19 04:33:15 +09:00
2016-03-15 16:55:16 -07:00
2016-06-30 05:54:40 -04:00
2016-06-27 04:10:41 -04:00
2016-01-20 17:09:18 -08:00
2016-06-08 11:36:02 -07:00
2016-03-10 16:02:52 +07:00
2016-04-15 17:06:48 -04:00
2016-06-18 10:32:28 -07:00
2016-03-22 15:36:02 -07:00
2016-04-12 19:54:58 +01:00
2016-05-11 22:37:54 +02:00
2016-04-25 15:09:10 -04:00
2016-01-12 08:21:18 -07:00
2016-05-17 17:14:21 -06:00
2016-05-08 23:46:14 -04:00
2016-04-26 12:00:48 -04:00
2016-04-04 22:11:20 -04:00
2015-12-18 17:48:51 -08:00
2016-05-20 17:58:30 -07:00
2016-03-11 02:18:53 +02:00
2016-04-30 09:26:55 -07:00
2016-04-23 20:13:25 -04:00