inet6_option_find()

Search for IPv6 hop-by-hop and destination options

Synopsis:

#include <netinet/in.h>

int inet6_option_find(const struct cmsghdr *cmsg, 
                      u_int8_t **tptrp,
                      int type);

Arguments:

cmsg
A pointer to the cmsghdr structure that must have been initialized by inet6_option_init().
type
The type of option to search for. Either IPV6_HOPOPTS or IPV6_DSTOPTS. This type is stored in the cmsg_type member of the cmsghdr structure pointed to by *cmsgp.
tptrp
A pointer to a pointer to an 8-bit byte.

Library:

libsocket

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

Description:

This inet6_option_find() function is similar to inet6_option_next(). It however, lets the caller specify the option type to be searched for, instead of always returning the next option in the ancillary data object. The cmsg is a pointer to the cmsghdr structure of which cmsg_level equals IPPROTO_IPV6 and cmsg_type equals either IPV6_HOPOPTS or IPV6_DSTOPTS.

The tptrp is a pointer to a pointer to an 8-bit byte that the function uses to remember its place in the ancillary data object each time the function is called.

The first time you call this function for a given ancillary data object, you must set *tptrp must be set to NULL. This function starts searching for an option of the specified type beginning after the value of *tptrp pointer.

Returns:

0 with *tptrp pointing to the 8-bit option
The option was found.
-1 with *tptrp pointing to NULL
The option wasn't found.
-1 with *tptrp pointing to non-NULL
An error has occurred.

Classification:

RFC 2292

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

See also:

inet6_option_alloc(), inet6_option_append(), inet6_option_init(), inet6_option_next(), inet6_option_space()

Based on: