[Bug 226421] v6 address truncated and socket type shows "tcp46" when IPv4 mapping enabled
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Wed Mar 7 15:10:41 UTC 2018
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 at FreeBSD.org
Reporter: dan.mcgregor at 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.
More information about the freebsd-bugs
mailing list