root / lab4 / .minix-src / include / netinet6 / ip6_var.h @ 14
History | View | Annotate | Download (16.7 KB)
1 | 13 | up20180614 | /* $NetBSD: ip6_var.h,v 1.64 2015/01/20 21:27:36 roy Exp $ */
|
---|---|---|---|
2 | /* $KAME: ip6_var.h,v 1.33 2000/06/11 14:59:20 jinmei Exp $ */
|
||
3 | |||
4 | /*
|
||
5 | * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
|
||
6 | * All rights reserved.
|
||
7 | *
|
||
8 | * Redistribution and use in source and binary forms, with or without
|
||
9 | * modification, are permitted provided that the following conditions
|
||
10 | * are met:
|
||
11 | * 1. Redistributions of source code must retain the above copyright
|
||
12 | * notice, this list of conditions and the following disclaimer.
|
||
13 | * 2. Redistributions in binary form must reproduce the above copyright
|
||
14 | * notice, this list of conditions and the following disclaimer in the
|
||
15 | * documentation and/or other materials provided with the distribution.
|
||
16 | * 3. Neither the name of the project nor the names of its contributors
|
||
17 | * may be used to endorse or promote products derived from this software
|
||
18 | * without specific prior written permission.
|
||
19 | *
|
||
20 | * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||
21 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
23 | * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||
24 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
25 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
26 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
27 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
28 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
29 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
30 | * SUCH DAMAGE.
|
||
31 | */
|
||
32 | |||
33 | /*
|
||
34 | * Copyright (c) 1982, 1986, 1993
|
||
35 | * The Regents of the University of California. All rights reserved.
|
||
36 | *
|
||
37 | * Redistribution and use in source and binary forms, with or without
|
||
38 | * modification, are permitted provided that the following conditions
|
||
39 | * are met:
|
||
40 | * 1. Redistributions of source code must retain the above copyright
|
||
41 | * notice, this list of conditions and the following disclaimer.
|
||
42 | * 2. Redistributions in binary form must reproduce the above copyright
|
||
43 | * notice, this list of conditions and the following disclaimer in the
|
||
44 | * documentation and/or other materials provided with the distribution.
|
||
45 | * 3. Neither the name of the University nor the names of its contributors
|
||
46 | * may be used to endorse or promote products derived from this software
|
||
47 | * without specific prior written permission.
|
||
48 | *
|
||
49 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||
50 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
51 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
52 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||
53 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
54 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
55 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
56 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
57 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
58 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
59 | * SUCH DAMAGE.
|
||
60 | *
|
||
61 | * @(#)ip_var.h 8.1 (Berkeley) 6/10/93
|
||
62 | */
|
||
63 | |||
64 | #ifndef _NETINET6_IP6_VAR_H_
|
||
65 | #define _NETINET6_IP6_VAR_H_
|
||
66 | |||
67 | #include <sys/socketvar.h> |
||
68 | #include <net/route.h> |
||
69 | |||
70 | /*
|
||
71 | * IP6 reassembly queue structure. Each fragment
|
||
72 | * being reassembled is attached to one of these structures.
|
||
73 | */
|
||
74 | struct ip6q {
|
||
75 | u_int32_t ip6q_head; |
||
76 | u_int16_t ip6q_len; |
||
77 | u_int8_t ip6q_nxt; /* ip6f_nxt in first fragment */
|
||
78 | u_int8_t ip6q_hlim; |
||
79 | struct ip6asfrag *ip6q_down;
|
||
80 | struct ip6asfrag *ip6q_up;
|
||
81 | u_int32_t ip6q_ident; |
||
82 | u_int8_t ip6q_arrive; |
||
83 | u_int8_t ip6q_ttl; |
||
84 | struct in6_addr ip6q_src, ip6q_dst;
|
||
85 | struct ip6q *ip6q_next;
|
||
86 | struct ip6q *ip6q_prev;
|
||
87 | int ip6q_unfrglen; /* len of unfragmentable part */ |
||
88 | #ifdef notyet
|
||
89 | u_char *ip6q_nxtp; |
||
90 | #endif
|
||
91 | int ip6q_nfrag; /* # of fragments */ |
||
92 | }; |
||
93 | |||
94 | struct ip6asfrag {
|
||
95 | u_int32_t ip6af_head; |
||
96 | u_int16_t ip6af_len; |
||
97 | u_int8_t ip6af_nxt; |
||
98 | u_int8_t ip6af_hlim; |
||
99 | /* must not override the above members during reassembling */
|
||
100 | struct ip6asfrag *ip6af_down;
|
||
101 | struct ip6asfrag *ip6af_up;
|
||
102 | struct mbuf *ip6af_m;
|
||
103 | int ip6af_offset; /* offset in ip6af_m to next header */ |
||
104 | int ip6af_frglen; /* fragmentable part length */ |
||
105 | int ip6af_off; /* fragment offset */ |
||
106 | u_int16_t ip6af_mff; /* more fragment bit in frag off */
|
||
107 | }; |
||
108 | |||
109 | #define IP6_REASS_MBUF(ip6af) ((ip6af)->ip6af_m)
|
||
110 | |||
111 | struct ip6_moptions {
|
||
112 | struct ifnet *im6o_multicast_ifp; /* ifp for outgoing multicasts */ |
||
113 | u_char im6o_multicast_hlim; /* hoplimit for outgoing multicasts */
|
||
114 | u_char im6o_multicast_loop; /* 1 >= hear sends if a member */
|
||
115 | LIST_HEAD(, in6_multi_mship) im6o_memberships; |
||
116 | }; |
||
117 | |||
118 | /*
|
||
119 | * Control options for outgoing packets
|
||
120 | */
|
||
121 | |||
122 | /* Routing header related info */
|
||
123 | struct ip6po_rhinfo {
|
||
124 | struct ip6_rthdr *ip6po_rhi_rthdr; /* Routing header */ |
||
125 | struct route ip6po_rhi_route; /* Route to the 1st hop */ |
||
126 | }; |
||
127 | #define ip6po_rthdr ip6po_rhinfo.ip6po_rhi_rthdr
|
||
128 | #define ip6po_route ip6po_rhinfo.ip6po_rhi_route
|
||
129 | |||
130 | /* Nexthop related info */
|
||
131 | struct ip6po_nhinfo {
|
||
132 | struct sockaddr *ip6po_nhi_nexthop;
|
||
133 | struct route ip6po_nhi_route; /* Route to the nexthop */ |
||
134 | }; |
||
135 | #define ip6po_nexthop ip6po_nhinfo.ip6po_nhi_nexthop
|
||
136 | #define ip6po_nextroute ip6po_nhinfo.ip6po_nhi_route
|
||
137 | |||
138 | struct ip6_pktopts {
|
||
139 | int ip6po_hlim; /* Hoplimit for outgoing packets */ |
||
140 | struct in6_pktinfo *ip6po_pktinfo; /* Outgoing IF/address information */ |
||
141 | struct ip6po_nhinfo ip6po_nhinfo; /* Next-hop address information */ |
||
142 | struct ip6_hbh *ip6po_hbh; /* Hop-by-Hop options header */ |
||
143 | struct ip6_dest *ip6po_dest1; /* Destination options header(1st part) */ |
||
144 | struct ip6po_rhinfo ip6po_rhinfo; /* Routing header related info. */ |
||
145 | struct ip6_dest *ip6po_dest2; /* Destination options header(2nd part) */ |
||
146 | int ip6po_tclass; /* traffic class */ |
||
147 | int ip6po_minmtu; /* fragment vs PMTU discovery policy */ |
||
148 | #define IP6PO_MINMTU_MCASTONLY -1 /* default; send at min MTU for multicast*/ |
||
149 | #define IP6PO_MINMTU_DISABLE 0 /* always perform pmtu disc */ |
||
150 | #define IP6PO_MINMTU_ALL 1 /* always send at min MTU */ |
||
151 | int ip6po_prefer_tempaddr; /* whether temporary addresses are |
||
152 | * preferred as source address */
|
||
153 | #define IP6PO_TEMPADDR_SYSTEM -1 /* follow the system default */ |
||
154 | #define IP6PO_TEMPADDR_NOTPREFER 0 /* not prefer temporary address */ |
||
155 | #define IP6PO_TEMPADDR_PREFER 1 /* prefer temporary address */ |
||
156 | int ip6po_flags;
|
||
157 | #if 0 /* parameters in this block is obsolete. do not reuse the values. */
|
||
158 | #define IP6PO_REACHCONF 0x01 /* upper-layer reachability confirmation. */
|
||
159 | #define IP6PO_MINMTU 0x02 /* use minimum MTU (IPV6_USE_MIN_MTU) */
|
||
160 | #endif
|
||
161 | #define IP6PO_DONTFRAG 0x04 /* disable fragmentation (IPV6_DONTFRAG) */ |
||
162 | }; |
||
163 | |||
164 | /*
|
||
165 | * IPv6 statistics.
|
||
166 | * Each counter is an unsigned 64-bit value.
|
||
167 | */
|
||
168 | #define IP6_STAT_TOTAL 0 /* total packets received */ |
||
169 | #define IP6_STAT_TOOSHORT 1 /* packet too short */ |
||
170 | #define IP6_STAT_TOOSMALL 2 /* not enough data */ |
||
171 | #define IP6_STAT_FRAGMENTS 3 /* fragments received */ |
||
172 | #define IP6_STAT_FRAGDROPPED 4 /* frags dropped (dups, out of space) */ |
||
173 | #define IP6_STAT_FRAGTIMEOUT 5 /* fragments timed out */ |
||
174 | #define IP6_STAT_FRAGOVERFLOW 6 /* fragments that exceed limit */ |
||
175 | #define IP6_STAT_FORWARD 7 /* packets forwarded */ |
||
176 | #define IP6_STAT_CANTFORWARD 8 /* packets rcvd for uncreachable dst */ |
||
177 | #define IP6_STAT_REDIRECTSENT 9 /* packets forwarded on same net */ |
||
178 | #define IP6_STAT_DELIVERED 10 /* datagrams delivered to upper level */ |
||
179 | #define IP6_STAT_LOCALOUT 11 /* total IP packets generated here */ |
||
180 | #define IP6_STAT_ODROPPED 12 /* lost packets due to nobufs, etc. */ |
||
181 | #define IP6_STAT_REASSEMBLED 13 /* total packets reassembled ok */ |
||
182 | #define IP6_STAT_FRAGMENTED 14 /* datagrams successfully fragmented */ |
||
183 | #define IP6_STAT_OFRAGMENTS 15 /* output fragments created */ |
||
184 | #define IP6_STAT_CANTFRAG 16 /* don't fragment flag was set, etc. */ |
||
185 | #define IP6_STAT_BADOPTIONS 17 /* error in option processing */ |
||
186 | #define IP6_STAT_NOROUTE 18 /* packets discarded due to no route */ |
||
187 | #define IP6_STAT_BADVERS 19 /* ip6 version != 6 */ |
||
188 | #define IP6_STAT_RAWOUT 20 /* total raw ip packets generated */ |
||
189 | #define IP6_STAT_BADSCOPE 21 /* scope error */ |
||
190 | #define IP6_STAT_NOTMEMBER 22 /* don't join this multicast group */ |
||
191 | #define IP6_STAT_NXTHIST 23 /* next header histogram */ |
||
192 | /* space for 256 counters */
|
||
193 | #define IP6_STAT_M1 279 /* one mbuf */ |
||
194 | #define IP6_STAT_M2M 280 /* two or more mbuf */ |
||
195 | /* space for 32 counters */
|
||
196 | #define IP6_STAT_MEXT1 312 /* one ext mbuf */ |
||
197 | #define IP6_STAT_MEXT2M 313 /* two or more ext mbuf */ |
||
198 | #define IP6_STAT_EXTHDRTOOLONG 314 /* ext hdr are not contiguous */ |
||
199 | #define IP6_STAT_NOGIF 315 /* no match gif found */ |
||
200 | #define IP6_STAT_TOOMANYHDR 316 /* discarded due to too many headers */ |
||
201 | /*
|
||
202 | * statistics for improvement of the source address selection
|
||
203 | * algorithm:
|
||
204 | * XXX: hardcoded 16 = # of ip6 multicast scope types + 1
|
||
205 | */
|
||
206 | #define IP6_STAT_SOURCES_NONE 317 /* number of times that address |
||
207 | selection fails */
|
||
208 | #define IP6_STAT_SOURCES_SAMEIF 318 /* number of times that an address |
||
209 | on the outgoing I/F is chosen */
|
||
210 | /* space for 16 counters */
|
||
211 | #define IP6_STAT_SOURCES_OTHERIF 334 /* number of times that an address on |
||
212 | a non-outgoing I/F is chosen */
|
||
213 | /* space for 16 counters */
|
||
214 | #define IP6_STAT_SOURCES_SAMESCOPE 350 /* number of times that an address that |
||
215 | has the same scope from the dest.
|
||
216 | is chosen */
|
||
217 | /* space for 16 counters */
|
||
218 | #define IP6_STAT_SOURCES_OTHERSCOPE 366 /* number of times that an address that |
||
219 | has a different scope from the dest.
|
||
220 | is chosen */
|
||
221 | /* space for 16 counters */
|
||
222 | #define IP6_STAT_SOURCES_DEPRECATED 382 /* number of times that a deprecated |
||
223 | address is chosen */
|
||
224 | /* space for 16 counters */
|
||
225 | #define IP6_STAT_FORWARD_CACHEHIT 398 |
||
226 | #define IP6_STAT_FORWARD_CACHEMISS 399 |
||
227 | #define IP6_STAT_FASTFORWARD 400 /* packets fast forwarded */ |
||
228 | #define IP6_STAT_FASTFORWARDFLOWS 401 /* number of fast forward flows */ |
||
229 | |||
230 | #define IP6_NSTATS 402 |
||
231 | |||
232 | #define IP6FLOW_HASHBITS 6 /* should not be a multiple of 8 */ |
||
233 | |||
234 | /*
|
||
235 | * Structure for an IPv6 flow (ip6_fastforward).
|
||
236 | */
|
||
237 | struct ip6flow {
|
||
238 | LIST_ENTRY(ip6flow) ip6f_list; /* next in active list */
|
||
239 | LIST_ENTRY(ip6flow) ip6f_hash; /* next ip6flow in bucket */
|
||
240 | struct in6_addr ip6f_dst; /* destination address */ |
||
241 | struct in6_addr ip6f_src; /* source address */ |
||
242 | struct route ip6f_ro; /* associated route entry */ |
||
243 | u_int32_t ip6f_flow; /* flow (tos) */
|
||
244 | u_quad_t ip6f_uses; /* number of uses in this period */
|
||
245 | u_quad_t ip6f_last_uses; /* number of uses in last period */
|
||
246 | u_quad_t ip6f_dropped; /* ENOBUFS returned by if_output */
|
||
247 | u_quad_t ip6f_forwarded; /* packets forwarded */
|
||
248 | u_int ip6f_timer; /* lifetime timer */
|
||
249 | }; |
||
250 | |||
251 | #ifdef _KERNEL
|
||
252 | /*
|
||
253 | * Auxiliary attributes of incoming IPv6 packets, which is initialized when we
|
||
254 | * come into ip6_input().
|
||
255 | * XXX do not make it a kitchen sink!
|
||
256 | */
|
||
257 | struct ip6aux {
|
||
258 | /* ip6.ip6_dst */
|
||
259 | struct in6_addr ip6a_src;
|
||
260 | uint32_t ip6a_scope_id; |
||
261 | int ip6a_flags;
|
||
262 | }; |
||
263 | |||
264 | /* flags passed to ip6_output as last parameter */
|
||
265 | #define IPV6_UNSPECSRC 0x01 /* allow :: as the source address */ |
||
266 | #define IPV6_FORWARDING 0x02 /* most of IPv6 header exists */ |
||
267 | #define IPV6_MINMTU 0x04 /* use minimum MTU (IPV6_USE_MIN_MTU) */ |
||
268 | |||
269 | extern u_int32_t ip6_id; /* fragment identifier */ |
||
270 | extern int ip6_defhlim; /* default hop limit */ |
||
271 | extern int ip6_defmcasthlim; /* default multicast hop limit */ |
||
272 | extern int ip6_forwarding; /* act as router? */ |
||
273 | extern int ip6_sendredirect; /* send ICMPv6 redirect? */ |
||
274 | extern int ip6_forward_srcrt; /* forward src-routed? */ |
||
275 | extern int ip6_use_deprecated; /* allow deprecated addr as source */ |
||
276 | extern int ip6_rr_prune; /* router renumbering prefix |
||
277 | * walk list every 5 sec. */
|
||
278 | extern int ip6_mcast_pmtu; /* enable pMTU discovery for multicast? */ |
||
279 | extern int ip6_v6only; |
||
280 | extern int ip6_neighborgcthresh; /* Threshold # of NDP entries for GC */ |
||
281 | extern int ip6_maxifprefixes; /* Max acceptable prefixes via RA per IF */ |
||
282 | extern int ip6_maxifdefrouters; /* Max acceptable def routers via RA */ |
||
283 | extern int ip6_maxdynroutes; /* Max # of routes created via redirect */ |
||
284 | |||
285 | |||
286 | extern struct socket *ip6_mrouter; /* multicast routing daemon */ |
||
287 | extern int ip6_sendredirects; /* send IP redirects when forwarding? */ |
||
288 | extern int ip6_maxfragpackets; /* Maximum packets in reassembly queue */ |
||
289 | extern int ip6_maxfrags; /* Maximum fragments in reassembly queue */ |
||
290 | extern int ip6_sourcecheck; /* Verify source interface */ |
||
291 | extern int ip6_sourcecheck_interval; /* Interval between log messages */ |
||
292 | extern int ip6_accept_rtadv; /* Acts as a host not a router */ |
||
293 | extern int ip6_rtadv_maxroutes; /* maximum number of routes via rtadv */ |
||
294 | extern int ip6_keepfaith; /* Firewall Aided Internet Translator */ |
||
295 | extern int ip6_log_interval; |
||
296 | extern time_t ip6_log_time;
|
||
297 | extern int ip6_hdrnestlimit; /* upper limit of # of extension headers */ |
||
298 | extern int ip6_dad_count; /* DupAddrDetectionTransmits */ |
||
299 | |||
300 | extern int ip6_auto_flowlabel; |
||
301 | extern int ip6_auto_linklocal; |
||
302 | |||
303 | extern int ip6_anonportmin; /* minimum ephemeral port */ |
||
304 | extern int ip6_anonportmax; /* maximum ephemeral port */ |
||
305 | extern int ip6_lowportmin; /* minimum reserved port */ |
||
306 | extern int ip6_lowportmax; /* maximum reserved port */ |
||
307 | |||
308 | extern int ip6_use_tempaddr; /* whether to use temporary addresses. */ |
||
309 | extern int ip6_prefer_tempaddr; /* whether to prefer temporary addresses |
||
310 | in the source address selection */
|
||
311 | extern int ip6_use_defzone; /* whether to use the default scope zone |
||
312 | when unspecified */
|
||
313 | |||
314 | #ifdef GATEWAY
|
||
315 | extern int ip6_maxflows; /* maximum amount of flows for ip6ff */ |
||
316 | extern int ip6_hashsize; /* size of hash table */ |
||
317 | #endif
|
||
318 | |||
319 | struct in6pcb;
|
||
320 | extern const struct pr_usrreqs rip6_usrreqs; |
||
321 | |||
322 | int icmp6_ctloutput(int, struct socket *, struct sockopt *); |
||
323 | |||
324 | struct mbuf;
|
||
325 | void ip6_init(void); |
||
326 | void ip6_input(struct mbuf *); |
||
327 | const struct ip6aux *ip6_getdstifaddr(struct mbuf *); |
||
328 | void ip6_freepcbopts(struct ip6_pktopts *); |
||
329 | void ip6_freemoptions(struct ip6_moptions *); |
||
330 | int ip6_unknown_opt(u_int8_t *, struct mbuf *, int); |
||
331 | u_int8_t *ip6_get_prevhdr(struct mbuf *, int); |
||
332 | int ip6_nexthdr(struct mbuf *, int, int, int *); |
||
333 | int ip6_lasthdr(struct mbuf *, int, int, int *); |
||
334 | |||
335 | struct m_tag *ip6_addaux(struct mbuf *); |
||
336 | struct m_tag *ip6_findaux(struct mbuf *); |
||
337 | void ip6_delaux(struct mbuf *); |
||
338 | struct ip6_hdr;
|
||
339 | int ip6_mforward(struct ip6_hdr *, struct ifnet *, struct mbuf *); |
||
340 | int ip6_hopopts_input(u_int32_t *, u_int32_t *, struct mbuf **, int *); |
||
341 | void ip6_savecontrol(struct in6pcb *, struct mbuf **, struct ip6_hdr *, |
||
342 | struct mbuf *);
|
||
343 | void ip6_notify_pmtu(struct in6pcb *, const struct sockaddr_in6 *, |
||
344 | u_int32_t *); |
||
345 | int ip6_sysctl(int *, u_int, void *, size_t *, void *, size_t); |
||
346 | |||
347 | void ip6_forward(struct mbuf *, int); |
||
348 | |||
349 | void ip6_mloopback(struct ifnet *, struct mbuf *, |
||
350 | const struct sockaddr_in6 *); |
||
351 | int ip6_output(struct mbuf *, struct ip6_pktopts *, |
||
352 | struct route *, int, |
||
353 | struct ip6_moptions *, struct socket *, |
||
354 | struct ifnet **);
|
||
355 | int ip6_ctloutput(int, struct socket *, struct sockopt *); |
||
356 | int ip6_raw_ctloutput(int, struct socket *, struct sockopt *); |
||
357 | void ip6_initpktopts(struct ip6_pktopts *); |
||
358 | int ip6_setpktopts(struct mbuf *, struct ip6_pktopts *, |
||
359 | struct ip6_pktopts *, kauth_cred_t, int); |
||
360 | void ip6_clearpktopts(struct ip6_pktopts *, int); |
||
361 | struct ip6_pktopts *ip6_copypktopts(struct ip6_pktopts *, int); |
||
362 | int ip6_optlen(struct in6pcb *); |
||
363 | |||
364 | void ip6_statinc(u_int);
|
||
365 | |||
366 | int route6_input(struct mbuf **, int *, int); |
||
367 | |||
368 | void frag6_init(void); |
||
369 | int frag6_input(struct mbuf **, int *, int); |
||
370 | int ip6_reass_packet(struct mbuf **, int); |
||
371 | void frag6_slowtimo(void); |
||
372 | void frag6_fasttimo(void); |
||
373 | void frag6_drain(void); |
||
374 | void frag6_drainstub(void); |
||
375 | |||
376 | int ip6flow_init(int); |
||
377 | void ip6flow_poolinit(void); |
||
378 | struct ip6flow *ip6flow_reap(int); |
||
379 | void ip6flow_create(const struct route *, struct mbuf *); |
||
380 | void ip6flow_slowtimo(void); |
||
381 | int ip6flow_invalidate_all(int); |
||
382 | |||
383 | void rip6_init(void); |
||
384 | int rip6_input(struct mbuf **, int *, int); |
||
385 | void *rip6_ctlinput(int, const struct sockaddr *, void *); |
||
386 | int rip6_ctloutput(int, struct socket *, struct sockopt *); |
||
387 | int rip6_output(struct mbuf *, struct socket *, struct sockaddr_in6 *, |
||
388 | struct mbuf *);
|
||
389 | int rip6_attach(struct socket *, int); |
||
390 | int rip6_usrreq(struct socket *, |
||
391 | int, struct mbuf *, struct mbuf *, struct mbuf *, struct lwp *); |
||
392 | |||
393 | int dest6_input(struct mbuf **, int *, int); |
||
394 | int none_input(struct mbuf **, int *, int); |
||
395 | |||
396 | struct route;
|
||
397 | |||
398 | struct in6_addr *in6_selectsrc(struct sockaddr_in6 *, |
||
399 | struct ip6_pktopts *, struct ip6_moptions *, struct route *, |
||
400 | struct in6_addr *, struct ifnet **, int *); |
||
401 | int in6_selectroute(struct sockaddr_in6 *, struct ip6_pktopts *, |
||
402 | struct ip6_moptions *, struct route *, struct ifnet **, |
||
403 | struct rtentry **, int); |
||
404 | int ip6_get_membership(const struct sockopt *, struct ifnet **, void *, |
||
405 | size_t); |
||
406 | |||
407 | u_int32_t ip6_randomid(void);
|
||
408 | u_int32_t ip6_randomflowlabel(void);
|
||
409 | #endif /* _KERNEL */ |
||
410 | |||
411 | #endif /* !_NETINET6_IP6_VAR_H_ */ |