getnameinfo() and sa_len

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

 



-----BEGIN PGP SIGNED MESSAGE-----

Hi,

A small google on getnameinfo() and sa_len produced that
Linux apparently doesn't have any sa_len field in the sockaddr
structures, while every other OS (including your beloved Windows ;)
and the various BSD's have it, apparently it is 'optional', but
from the EXAMPLES section on a Debian unstable's getnameinfo(3) page:
8<--------
EXAMPLES
       The following code tries to get the numeric hostname and service
       name, for a given socket address. Note
       that there is no hardcoded reference to a particular address family.

                struct sockaddr *sa;    /* input */
                char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];

                if (getnameinfo(sa, sa->sa_len, hbuf, sizeof(hbuf), sbuf,
                    sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0)
                        printf("host=%s, serv=%s\n", hbuf, sbuf);
- -------->8

Notez bien this page is from "Linux Man Page 2000-12-11 getnameinfo(3)"
The same page is included on Fedora Core 1 btw.
I saw reports of sa_len not being supported by Alan Cox from 1999:
http://www.ussg.iu.edu/hypermail/linux/net/9908.1/0018.html
RedHat has it apparently:
http://sources.redhat.com/ecos/docs-latest/ref/net-common-tcpip-manpages-getnameinfo.html

So what is up with the documentation, or better, how can I as an
application programmer get a valid sa_len for getnameinfo() ? :)
It is easier if it is stuck in the sockaddr, than when I have to
ifdef all the way around every app and pass it along everywhere.
Making a own struct full_sockaddr { uint8_t sa_len; struct sockaddr sa; };
is just completely silly to make it easier to port apps back and
forth between the various BSD's, Windows and Linux...

Greets,
 Jeroen

-----BEGIN PGP SIGNATURE-----
Version: Unfix PGP for Outlook Alpha 13 Int.
Comment: Jeroen Massar / http://unfix.org/~jeroen

iQA/AwUBQDTDmCmqKFIzPnwjEQIyFgCggrXM0Er/NQHDBD/gjH3moVJSpf8AoK1B
aR1Z19gzaedRj0Hgx+EA6ZfP
=glg2
-----END PGP SIGNATURE-----

-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux