Paul Wouters

placeholder to suppress warning

IPSEC_INITADDR 3 11 Sept 2000 libreswan Executable programs
ipsec initaddr ipsec addrtypeof ipsec addrlenof ipsec addrbytesof ipsec addrbytesptr_read ipsec addrbytesptr_write 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

    #include <libreswan.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_read` const ip_address * src const unsigned char ** dst size_t `addrbytesptr_write` ip_address * src unsigned char ** dst

## DESCRIPTION

The <libreswan.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 <libreswan.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_read and addrbytesptr_write and set *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.

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.