bind()/connect() to port 0 question for tcp/udp

Geoffrey Lee (snailtalk@linux-mandrake.com)
Tue, 30 Jul 2002 23:31:16 +1000


Hi list,

I want to ask a question:

In sockets, what is the correct behavior when we try to connect() to port 0
for tcp / udp?

It seems that FreeBSD returns EADDRNOTAVAIL, as does Solaris.

So something like this will fail on Solaris and FreeBSD:

[...]
saddr.sin_port = htons(0);
[...]

connect(AF_INET, (struct sockaddr *)&saddr, sizeof(struct sockaddr));

We don't do this however, and Linux will merrily accept a port of 0 in
a connect(), though most probably your connect() wouldn't succeed.

Making it return EADDRNOTAVAIL to user space would be a trivial task, so
I want to ask, is this a buglet in the Linux implementation, or is FreeBSD
and Solaris wrong?

- G.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/