root / lab4 / .minix-src / include / netinet6 / ip6_var.h @ 13
History | View | Annotate | Download (16.7 KB)
1 |
/* $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_ */ |