[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Initial SCTP support for the upcoming 1.6.5 release

From: Michael Tuexen
Subject: Re: Initial SCTP support for the upcoming 1.6.5 release
Date: Fri, 20 Aug 2004 09:57:28 +0200


see my comments in-line.

Best regards

On Aug 20, 2004, at 3:13 AM, Kevin Ryde wrote:

Michael Tuexen <address@hidden> writes:

The argument, to use a function like getprotobyname
to perform a lookup in /etc/protocols, is not valid in my opinion.
The reason is, that besides I have not seen that, that  the
constants above are defined in /usr/include/netinet/in.h and
are used.

I don't want to go against the advice of the GNU/Linux man page.  It's
pretty explicit.
You are not going against it. You are not using them. You are only
providing constants available in /usr/include/netinet/in.h to
the guile user.

So if, a system (I do not know of any such system),
uses a different number for TCP, this number will not only be in
/etc/protocols, but also in /usr/include/netinet/in.h. A different
story are port numbers. They can (and should) be looked up in
There are no constants describing the port number for an echo server...

Well I guess both protocol and service numbers for standard stuff are
constants.  I don't know why one reads a file instead of just putting
numbers in a program.  Maybe it dates right back to a time when such
things were still in flux.  Or maybe the theory is to avoid numbers
hard coded in programs (though strings hard coded aren't much better
You are right, both port numbers and protocol numbers are kind of
standardized. But there is two differences:
Normally a user of a program does not specify the transport protocol,
but the port (telnet echo, for example). That is why you
need a translation service for these service names.
The second is that there are no predefined constants for port numbers
available on a system like it is for protocols.
I agree with the man page that it is bad to use
s = socket(AF_INET, SOCK_STREAM, 132);
It should be
because you are not using a number, you are using a constant.

So what is the difference if you use getprotocolbyname? You can move
the binaries to a different host which uses different numbers?
I have not seen that and I'm pretty sure that this is not in tune
with the socket() call.

BTW, for UDP and TCP the calls
s = socket(AF_INET, SOCK_DGRAM,  0);
s = socket(AF_INET, SOCK_STREAM, 0);
are used as acronyms for

So I think the man page and reality match no pretty good for these things,
but the man page seems to be pretty old (1995, on query=protocols&apropos=0&sektion=0&manpath=Red+Hat+Linux%2Fi386+9&forma t=html

Best regards

PS.: The usage of the third arg of the socket() call is the one described in the 3rd edition of Unix Network Programming, so I guess that some
     people will try to use it that way...

reply via email to

[Prev in Thread] Current Thread [Next in Thread]