NAME¶
ipsec_initsubnet, ipsec_addrtosubnet, ipsec_subnettypeof, ipsec_masktocount,
ipsec_networkof, ipsec_maskof - initialize an ip_subnet, initialize a
singleton ip_subnet, get address type of an ip_subnet, convert subnet mask to
bit count, get base address of an ip_subnet, get subnet mask of an ip_subnet
SYNOPSIS¶
#include <freeswan.h>
const char *initsubnet(const ip_address *addr, int maskbits, int
clash, ip_subnet *dst);
const char *addrtosubnet(const ip_address *addr, ip_subnet *dst);
int subnettypeof(const ip_subnet *src);
int masktocount(const ip_address *src);
void networkof(const ip_subnet *src, ip_address *dst);
void maskof(const ip_subnet *src, ip_address *dst);
DESCRIPTION¶
The
<freeswan.h> library uses an internal type
ip_subnet to
contain a description of an IP subnet (base address plus mask). These
functions provide basic tools for creating and examining this type.
Initsubnet initializes a variable
*dst of type
ip_subnet
from a base address and a count of mask bits. The
clash parameter
specifies what to do if the base address includes
1 bits outside the
prefix specified by the mask (that is, in the ``host number'' part of the
address):
- '0'
- zero out host-number bits
- 'x'
- non-zero host-number bits are an error
Initsubnet returns
NULL for success and a pointer to a
string-literal error message for failure; see DIAGNOSTICS.
Addrtosubnet initializes an
ip_subnet variable
*dst to a
``singleton subnet'' containing the single address
*addr. It returns
NULL for success and a pointer to a string-literal error message for
failure.
Subnettypeof returns the address type of a subnet, normally
AF_INET or
AF_INET6. (The
<freeswan.h> header file
arranges to include the necessary headers for these names to be known.)
Masktocount converts a subnet mask, expressed as an address, to a bit
count suitable for use with
initsubnet. It returns
-1 for error;
see DIAGNOSTICS.
Networkof fills in
*dst with the base address of subnet
src.
Maskof fills in
*dst with the subnet mask of subnet
src,
expressed as an address.
SEE ALSO¶
inet(3),
ipsec_ttosubnet(3),
ipsec_rangetosubnet(3)
DIAGNOSTICS¶
Fatal errors in
initsubnet are: unknown address family; unknown
clash value; impossible mask bit count; non-zero host-number bits and
clash is
'x'. Fatal errors in
addrtosubnet are: unknown
address family. Fatal errors in
masktocount are: unknown address
family; mask bits not contiguous.
HISTORY¶
Written for the FreeS/WAN project by Henry Spencer.