in6_proto.c (149033) | in6_proto.c (152242) |
---|---|
1/* $FreeBSD: head/sys/netinet6/in6_proto.c 149033 2005-08-13 19:55:06Z ume $ */ | 1/* $FreeBSD: head/sys/netinet6/in6_proto.c 152242 2005-11-09 13:29:16Z ru $ */ |
2/* $KAME: in6_proto.c,v 1.91 2001/05/27 13:28:35 itojun 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 --- 136 unchanged lines hidden (view full) --- 146 147extern struct domain inet6domain; 148static struct pr_usrreqs nousrreqs; 149 150#define PR_LISTEN 0 151#define PR_ABRTACPTDIS 0 152 153struct ip6protosw inet6sw[] = { | 2/* $KAME: in6_proto.c,v 1.91 2001/05/27 13:28:35 itojun 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 --- 136 unchanged lines hidden (view full) --- 146 147extern struct domain inet6domain; 148static struct pr_usrreqs nousrreqs; 149 150#define PR_LISTEN 0 151#define PR_ABRTACPTDIS 0 152 153struct ip6protosw inet6sw[] = { |
154{ 0, &inet6domain, IPPROTO_IPV6, 0, 155 0, 0, 0, 0, 156 0, 157 ip6_init, 0, frag6_slowtimo, frag6_drain, 158 &nousrreqs, | 154{ 155 .pr_type = 0, 156 .pr_domain = &inet6domain, 157 .pr_protocol = IPPROTO_IPV6, 158 .pr_init = ip6_init, 159 .pr_slowtimo = frag6_slowtimo, 160 .pr_drain = frag6_drain, 161 .pr_usrreqs = &nousrreqs, |
159}, | 162}, |
160{ SOCK_DGRAM, &inet6domain, IPPROTO_UDP, PR_ATOMIC|PR_ADDR, 161 udp6_input, 0, udp6_ctlinput, ip6_ctloutput, 162 0, 163 0, 0, 0, 0, 164 &udp6_usrreqs, | 163{ 164 .pr_type = SOCK_DGRAM, 165 .pr_domain = &inet6domain, 166 .pr_protocol = IPPROTO_UDP, 167 .pr_flags = PR_ATOMIC|PR_ADDR, 168 .pr_input = udp6_input, 169 .pr_ctlinput = udp6_ctlinput, 170 .pr_ctloutput = ip6_ctloutput, 171 .pr_usrreqs = &udp6_usrreqs, |
165}, | 172}, |
166{ SOCK_STREAM, &inet6domain, IPPROTO_TCP, PR_CONNREQUIRED|PR_WANTRCVD|PR_LISTEN, 167 tcp6_input, 0, tcp6_ctlinput, tcp_ctloutput, 168 0, 169#ifdef INET /* don't call initialization and timeout routines twice */ 170 0, 0, 0, tcp_drain, 171#else 172 tcp_init, tcp_fasttimo, tcp_slowtimo, tcp_drain, | 173{ 174 .pr_type = SOCK_STREAM, 175 .pr_domain = &inet6domain, 176 .pr_protocol = IPPROTO_TCP, 177 .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_LISTEN, 178 .pr_input = tcp6_input, 179 .pr_ctlinput = tcp6_ctlinput, 180 .pr_ctloutput = tcp_ctloutput, 181#ifndef INET /* don't call initialization and timeout routines twice */ 182 .pr_init = tcp_init, 183 .pr_fasttimo = tcp_fasttimo, 184 .pr_slowtimo = tcp_slowtimo, |
173#endif | 185#endif |
174 &tcp6_usrreqs, | 186 .pr_drain = tcp_drain, 187 .pr_usrreqs = &tcp6_usrreqs, |
175}, | 188}, |
176{ SOCK_RAW, &inet6domain, IPPROTO_RAW, PR_ATOMIC|PR_ADDR, 177 rip6_input, rip6_output, rip6_ctlinput, rip6_ctloutput, 178 0, 179 0, 0, 0, 0, 180 &rip6_usrreqs | 189{ 190 .pr_type = SOCK_RAW, 191 .pr_domain = &inet6domain, 192 .pr_protocol = IPPROTO_RAW, 193 .pr_flags = PR_ATOMIC|PR_ADDR, 194 .pr_input = rip6_input, 195 .pr_output = rip6_output, 196 .pr_ctlinput = rip6_ctlinput, 197 .pr_ctloutput = rip6_ctloutput, 198 .pr_usrreqs = &rip6_usrreqs |
181}, | 199}, |
182{ SOCK_RAW, &inet6domain, IPPROTO_ICMPV6, PR_ATOMIC|PR_ADDR|PR_LASTHDR, 183 icmp6_input, rip6_output, rip6_ctlinput, rip6_ctloutput, 184 0, 185 icmp6_init, icmp6_fasttimo, 0, 0, 186 &rip6_usrreqs | 200{ 201 .pr_type = SOCK_RAW, 202 .pr_domain = &inet6domain, 203 .pr_protocol = IPPROTO_ICMPV6, 204 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 205 .pr_input = icmp6_input, 206 .pr_output = rip6_output, 207 .pr_ctlinput = rip6_ctlinput, 208 .pr_ctloutput = rip6_ctloutput, 209 .pr_init = icmp6_init, 210 .pr_fasttimo = icmp6_fasttimo, 211 .pr_usrreqs = &rip6_usrreqs |
187}, | 212}, |
188{ SOCK_RAW, &inet6domain, IPPROTO_DSTOPTS,PR_ATOMIC|PR_ADDR, 189 dest6_input, 0, 0, 0, 190 0, 191 0, 0, 0, 0, 192 &nousrreqs | 213{ 214 .pr_type = SOCK_RAW, 215 .pr_domain = &inet6domain, 216 .pr_protocol = IPPROTO_DSTOPTS, 217 .pr_flags = PR_ATOMIC|PR_ADDR, 218 .pr_input = dest6_input, 219 .pr_usrreqs = &nousrreqs |
193}, | 220}, |
194{ SOCK_RAW, &inet6domain, IPPROTO_ROUTING,PR_ATOMIC|PR_ADDR, 195 route6_input, 0, 0, 0, 196 0, 197 0, 0, 0, 0, 198 &nousrreqs | 221{ 222 .pr_type = SOCK_RAW, 223 .pr_domain = &inet6domain, 224 .pr_protocol = IPPROTO_ROUTING, 225 .pr_flags = PR_ATOMIC|PR_ADDR, 226 .pr_input = route6_input, 227 .pr_usrreqs = &nousrreqs |
199}, | 228}, |
200{ SOCK_RAW, &inet6domain, IPPROTO_FRAGMENT,PR_ATOMIC|PR_ADDR, 201 frag6_input, 0, 0, 0, 202 0, 203 0, 0, 0, 0, 204 &nousrreqs | 229{ 230 .pr_type = SOCK_RAW, 231 .pr_domain = &inet6domain, 232 .pr_protocol = IPPROTO_FRAGMENT, 233 .pr_flags = PR_ATOMIC|PR_ADDR, 234 .pr_input = frag6_input, 235 .pr_usrreqs = &nousrreqs |
205}, 206#ifdef IPSEC | 236}, 237#ifdef IPSEC |
207{ SOCK_RAW, &inet6domain, IPPROTO_AH, PR_ATOMIC|PR_ADDR, 208 ah6_input, 0, 0, 0, 209 0, 210 0, 0, 0, 0, 211 &nousrreqs, | 238{ 239 .pr_type = SOCK_RAW, 240 .pr_domain = &inet6domain, 241 .pr_protocol = IPPROTO_AH, 242 .pr_flags = PR_ATOMIC|PR_ADDR, 243 .pr_input = ah6_input, 244 .pr_usrreqs = &nousrreqs, |
212}, 213#ifdef IPSEC_ESP | 245}, 246#ifdef IPSEC_ESP |
214{ SOCK_RAW, &inet6domain, IPPROTO_ESP, PR_ATOMIC|PR_ADDR, 215 esp6_input, 0, 216 esp6_ctlinput, 217 0, 218 0, 219 0, 0, 0, 0, 220 &nousrreqs, | 247{ 248 .pr_type = SOCK_RAW, 249 .pr_domain = &inet6domain, 250 .pr_protocol = IPPROTO_ESP, 251 .pr_flags = PR_ATOMIC|PR_ADDR, 252 .pr_input = esp6_input, 253 .pr_ctlinput = esp6_ctlinput, 254 .pr_usrreqs = &nousrreqs, |
221}, 222#endif | 255}, 256#endif |
223{ SOCK_RAW, &inet6domain, IPPROTO_IPCOMP, PR_ATOMIC|PR_ADDR, 224 ipcomp6_input, 0, 0, 0, 225 0, 226 0, 0, 0, 0, 227 &nousrreqs, | 257{ 258 .pr_type = SOCK_RAW, 259 .pr_domain = &inet6domain, 260 .pr_protocol = IPPROTO_IPCOMP, 261 .pr_flags = PR_ATOMIC|PR_ADDR, 262 .pr_input = ipcomp6_input, 263 .pr_usrreqs = &nousrreqs, |
228}, 229#endif /* IPSEC */ 230#ifdef INET | 264}, 265#endif /* IPSEC */ 266#ifdef INET |
231{ SOCK_RAW, &inet6domain, IPPROTO_IPV4, PR_ATOMIC|PR_ADDR|PR_LASTHDR, 232 encap6_input, rip6_output, 0, rip6_ctloutput, 233 0, 234 encap_init, 0, 0, 0, 235 &rip6_usrreqs | 267{ 268 .pr_type = SOCK_RAW, 269 .pr_domain = &inet6domain, 270 .pr_protocol = IPPROTO_IPV4, 271 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 272 .pr_input = encap6_input, 273 .pr_output = rip6_output, 274 .pr_ctloutput = rip6_ctloutput, 275 .pr_init = encap_init, 276 .pr_usrreqs = &rip6_usrreqs |
236}, 237#endif /* INET */ | 277}, 278#endif /* INET */ |
238{ SOCK_RAW, &inet6domain, IPPROTO_IPV6, PR_ATOMIC|PR_ADDR|PR_LASTHDR, 239 encap6_input, rip6_output, 0, rip6_ctloutput, 240 0, 241 encap_init, 0, 0, 0, 242 &rip6_usrreqs | 279{ 280 .pr_type = SOCK_RAW, 281 .pr_domain = &inet6domain, 282 .pr_protocol = IPPROTO_IPV6, 283 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 284 .pr_input = encap6_input, 285 .pr_output = rip6_output, 286 .pr_ctloutput = rip6_ctloutput, 287 .pr_init = encap_init, 288 .pr_usrreqs = &rip6_usrreqs |
243}, | 289}, |
244{ SOCK_RAW, &inet6domain, IPPROTO_PIM, PR_ATOMIC|PR_ADDR|PR_LASTHDR, 245 pim6_input, rip6_output, 0, rip6_ctloutput, 246 0, 247 0, 0, 0, 0, 248 &rip6_usrreqs | 290{ 291 .pr_type = SOCK_RAW, 292 .pr_domain = &inet6domain, 293 .pr_protocol = IPPROTO_PIM, 294 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 295 .pr_input = pim6_input, 296 .pr_output = rip6_output, 297 .pr_ctloutput = rip6_ctloutput, 298 .pr_usrreqs = &rip6_usrreqs |
249}, 250#ifdef DEV_CARP | 299}, 300#ifdef DEV_CARP |
251{ SOCK_RAW, &inet6domain, IPPROTO_CARP, PR_ATOMIC|PR_ADDR, 252 carp6_input, rip6_output, 0, rip6_ctloutput, 253 0, 254 0, 0, 0, 0, 255 &rip6_usrreqs | 301{ 302 .pr_type = SOCK_RAW, 303 .pr_domain = &inet6domain, 304 .pr_protocol = IPPROTO_CARP, 305 .pr_flags = PR_ATOMIC|PR_ADDR, 306 .pr_input = carp6_input, 307 .pr_output = rip6_output, 308 .pr_ctloutput = rip6_ctloutput, 309 .pr_usrreqs = &rip6_usrreqs |
256}, 257#endif /* DEV_CARP */ 258/* raw wildcard */ | 310}, 311#endif /* DEV_CARP */ 312/* raw wildcard */ |
259{ SOCK_RAW, &inet6domain, 0, PR_ATOMIC|PR_ADDR, 260 rip6_input, rip6_output, 0, rip6_ctloutput, 261 0, 262 0, 0, 0, 0, 263 &rip6_usrreqs | 313{ 314 .pr_type = SOCK_RAW, 315 .pr_domain = &inet6domain, 316 .pr_flags = PR_ATOMIC|PR_ADDR, 317 .pr_input = rip6_input, 318 .pr_output = rip6_output, 319 .pr_ctloutput = rip6_ctloutput, 320 .pr_usrreqs = &rip6_usrreqs |
264}, 265}; 266 267extern int in6_inithead __P((void **, int)); 268 | 321}, 322}; 323 324extern int in6_inithead __P((void **, int)); 325 |
269struct domain inet6domain = 270 { AF_INET6, "internet6", 0, 0, 0, 271 (struct protosw *)inet6sw, 272 (struct protosw *)&inet6sw[sizeof(inet6sw)/sizeof(inet6sw[0])], 0, 273 in6_inithead, 274 offsetof(struct sockaddr_in6, sin6_addr) << 3, 275 sizeof(struct sockaddr_in6), 276 in6_domifattach, in6_domifdetach, }; | 326struct domain inet6domain = { 327 .dom_family = AF_INET6, 328 .dom_name = "internet6", 329 .dom_protosw = (struct protosw *)inet6sw, 330 .dom_protoswNPROTOSW = (struct protosw *) 331 &inet6sw[sizeof(inet6sw)/sizeof(inet6sw[0])], 332 .dom_rtattach = in6_inithead, 333 .dom_rtoffset = offsetof(struct sockaddr_in6, sin6_addr) << 3, 334 .dom_maxrtkey = sizeof(struct sockaddr_in6), 335 .dom_ifattach = in6_domifattach, 336 .dom_ifdetach = in6_domifdetach 337}; |
277 278DOMAIN_SET(inet6); 279 280/* 281 * Internet configuration info 282 */ 283#ifndef IPV6FORWARDING 284#ifdef GATEWAY6 --- 201 unchanged lines hidden --- | 338 339DOMAIN_SET(inet6); 340 341/* 342 * Internet configuration info 343 */ 344#ifndef IPV6FORWARDING 345#ifdef GATEWAY6 --- 201 unchanged lines hidden --- |