-{ 0, &inet6domain, IPPROTO_IPV6, 0,
- 0, 0, 0, 0,
- 0,
- ip6_init, 0, frag6_slowtimo, frag6_drain,
- 0,
- &nousrreqs,
- 0, 0, 0,
- { 0, 0 }, NULL, { 0 }
-},
-{ SOCK_DGRAM, &inet6domain, IPPROTO_UDP, PR_ATOMIC|PR_ADDR|PR_PROTOLOCK|PR_PCBLOCK,
- udp6_input, 0, udp6_ctlinput, ip6_ctloutput,
- 0,
- 0, 0, 0, 0,
- 0,
- &udp6_usrreqs,
- udp_lock, udp_unlock, udp_getlock,
- { 0, 0 }, NULL, { 0 }
-},
-{ SOCK_STREAM, &inet6domain, IPPROTO_TCP, PR_CONNREQUIRED|PR_WANTRCVD|PR_LISTEN|PR_PROTOLOCK|PR_PCBLOCK|PR_DISPOSE,
- tcp6_input, 0, tcp6_ctlinput, tcp_ctloutput,
- 0,
-#if INET /* don't call initialization and timeout routines twice */
- 0, 0, 0, tcp_drain,
-#else
- tcp_init, 0, tcp_slowtimo, tcp_drain,
-#endif
- 0,
- &tcp6_usrreqs,
- tcp_lock, tcp_unlock, tcp_getlock,
- { 0, 0 }, NULL, { 0 }
-},
-{ SOCK_RAW, &inet6domain, IPPROTO_RAW, PR_ATOMIC|PR_ADDR,
- rip6_input, rip6_pr_output, rip6_ctlinput, rip6_ctloutput,
- 0,
- 0, 0, 0, 0,
- 0,
- &rip6_usrreqs,
- 0, rip_unlock, 0,
- { 0, 0 }, NULL, { 0 }
-},
-{ SOCK_RAW, &inet6domain, IPPROTO_ICMPV6, PR_ATOMIC|PR_ADDR|PR_LASTHDR,
- icmp6_input, rip6_pr_output, rip6_ctlinput, rip6_ctloutput,
- 0,
- icmp6_init, icmp6_fasttimo, 0, 0,
- 0,
- &rip6_usrreqs,
- 0, rip_unlock, 0,
- { 0, 0 }, NULL, { 0 }
-},
-{ SOCK_DGRAM, &inet6domain, IPPROTO_ICMPV6, PR_ATOMIC|PR_ADDR|PR_LASTHDR,
- icmp6_input, rip6_pr_output, rip6_ctlinput, icmp6_dgram_ctloutput,
- 0,
- icmp6_init, icmp6_fasttimo, 0, 0,
- 0,
- &icmp6_dgram_usrreqs,
- 0, rip_unlock, 0,
- { 0, 0 }, NULL, { 0 }
-},
-{ SOCK_RAW, &inet6domain, IPPROTO_DSTOPTS,PR_ATOMIC|PR_ADDR,
- dest6_input, 0, 0, 0,
- 0,
- 0, 0, 0, 0,
- 0,
- &nousrreqs,
- 0, 0, 0,
- { 0, 0 }, NULL, { 0 }
-},
-{ SOCK_RAW, &inet6domain, IPPROTO_ROUTING,PR_ATOMIC|PR_ADDR,
- route6_input, 0, 0, 0,
- 0,
- 0, 0, 0, 0,
- 0,
- &nousrreqs,
- 0, 0, 0,
- { 0, 0 }, NULL, { 0 }
-},
-{ SOCK_RAW, &inet6domain, IPPROTO_FRAGMENT,PR_ATOMIC|PR_ADDR,
- frag6_input, 0, 0, 0,
- 0,
- 0, 0, 0, 0,
- 0,
- &nousrreqs,
- 0, 0, 0,
- { 0, 0 }, NULL, { 0 }
-},
+ {
+ .pr_type = 0,
+ .pr_protocol = IPPROTO_IPV6,
+ .pr_init = ip6_init,
+ .pr_drain = ip6_drain,
+ .pr_usrreqs = &nousrreqs,
+ },
+ {
+ .pr_type = SOCK_DGRAM,
+ .pr_protocol = IPPROTO_UDP,
+ .pr_flags = PR_ATOMIC | PR_ADDR | PR_PROTOLOCK | PR_PCBLOCK |
+ PR_EVCONNINFO | PR_PRECONN_WRITE,
+ .pr_input = udp6_input,
+ .pr_ctlinput = udp6_ctlinput,
+ .pr_ctloutput = ip6_ctloutput,
+#if !INET /* don't call initialization twice */
+ .pr_init = udp_init,
+#endif /* !INET */
+ .pr_usrreqs = &udp6_usrreqs,
+ .pr_lock = udp_lock,
+ .pr_unlock = udp_unlock,
+ .pr_getlock = udp_getlock,
+ .pr_update_last_owner = inp_update_last_owner,
+ .pr_copy_last_owner = inp_copy_last_owner,
+ },
+ {
+ .pr_type = SOCK_STREAM,
+ .pr_protocol = IPPROTO_TCP,
+ .pr_flags = PR_CONNREQUIRED | PR_WANTRCVD | PR_PCBLOCK |
+ PR_PROTOLOCK | PR_DISPOSE | PR_EVCONNINFO |
+ PR_PRECONN_WRITE | PR_DATA_IDEMPOTENT,
+ .pr_input = tcp6_input,
+ .pr_ctlinput = tcp6_ctlinput,
+ .pr_ctloutput = tcp_ctloutput,
+#if !INET /* don't call initialization and timeout routines twice */
+ .pr_init = tcp_init,
+#endif /* !INET */
+ .pr_drain = tcp_drain,
+ .pr_usrreqs = &tcp6_usrreqs,
+ .pr_lock = tcp_lock,
+ .pr_unlock = tcp_unlock,
+ .pr_getlock = tcp_getlock,
+ .pr_update_last_owner = inp_update_last_owner,
+ .pr_copy_last_owner = inp_copy_last_owner,
+ },
+ {
+ .pr_type = SOCK_RAW,
+ .pr_protocol = IPPROTO_RAW,
+ .pr_flags = PR_ATOMIC | PR_ADDR,
+ .pr_input = rip6_input,
+ .pr_output = rip6_pr_output,
+ .pr_ctlinput = rip6_ctlinput,
+ .pr_ctloutput = rip6_ctloutput,
+#if !INET /* don't call initialization and timeout routines twice */
+ .pr_init = rip_init,
+#endif /* !INET */
+ .pr_usrreqs = &rip6_usrreqs,
+ .pr_unlock = rip_unlock,
+ .pr_update_last_owner = inp_update_last_owner,
+ .pr_copy_last_owner = inp_copy_last_owner,
+ },
+ {
+ .pr_type = SOCK_RAW,
+ .pr_protocol = IPPROTO_ICMPV6,
+ .pr_flags = PR_ATOMIC | PR_ADDR | PR_LASTHDR,
+ .pr_input = icmp6_input,
+ .pr_output = rip6_pr_output,
+ .pr_ctlinput = rip6_ctlinput,
+ .pr_ctloutput = rip6_ctloutput,
+ .pr_init = icmp6_init,
+ .pr_usrreqs = &rip6_usrreqs,
+ .pr_unlock = rip_unlock,
+ .pr_update_last_owner = inp_update_last_owner,
+ .pr_copy_last_owner = inp_copy_last_owner,
+ },
+ {
+ .pr_type = SOCK_DGRAM,
+ .pr_protocol = IPPROTO_ICMPV6,
+ .pr_flags = PR_ATOMIC | PR_ADDR | PR_LASTHDR,
+ .pr_input = icmp6_input,
+ .pr_output = rip6_pr_output,
+ .pr_ctlinput = rip6_ctlinput,
+ .pr_ctloutput = icmp6_dgram_ctloutput,
+ .pr_init = icmp6_init,
+ .pr_usrreqs = &icmp6_dgram_usrreqs,
+ .pr_unlock = rip_unlock,
+ .pr_update_last_owner = inp_update_last_owner,
+ .pr_copy_last_owner = inp_copy_last_owner,
+ },
+ {
+ .pr_type = SOCK_RAW,
+ .pr_protocol = IPPROTO_DSTOPTS,
+ .pr_flags = PR_ATOMIC | PR_ADDR,
+ .pr_input = dest6_input,
+ .pr_usrreqs = &nousrreqs,
+ },
+ {
+ .pr_type = SOCK_RAW,
+ .pr_protocol = IPPROTO_ROUTING,
+ .pr_flags = PR_ATOMIC | PR_ADDR,
+ .pr_input = route6_input,
+ .pr_usrreqs = &nousrreqs,
+ },
+ {
+ .pr_type = SOCK_RAW,
+ .pr_protocol = IPPROTO_FRAGMENT,
+ .pr_flags = PR_ATOMIC | PR_ADDR | PR_PROTOLOCK,
+ .pr_input = frag6_input,
+ .pr_usrreqs = &nousrreqs,
+ },