Date: Mon, 08 Mar 2004 23:34:12 -0700 From: Dale Hagglund <rdh@yottayotta.com> To: freebsd-questions@freebsd.org Subject: change in semantics of socket(PF_INET, SOCK_STREAM, 0)? Message-ID: <86smgizfyz.fsf@ponoka.ed.shawcable.net>
next in thread | raw e-mail | index | archive | help
I upgraded from 4.8 to 4.9 and my install of net/vnc couldn't connect
to a remote server any more. The connection is via an ssh tunnel, but
I don't think that's relevant. The interesting thing was that I
*could* connect to the local end of the tunnel via telnet, but not via
vnc. A few ktraces later, I got the following partial dumps:
telnet:
88320 telnet CALL socket(0x2,0x1,0x6)
88320 telnet RET socket 3
88320 telnet CALL connect(0x3,0x8069020,0x10)
88320 telnet RET connect 0
vncviewer:
80280 vncviewer CALL socket(0x2,0x1,0)
80280 vncviewer RET socket 4
80280 vncviewer CALL connect(0x4,0xbfbff630,0x10)
For vncviewer, the connect is the last call in the trace. If I leave
it long enough, the connection times out. A bit of decoding (and
source code inspection) gives the following C equivalents:
telnet: socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)
vncviewer: socket(PF_INET, SOCK_STREAM, 0)
When I check ip(4), I find that a _proto_ argument of zero implies
IPPROTO_RAW. Since vnc used to work before, I'm guessing this has
changed sometime recently. However, tcp(4) still gives the exact same
call used by vncviewer in its SYNOPSIS section; ditto for udp(4).
Anyway, I guess the basic question is whether or not this change in
the semantics of socket(2) was intended. In either case, I can submit
an appropriate PR if that will help.
Dale Hagglund
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86smgizfyz.fsf>
