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:
- W. Stevens and M. Thomas, Advanced Sockets API for IPv6,
RFC 2292, February 1998. Contains good examples.
- S. Deering and R. Hinden, Internet Protocol, Version 6
(IPv6) Specification, RFC 2460, December 1998.
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 |