inet6_rthdr_space()

Updated: April 19, 2023

Determine the space required by an IPv6 routing header

Synopsis:

#include <netinet/in.h>

size_t inet6_rthdr_space(int type, 
                         int segments);

Arguments:

type
The type of IPv6 routing header (e.g., Type 0 as defined in <netinet/in.h>).
segments
The number of segments (addresses) in the routing header.

Library:

libsocket

Use the -l socket option to qcc to link against this library.

Description:

This function returns the number of bytes required to hold a routing header of the specified type containing a specified number of segments (addresses). For an IPv6 Type 0 routing header, the number of segments must be between 1 and 23, inclusive. The return value includes the size of the cmsghdr structure that precedes the routing header, and any required padding.

Note: This function returns the size but doesn't allocate the space required for the ancillary data. This allows an application to allocate a larger buffer, if other ancillary data objects are desired. All the ancillary data objects must be specified to sendmsg() as a single msg_control buffer in the msghdr structure msg_control member.

Based on:

Returns:

The number of bytes required, or 0 if the type of the routing header isn't supported by this implementation or the number of segments is invalid for this type of routing header.

Classification:

RFC 2292

Safety:  
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes