inet6_rth_space.3n (2010 09)

i
inet6_rth_space(3N) inet6_rth_space(3N)
NAME
inet6_rth_add(), inet6_rth_getaddr(), inet6_rth_init(), inet6_rth_reverse(), inet6_rth_segments(),
inet6_rth_space() - IPv6 Routing header options manipulation functions.
SYNOPSIS
#include <netinet/in.h>
socklen_t inet6_rth_space(int type, int segments);
void *inet6_rth_init(void *bp, socklen_t bp_len, int type, int segments);
int inet6_rth_add(void *bp, const struct in6_addr *addr);
int inet6_rth_reverse(const void *in, void *out);
int inet6_rth_segments(const void *bp);
struct in6_addr *inet6_rth_getaddr(const void *bp, int index);
DESCRIPTION
These functions can be used by an application to build and examine an IPv6 Routing header. The Rout-
ing header can be used by an IPv6 source to list one or more intermediate nodes to be visited on the way
to a packet’s destination.
These three functions build a Routing header:
inet6_rth_space()
returns the number of bytes required for a Routing header.
inet6_rth_init()
initializes the buffer data for a Routing header.
inet6_rth_add() adds one IPv6 address to the Routing header.
Three functions deal with a returned Routing header:
inet6_rth_reverse()
reverses a Routing header.
inet6_rth_segments()
returns the number of segments in a Routing header.
inet6_rth_getaddr()
fetches one address from a Routing header.
These functions are described below:
inet6_rth_space()
This function returns the number of bytes required to hold a routing header of the specified type
containing the specified number of segments (addresses). For an IPv6 Type 0 Routing header, the
number of segments must be between 0 and 127, inclusive. The return value is just the space for
the Routing header. When the application uses ancillary data, it must pass the returned length to
CMSG_SPACE() to determine how much memory is needed for the ancillary data object (including
the cmsghdr structure).
If the return value is 0, then either the type of the Routing header is not supported by this imple-
mentation or the number of segments is invalid for this type of Routing header.
This function returns the size but does not allocate the space required for the ancillary data.
Note: If type is 2 (Routing Header Type 2), segments must be 1 (RFC 4584).
inet6_rth_init()
This function initializes the buffer pointed to by bp to contain a Routing header of the specified type .
bp_len is only used to verify if the buffer is large enough.
The caller must allocate the buffer, and its size can be determined by calling
inet6_rth_space().
Upon success, the return value is the pointer to the buffer (bp), and the pointer is then used as the
first argument to the
inet6_rth_add() function. Upon an error, the return value is NULL.
Note: If type is 2 (Routing Header Type 2), segments must be 1 (RFC 4584).
inet6_rth_add()
This function adds the IPv6 address pointed to by addr to the end of the Routing header being con-
structed.
If successful, the
segleft member of the Routing header is updated to account for the new address
in the Routing header and the return value of the function is 0. Upon an error the return value of
HP-UX 11i Version 3: September 2010 1 Hewlett-Packard Company 1

Summary of content (2 pages)