Files
linux-apfs/include/uapi/linux
Daniel Borkmann 7d672345ed bpf: add generic bpf_csum_diff helper
For L4 checksums, we currently have bpf_l4_csum_replace() helper. It's
currently limited to handle 2 and 4 byte changes in a header and feeds the
from/to into inet_proto_csum_replace{2,4}() helpers of the kernel. When
working with IPv6, for example, this makes it rather cumbersome to deal
with, similarly when editing larger parts of a header.

Instead, extend the API in a more generic way: For bpf_l4_csum_replace(),
add a case for header field mask of 0 to change the checksum at a given
offset through inet_proto_csum_replace_by_diff(), and provide a helper
bpf_csum_diff() that can generically calculate a from/to diff for arbitrary
amounts of data.

This can be used in multiple ways: for the bpf_l4_csum_replace() only
part, this even provides us with the option to insert precalculated diffs
from user space f.e. from a map, or from bpf_csum_diff() during runtime.

bpf_csum_diff() has a optional from/to stack buffer input, so we can
calculate a diff by using a scratchbuffer for scenarios where we're
inserting (from is NULL), removing (to is NULL) or diffing (from/to buffers
don't need to be of equal size) data. Also, bpf_csum_diff() allows to
feed a previous csum into csum_partial(), so the function can also be
cascaded.

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-02-21 22:07:09 -05:00
..
2015-10-13 17:42:34 +02:00
2015-10-05 03:16:46 -07:00
2016-02-21 22:07:09 -05:00
2015-08-25 14:41:50 -05:00
2016-01-20 17:09:18 -08:00
2015-12-14 12:19:37 -06:00
2015-10-26 19:06:48 -07:00
2016-01-12 08:21:18 -07:00
2015-08-03 17:30:00 -07:00
2015-07-21 10:39:05 -07:00
2015-11-23 15:06:38 -05:00
2015-08-27 19:44:53 -04:00
2015-07-20 14:58:46 -04:00
2015-09-17 21:09:07 -07:00
2016-01-10 22:13:15 -05:00
2015-09-04 16:54:41 -07:00
2015-12-18 17:48:51 -08:00
2015-10-27 18:55:31 -07:00
2015-12-21 15:28:11 -07:00