NAME¶
ipsec_initaddr, ipsec_addrtypeof, ipsec_addrlenof, ipsec_addrbytesof,
ipsec_addrbytesptr - initialize an ip_address, get address type of an
ip_address, get length of address within an ip_address, get copy of address
within an ip_address, get pointer to address within an ip_address
SYNOPSIS¶
#include <freeswan.h>
const char *initaddr(const char *src, size_t srclen, int af,
ip_address *dst);
int addrtypeof(const ip_address *src);
size_t addrlenof(const ip_address *src);
size_t addrbytesof(const ip_address *src, unsigned char *dst, size_t
dstlen);
size_t addrbytesptr(const ip_address *src, const unsigned char
**dst);
DESCRIPTION¶
The
<freeswan.h> library uses an internal type
ip_address to
contain one of the (currently two) types of IP address. These functions
provide basic tools for creating and examining this type.
Initaddr initializes a variable
*dst of type
ip_address
from an address (in network byte order, indicated by a pointer
src and
a length
srclen) and an address family
af (typically
AF_INET or
AF_INET6). The length must be consistent with the
address family.
Addrtypeof returns the address type of an address, normally
AF_INET or
AF_INET6. (The
<freeswan.h> header file
arranges to include the necessary headers for these names to be known.)
Addrlenof returns the size (in bytes) of the address within an
ip_address, to permit storage allocation etc.
Addrbytesof copies the address within the
ip_address src to
the buffer indicated by the pointer
dst and the length
dstlen,
and returns the address length (in bytes). If the address will not fit, as
many bytes as will fit are copied; the returned length is still the full
length. It is the caller's responsibility to check the returned value to
ensure that there was enough room.
Addrbytesptr sets
*dst to a pointer to the internal address within
the
ip_address, and returns the address length (in bytes). If
dst is
NULL, it just returns the address length. The pointer
points to
const to discourage misuse.
Initaddr returns
NULL for success and a pointer to a
string-literal error message for failure; see DIAGNOSTICS.
The functions which return
size_t return
0 for a failure.
SEE ALSO¶
inet(3),
ipsec_ttoaddr(3)
DIAGNOSTICS¶
An unknown address family is a fatal error for any of these functions except
addrtypeof. An address-size mismatch is a fatal error for
initaddr.
HISTORY¶
Written for the FreeS/WAN project by Henry Spencer.
BUGS¶
Addrtypeof should probably have been named
addrfamilyof.