xref: /freebsd/lib/libc/net/inet6_opt_init.3 (revision fa9896e0)
16617cf57SGeorge V. Neville-Neil.\"	$KAME: inet6_opt_init.3,v 1.7 2004/12/27 05:08:23 itojun Exp $
26617cf57SGeorge V. Neville-Neil.\"
36617cf57SGeorge V. Neville-Neil.\" Copyright (C) 2004 WIDE Project.
46617cf57SGeorge V. Neville-Neil.\" All rights reserved.
56617cf57SGeorge V. Neville-Neil.\"
66617cf57SGeorge V. Neville-Neil.\" Redistribution and use in source and binary forms, with or without
76617cf57SGeorge V. Neville-Neil.\" modification, are permitted provided that the following conditions
86617cf57SGeorge V. Neville-Neil.\" are met:
96617cf57SGeorge V. Neville-Neil.\" 1. Redistributions of source code must retain the above copyright
106617cf57SGeorge V. Neville-Neil.\"    notice, this list of conditions and the following disclaimer.
116617cf57SGeorge V. Neville-Neil.\" 2. Redistributions in binary form must reproduce the above copyright
126617cf57SGeorge V. Neville-Neil.\"    notice, this list of conditions and the following disclaimer in the
136617cf57SGeorge V. Neville-Neil.\"    documentation and/or other materials provided with the distribution.
146617cf57SGeorge V. Neville-Neil.\" 3. Neither the name of the project nor the names of its contributors
156617cf57SGeorge V. Neville-Neil.\"    may be used to endorse or promote products derived from this software
166617cf57SGeorge V. Neville-Neil.\"    without specific prior written permission.
176617cf57SGeorge V. Neville-Neil.\"
186617cf57SGeorge V. Neville-Neil.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
196617cf57SGeorge V. Neville-Neil.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
206617cf57SGeorge V. Neville-Neil.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
216617cf57SGeorge V. Neville-Neil.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
226617cf57SGeorge V. Neville-Neil.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
236617cf57SGeorge V. Neville-Neil.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
246617cf57SGeorge V. Neville-Neil.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
256617cf57SGeorge V. Neville-Neil.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
266617cf57SGeorge V. Neville-Neil.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
276617cf57SGeorge V. Neville-Neil.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
286617cf57SGeorge V. Neville-Neil.\" SUCH DAMAGE.
296617cf57SGeorge V. Neville-Neil.\"
30211ceb62SGordon Bergling.Dd February 25, 2023
316617cf57SGeorge V. Neville-Neil.Dt INET6_OPT_INIT 3
326617cf57SGeorge V. Neville-Neil.Os
336617cf57SGeorge V. Neville-Neil.\"
346617cf57SGeorge V. Neville-Neil.Sh NAME
356617cf57SGeorge V. Neville-Neil.Nm inet6_opt_init ,
366617cf57SGeorge V. Neville-Neil.Nm inet6_opt_append ,
376617cf57SGeorge V. Neville-Neil.Nm inet6_opt_finish ,
386617cf57SGeorge V. Neville-Neil.Nm inet6_opt_set_val ,
396617cf57SGeorge V. Neville-Neil.Nm inet6_opt_next ,
406617cf57SGeorge V. Neville-Neil.Nm inet6_opt_find ,
416617cf57SGeorge V. Neville-Neil.Nm inet6_opt_get_val
426617cf57SGeorge V. Neville-Neil.Nd IPv6 Hop-by-Hop and Destination Options manipulation
436617cf57SGeorge V. Neville-Neil.\"
44211ceb62SGordon Bergling.Sh LIBRARY
45211ceb62SGordon Bergling.Lb libc
466617cf57SGeorge V. Neville-Neil.Sh SYNOPSIS
476617cf57SGeorge V. Neville-Neil.In netinet/in.h
486617cf57SGeorge V. Neville-Neil.Ft "int"
496617cf57SGeorge V. Neville-Neil.Fn inet6_opt_init "void *extbuf" "socklen_t extlen"
506617cf57SGeorge V. Neville-Neil.Ft "int"
51211ceb62SGordon Bergling.Fn inet6_opt_append "void *extbuf" "socklen_t extlen" "int offset" "uint8_t type" "socklen_t len" "uint8_t align" "void **databufp"
526617cf57SGeorge V. Neville-Neil.Ft "int"
536617cf57SGeorge V. Neville-Neil.Fn inet6_opt_finish "void *extbuf" "socklen_t extlen" "int offset"
546617cf57SGeorge V. Neville-Neil.Ft "int"
556617cf57SGeorge V. Neville-Neil.Fn inet6_opt_set_val "void *databuf" "int offset" "void *val" "socklen_t vallen"
566617cf57SGeorge V. Neville-Neil.Ft "int"
57211ceb62SGordon Bergling.Fn inet6_opt_next "void *extbuf" "socklen_t extlen" "int offset" "uint8_t *typep" "socklen_t *lenp" "void **databufp"
586617cf57SGeorge V. Neville-Neil.Ft "int"
59211ceb62SGordon Bergling.Fn inet6_opt_find "void *extbuf" "socklen_t extlen" "int offset" "uint8_t type" "socklen_t *lenp" "void **databufp"
606617cf57SGeorge V. Neville-Neil.Ft "int"
6149e5b98fSRuslan Ermilov.Fn inet6_opt_get_val "void *databuf" "int offset" "void *val" "socklen_t vallen"
626617cf57SGeorge V. Neville-Neil.\"
636617cf57SGeorge V. Neville-Neil.Sh DESCRIPTION
646617cf57SGeorge V. Neville-NeilBuilding and parsing the Hop-by-Hop and Destination options is
656617cf57SGeorge V. Neville-Neilcomplicated.
666617cf57SGeorge V. Neville-NeilThe advanced sockets API defines a set of functions to
67f0002294SRuslan Ermilovhelp applications create and manipulate Hop-by-Hop and Destination
686617cf57SGeorge V. Neville-Neiloptions.
69f5796253SGeorge V. Neville-NeilThis man page describes the functions specified in
70f5796253SGeorge V. Neville-NeilIETF Draft RFC 3542.
716617cf57SGeorge V. Neville-NeilThese functions use the
726617cf57SGeorge V. Neville-Neilformatting rules specified in Appendix B in RFC 2460, i.e., that the
736617cf57SGeorge V. Neville-Neillargest field is placed last in the option.
746617cf57SGeorge V. Neville-NeilThe function prototypes
756617cf57SGeorge V. Neville-Neilfor these functions are all contained in the
766617cf57SGeorge V. Neville-Neil.In netinet/in.h
776617cf57SGeorge V. Neville-Neilheader file.
786617cf57SGeorge V. Neville-Neil.\"
796617cf57SGeorge V. Neville-Neil.Ss inet6_opt_init
806617cf57SGeorge V. Neville-NeilThe
816617cf57SGeorge V. Neville-Neil.Fn inet6_opt_init
826617cf57SGeorge V. Neville-Neilfunction
836617cf57SGeorge V. Neville-Neilreturns the number of bytes needed for an empty
846617cf57SGeorge V. Neville-Neilextension header, one without any options.
856617cf57SGeorge V. Neville-NeilIf the
86f0002294SRuslan Ermilov.Fa extbuf
876617cf57SGeorge V. Neville-Neilargument points to a valid section of memory
886617cf57SGeorge V. Neville-Neilthen the
896617cf57SGeorge V. Neville-Neil.Fn inet6_opt_init
906617cf57SGeorge V. Neville-Neilfunction also initializes the extension header's length field.
916617cf57SGeorge V. Neville-NeilWhen attempting to initialize an extension buffer passed in the
92f0002294SRuslan Ermilov.Fa extbuf
93f0002294SRuslan Ermilovargument,
946617cf57SGeorge V. Neville-Neil.Fa extlen
956617cf57SGeorge V. Neville-Neilmust be a positive multiple of 8 or else the function fails and
966617cf57SGeorge V. Neville-Neilreturns \-1 to the caller.
976617cf57SGeorge V. Neville-Neil.\"
986617cf57SGeorge V. Neville-Neil.Ss inet6_opt_append
996617cf57SGeorge V. Neville-NeilThe
1006617cf57SGeorge V. Neville-Neil.Fn inet6_opt_append
101f0002294SRuslan Ermilovfunction can perform two different jobs.
1026617cf57SGeorge V. Neville-NeilWhen a valid
1036617cf57SGeorge V. Neville-Neil.Fa extbuf
1046617cf57SGeorge V. Neville-Neilargument is supplied it appends an option to the extension buffer and
1056617cf57SGeorge V. Neville-Neilreturns the updated total length as well as a pointer to the newly
1066617cf57SGeorge V. Neville-Neilcreated option in
1076617cf57SGeorge V. Neville-Neil.Fa databufp .
1086617cf57SGeorge V. Neville-NeilIf the value
1096617cf57SGeorge V. Neville-Neilof
1106617cf57SGeorge V. Neville-Neil.Fa extbuf
1116617cf57SGeorge V. Neville-Neilis
1126617cf57SGeorge V. Neville-Neil.Dv NULL
1136617cf57SGeorge V. Neville-Neilthen the
114f0002294SRuslan Ermilov.Fn inet6_opt_append
115f0002294SRuslan Ermilovfunction only reports what the total length would
1166617cf57SGeorge V. Neville-Neilbe if the option were actually appended.
1176617cf57SGeorge V. Neville-NeilThe
1186617cf57SGeorge V. Neville-Neil.Fa len
1196617cf57SGeorge V. Neville-Neiland
1206617cf57SGeorge V. Neville-Neil.Fa align
1216617cf57SGeorge V. Neville-Neilarguments specify the length of the option and the required data
1226617cf57SGeorge V. Neville-Neilalignment which must be used when appending the option.
1236617cf57SGeorge V. Neville-NeilThe
1246617cf57SGeorge V. Neville-Neil.Fa offset
1256617cf57SGeorge V. Neville-Neilargument should be the length returned by the
1266617cf57SGeorge V. Neville-Neil.Fn inet6_opt_init
1276617cf57SGeorge V. Neville-Neilfunction or a previous call to
1286617cf57SGeorge V. Neville-Neil.Fn inet6_opt_append .
1296617cf57SGeorge V. Neville-Neil.Pp
1306617cf57SGeorge V. Neville-NeilThe
1316617cf57SGeorge V. Neville-Neil.Fa type
1326617cf57SGeorge V. Neville-Neilargument is the 8-bit option type.
1336617cf57SGeorge V. Neville-Neil.Pp
1346617cf57SGeorge V. Neville-NeilAfter
1356617cf57SGeorge V. Neville-Neil.Fn inet6_opt_append
1366617cf57SGeorge V. Neville-Neilhas been called, the application can use the buffer pointed to by
1376617cf57SGeorge V. Neville-Neil.Fa databufp
1386617cf57SGeorge V. Neville-Neildirectly, or use
1396617cf57SGeorge V. Neville-Neil.Fn inet6_opt_set_val
1406617cf57SGeorge V. Neville-Neilto specify the data to be contained in the option.
1416617cf57SGeorge V. Neville-Neil.Pp
1426617cf57SGeorge V. Neville-NeilOption types of
1436617cf57SGeorge V. Neville-Neil.Li 0
1446617cf57SGeorge V. Neville-Neiland
1456617cf57SGeorge V. Neville-Neil.Li 1
1466617cf57SGeorge V. Neville-Neilare reserved for the
1476617cf57SGeorge V. Neville-Neil.Li Pad1
1486617cf57SGeorge V. Neville-Neiland
1496617cf57SGeorge V. Neville-Neil.Li PadN
1506617cf57SGeorge V. Neville-Neiloptions.
1516617cf57SGeorge V. Neville-NeilAll other values from 2 through 255 may be used by applications.
1526617cf57SGeorge V. Neville-Neil.Pp
1536617cf57SGeorge V. Neville-NeilThe length of the option data is contained in an 8-bit value and so
1546617cf57SGeorge V. Neville-Neilmay contain any value from 0 through 255.
1556617cf57SGeorge V. Neville-Neil.Pp
1566617cf57SGeorge V. Neville-NeilThe
1576617cf57SGeorge V. Neville-Neil.Fa align
1586617cf57SGeorge V. Neville-Neilparameter must have a value of 1, 2, 4, or 8 and cannot exceed the
1596617cf57SGeorge V. Neville-Neilvalue of
1606617cf57SGeorge V. Neville-Neil.Fa len .
1616617cf57SGeorge V. Neville-NeilThe alignment values represent no alignment, 16 bit, 32 bit and 64 bit
162f0002294SRuslan Ermilovalignments, respectively.
1636617cf57SGeorge V. Neville-Neil.\"
1646617cf57SGeorge V. Neville-Neil.Ss inet6_opt_finish
1656617cf57SGeorge V. Neville-NeilThe
1666617cf57SGeorge V. Neville-Neil.Fn inet6_opt_finish
167f0002294SRuslan Ermilovfunction
1686617cf57SGeorge V. Neville-Neilcalculates the final padding necessary to make the extension header a
1696617cf57SGeorge V. Neville-Neilmultiple of 8 bytes, as required by the IPv6 extension header
1706617cf57SGeorge V. Neville-Neilspecification, and returns the extension header's updated total
1716617cf57SGeorge V. Neville-Neillength.
1726617cf57SGeorge V. Neville-NeilThe
1736617cf57SGeorge V. Neville-Neil.Fa offset
1746617cf57SGeorge V. Neville-Neilargument should be the length returned by
1756617cf57SGeorge V. Neville-Neil.Fn inet6_opt_init
1766617cf57SGeorge V. Neville-Neilor
1776617cf57SGeorge V. Neville-Neil.Fn inet6_opt_append .
1786617cf57SGeorge V. Neville-NeilWhen
1796617cf57SGeorge V. Neville-Neil.Fa extbuf
1806617cf57SGeorge V. Neville-Neilis not
1816617cf57SGeorge V. Neville-Neil.Dv NULL
1826617cf57SGeorge V. Neville-Neilthe function also sets up the appropriate padding bytes by inserting a
1836617cf57SGeorge V. Neville-NeilPad1 or PadN option of the proper length.
1846617cf57SGeorge V. Neville-Neil.Pp
1856617cf57SGeorge V. Neville-NeilIf the extension header is too small to contain the proper padding
1866617cf57SGeorge V. Neville-Neilthen an error of \-1 is returned to the caller.
1876617cf57SGeorge V. Neville-Neil.\"
1886617cf57SGeorge V. Neville-Neil.Ss inet6_opt_set_val
1896617cf57SGeorge V. Neville-NeilThe
1906617cf57SGeorge V. Neville-Neil.Fn inet6_opt_set_val
1916617cf57SGeorge V. Neville-Neilfunction inserts data items of various sizes into the data portion of
1926617cf57SGeorge V. Neville-Neilthe option.
1936617cf57SGeorge V. Neville-NeilThe
1946617cf57SGeorge V. Neville-Neil.Fa databuf
1956617cf57SGeorge V. Neville-Neilargument is a pointer to memory that was returned by the
1966617cf57SGeorge V. Neville-Neil.Fn inet6_opt_append
1976617cf57SGeorge V. Neville-Neilcall and the
198f0002294SRuslan Ermilov.Fa offset
199f0002294SRuslan Ermilovargument specifies where the option should be placed in the
2006617cf57SGeorge V. Neville-Neildata buffer.
2016617cf57SGeorge V. Neville-NeilThe
2026617cf57SGeorge V. Neville-Neil.Fa val
2036617cf57SGeorge V. Neville-Neilargument points to an area of memory containing the data to be
2046617cf57SGeorge V. Neville-Neilinserted into the extension header, and the
2056617cf57SGeorge V. Neville-Neil.Fa vallen
2066617cf57SGeorge V. Neville-Neilargument indicates how much data to copy.
2076617cf57SGeorge V. Neville-Neil.Pp
2086617cf57SGeorge V. Neville-NeilThe caller should ensure that each field is aligned on its natural
2096617cf57SGeorge V. Neville-Neilboundaries as described in Appendix B of RFC 2460.
2106617cf57SGeorge V. Neville-Neil.Pp
2116617cf57SGeorge V. Neville-NeilThe function returns the offset for the next field which is calculated as
2126617cf57SGeorge V. Neville-Neil.Fa offset
2136617cf57SGeorge V. Neville-Neil+
2146617cf57SGeorge V. Neville-Neil.Fa vallen
2156617cf57SGeorge V. Neville-Neiland is used when composing options with multiple fields.
2166617cf57SGeorge V. Neville-Neil.\"
2176617cf57SGeorge V. Neville-Neil.Ss inet6_opt_next
2186617cf57SGeorge V. Neville-NeilThe
2196617cf57SGeorge V. Neville-Neil.Fn inet6_opt_next
2206617cf57SGeorge V. Neville-Neilfunction parses received extension headers.
2216617cf57SGeorge V. Neville-NeilThe
2226617cf57SGeorge V. Neville-Neil.Fa extbuf
2236617cf57SGeorge V. Neville-Neiland
2246617cf57SGeorge V. Neville-Neil.Fa extlen
2256617cf57SGeorge V. Neville-Neilarguments specify the location and length of the extension header
2266617cf57SGeorge V. Neville-Neilbeing parsed.
2276617cf57SGeorge V. Neville-NeilThe
2286617cf57SGeorge V. Neville-Neil.Fa offset
2296617cf57SGeorge V. Neville-Neilargument should either be zero, for the first option, or the length value
2306617cf57SGeorge V. Neville-Neilreturned by a previous call to
2316617cf57SGeorge V. Neville-Neil.Fn inet6_opt_next
2326617cf57SGeorge V. Neville-Neilor
2336617cf57SGeorge V. Neville-Neil.Fn inet6_opt_find .
2346617cf57SGeorge V. Neville-NeilThe return value specifies the position where to continue scanning the
2356617cf57SGeorge V. Neville-Neilextension buffer.
2366617cf57SGeorge V. Neville-NeilThe option is returned in the arguments
2376617cf57SGeorge V. Neville-Neil.Fa typep , lenp ,
2386617cf57SGeorge V. Neville-Neiland
239f0002294SRuslan Ermilov.Fa databufp ,
240f0002294SRuslan Ermilovwhich
2416617cf57SGeorge V. Neville-Neilpoint to the 8-bit option type, the 8-bit option length and the option
242f0002294SRuslan Ermilovdata, respectively.
2436617cf57SGeorge V. Neville-NeilThis function does not return any PAD1 or PADN options.
244f0002294SRuslan ErmilovWhen an error occurs or there are no more options, the return
2456617cf57SGeorge V. Neville-Neilvalue is \-1.
2466617cf57SGeorge V. Neville-Neil.\"
2476617cf57SGeorge V. Neville-Neil.Ss inet6_opt_find
2486617cf57SGeorge V. Neville-NeilThe
2496617cf57SGeorge V. Neville-Neil.Fn inet6_opt_find
2506617cf57SGeorge V. Neville-Neilfunction searches the extension buffer for a particular option type,
2516617cf57SGeorge V. Neville-Neilpassed in through the
2526617cf57SGeorge V. Neville-Neil.Fa type
2536617cf57SGeorge V. Neville-Neilargument.
2546617cf57SGeorge V. Neville-NeilIf the option is found then the
2556617cf57SGeorge V. Neville-Neil.Fa lenp
2566617cf57SGeorge V. Neville-Neiland
2576617cf57SGeorge V. Neville-Neil.Fa databufp
258f0002294SRuslan Ermilovarguments are updated to point to the option's length and data,
2596617cf57SGeorge V. Neville-Neilrespectively.
260f0002294SRuslan ErmilovThe
2616617cf57SGeorge V. Neville-Neil.Fa extbuf
2626617cf57SGeorge V. Neville-Neiland
2636617cf57SGeorge V. Neville-Neil.Fa extlen
264f0002294SRuslan Ermilovarguments
2656617cf57SGeorge V. Neville-Neilmust point to a valid extension buffer and give its length.
2666617cf57SGeorge V. Neville-NeilThe
2676617cf57SGeorge V. Neville-Neil.Fa offset
2686617cf57SGeorge V. Neville-Neilargument can be used to search from a location anywhere in the
2696617cf57SGeorge V. Neville-Neilextension header.
2706617cf57SGeorge V. Neville-Neil.Ss inet6_opt_get_val
2716617cf57SGeorge V. Neville-NeilThe
2726617cf57SGeorge V. Neville-Neil.Fn inet6_opt_get_val
2736617cf57SGeorge V. Neville-Neilfunction extracts data items of various sizes in the data portion of
2746617cf57SGeorge V. Neville-Neilthe option.
2756617cf57SGeorge V. Neville-NeilThe
2766617cf57SGeorge V. Neville-Neil.Fa databuf
2776617cf57SGeorge V. Neville-Neilis a pointer returned by the
2786617cf57SGeorge V. Neville-Neil.Fn inet6_opt_next
2796617cf57SGeorge V. Neville-Neilor
2806617cf57SGeorge V. Neville-Neil.Fn inet6_opt_find
2816617cf57SGeorge V. Neville-Neilfunctions.
2826617cf57SGeorge V. Neville-NeilThe
2836617cf57SGeorge V. Neville-Neil.Fa val
284211ceb62SGordon Berglingargument points to where the data will be extracted.
2856617cf57SGeorge V. Neville-NeilThe
2866617cf57SGeorge V. Neville-Neil.Fa offset
2876617cf57SGeorge V. Neville-Neilargument specifies from where in the data portion of the option the
2886617cf57SGeorge V. Neville-Neilvalue should be extracted; the first byte of option data is specified
2896617cf57SGeorge V. Neville-Neilby an offset of zero.
2906617cf57SGeorge V. Neville-Neil.Pp
2916617cf57SGeorge V. Neville-NeilIt is expected that each field is aligned on its natural boundaries as
2926617cf57SGeorge V. Neville-Neildescribed in Appendix B of RFC 2460.
2936617cf57SGeorge V. Neville-Neil.Pp
2946617cf57SGeorge V. Neville-NeilThe function returns the offset for the next field
2956617cf57SGeorge V. Neville-Neilby calculating
2966617cf57SGeorge V. Neville-Neil.Fa offset
2976617cf57SGeorge V. Neville-Neil+
2986617cf57SGeorge V. Neville-Neil.Fa vallen
2996617cf57SGeorge V. Neville-Neilwhich can be used when extracting option content with multiple fields.
3006617cf57SGeorge V. Neville-NeilRobust receivers must verify alignment before calling this function.
3016617cf57SGeorge V. Neville-Neil.\"
302f0002294SRuslan Ermilov.Sh RETURN VALUES
3036617cf57SGeorge V. Neville-NeilAll the functions return
3046617cf57SGeorge V. Neville-Neil\-1
3056617cf57SGeorge V. Neville-Neilon an error.
3066617cf57SGeorge V. Neville-Neil.\"
3076617cf57SGeorge V. Neville-Neil.Sh EXAMPLES
30844752e92STom JonesRFC 3542 gives comprehensive examples in Section 22.
3096617cf57SGeorge V. Neville-Neil.Pp
3106617cf57SGeorge V. Neville-NeilKAME also provides examples in the
3116617cf57SGeorge V. Neville-Neil.Pa advapitest
3126617cf57SGeorge V. Neville-Neildirectory of its kit.
3136617cf57SGeorge V. Neville-Neil.\"
3146617cf57SGeorge V. Neville-Neil.Sh SEE ALSO
3156617cf57SGeorge V. Neville-Neil.Rs
3166617cf57SGeorge V. Neville-Neil.%A W. Stevens
3176617cf57SGeorge V. Neville-Neil.%A M. Thomas
3186617cf57SGeorge V. Neville-Neil.%A E. Nordmark
3196617cf57SGeorge V. Neville-Neil.%A T. Jinmei
3206617cf57SGeorge V. Neville-Neil.%T "Advanced Sockets API for IPv6"
3216617cf57SGeorge V. Neville-Neil.%N RFC 3542
3226617cf57SGeorge V. Neville-Neil.%D October 2002
3236617cf57SGeorge V. Neville-Neil.Re
3246617cf57SGeorge V. Neville-Neil.Rs
3256617cf57SGeorge V. Neville-Neil.%A S. Deering
3266617cf57SGeorge V. Neville-Neil.%A R. Hinden
3276617cf57SGeorge V. Neville-Neil.%T "Internet Protocol, Version 6 (IPv6) Specification"
3286617cf57SGeorge V. Neville-Neil.%N RFC 2460
3296617cf57SGeorge V. Neville-Neil.%D December 1998
3306617cf57SGeorge V. Neville-Neil.Re
3316617cf57SGeorge V. Neville-Neil.Sh STANDARDS
3326617cf57SGeorge V. Neville-NeilThe functions are documented in
3336617cf57SGeorge V. Neville-Neil.Dq Advanced Sockets API for IPv6
3346617cf57SGeorge V. Neville-Neil.Pq RFC 3542 .
3356617cf57SGeorge V. Neville-Neil.\"
336f0002294SRuslan Ermilov.Sh HISTORY
337f0002294SRuslan ErmilovThe implementation first appeared in KAME advanced networking kit.
338