kern/170116: IPv6 with AH broken ~2012.07.08.12.00.00

frf at xocolatl.com frf at xocolatl.com
Tue Jul 24 19:10:11 UTC 2012


>Number:         170116
>Category:       kern
>Synopsis:       IPv6 with AH broken ~2012.07.08.12.00.00
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jul 24 19:10:11 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     frf at xocolatl.com
>Release:        FreeBSD 9.1-PRERELEASE
>Organization:
poor
>Environment:
System: FreeBSD ncst48.local.lab 9.0-STABLE FreeBSD 9.0-STABLE #52: Tue Jul 24
17:49:29 UTC 2012     root at ncst48.local.lab:/usr/obj/usr/src/sys/NCST48  i386


>Description:
	IPv6 TCP frames using AH are not transmitted and dropped, with error:

9.1-PRERELEASE (Current as of 2012.07.24.00.00)
kernel: in6_delayed_cksum: delayed m_pullup, m->len: 40 off: 46

9.0-STABLE (From 2012.07.08.12.15.00)
kernel: in_cksum_skip: out of data by 64369 (number varies)

9.0-STABLE (From 2012.07.08.12.00.00)
Works but prints in_cksum_skip error.

Broken: 
cvsup date=2012.07.08.12.15.00
 Edit src/sys/net/if_loop.c
  Add delta 1.143.2.2 2012.07.08.12.01.11 bz
 Edit src/sys/netinet/tcp_input.c
  Add delta 1.437.2.8 2012.07.08.12.12.34 bz
 Edit src/sys/netinet/tcp_output.c
  Add delta 1.184.2.4 2012.07.08.12.12.34 bz
 Edit src/sys/netinet/tcp_subr.c
  Add delta 1.383.2.4 2012.07.08.12.12.34 bz
 Edit src/sys/netinet/tcp_syncache.c
  Add delta 1.190.2.4 2012.07.08.12.12.34 bz
 Edit src/sys/netinet/tcp_timewait.c
  Add delta 1.316.2.4 2012.07.08.12.12.34 bz

Works:
cvsup date=2012.07.08.12.00.00
 Edit src/sys/net/if_loop.c
  Add delta 1.143.2.1 2011.09.23.00.51.37 kensmith
 Edit src/sys/netinet/tcp_input.c
  Add delta 1.437.2.7 2012.06.05.11.28.57 bz
 Edit src/sys/netinet/tcp_output.c
  Add delta 1.184.2.3 2012.05.19.18.32.31 bz
 Edit src/sys/netinet/tcp_subr.c
  Add delta 1.383.2.3 2012.05.05.07.55.50 glebius
 Edit src/sys/netinet/tcp_syncache.c
  Add delta 1.190.2.3 2012.05.19.18.32.31 bz
 Edit src/sys/netinet/tcp_timewait.c
  Add delta 1.316.2.3 2012.05.19.18.32.31 bz

>How-To-Repeat:

Configure IPv6 (autoconf or manual)
Configure ipsec via setkey and ipsec.conf
 add -6 <src ip6 addr> <dest ip6 addr> ah 0x123456 -A hmac-sha1 0x<long key>;
 add -6 <dest ip6 addr> <src ip6 addr> ah 0x123456 -A hmac-sha1 0x<long key>;
 spdadd  <src ip6 addr> <dest ip6 addr> any -P out ipsec ah/transport//require ;
 spdadd  <dest ip6 addr> <src ip6 addr> any -P in ipsec ah/transport//require;

TCP fails. From broken host; tcpdump shows no output but does show input from
other end. netstat -n show SYN_RECVD state for connetion.

ICMP works 

This worked prior to July 8th 2012.

>Fix:

Unknown, but breakage is related to changes to checksum and offload
processing in the above listed files MFC'd on July 8th by bz at freebsd.org

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list