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"

Reply via email to