NAME
"Socket::GetAddrInfo::Emul" - Pure Perl emulation of "getaddrinfo" and "getnameinfo" using IPv4-only legacy resolvers
DESCRIPTION
"Socket::GetAddrInfo" attempts to provide the "getaddrinfo" and "getnameinfo" functions by some XS code that calls the real functions in libc. If for some reason this cannot be done; either there is no C compiler, or libc does not provide these functions, then they will be emulated using the legacy resolvers "gethostbyname", etc... These emulations are not a complete replacement of the real functions, because they only support IPv4 (the "AF_INET" socket family). In this case, the following restrictions will apply.
getaddrinfo
- •
-
If the
"family"hint is supplied, it must be"AF_INET". Any other value will result in an error thrown by"croak".
- •
-
The only supported
"flags"hint values are"AI_PASSIVE","AI_CANONNAME","AI_NUMERICSERV"and"AI_NUMERICHOST".The flags
"AI_V4MAPPED"and"AI_ALL"are recognised but ignored, as they do not apply to"AF_INET"lookups. Since this function only returns"AF_INET"addresses, it does not need to probe the system for configured addresses in other families, so the"AI_ADDRCONFIG"flag is also ignored.Note that
"AI_NUMERICSERV"is an extension not defined by RFC 2553, but is provided by most OSes. It is possible (though unlikely) that even the native XS implementation does not recognise this constant.
getnameinfo
- •
-
If the sockaddr family of
$addris anything other than"AF_INET", an error will be thrown with"croak".
- •
-
The only supported
$flagsvalues are"NI_NUMERICHOST","NI_NUMERICSERV","NI_NOFQDN","NI_NAMEREQD"and"NI_DGRAM".
IDN SUPPORT
This pure-perl emulation provides the IDN constants such as "AI_IDN" and "NI_IDN", but the "getaddrinfo" and "getnameinfo" functions will croak if passed these flags. This should allow a program to probe for their support, and fall back to some other behaviour instead.
AUTHOR
Paul Evans <[email protected]>