https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=226421
Bug ID: 226421 Summary: v6 address truncated and socket type shows "tcp46" when IPv4 mapping enabled Product: Base System Version: 11.1-STABLE Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: kern Assignee: freebsd-bugs@FreeBSD.org Reporter: dan.mcgre...@usask.ca Created attachment 191279 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=191279&action=edit Proposed patch to correct IPv6 vs IPv4 check in receive path Since bug 221385's been closed, with net.inet6.ip6.v6only=0, a socket listening on an IPv6 address accepts a connection from another IPv6 host, the accepted socket shows type "tcp46" and has its address truncated to the lower 32 bits: USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS dan sshd 711 3 tcp46 254.11.122.185:22 0.0.0.2:47615 root sshd 708 3 tcp46 254.11.122.185:22 0.0.0.2:47615 The addresses are the lower 32 bits of the IPv6 addresses in question, 2001:470:1f17:273:2a0:98ff:fe0b:7ab9 and 2001:470:1c:4df::2. The expected result would be: USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS dan sshd 40475 3 tcp6 2001:470:30f3:1:ca60:ff:fe5f:c1f3:22 2001:470:30f3:1:922b:34ff:fe5d:d4b3:33558 root sshd 35424 3 tcp6 2001:470:30f3:1:ca60:ff:fe5f:c1f3:22 2001:470:30f3:1:922b:34ff:fe5d:d4b3:33558 This appears to be due to the kernel assuming any socket whose inp_vflag includes IPv4 is an IPv4 socket. The accepted socket inherits that value from the parent socket. It should only have tcp46 for listening sockets, and in accept check that only INP_IPV4 is set. -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ freebsd-bugs@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"