Paul Wouters

placeholder to suppress warning

IPSEC_INITSUBNET 3 12 March 2002 libreswan Library functions
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

    #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 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 <libreswan.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.