Re: [PATCH 3/6] nfs-utils: skip getaddrinfo in create_auth_rpc_client unless we need port

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

 



On Apr 3, 2009, at 3:04 PM, Jeff Layton wrote:
On Wed, 1 Apr 2009 14:01:30 -0400
Chuck Lever <chuck.lever@xxxxxxxxxx> wrote:

As far as I understand it, the ai_socktype and ai_protocol fields are
used to return the values needed for subsequent socket(2)/bind(2)
system calls.  In this case you are not using these fields from the
results...

If ai_protocol is zero, then getaddrinfo(3) assumes you want one copy
of the address for each supported protocol type, so it returns three
structures (one for IPPROTO_UDP, one for IPPROTO_TCP, and one with a
zero protocol number).  The contents, except for the socktype and
protocol fields, are the same for each.

Hypothetical situation...

Suppose there is a service in /etc/services that has a different port
number for tcp than for udp:

fooserv		50001/tcp
fooserv		50002/udp

You're saying that getaddrinfo will return the same port number in all
of the returned structures? Won't that mean that one of the port numbers
is wrong? That seems broken if so...

I was trying to describe observed behavior here -- it's pretty unlikely that there will be different port numbers in these returned structures. It's difficult to say precisely how this is supposed to behave based on the man page or even browsing the glibc source code for a few minutes.

It's certainly possible to set up /etc/services as you suggest, but there is an IANA policy to assign the same port for both transports. As near as I can tell the reason we have the transport listed in /etc/ services at all is because some protocols support only one transport. So IMO it would be quite unlikely to encounter such a case where the port number depended on the transport.

If that's not the case, then I think we need to at least set the
ai_protocol in the hints.

Perhaps that's true.  What are the expected values of @service ?

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux