---
name: "Socket::GetAddrInfo::Emul"
section: "3pm"
platform: "linux"
package: "libsocket-getaddrinfo-perl"
version: "0.22-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Socket::GetAddrInfo::Emul"
---

# Socket::GetAddrInfo::Emul(3pm)

Pure Perl emulation of "getaddrinfo" and "getnameinfo" using IPv4-only legacy resolvers

## 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 `$addr` is anything other than `"AF_INET"`, an error will be thrown with `"croak"`.

- •

  The only supported `$flags` values 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 \<leonerd@leonerd.org.uk\>
