]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFC r354542:
authorBjoern A. Zeeb <bz@FreeBSD.org>
Fri, 10 Jan 2020 22:10:01 +0000 (22:10 +0000)
committerBjoern A. Zeeb <bz@FreeBSD.org>
Fri, 10 Jan 2020 22:10:01 +0000 (22:10 +0000)
commitfa70286f8a6153af4325129e718778c37a8c3a31
tree5d8cfb951475982e22755e019056d63d94f183dc
parentb2530bbb6dab56aa7eeaf5e089d4070860337d28
MFC r354542:

  frag6: properly handle atomic fragments according to RFCs.

  RFC 8200 says:
   "If the fragment is a whole datagram (that is, both the Fragment
           Offset field and the M flag are zero), then it does not need
           any further reassembly and should be processed as a fully
           reassembled packet (i.e., updating Next Header, adjust Payload
           Length, removing the Fragment header, etc.).  .."

  That means we should remove the fragment header and make all the adjustments
  rather than just skipping over the fragment header.  The difference should
  be noticeable in that a properly handled atomic fragment triggering an ICMPv6
  message at an upper layer (e.g. dest unreach, unreachable port) will not
  include the fragment header.

  Update the test cases to also test for an unfragmentable part.  That is
  needed so that the next header is properly updated (not just lengths).
sys/netinet6/frag6.c
tests/sys/netinet6/frag6/frag6_03.py
tests/sys/netinet6/frag6/frag6_03.sh