]> asedeno.scripts.mit.edu Git - linux.git/commit
net: ipv6: split skbuff into fragments transformer
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 29 May 2019 11:25:34 +0000 (13:25 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 30 May 2019 21:18:17 +0000 (14:18 -0700)
commit8a6a1f17640198f7daa5cfcce9a74e3674ce3b00
tree59f780f0495a97cd8961d3190b9cb96d2c44da49
parent065ff79f8881e6267f4c29abb476d697eb87bfba
net: ipv6: split skbuff into fragments transformer

This patch exposes a new API to refragment a skbuff. This allows you to
split either a linear skbuff or to force the refragmentation of an
existing fraglist using a different mtu. The API consists of:

* ip6_frag_init(), that initializes the internal state of the transformer.
* ip6_frag_next(), that allows you to fetch the next fragment. This function
  internally allocates the skbuff that represents the fragment, it pushes
  the IPv6 header, and it also copies the payload for each fragment.

The ip6_frag_state object stores the internal state of the splitter.

This code has been extracted from ip6_fragment(). Symbols are also
exported to allow to reuse this iterator from the bridge codepath to
build its own refragmentation routine by reusing the existing codebase.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ipv6.h
net/ipv6/ip6_output.c