svn commit: r358311 - head/sys/netinet6
Bjoern A. Zeeb
bz at FreeBSD.org
Tue Feb 25 15:03:42 UTC 2020
Author: bz
Date: Tue Feb 25 15:03:41 2020
New Revision: 358311
URL: https://svnweb.freebsd.org/changeset/base/358311
Log:
ip6_output: fix regression introduced in r358167 for ipv6 fragmentation
When moving the calculations for the optlen into the if (opt) block
which deals with possible extension headers I failed to initialise
unfragpartlen to the ipv6 header length if there were no extension
headers present. Correct that mistake to make IPv6 fragment length
calculcations work again.
Reported by: hselasky, kp
OKed by: hselasky, kp
MFC after: 3 days
X-MFC with: r358167
PR: 244393
Modified:
head/sys/netinet6/ip6_output.c
Modified: head/sys/netinet6/ip6_output.c
==============================================================================
--- head/sys/netinet6/ip6_output.c Tue Feb 25 12:56:06 2020 (r358310)
+++ head/sys/netinet6/ip6_output.c Tue Feb 25 15:03:41 2020 (r358311)
@@ -497,7 +497,7 @@ ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
*/
bzero(&exthdrs, sizeof(exthdrs));
optlen = 0;
- unfragpartlen = 0;
+ unfragpartlen = sizeof(struct ip6_hdr);
if (opt) {
/* Hop-by-Hop options header. */
MAKE_EXTHDR(opt->ip6po_hbh, &exthdrs.ip6e_hbh, optlen);
@@ -535,7 +535,7 @@ ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
/* Routing header. */
MAKE_EXTHDR(opt->ip6po_rthdr, &exthdrs.ip6e_rthdr, optlen);
- unfragpartlen = optlen + sizeof(struct ip6_hdr);
+ unfragpartlen += optlen;
/*
* NOTE: we don't add AH/ESP length here (done in
More information about the svn-src-head
mailing list