Home Man
Today's Posts

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:
Select Section of Man Page:
Select Man Page Repository:

NetBSD 6.1.5 - man page for inet6_rth_space (netbsd section 3)

INET6_RTH_SPACE(3)		   BSD Library Functions Manual 	       INET6_RTH_SPACE(3)

     inet6_rth_space, inet6_rth_init, inet6_rth_add, inet6_rth_reverse, inet6_rth_segments,
     inet6_rth_getaddr -- IPv6 Routing Header Options manipulation

     #include <netinet/in.h>

     inet6_rth_space(int, int);

     void *
     inet6_rth_init(void *, socklen_t, int, int);

     inet6_rth_add(void *, const struct in6_addr *);

     inet6_rth_reverse(const void *, void *);

     inet6_rth_segments(const void *);

     struct in6_addr *
     inet6_rth_getaddr(const void *, int);

     The IPv6 Advanced API, RFC 3542, defines the functions that an application calls to build
     and examine IPv6 Routing headers.	Routing headers are used to perform source routing in
     IPv6 networks.  The RFC uses the word ``segments'' to describe addresses and that is the
     term used here as well.  All of the functions are defined in the <netinet/in.h> header file.
     The functions described in this manual page all operate on routing header structures which
     are defined in <netinet/ip6.h> but which should not need to be modified outside the use of
     this API.	The size and shape of the route header structures may change, so using the APIs
     is a more portable, long term, solution.

     The functions in the API are split into two groups, those that build a routing header and
     those that parse a received routing header.  We will describe the builder functions followed
     by the parser functions.

     The inet6_rth_space() function returns the number of bytes required to hold a Routing Header
     of the type, specified in the type argument and containing the number of addresses specified
     in the segments argumment.  When the type is IPV6_RTHDR_TYPE_0 the number of segments must
     be from 0 through 127.  Routing headers of type IPV6_RTHDR_TYPE_2 contain only one segment,
     and are only used with Mobile IPv6.  The return value from this function is the number of
     bytes required to store the routing header.  If the value 0 is returned then either the
     route header type was not recognized or another error occurred.

     The inet6_rth_init() function initializes the pre-allocated buffer pointed to by bp to con-
     tain a routing header of the specified type The bp_len argument is used to verify that the
     buffer is large enough.  The caller must allocate the buffer pointed to by bp.  The neces-
     sary buffer size should be determined by calling inet6_rth_space() described in the previous

     The inet6_rth_init() function returns a pointer to bp on success and NULL when there is an

     The inet6_rth_add() function adds the IPv6 address pointed to by addr to the end of the
     routing header being constructed.

     A successful addition results in the function returning 0, otherwise -1 is returned.

     The inet6_rth_reverse() function takes a routing header, pointed to by the argument in, and
     writes a new routing header into the argument pointed to by out.  The routing header at that
     sends datagrams along the reverse of that route.  Both arguments are allowed to point to the
     same buffer meaning that the reversal can occur in place.

     The return value of the function is 0 on success, or -1 when there is an error.

     The next set of functions operate on a routing header that the application wants to parse.
     In the usual case such a routing header is received from the network, although these func-
     tions can also be used with routing headers that the application itself created.

     The inet6_rth_segments() function returns the number of segments contained in the routing
     header pointed to by bp.  The return value is the number of segments contained in the rout-
     ing header, or -1 if an error occurred.  It is not an error for 0 to be returned as a rout-
     ing header may contain 0 segments.

     The inet6_rth_getaddr() function is used to retrieve a single address from a routing header.
     The index is the location in the routing header from which the application wants to retrieve
     an address.  The index parameter must have a value between 0 and one less than the number of
     segments present in the routing header.  The inet6_rth_segments() function, described in the
     last section, should be used to determine the total number of segments in the routing
     header.  The inet6_rth_getaddr() function returns a pointer to an IPv6 address on success or
     NULL when an error has occurred.

     The inet6_rth_space() and inet6_rth_getaddr() functions return 0 on errors.

     The inet6_rthdr_init() function returns NULL on error.  The inet6_rth_add() and
     inet6_rth_reverse() functions return 0 on success, or -1 upon an error.

     RFC 3542 gives extensive examples in Section 21, Appendix B.

     KAME also provides examples in the advapitest directory of its kit.

     W. Stevens, M. Thomas, E. Nordmark, and T. Jinmei, Advanced Sockets API for IPv6, RFC 3542,
     May 2003.

     S. Deering and R. Hinden, Internet Protocol, Version 6 (IPv6) Specification, RFC2460,
     December 1998.

     The implementation first appeared in KAME advanced networking kit.

BSD					December 24, 2004				      BSD

All times are GMT -4. The time now is 03:17 PM.

Unix & Linux Forums Content Copyrightę1993-2018. All Rights Reserved.
Show Password

Not a Forum Member?
Forgot Password?