Skip site navigation (1)Skip section navigation (2)
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>