xref: /freebsd/lib/libc/net/inet6_option_space.3 (revision 6617cf5778c62a99378ccdbc008fb150d96bcd98)
16617cf57SGeorge V. Neville-Neil.\"	$KAME: inet6_option_space.3,v 1.11 2005/01/05 03:00:44 itojun Exp $
26617cf57SGeorge V. Neville-Neil.\"	$FreeBSD$
36617cf57SGeorge V. Neville-Neil.\"
46617cf57SGeorge V. Neville-Neil.\" Copyright (C) 2004 WIDE Project.
56617cf57SGeorge V. Neville-Neil.\" All rights reserved.
66617cf57SGeorge V. Neville-Neil.\"
76617cf57SGeorge V. Neville-Neil.\" Redistribution and use in source and binary forms, with or without
86617cf57SGeorge V. Neville-Neil.\" modification, are permitted provided that the following conditions
96617cf57SGeorge V. Neville-Neil.\" are met:
106617cf57SGeorge V. Neville-Neil.\" 1. Redistributions of source code must retain the above copyright
116617cf57SGeorge V. Neville-Neil.\"    notice, this list of conditions and the following disclaimer.
126617cf57SGeorge V. Neville-Neil.\" 2. Redistributions in binary form must reproduce the above copyright
136617cf57SGeorge V. Neville-Neil.\"    notice, this list of conditions and the following disclaimer in the
146617cf57SGeorge V. Neville-Neil.\"    documentation and/or other materials provided with the distribution.
156617cf57SGeorge V. Neville-Neil.\" 3. Neither the name of the project nor the names of its contributors
166617cf57SGeorge V. Neville-Neil.\"    may be used to endorse or promote products derived from this software
176617cf57SGeorge V. Neville-Neil.\"    without specific prior written permission.
186617cf57SGeorge V. Neville-Neil.\"
196617cf57SGeorge V. Neville-Neil.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
206617cf57SGeorge V. Neville-Neil.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
216617cf57SGeorge V. Neville-Neil.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
226617cf57SGeorge V. Neville-Neil.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
236617cf57SGeorge V. Neville-Neil.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
246617cf57SGeorge V. Neville-Neil.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
256617cf57SGeorge V. Neville-Neil.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
266617cf57SGeorge V. Neville-Neil.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
276617cf57SGeorge V. Neville-Neil.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
286617cf57SGeorge V. Neville-Neil.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
296617cf57SGeorge V. Neville-Neil.\" SUCH DAMAGE.
306617cf57SGeorge V. Neville-Neil.\"
316617cf57SGeorge V. Neville-Neil.Dd December 23, 2004
326617cf57SGeorge V. Neville-Neil.Dt INET6_OPTION_SPACE 3
336617cf57SGeorge V. Neville-Neil.Os
346617cf57SGeorge V. Neville-Neil.\"
356617cf57SGeorge V. Neville-Neil.Sh NAME
366617cf57SGeorge V. Neville-Neil.Nm inet6_option_space ,
376617cf57SGeorge V. Neville-Neil.Nm inet6_option_init ,
386617cf57SGeorge V. Neville-Neil.Nm inet6_option_append ,
396617cf57SGeorge V. Neville-Neil.Nm inet6_option_alloc ,
406617cf57SGeorge V. Neville-Neil.Nm inet6_option_next ,
416617cf57SGeorge V. Neville-Neil.Nm inet6_option_find
426617cf57SGeorge V. Neville-Neil.Nd IPv6 Hop-by-Hop and Destination Option Manipulation
436617cf57SGeorge V. Neville-Neil.\"
446617cf57SGeorge V. Neville-Neil.Sh LIBRARY
456617cf57SGeorge V. Neville-Neil.Lb libc
466617cf57SGeorge V. Neville-Neil.Sh SYNOPSIS
476617cf57SGeorge V. Neville-Neil.In sys/types.h
486617cf57SGeorge V. Neville-Neil.In netinet/in.h
496617cf57SGeorge V. Neville-Neil.Ft "int"
506617cf57SGeorge V. Neville-Neil.Fn inet6_option_space "int nbytes"
516617cf57SGeorge V. Neville-Neil.Ft "int"
526617cf57SGeorge V. Neville-Neil.Fn inet6_option_init "void *bp" "struct cmsghdr **cmsgp" "int type"
536617cf57SGeorge V. Neville-Neil.Ft "int"
546617cf57SGeorge V. Neville-Neil.Fn inet6_option_append "struct cmsghdr *cmsg" "const u_int8_t *typep" "int multx" "int plusy"
556617cf57SGeorge V. Neville-Neil.Ft "u_int8_t *"
566617cf57SGeorge V. Neville-Neil.Fn inet6_option_alloc "struct cmsghdr *cmsg" "int datalen" "int multx" "int plusy"
576617cf57SGeorge V. Neville-Neil.Ft "int"
586617cf57SGeorge V. Neville-Neil.Fn inet6_option_next "const struct cmsghdr *cmsg" "u_int8_t **tptrp"
596617cf57SGeorge V. Neville-Neil.Ft "int"
606617cf57SGeorge V. Neville-Neil.Fn inet6_option_find "const struct cmsghdr *cmsg" "u_int8_t **tptrp" "int type"
616617cf57SGeorge V. Neville-Neil.\"
626617cf57SGeorge V. Neville-Neil.Sh DESCRIPTION
636617cf57SGeorge V. Neville-Neil.\"
646617cf57SGeorge V. Neville-NeilManipulating and parsing IPv6's Hop-by-Hop and Destination options is
656617cf57SGeorge V. Neville-Neilcomplicated by the need to properly align and pad data as well as the
666617cf57SGeorge V. Neville-Neilneed to manipulate ancillary information that is not part of the data
676617cf57SGeorge V. Neville-Neilstream.
686617cf57SGeorge V. Neville-NeilRFC2292 defines a set of functions, which are implemented as
696617cf57SGeorge V. Neville-Neilpart of the Kame libraries, to support help developers create, change,
706617cf57SGeorge V. Neville-Neiland parse Hop-by-Hope and Destination options.
716617cf57SGeorge V. Neville-NeilAll of the prototypes
726617cf57SGeorge V. Neville-Neilfor the option functions are defined in the
736617cf57SGeorge V. Neville-Neil.In netinet/in.h
746617cf57SGeorge V. Neville-Neilheader file.
756617cf57SGeorge V. Neville-Neil.\"
766617cf57SGeorge V. Neville-Neil.Ss inet6_option_space
776617cf57SGeorge V. Neville-NeilIn order to determine the amount of space necessary to hold any option
786617cf57SGeorge V. Neville-Neilthe
796617cf57SGeorge V. Neville-Neil.Fn inet6_option_space
806617cf57SGeorge V. Neville-Neilfunction is called.
816617cf57SGeorge V. Neville-NeilIt returns the number of bytes required to hold
826617cf57SGeorge V. Neville-Neilan option when it is stored as ancillary data, including the
836617cf57SGeorge V. Neville-Neil.Li cmsghdr
846617cf57SGeorge V. Neville-Neilstructure at the beginning, and any necessary padding at the end.
856617cf57SGeorge V. Neville-NeilThe
866617cf57SGeorge V. Neville-Neil.Li nbytes
876617cf57SGeorge V. Neville-Neilargument indicates the size of the structure defining the option,
886617cf57SGeorge V. Neville-Neiland must include any pad bytes at the beginning (the value
896617cf57SGeorge V. Neville-Neil.Li y
906617cf57SGeorge V. Neville-Neilin the alignment term
916617cf57SGeorge V. Neville-Neil.Dq Li "xn + y" ) ,
926617cf57SGeorge V. Neville-Neilthe type byte, the length byte, and the option data.
936617cf57SGeorge V. Neville-Neil.Pp
946617cf57SGeorge V. Neville-NeilNote: If multiple options are stored in a single ancillary data
956617cf57SGeorge V. Neville-Neilobject, which is the recommended technique, the
966617cf57SGeorge V. Neville-Neil.Fn inet6_option_space
976617cf57SGeorge V. Neville-Neilfunction overestimates the amount of space required by the size of
986617cf57SGeorge V. Neville-Neil.Li N-1
996617cf57SGeorge V. Neville-Neil.Li cmsghdr
1006617cf57SGeorge V. Neville-Neilstructures, where
1016617cf57SGeorge V. Neville-Neil.Li N
1026617cf57SGeorge V. Neville-Neilis the number of options to be stored in the object.
1036617cf57SGeorge V. Neville-NeilUsually this has
1046617cf57SGeorge V. Neville-Neilno impact because it is assumed that most Hop-by-Hop and Destination
1056617cf57SGeorge V. Neville-Neiloption headers carry only one option as indicated in appendix B of RFC2460.
1066617cf57SGeorge V. Neville-Neil.\"
1076617cf57SGeorge V. Neville-Neil.Ss inet6_option_init
1086617cf57SGeorge V. Neville-NeilThe
1096617cf57SGeorge V. Neville-Neil.Fn inet6_option_init
1106617cf57SGeorge V. Neville-Neilfunction is called to initialize any ancillary data object that will contain
1116617cf57SGeorge V. Neville-Neila Hop-by-Hop or Destination option.
1126617cf57SGeorge V. Neville-NeilIt returns
1136617cf57SGeorge V. Neville-Neil.Li 0
1146617cf57SGeorge V. Neville-Neilon success and
1156617cf57SGeorge V. Neville-Neil.Li -1
1166617cf57SGeorge V. Neville-Neilwhen an error occurs.
1176617cf57SGeorge V. Neville-Neil.Pp
1186617cf57SGeorge V. Neville-NeilThe
1196617cf57SGeorge V. Neville-Neil.Fa bp
1206617cf57SGeorge V. Neville-Neilargument points to a previously allocated area of memory which must be
1216617cf57SGeorge V. Neville-Neillarge enough to contain all the arguments that the application indents
1226617cf57SGeorge V. Neville-Neilto add later via
1236617cf57SGeorge V. Neville-Neil.Fn inet6_option_append
1246617cf57SGeorge V. Neville-Neiland
1256617cf57SGeorge V. Neville-Neil.Fn inet6_option_alloc
1266617cf57SGeorge V. Neville-Neilroutines.
1276617cf57SGeorge V. Neville-Neil.Pp
1286617cf57SGeorge V. Neville-NeilThe
1296617cf57SGeorge V. Neville-Neil.Fa cmsgp
1306617cf57SGeorge V. Neville-Neilargument is a pointer to a pointer to a
1316617cf57SGeorge V. Neville-Neil.Li cmsghdr
1326617cf57SGeorge V. Neville-Neilstructure.
1336617cf57SGeorge V. Neville-NeilThe
1346617cf57SGeorge V. Neville-Neil.Fa *cmsgp
1356617cf57SGeorge V. Neville-Neilargument
1366617cf57SGeorge V. Neville-Neilpoints to a
1376617cf57SGeorge V. Neville-Neil.Li cmsghdr
1386617cf57SGeorge V. Neville-Neilstructure which is constructed by this function and stored in the
1396617cf57SGeorge V. Neville-Neilarea of memory pointed to by
1406617cf57SGeorge V. Neville-Neil.Fa bp .
1416617cf57SGeorge V. Neville-Neil.Pp
1426617cf57SGeorge V. Neville-NeilThe
1436617cf57SGeorge V. Neville-Neil.Fa type
1446617cf57SGeorge V. Neville-Neilis either
1456617cf57SGeorge V. Neville-Neil.Dv IPV6_HOPOPTS
1466617cf57SGeorge V. Neville-Neilor
1476617cf57SGeorge V. Neville-Neil.Dv IPV6_DSTOPTS
1486617cf57SGeorge V. Neville-Neiland is stored in the
1496617cf57SGeorge V. Neville-Neil.Li cmsg_type
1506617cf57SGeorge V. Neville-Neilmember of the
1516617cf57SGeorge V. Neville-Neil.Li cmsghdr
1526617cf57SGeorge V. Neville-Neilstructure mentioned above.
1536617cf57SGeorge V. Neville-Neil.\"
1546617cf57SGeorge V. Neville-Neil.Ss inet6_option_append
1556617cf57SGeorge V. Neville-NeilThis function appends a Hop-by-Hop option or a Destination option into
1566617cf57SGeorge V. Neville-Neilan ancillary data object previously initialized by a call to
1576617cf57SGeorge V. Neville-Neil.Fn inet6_option_init .
1586617cf57SGeorge V. Neville-NeilThe
1596617cf57SGeorge V. Neville-Neil.Fn inet6_option_append function returns
1606617cf57SGeorge V. Neville-Neil.Li 0
1616617cf57SGeorge V. Neville-Neilif it succeeds or
1626617cf57SGeorge V. Neville-Neil.Li -1
1636617cf57SGeorge V. Neville-Neilwhen an error occurs.
1646617cf57SGeorge V. Neville-Neil.Pp
1656617cf57SGeorge V. Neville-NeilThe
1666617cf57SGeorge V. Neville-Neil.Fa cmsg
1676617cf57SGeorge V. Neville-Neilargument is a pointer to the
1686617cf57SGeorge V. Neville-Neil.Li cmsghdr
1696617cf57SGeorge V. Neville-Neilstructure that was initialized by a call to
1706617cf57SGeorge V. Neville-Neil.Fn inet6_option_init .
1716617cf57SGeorge V. Neville-Neil.Pp
1726617cf57SGeorge V. Neville-NeilThe
1736617cf57SGeorge V. Neville-Neil.Fa typep
1746617cf57SGeorge V. Neville-Neilargument is a pointer to the 8-bit option type.
1756617cf57SGeorge V. Neville-NeilAll options are
1766617cf57SGeorge V. Neville-Neilencoded as type-length-value tuples and it is assumed that
1776617cf57SGeorge V. Neville-Neilthe
1786617cf57SGeorge V. Neville-Neil.Fa typep
1796617cf57SGeorge V. Neville-Neilfield is immediately followed by the 8-bit option data length field,
1806617cf57SGeorge V. Neville-Neilwhich is then followed by the option data.
1816617cf57SGeorge V. Neville-Neil.Pp
1826617cf57SGeorge V. Neville-NeilThe option types of
1836617cf57SGeorge V. Neville-Neil.Li 0
1846617cf57SGeorge V. Neville-Neiland
1856617cf57SGeorge V. Neville-Neil.Li 1 are reserved for the
1866617cf57SGeorge V. Neville-Neil.Li Pad1
1876617cf57SGeorge V. Neville-Neiland
1886617cf57SGeorge V. Neville-Neil.Li PadN
1896617cf57SGeorge V. Neville-Neiloptions respectively.
1906617cf57SGeorge V. Neville-NeilAll other values from
1916617cf57SGeorge V. Neville-Neil.Li 2
1926617cf57SGeorge V. Neville-Neilthrough
1936617cf57SGeorge V. Neville-Neil.Li 255
1946617cf57SGeorge V. Neville-Neilare available for applications to use.
1956617cf57SGeorge V. Neville-Neil.Pp
1966617cf57SGeorge V. Neville-NeilThe option data length, since it is stored in 8 bites, must have a
1976617cf57SGeorge V. Neville-Neilvalue between
1986617cf57SGeorge V. Neville-Neil.Li 0
1996617cf57SGeorge V. Neville-Neiland
2006617cf57SGeorge V. Neville-Neil.Li 255 ,
2016617cf57SGeorge V. Neville-Neilinclusive.
2026617cf57SGeorge V. Neville-Neil.Pp
2036617cf57SGeorge V. Neville-NeilThe
2046617cf57SGeorge V. Neville-Neil.Fa multx
2056617cf57SGeorge V. Neville-Neilargument
2066617cf57SGeorge V. Neville-Neilis the value
2076617cf57SGeorge V. Neville-Neil.Li x
2086617cf57SGeorge V. Neville-Neilin the alignment term
2096617cf57SGeorge V. Neville-Neil.Dq Li xn + y
2106617cf57SGeorge V. Neville-Neiland indicates the byte alignment necessary for the data.
2116617cf57SGeorge V. Neville-NeilAlignments may be specified as
2126617cf57SGeorge V. Neville-Neil.Li 1 ,
2136617cf57SGeorge V. Neville-Neil.Li 2 ,
2146617cf57SGeorge V. Neville-Neil.Li 4 ,
2156617cf57SGeorge V. Neville-Neilor
2166617cf57SGeorge V. Neville-Neil.Li 8
2176617cf57SGeorge V. Neville-Neilbytes, which is no alignment, 16 bit, 32 bit and 64 bit alignments
2186617cf57SGeorge V. Neville-Neilrespectively.
2196617cf57SGeorge V. Neville-Neil.Pp
2206617cf57SGeorge V. Neville-NeilThe
2216617cf57SGeorge V. Neville-Neil.Fa plusy
2226617cf57SGeorge V. Neville-Neilargument
2236617cf57SGeorge V. Neville-Neilis the value
2246617cf57SGeorge V. Neville-Neil.Li y
2256617cf57SGeorge V. Neville-Neilin the alignment term
2266617cf57SGeorge V. Neville-Neil.Dq Li xn + y
2276617cf57SGeorge V. Neville-Neiland must have a value between
2286617cf57SGeorge V. Neville-Neil.Li 0
2296617cf57SGeorge V. Neville-Neiland
2306617cf57SGeorge V. Neville-Neil.Li 7 ,
2316617cf57SGeorge V. Neville-Neilinclusive, indicating the amount of padding that is necessary for an
2326617cf57SGeorge V. Neville-Neiloption.
2336617cf57SGeorge V. Neville-Neil.\"
2346617cf57SGeorge V. Neville-Neil.Ss inet6_option_alloc
2356617cf57SGeorge V. Neville-NeilThe
2366617cf57SGeorge V. Neville-Neil.Fn inet6_option_alloc
2376617cf57SGeorge V. Neville-Neilfunction appends a Hop-by-Hop option or a Destination option into an
2386617cf57SGeorge V. Neville-Neilancillary data object that has previously been initialized by a call to
2396617cf57SGeorge V. Neville-Neil.Fn inet6_option_init .
2406617cf57SGeorge V. Neville-NeilThe
2416617cf57SGeorge V. Neville-Neil.Fn inet6_option_alloc
2426617cf57SGeorge V. Neville-Neilfunction returns a pointer to the 8-bit option type field that at the
2436617cf57SGeorge V. Neville-Neilbeginning of the allocated the option on success, or
2446617cf57SGeorge V. Neville-Neil.Dv NULL
2456617cf57SGeorge V. Neville-Neilon an error.
2466617cf57SGeorge V. Neville-Neil.Pp
2476617cf57SGeorge V. Neville-NeilThe difference between the
2486617cf57SGeorge V. Neville-Neil.Fn inet6_option_alloc
2496617cf57SGeorge V. Neville-Neiland
2506617cf57SGeorge V. Neville-Neil.Fn inet6_option_append
2516617cf57SGeorge V. Neville-Neilfunctions is that the latter copies the contents of a previously built
2526617cf57SGeorge V. Neville-Neiloption into the ancillary data object while the former returns a
2536617cf57SGeorge V. Neville-Neilpointer to the place in the data object where the option's TLV must
2546617cf57SGeorge V. Neville-Neilthen be built by the application.
2556617cf57SGeorge V. Neville-Neil.Pp
2566617cf57SGeorge V. Neville-NeilThe
2576617cf57SGeorge V. Neville-Neil.Fa cmsg
2586617cf57SGeorge V. Neville-Neilargument is a pointer to a
2596617cf57SGeorge V. Neville-Neil.Li cmsghdr
2606617cf57SGeorge V. Neville-Neilstructure that was initialized by
2616617cf57SGeorge V. Neville-Neil.Fn inet6_option_init .
2626617cf57SGeorge V. Neville-Neil.Pp
2636617cf57SGeorge V. Neville-NeilThe
2646617cf57SGeorge V. Neville-Neil.Fa datalen
2656617cf57SGeorge V. Neville-Neilargument is the value of the option data length byte for this option.
2666617cf57SGeorge V. Neville-NeilThis value is required as an argument to allow the function to
2676617cf57SGeorge V. Neville-Neildetermine if padding must be appended at the end of the option.
2686617cf57SGeorge V. Neville-Neil(The
2696617cf57SGeorge V. Neville-Neil.Fn inet6_option_append
2706617cf57SGeorge V. Neville-Neilfunction does not need a data length argument
2716617cf57SGeorge V. Neville-Neilsince the option data length must already be stored by the caller)
2726617cf57SGeorge V. Neville-Neil.Pp
2736617cf57SGeorge V. Neville-NeilThe
2746617cf57SGeorge V. Neville-Neil.Fa multx
2756617cf57SGeorge V. Neville-Neiland
2766617cf57SGeorge V. Neville-Neil.Fa plusy
2776617cf57SGeorge V. Neville-Neilarguments
2786617cf57SGeorge V. Neville-Neilare identical to the arguments of the same name described in the
2796617cf57SGeorge V. Neville-Neil.Fn inet6_option_init
2806617cf57SGeorge V. Neville-Neilfunction above.
2816617cf57SGeorge V. Neville-Neil.\"
2826617cf57SGeorge V. Neville-Neil.Ss inet6_option_next
2836617cf57SGeorge V. Neville-NeilThe
2846617cf57SGeorge V. Neville-Neil.Fn inet6_option_next
2856617cf57SGeorge V. Neville-Neilfunction is used to process Hop-by-Hop and Destination options that
2866617cf57SGeorge V. Neville-Neilare present in an ancillary data object.
2876617cf57SGeorge V. Neville-NeilWhen an option remains to
2886617cf57SGeorge V. Neville-Neilbe processed, the return value of the
2896617cf57SGeorge V. Neville-Neil.Fn inet6_option_next
2906617cf57SGeorge V. Neville-Neilfunction is
2916617cf57SGeorge V. Neville-Neil.Li 0
2926617cf57SGeorge V. Neville-Neiland the
2936617cf57SGeorge V. Neville-Neil.Fa *tptrp
2946617cf57SGeorge V. Neville-Neilargument points to the 8-bit option type field, which is followed by
2956617cf57SGeorge V. Neville-Neilthe 8-bit option data length, and then the option data.
2966617cf57SGeorge V. Neville-NeilWhen no more
2976617cf57SGeorge V. Neville-Neiloptions remain to be processed, the return value is
2986617cf57SGeorge V. Neville-Neil.Li -1
2996617cf57SGeorge V. Neville-Neiland
3006617cf57SGeorge V. Neville-Neil.Fa *tptrp
3016617cf57SGeorge V. Neville-Neilis
3026617cf57SGeorge V. Neville-Neil.Dv NULL
3036617cf57SGeorge V. Neville-Neiland when an error occurs, the return value is
3046617cf57SGeorge V. Neville-Neil.Li -1
3056617cf57SGeorge V. Neville-Neilbut the
3066617cf57SGeorge V. Neville-Neil.Fa *tptrp
3076617cf57SGeorge V. Neville-Neilargument is not
3086617cf57SGeorge V. Neville-Neil.Dv NULL .
3096617cf57SGeorge V. Neville-NeilThis set of return values allows a program to easily loop through all
3106617cf57SGeorge V. Neville-Neilthe options in an ancillary data object, checking for the error and
3116617cf57SGeorge V. Neville-Neilend of stream conditions along the way.
3126617cf57SGeorge V. Neville-Neil.Pp
3136617cf57SGeorge V. Neville-NeilWhen a valid option is returned the
3146617cf57SGeorge V. Neville-Neil.Fa cmsg
3156617cf57SGeorge V. Neville-Neilargument points to a
3166617cf57SGeorge V. Neville-Neil.Li cmsghdr
3176617cf57SGeorge V. Neville-Neilwhere the
3186617cf57SGeorge V. Neville-Neil.Li cmsg_level
3196617cf57SGeorge V. Neville-Neilequals
3206617cf57SGeorge V. Neville-Neil.Dv IPPROTO_IPV6
3216617cf57SGeorge V. Neville-Neiland
3226617cf57SGeorge V. Neville-Neil.Li cmsg_type
3236617cf57SGeorge V. Neville-Neilis either
3246617cf57SGeorge V. Neville-Neil.Dv IPV6_HOPOPTS
3256617cf57SGeorge V. Neville-Neilor
3266617cf57SGeorge V. Neville-Neil.Dv IPV6_DSTOPTS .
3276617cf57SGeorge V. Neville-Neil.Pp
3286617cf57SGeorge V. Neville-NeilThe
3296617cf57SGeorge V. Neville-Neil.Fa tptrp
3306617cf57SGeorge V. Neville-Neilargument is a pointer to a pointer to an 8-bit byte and
3316617cf57SGeorge V. Neville-Neil.Fa *tptrp
3326617cf57SGeorge V. Neville-Neilis used by the function to remember its place in the ancillary data
3336617cf57SGeorge V. Neville-Neilobject each time the function is called.
3346617cf57SGeorge V. Neville-NeilWhen the
3356617cf57SGeorge V. Neville-Neil.Fn inet6_option_next
3366617cf57SGeorge V. Neville-Neilfunction is called for the first time on a given ancillary data object,
3376617cf57SGeorge V. Neville-Neil.Fa *tptrp
3386617cf57SGeorge V. Neville-Neilmust be set to
3396617cf57SGeorge V. Neville-Neil.Dv NULL .
3406617cf57SGeorge V. Neville-Neil.Pp
3416617cf57SGeorge V. Neville-NeilEach time the function returns success,
3426617cf57SGeorge V. Neville-Neilthe
3436617cf57SGeorge V. Neville-Neil.Fa *tptrp
3446617cf57SGeorge V. Neville-Neilargument points to the 8-bit option type field for the next option to
3456617cf57SGeorge V. Neville-Neilbe processed.
3466617cf57SGeorge V. Neville-Neil.\"
3476617cf57SGeorge V. Neville-Neil.Ss inet6_option_find
3486617cf57SGeorge V. Neville-NeilThe
3496617cf57SGeorge V. Neville-Neil.Fn inet6_option_find
3506617cf57SGeorge V. Neville-Neilfunction allows an application to search for a particular option type
3516617cf57SGeorge V. Neville-Neilin an ancillary data object.
3526617cf57SGeorge V. Neville-NeilThe
3536617cf57SGeorge V. Neville-Neil.Fa cmsg
3546617cf57SGeorge V. Neville-Neilargument is a pointer to
3556617cf57SGeorge V. Neville-Neil.Li cmsghdr
3566617cf57SGeorge V. Neville-Neilstructure in which the
3576617cf57SGeorge V. Neville-Neil.Li cmsg_level
3586617cf57SGeorge V. Neville-Neilelement equals
3596617cf57SGeorge V. Neville-Neil.Dv IPPROTO_IPV6
3606617cf57SGeorge V. Neville-Neiland the
3616617cf57SGeorge V. Neville-Neil.Li cmsg_type
3626617cf57SGeorge V. Neville-Neilelement is either
3636617cf57SGeorge V. Neville-Neil.Dv IPV6_HOPOPTS
3646617cf57SGeorge V. Neville-Neilor
3656617cf57SGeorge V. Neville-Neil.Dv IPV6_DSTOPTS .
3666617cf57SGeorge V. Neville-Neil.Pp
3676617cf57SGeorge V. Neville-NeilThe
3686617cf57SGeorge V. Neville-Neil.Fa tptrp
3696617cf57SGeorge V. Neville-Neilargument is handled exactly as in the
3706617cf57SGeorge V. Neville-Neil.Fn inet6_option_next
3716617cf57SGeorge V. Neville-Neilfunction described above.
3726617cf57SGeorge V. Neville-Neil.Pa
3736617cf57SGeorge V. Neville-NeilThe
3746617cf57SGeorge V. Neville-Neil.fn inet6_option_find
3756617cf57SGeorge V. Neville-Neilfunction starts searching for an option of the specified type
3766617cf57SGeorge V. Neville-Neilbeginning after the value of
3776617cf57SGeorge V. Neville-Neil.Fa *tptrp .
3786617cf57SGeorge V. Neville-Neil.\"
3796617cf57SGeorge V. Neville-Neil.Sh DIAGNOSTICS
3806617cf57SGeorge V. Neville-NeilThe
3816617cf57SGeorge V. Neville-Neil.Fn inet6_option_init
3826617cf57SGeorge V. Neville-Neiland
3836617cf57SGeorge V. Neville-Neil.Fn inet6_option_append
3846617cf57SGeorge V. Neville-Neilfunctions return
3856617cf57SGeorge V. Neville-Neil.Li 0
3866617cf57SGeorge V. Neville-Neilon success or
3876617cf57SGeorge V. Neville-Neil.Li -1
3886617cf57SGeorge V. Neville-Neilon an error.
3896617cf57SGeorge V. Neville-Neil.Pp
3906617cf57SGeorge V. Neville-NeilThe
3916617cf57SGeorge V. Neville-Neil.Fn inet6_option_alloc
3926617cf57SGeorge V. Neville-Neilfunction returns
3936617cf57SGeorge V. Neville-Neil.Dv NULL
3946617cf57SGeorge V. Neville-Neilon an error.
3956617cf57SGeorge V. Neville-Neil.Pp
3966617cf57SGeorge V. Neville-NeilWhen
3976617cf57SGeorge V. Neville-Neil.Fn inet6_option_next
3986617cf57SGeorge V. Neville-Neilor
3996617cf57SGeorge V. Neville-Neil.Fn inet6_option_find
4006617cf57SGeorge V. Neville-Neildetect an error they return
4016617cf57SGeorge V. Neville-Neil.Li -1
4026617cf57SGeorge V. Neville-Neilsetting
4036617cf57SGeorge V. Neville-Neil.Fa *tptrp
4046617cf57SGeorge V. Neville-Neilto non
4056617cf57SGeorge V. Neville-Neil.Dv NULL
4066617cf57SGeorge V. Neville-Neilvalue.
4076617cf57SGeorge V. Neville-Neil.\"
4086617cf57SGeorge V. Neville-Neil.Sh EXAMPLES
4096617cf57SGeorge V. Neville-NeilRFC2292 gives comprehensive examples in chapter 6.
4106617cf57SGeorge V. Neville-Neil.\"
4116617cf57SGeorge V. Neville-Neil.Sh SEE ALSO
4126617cf57SGeorge V. Neville-Neil.Rs
4136617cf57SGeorge V. Neville-Neil.%A W. Stevens
4146617cf57SGeorge V. Neville-Neil.%A M. Thomas
4156617cf57SGeorge V. Neville-Neil.%T "Advanced Sockets API for IPv6"
4166617cf57SGeorge V. Neville-Neil.%N RFC2292
4176617cf57SGeorge V. Neville-Neil.%D February 1998
4186617cf57SGeorge V. Neville-Neil.Re
4196617cf57SGeorge V. Neville-Neil.Rs
4206617cf57SGeorge V. Neville-Neil.%A S. Deering
4216617cf57SGeorge V. Neville-Neil.%A R. Hinden
4226617cf57SGeorge V. Neville-Neil.%T "Internet Protocol, Version 6 (IPv6) Specification"
4236617cf57SGeorge V. Neville-Neil.%N RFC2460
4246617cf57SGeorge V. Neville-Neil.%D December 1998
4256617cf57SGeorge V. Neville-Neil.Re
4266617cf57SGeorge V. Neville-Neil.\"
4276617cf57SGeorge V. Neville-Neil.Sh HISTORY
4286617cf57SGeorge V. Neville-NeilThe implementation first appeared in KAME advanced networking kit.
4296617cf57SGeorge V. Neville-Neil.\"
4306617cf57SGeorge V. Neville-Neil.Sh STANDARDS
4316617cf57SGeorge V. Neville-NeilThe functions are documented in
4326617cf57SGeorge V. Neville-Neil.Dq Advanced Sockets API for IPv6
4336617cf57SGeorge V. Neville-Neil(RFC2292).
4346617cf57SGeorge V. Neville-Neil.\"
435