IPSEC_INITSUBNET(3)IPSEC_INITSUBNET(3)NAME
ipsec_initsubnet, ipsec_addrtosubnet, ipsec_subnettypeof, ipsec_maskto‐
count, ipsec_networkof, ipsec_maskof - initialize an ip_subnet, ini‐
tialize a singleton ip_subnet, get address type of an ip_subnet, con‐
vert subnet mask to bit count, get base address of an ip_subnet, get
subnet mask of an ip_subnet
SYNOPSIS
#include <libreswan.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 <libreswan.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 suc‐
cess 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 <libreswan.h> header file arranges to include the nec‐
essary 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 ALSOinet(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.
12 March 2002 IPSEC_INITSUBNET(3)