- LCG netdb utilities
char *Cgetnetaddress(int sock, const void *sa,
size_t salen, int *skey, const char
**numeric_out, const char **name_out, int
flags, int cflags);
provides several netdb like functions including Cgethostbyname,
Cgethostbyaddr, Cgetservbyname, Cgetnameinfo, Cgetaddrinfo, Cgai_strerror
which behave in a somewhat similar way to their system netdb counterparts. In
addition Cnetdb provides a function called Cgetnetaddress which is currently
the only one documented here.
Cgetnetaddress returns a DNS domain name (often called a hostname) given either
a network socket, in which case the hostname corresponds to the peer address
of the socket, or a sockaddr structure. The name will be returned as a numeric
IP address and/or optionaly a DNS domain name.
Exactly one of either sock
must be specified, the other
should be set to -1 or NULL respectively. If both are set the behaviour should
be considered undefined and may change in the future. If skey
the memory for pointers returned by Cgetnetaddress will be dynamically
allocated and it is the responsibility of the caller to free them when done.
If not NULL skey
should point to an int which is initially set to a
value of -1. The memory used to store the results returned by Cgetnetaddress
will be allocated internally and will be reused during subsequent calls to
Cgetnetaddress from the same thread and that share the same value of
are not NULL the char pointer which
they reference will be reset to a pointer to a character array containig the
numeric or domain name address to be returned by the function. The output will
be NULL if the function is unable to find an IP or domain name. flags
accepts the same bitmaped flags that can be set for getnameinfo().
accepts bitmaped flags which are unique to Cgetnetaddress.
is specified in flags
no attempt is made to
obtain a domain name. If NI_NAMEREQD
is specified nothing is returned
unless a domain name address can be determined. NI_NUMERICHOST
are mutually exclusive. Other flags
options may be
set and will have the effect described for getnameinfo().
may take the bitmaped flags CNA_WANTLOOPBACK
By default if the address to be returned is determined to be the loopback
address any domain name returned will be that of the local machine. If
is specified any domain name returned will be that
associated with the loopback address, usually localhost.localdomain.
A forward lookup verification of the domain name may be optionally specified
with the CNA_FWDLOOKUP
flag. The forward lookup means that one of the
address to which a domain name resolves must match the address passed to
Cgetnetaddress. If the match failes the domain name will be considered to not
be available. By default, or if the option CNA_NOFWDLOOKUP
is passed in
, the forward lookup check is not performed or required. The
behavior if both CNA_FWDLOOKUP
Cgetnetaddress() returns a pointer to the domain name, if available, or
otherwise to the numeric IP address, if available. If neither is available
NULL is returned.
LCG Grid Deployment
Team and DPM