Refactor ip_fragment() and ip6_fragment(). Use a mbuf list to
authorbluhm <bluhm@openbsd.org>
Mon, 1 Mar 2021 11:05:42 +0000 (11:05 +0000)
committerbluhm <bluhm@openbsd.org>
Mon, 1 Mar 2021 11:05:42 +0000 (11:05 +0000)
commit2818ef99e36cb3e1aa903761b5b1dde22c59b89f
treee7316544b98f37396ece47fed37551ffa76b6933
parenta0def2b0eacd5a71df4a6af1deb2067ed7bc1ba0
Refactor ip_fragment() and ip6_fragment().  Use a mbuf list to
simplify the handling of the fragment list.  Now the functions
ip_fragment() and ip6_fragment() always consume the mbuf.  They
free the mbuf and mbuf list in case of an error and take care about
the counter.  Adjust the code a bit to make v4 and v6 look similar.
Fixes a potential mbuf leak when pf_route6() called pf_refragment6()
and it failed.  Now the mbuf is always freed by ip6_fragment().
OK dlg@ mvs@
sys/net/if_bridge.c
sys/net/pf.c
sys/net/pf_norm.c
sys/netinet/ip_output.c
sys/netinet/ip_var.h
sys/netinet6/ip6_id.c
sys/netinet6/ip6_output.c
sys/netinet6/ip6_var.h