Module Name: src Committed By: riastradh Date: Thu Jan 21 15:41:30 UTC 2016
Modified Files: src/sys/net: if.c link_proto.c rtsock.c src/sys/netatalk: at_proto.c src/sys/netbt: bt_proto.c src/sys/netinet: if_arp.c in_proto.c in_proto.h ip_icmp.c ip_input.c raw_ip.c src/sys/netinet6: icmp6.c in6_proto.c ip6protosw.h sctp6_usrreq.c src/sys/netipsec: ipsec_input.c Log Message: Revert previous: ran cvs commit when I meant cvs diff. Sorry! Hit up-arrow one too few times. To generate a diff of this commit: cvs rdiff -u -r1.321 -r1.322 src/sys/net/if.c cvs rdiff -u -r1.29 -r1.30 src/sys/net/link_proto.c cvs rdiff -u -r1.176 -r1.177 src/sys/net/rtsock.c cvs rdiff -u -r1.20 -r1.21 src/sys/netatalk/at_proto.c cvs rdiff -u -r1.15 -r1.16 src/sys/netbt/bt_proto.c cvs rdiff -u -r1.201 -r1.202 src/sys/netinet/if_arp.c cvs rdiff -u -r1.117 -r1.118 src/sys/netinet/in_proto.c cvs rdiff -u -r1.3 -r1.4 src/sys/netinet/in_proto.h cvs rdiff -u -r1.143 -r1.144 src/sys/netinet/ip_icmp.c cvs rdiff -u -r1.327 -r1.328 src/sys/netinet/ip_input.c cvs rdiff -u -r1.155 -r1.156 src/sys/netinet/raw_ip.c cvs rdiff -u -r1.178 -r1.179 src/sys/netinet6/icmp6.c cvs rdiff -u -r1.109 -r1.110 src/sys/netinet6/in6_proto.c cvs rdiff -u -r1.24 -r1.25 src/sys/netinet6/ip6protosw.h cvs rdiff -u -r1.2 -r1.3 src/sys/netinet6/sctp6_usrreq.c cvs rdiff -u -r1.34 -r1.35 src/sys/netipsec/ipsec_input.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/if.c diff -u src/sys/net/if.c:1.321 src/sys/net/if.c:1.322 --- src/sys/net/if.c:1.321 Thu Jan 21 15:27:48 2016 +++ src/sys/net/if.c Thu Jan 21 15:41:29 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: if.c,v 1.321 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: if.c,v 1.322 2016/01/21 15:41:29 riastradh Exp $ */ /*- * Copyright (c) 1999, 2000, 2001, 2008 The NetBSD Foundation, Inc. @@ -90,7 +90,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.321 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.322 2016/01/21 15:41:29 riastradh Exp $"); #if defined(_KERNEL_OPT) #include "opt_inet.h" @@ -745,8 +745,7 @@ if_detach(struct ifnet *ifp) #endif struct domain *dp; const struct protosw *pr; - size_t i; - int s, family, purged; + int s, i, family, purged; uint64_t xc; /* @@ -829,9 +828,8 @@ again: * ifp->if_addrlist. */ purged = 0; - for (i = 0; i < dp->dom_nprotosw; i++) { - pr = dp->dom_protosw[i]; - KASSERT(pr != NULL); + for (pr = dp->dom_protosw; + pr < dp->dom_protoswNPROTOSW; pr++) { so.so_proto = pr; if (pr->pr_usrreqs) { (void) (*pr->pr_usrreqs->pr_purgeif)(&so, ifp); Index: src/sys/net/link_proto.c diff -u src/sys/net/link_proto.c:1.29 src/sys/net/link_proto.c:1.30 --- src/sys/net/link_proto.c:1.29 Thu Jan 21 15:27:48 2016 +++ src/sys/net/link_proto.c Thu Jan 21 15:41:29 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: link_proto.c,v 1.29 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: link_proto.c,v 1.30 2016/01/21 15:41:29 riastradh Exp $ */ /*- * Copyright (c) 1982, 1986, 1993 @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: link_proto.c,v 1.29 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: link_proto.c,v 1.30 2016/01/21 15:41:29 riastradh Exp $"); #include <sys/param.h> #include <sys/socket.h> @@ -98,7 +98,7 @@ static const struct pr_usrreqs link_usrr .pr_purgeif = link_purgeif, }; -const struct protosw *const linksw[] = { +const struct protosw linksw[] = { { .pr_type = SOCK_DGRAM, .pr_domain = &linkdomain, .pr_protocol = 0, /* XXX */ @@ -117,7 +117,7 @@ struct domain linkdomain = { .dom_externalize = NULL, .dom_dispose = NULL, .dom_protosw = linksw, - .dom_nprotosw = __arraycount(linksw), + .dom_protoswNPROTOSW = &linksw[__arraycount(linksw)], .dom_sockaddr_cmp = sockaddr_dl_cmp }; Index: src/sys/net/rtsock.c diff -u src/sys/net/rtsock.c:1.176 src/sys/net/rtsock.c:1.177 --- src/sys/net/rtsock.c:1.176 Thu Jan 21 15:27:48 2016 +++ src/sys/net/rtsock.c Thu Jan 21 15:41:29 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: rtsock.c,v 1.176 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: rtsock.c,v 1.177 2016/01/21 15:41:29 riastradh Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.176 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.177 2016/01/21 15:41:29 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1532,7 +1532,7 @@ static const struct pr_usrreqs route_usr .pr_purgeif = COMPATNAME(route_purgeif_wrapper), }; -static const struct protosw *const COMPATNAME(route_protosw)[] = { +static const struct protosw COMPATNAME(route_protosw)[] = { { .pr_type = SOCK_RAW, .pr_domain = &COMPATNAME(routedomain), @@ -1549,7 +1549,8 @@ struct domain COMPATNAME(routedomain) = .dom_name = DOMAINNAME, .dom_init = COMPATNAME(route_init), .dom_protosw = COMPATNAME(route_protosw), - .dom_nprotosw = __arraycount(COMPATNAME(route_protosw)), + .dom_protoswNPROTOSW = + &COMPATNAME(route_protosw)[__arraycount(COMPATNAME(route_protosw))], }; static void Index: src/sys/netatalk/at_proto.c diff -u src/sys/netatalk/at_proto.c:1.20 src/sys/netatalk/at_proto.c:1.21 --- src/sys/netatalk/at_proto.c:1.20 Thu Jan 21 15:27:48 2016 +++ src/sys/netatalk/at_proto.c Thu Jan 21 15:41:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: at_proto.c,v 1.20 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: at_proto.c,v 1.21 2016/01/21 15:41:30 riastradh Exp $ */ /* * Copyright (c) 1990,1991 Regents of The University of Michigan. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: at_proto.c,v 1.20 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: at_proto.c,v 1.21 2016/01/21 15:41:30 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -49,8 +49,8 @@ __KERNEL_RCSID(0, "$NetBSD: at_proto.c,v DOMAIN_DEFINE(atalkdomain); /* forward declare and add to link set */ -const struct protosw *const atalksw[] = { - &(const struct protosw) { +const struct protosw atalksw[] = { + { .pr_type = SOCK_DGRAM, .pr_domain = &atalkdomain, .pr_protocol = ATPROTO_DDP, @@ -67,7 +67,7 @@ struct domain atalkdomain = { .dom_externalize = NULL, .dom_dispose = NULL, .dom_protosw = atalksw, - .dom_nprotosw = __arraycount(atalksw), + .dom_protoswNPROTOSW = &atalksw[__arraycount(atalksw)], .dom_rtattach = rt_inithead, .dom_rtoffset = 32, .dom_maxrtkey = sizeof(struct sockaddr_at), Index: src/sys/netbt/bt_proto.c diff -u src/sys/netbt/bt_proto.c:1.15 src/sys/netbt/bt_proto.c:1.16 --- src/sys/netbt/bt_proto.c:1.15 Thu Jan 21 15:27:48 2016 +++ src/sys/netbt/bt_proto.c Thu Jan 21 15:41:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: bt_proto.c,v 1.15 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: bt_proto.c,v 1.16 2016/01/21 15:41:30 riastradh Exp $ */ /*- * Copyright (c) 2005 Iain Hibbert. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bt_proto.c,v 1.15 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bt_proto.c,v 1.16 2016/01/21 15:41:30 riastradh Exp $"); #include <sys/param.h> #include <sys/domain.h> @@ -62,8 +62,8 @@ PR_WRAP_CTLOUTPUT(rfcomm_ctloutput) #define l2cap_ctloutput l2cap_ctloutput_wrapper #define rfcomm_ctloutput rfcomm_ctloutput_wrapper -static const struct protosw *const btsw[] = { - &(const struct protosw) { /* raw HCI commands */ +static const struct protosw btsw[] = { + { /* raw HCI commands */ .pr_type = SOCK_RAW, .pr_domain = &btdomain, .pr_protocol = BTPROTO_HCI, @@ -72,7 +72,7 @@ static const struct protosw *const btsw[ .pr_ctloutput = hci_ctloutput, .pr_usrreqs = &hci_usrreqs, }, - &(const struct protosw) { /* HCI SCO data (audio) */ + { /* HCI SCO data (audio) */ .pr_type = SOCK_SEQPACKET, .pr_domain = &btdomain, .pr_protocol = BTPROTO_SCO, @@ -80,7 +80,7 @@ static const struct protosw *const btsw[ .pr_ctloutput = sco_ctloutput, .pr_usrreqs = &sco_usrreqs, }, - &(const struct protosw) { /* L2CAP Connection Oriented */ + { /* L2CAP Connection Oriented */ .pr_type = SOCK_SEQPACKET, .pr_domain = &btdomain, .pr_protocol = BTPROTO_L2CAP, @@ -89,7 +89,7 @@ static const struct protosw *const btsw[ .pr_usrreqs = &l2cap_usrreqs, .pr_init = l2cap_init, }, - &(const struct protosw) { /* RFCOMM */ + { /* RFCOMM */ .pr_type = SOCK_STREAM, .pr_domain = &btdomain, .pr_protocol = BTPROTO_RFCOMM, @@ -105,7 +105,7 @@ struct domain btdomain = { .dom_name = "bluetooth", .dom_init = bt_init, .dom_protosw = btsw, - .dom_nprotosw = __arraycount(btsw), + .dom_protoswNPROTOSW = &btsw[__arraycount(btsw)], }; kmutex_t *bt_lock; Index: src/sys/netinet/if_arp.c diff -u src/sys/netinet/if_arp.c:1.201 src/sys/netinet/if_arp.c:1.202 --- src/sys/netinet/if_arp.c:1.201 Thu Jan 21 15:27:48 2016 +++ src/sys/netinet/if_arp.c Thu Jan 21 15:41:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: if_arp.c,v 1.201 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: if_arp.c,v 1.202 2016/01/21 15:41:30 riastradh Exp $ */ /*- * Copyright (c) 1998, 2000, 2008 The NetBSD Foundation, Inc. @@ -68,7 +68,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.201 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.202 2016/01/21 15:41:30 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -264,9 +264,8 @@ arp_fasttimo(void) } } -const struct protosw *const arpsw[] = { - &(const struct protosw) { - .pr_type = 0, +const struct protosw arpsw[] = { + { .pr_type = 0, .pr_domain = &arpdomain, .pr_protocol = 0, .pr_flags = 0, @@ -285,7 +284,7 @@ struct domain arpdomain = { .dom_family = PF_ARP, .dom_name = "arp", .dom_protosw = arpsw, - .dom_nprotosw = __arraycount(arpsw), + .dom_protoswNPROTOSW = &arpsw[__arraycount(arpsw)], }; static void sysctl_net_inet_arp_setup(struct sysctllog **); Index: src/sys/netinet/in_proto.c diff -u src/sys/netinet/in_proto.c:1.117 src/sys/netinet/in_proto.c:1.118 --- src/sys/netinet/in_proto.c:1.117 Thu Jan 21 15:27:48 2016 +++ src/sys/netinet/in_proto.c Thu Jan 21 15:41:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: in_proto.c,v 1.117 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: in_proto.c,v 1.118 2016/01/21 15:41:30 riastradh Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: in_proto.c,v 1.117 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: in_proto.c,v 1.118 2016/01/21 15:41:30 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_mrouting.h" @@ -196,277 +196,214 @@ PR_WRAP_CTLINPUT(esp4_ctlinput) #define esp4_ctlinput esp4_ctlinput_wrapper #endif -const struct ipprotosw inetsw[] = { -{ - .ippr_protosw = { - .pr_domain = &inetdomain, +const struct protosw inetsw[] = { +{ .pr_domain = &inetdomain, .pr_init = ip_init, .pr_fasttimo = ip_fasttimo, .pr_slowtimo = ip_slowtimo, .pr_drain = ip_drainstub, - }, }, -{ - .ippr_protosw = { - .pr_type = SOCK_DGRAM, +{ .pr_type = SOCK_DGRAM, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_UDP, .pr_flags = PR_ATOMIC|PR_ADDR|PR_PURGEIF, + .pr_input = udp_input, .pr_ctlinput = udp_ctlinput, .pr_ctloutput = udp_ctloutput, .pr_usrreqs = &udp_usrreqs, .pr_init = udp_init, - }, - .ippr_input = udp_input, }, -{ - .ippr_protosw = { - .pr_type = SOCK_STREAM, +{ .pr_type = SOCK_STREAM, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_TCP, .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_LISTEN|PR_ABRTACPTDIS|PR_PURGEIF, + .pr_input = tcp_input, .pr_ctlinput = tcp_ctlinput, .pr_ctloutput = tcp_ctloutput, .pr_usrreqs = &tcp_usrreqs, .pr_init = tcp_init, .pr_fasttimo = tcp_fasttimo, .pr_drain = tcp_drainstub, - }, - .ippr_input = tcp_input, }, #ifdef DCCP -{ - .ippr_protosw = { - .pr_type = SOCK_CONN_DGRAM, +{ .pr_type = SOCK_CONN_DGRAM, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_DCCP, .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_ATOMIC|PR_LISTEN|PR_ABRTACPTDIS, + .pr_input = dccp_input, .pr_ctlinput = dccp_ctlinput, .pr_ctloutput = dccp_ctloutput, .pr_usrreqs = &dccp_usrreqs, .pr_init = dccp_init, - }, - .ippr_input = dccp_input, }, #endif #ifdef SCTP -{ - .ippr_protosw = { - .pr_type = SOCK_DGRAM, +{ .pr_type = SOCK_DGRAM, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_SCTP, .pr_flags = PR_ADDR_OPT|PR_WANTRCVD, + .pr_input = sctp_input, .pr_ctlinput = sctp_ctlinput, .pr_ctloutput = sctp_ctloutput, .pr_usrreqs = &sctp_usrreqs, .pr_init = sctp_init, .pr_drain = sctp_drain - }, - .ippr_input = sctp_input, }, -{ - .ippr_protosw = { - .pr_type = SOCK_SEQPACKET, +{ .pr_type = SOCK_SEQPACKET, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_SCTP, .pr_flags = PR_ADDR_OPT|PR_WANTRCVD, + .pr_input = sctp_input, .pr_ctlinput = sctp_ctlinput, .pr_ctloutput = sctp_ctloutput, .pr_usrreqs = &sctp_usrreqs, .pr_drain = sctp_drain - }, - .ippr_input = sctp_input, }, -{ - .ippr_protosw = { - .pr_type = SOCK_STREAM, +{ .pr_type = SOCK_STREAM, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_SCTP, .pr_flags = PR_CONNREQUIRED|PR_ADDR_OPT|PR_WANTRCVD|PR_LISTEN, + .pr_input = sctp_input, .pr_ctlinput = sctp_ctlinput, .pr_ctloutput = sctp_ctloutput, .pr_usrreqs = &sctp_usrreqs, .pr_drain = sctp_drain - }, - .ippr_input = sctp_input, }, #endif /* SCTP */ -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_RAW, .pr_flags = PR_ATOMIC|PR_ADDR|PR_PURGEIF, + .pr_input = rip_input, .pr_ctlinput = rip_ctlinput, .pr_ctloutput = rip_ctloutput, .pr_usrreqs = &rip_usrreqs, - }, - .ippr_input = rip_input, }, -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_ICMP, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = icmp_input, .pr_ctlinput = rip_ctlinput, .pr_ctloutput = rip_ctloutput, .pr_usrreqs = &rip_usrreqs, .pr_init = icmp_init, - }, - .ippr_input = icmp_input, }, #ifdef GATEWAY -{ - .ippr_protosw = { - .pr_domain = &inetdomain, +{ .pr_domain = &inetdomain, .pr_protocol = IPPROTO_IP, .pr_slowtimo = ipflow_slowtimo, .pr_init = ipflow_poolinit, - }, }, #endif /* GATEWAY */ #ifdef IPSEC -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_AH, .pr_flags = PR_ATOMIC|PR_ADDR, + .pr_input = ipsec4_common_input, .pr_ctlinput = ah4_ctlinput, - }, - .ippr_input = ipsec4_common_input, }, -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_ESP, .pr_flags = PR_ATOMIC|PR_ADDR, + .pr_input = ipsec4_common_input, .pr_ctlinput = esp4_ctlinput, - }, - .ippr_input = ipsec4_common_input, }, -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_IPCOMP, .pr_flags = PR_ATOMIC|PR_ADDR, - }, - .ippr_input = ipsec4_common_input, + .pr_input = ipsec4_common_input, }, #endif /* IPSEC */ -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_IPV4, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = encap4_input, .pr_ctlinput = rip_ctlinput, .pr_ctloutput = rip_ctloutput, .pr_usrreqs = &rip_usrreqs, .pr_init = encap_init, - }, - .ippr_input = encap4_input, }, #ifdef INET6 -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_IPV6, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = encap4_input, .pr_ctlinput = rip_ctlinput, .pr_ctloutput = rip_ctloutput, .pr_usrreqs = &rip_usrreqs, .pr_init = encap_init, - }, - .ippr_input = encap4_input, }, #endif /* INET6 */ #if NETHERIP > 0 -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_ETHERIP, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = ip_etherip_input, .pr_ctlinput = rip_ctlinput, .pr_ctloutput = rip_ctloutput, .pr_usrreqs = &rip_usrreqs, - }, - .ippr_inpput = ip_etherip_input, }, #endif /* NETHERIP > 0 */ #if NCARP > 0 -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_CARP, .pr_flags = PR_ATOMIC|PR_ADDR, + .pr_input = carp_proto_input, .pr_ctloutput = rip_ctloutput, .pr_usrreqs = &rip_usrreqs, .pr_init = carp_init, - }, - .ippr_input = carp_proto_input, }, #endif /* NCARP > 0 */ #if NPFSYNC > 0 -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_PFSYNC, .pr_flags = PR_ATOMIC|PR_ADDR, + .pr_input = pfsync_input, .pr_ctloutput = rip_ctloutput, .pr_usrreqs = &rip_usrreqs, - }, - .ippr_input = pfsync_input, }, #endif /* NPFSYNC > 0 */ -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_IGMP, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = igmp_input, .pr_ctloutput = rip_ctloutput, .pr_ctlinput = rip_ctlinput, .pr_usrreqs = &rip_usrreqs, .pr_fasttimo = igmp_fasttimo, .pr_slowtimo = igmp_slowtimo, .pr_init = igmp_init, - }, - .ippr_input = igmp_input, }, #ifdef PIM -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_protocol = IPPROTO_PIM, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = pim_input, .pr_ctloutput = rip_ctloutput, .pr_ctlinput = rip_ctlinput, .pr_usrreqs = &rip_usrreqs, - }, - .ippr_input = pim_input, }, #endif /* PIM */ /* raw wildcard */ -{ - .ippr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inetdomain, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = rip_input, .pr_ctloutput = rip_ctloutput, .pr_ctlinput = rip_ctlinput, .pr_usrreqs = &rip_usrreqs, .pr_init = rip_init, - }, - .ippr_input = rip_input, }, }; @@ -477,13 +414,11 @@ const struct sockaddr_in in_any = { , .sin_addr = {.s_addr = 0 /* INADDR_ANY */} }; -static const struct protosw *inetprotosw[__arraycount(inetsw)]; - struct domain inetdomain = { .dom_family = PF_INET, .dom_name = "internet", .dom_init = NULL, .dom_externalize = NULL, .dom_dispose = NULL, - .dom_protosw = inetprotosw, - .dom_nprotosw = __arraycount(inetprotosw), + .dom_protosw = inetsw, + .dom_protoswNPROTOSW = &inetsw[__arraycount(inetsw)], .dom_rtattach = rt_inithead, .dom_rtoffset = 32, .dom_maxrtkey = sizeof(struct ip_pack4), Index: src/sys/netinet/in_proto.h diff -u src/sys/netinet/in_proto.h:1.3 src/sys/netinet/in_proto.h:1.4 --- src/sys/netinet/in_proto.h:1.3 Thu Jan 21 15:27:48 2016 +++ src/sys/netinet/in_proto.h Thu Jan 21 15:41:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: in_proto.h,v 1.3 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: in_proto.h,v 1.4 2016/01/21 15:41:30 riastradh Exp $ */ /* * Copyright (c) 1982, 1986, 1993 @@ -34,11 +34,6 @@ #ifndef _NETINET_IN_PROTO_H_ #define _NETINET_IN_PROTO_H_ -struct ipprotosw { - struct protosw ippr_protosw; - void (*ippr_input)(struct mbuf *, int, int); -}; - -extern const struct ipprotosw inetsw[]; +extern const struct protosw inetsw[]; #endif /* !_NETINET_IN_PROTO_H_ */ Index: src/sys/netinet/ip_icmp.c diff -u src/sys/netinet/ip_icmp.c:1.143 src/sys/netinet/ip_icmp.c:1.144 --- src/sys/netinet/ip_icmp.c:1.143 Thu Jan 21 15:27:48 2016 +++ src/sys/netinet/ip_icmp.c Thu Jan 21 15:41:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_icmp.c,v 1.143 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: ip_icmp.c,v 1.144 2016/01/21 15:41:30 riastradh Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -94,7 +94,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip_icmp.c,v 1.143 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_icmp.c,v 1.144 2016/01/21 15:41:30 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_ipsec.h" @@ -395,7 +395,6 @@ icmp_input(struct mbuf *m, ...) void *(*ctlfunc)(int, const struct sockaddr *, void *); int code; int hlen; - unsigned char protox; va_list ap; struct rtentry *rt; @@ -527,8 +526,7 @@ icmp_input(struct mbuf *m, ...) printf("deliver to protocol %d\n", icp->icmp_ip.ip_p); #endif icmpsrc.sin_addr = icp->icmp_ip.ip_dst; - protox = ip_protox[icp->icmp_ip.ip_p]; - ctlfunc = inetsw[protox].ippr_protosw.pr_ctlinput; + ctlfunc = inetsw[ip_protox[icp->icmp_ip.ip_p]].pr_ctlinput; if (ctlfunc) (void) (*ctlfunc)(code, sintosa(&icmpsrc), &icp->icmp_ip); Index: src/sys/netinet/ip_input.c diff -u src/sys/netinet/ip_input.c:1.327 src/sys/netinet/ip_input.c:1.328 --- src/sys/netinet/ip_input.c:1.327 Thu Jan 21 15:27:48 2016 +++ src/sys/netinet/ip_input.c Thu Jan 21 15:41:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_input.c,v 1.327 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: ip_input.c,v 1.328 2016/01/21 15:41:30 riastradh Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -91,7 +91,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.327 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.328 2016/01/21 15:41:30 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -301,33 +301,24 @@ void ip_init(void) { const struct protosw *pr; - const struct ipprotosw *ippr; - size_t i; in_init(); sysctl_net_inet_ip_setup(NULL); - for (i = 0; i < inetdomain.dom_nprotosw; i++) { - inetdomain.dom_protosw[i] = &inetsw[i].ippr_protosw; - } - pr = pffindproto(PF_INET, IPPROTO_RAW, SOCK_RAW); KASSERT(pr != NULL); - ippr = container_of(pr, struct ipprotosw, ippr_protosw); ip_pktq = pktq_create(IFQ_MAXLEN, ipintr, NULL); KASSERT(ip_pktq != NULL); - for (i = 0; i < IPPROTO_MAX; i++) { - ip_protox[i] = ippr - inetsw; + for (u_int i = 0; i < IPPROTO_MAX; i++) { + ip_protox[i] = pr - inetsw; } - for (i = 0; i < inetdomain.dom_nprotosw; i++) { - pr = inetdomain.dom_protosw[i]; - ippr = container_of(pr, struct ipprotosw, ippr_protosw); + for (pr = inetdomain.dom_protosw; + pr < inetdomain.dom_protoswNPROTOSW; pr++) if (pr->pr_domain->dom_family == PF_INET && pr->pr_protocol && pr->pr_protocol != IPPROTO_RAW) - ip_protox[pr->pr_protocol] = ippr - inetsw; - } + ip_protox[pr->pr_protocol] = pr - inetsw; ip_reass_init(); @@ -764,8 +755,7 @@ ours: * code - like UDP/TCP/raw IP. */ if (ipsec_used && - ((inetsw[ip_protox[ip->ip_p]].ippr_protosw.pr_flags & PR_LASTHDR) - != 0)) { + (inetsw[ip_protox[ip->ip_p]].pr_flags & PR_LASTHDR) != 0) { SOFTNET_LOCK(); if (ipsec4_input(m, 0) != 0) { SOFTNET_UNLOCK(); @@ -787,7 +777,7 @@ ours: const int off = hlen, nh = ip->ip_p; SOFTNET_LOCK(); - (*inetsw[ip_protox[nh]].ippr_input)(m, off, nh); + (*inetsw[ip_protox[nh]].pr_input)(m, off, nh); SOFTNET_UNLOCK(); return; bad: Index: src/sys/netinet/raw_ip.c diff -u src/sys/netinet/raw_ip.c:1.155 src/sys/netinet/raw_ip.c:1.156 --- src/sys/netinet/raw_ip.c:1.155 Thu Jan 21 15:27:48 2016 +++ src/sys/netinet/raw_ip.c Thu Jan 21 15:41:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: raw_ip.c,v 1.155 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: raw_ip.c,v 1.156 2016/01/21 15:41:30 riastradh Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -65,7 +65,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.155 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.156 2016/01/21 15:41:30 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -237,7 +237,7 @@ rip_input(struct mbuf *m, ...) #endif /*IPSEC*/ if (last != NULL) rip_sbappendaddr(last, ip, sintosa(&ripsrc), hlen, opts, m); - else if (inetsw[ip_protox[ip->ip_p]].ippr_input == rip_input) { + else if (inetsw[ip_protox[ip->ip_p]].pr_input == rip_input) { uint64_t *ips; icmp_error(m, ICMP_UNREACH, ICMP_UNREACH_PROTOCOL, Index: src/sys/netinet6/icmp6.c diff -u src/sys/netinet6/icmp6.c:1.178 src/sys/netinet6/icmp6.c:1.179 --- src/sys/netinet6/icmp6.c:1.178 Thu Jan 21 15:27:48 2016 +++ src/sys/netinet6/icmp6.c Thu Jan 21 15:41:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: icmp6.c,v 1.178 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: icmp6.c,v 1.179 2016/01/21 15:41:30 riastradh Exp $ */ /* $KAME: icmp6.c,v 1.217 2001/06/20 15:03:29 jinmei Exp $ */ /* @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: icmp6.c,v 1.178 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: icmp6.c,v 1.179 2016/01/21 15:41:30 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1060,7 +1060,8 @@ icmp6_notify_error(struct mbuf *m, int o ip6cp.ip6c_cmdarg = (void *)¬ifymtu; } - ctlfunc = (inet6sw[ip6_protox[nxt]].ip6pr_protosw.pr_ctlinput); + ctlfunc = (void (*)(int, struct sockaddr *, void *)) + (inet6sw[ip6_protox[nxt]].pr_ctlinput); if (ctlfunc) { (void) (*ctlfunc)(code, (struct sockaddr *)&icmp6dst, &ip6cp); Index: src/sys/netinet6/in6_proto.c diff -u src/sys/netinet6/in6_proto.c:1.109 src/sys/netinet6/in6_proto.c:1.110 --- src/sys/netinet6/in6_proto.c:1.109 Thu Jan 21 15:27:48 2016 +++ src/sys/netinet6/in6_proto.c Thu Jan 21 15:41:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: in6_proto.c,v 1.109 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: in6_proto.c,v 1.110 2016/01/21 15:41:30 riastradh Exp $ */ /* $KAME: in6_proto.c,v 1.66 2000/10/10 15:35:47 itojun Exp $ */ /* @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: in6_proto.c,v 1.109 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: in6_proto.c,v 1.110 2016/01/21 15:41:30 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_gateway.h" @@ -210,271 +210,205 @@ tcp6_init(void) } const struct ip6protosw inet6sw[] = { -{ - .ip6pr_protosw = { - .pr_domain = &inet6domain, +{ .pr_domain = &inet6domain, .pr_protocol = IPPROTO_IPV6, .pr_init = ip6_init, .pr_fasttimo = frag6_fasttimo, .pr_slowtimo = frag6_slowtimo, .pr_drain = frag6_drainstub, - }, }, -{ - .ip6pr_protosw = { - .pr_type = SOCK_DGRAM, +{ .pr_type = SOCK_DGRAM, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_UDP, .pr_flags = PR_ATOMIC|PR_ADDR|PR_PURGEIF, + .pr_input = udp6_input, .pr_ctlinput = udp6_ctlinput, .pr_ctloutput = udp6_ctloutput, .pr_usrreqs = &udp6_usrreqs, .pr_init = udp6_init, - }, - .ip6pr_input = udp6_input, }, -{ - .ip6pr_protosw = { - .pr_type = SOCK_STREAM, +{ .pr_type = SOCK_STREAM, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_TCP, .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_LISTEN|PR_ABRTACPTDIS|PR_PURGEIF, + .pr_input = tcp6_input, .pr_ctlinput = tcp6_ctlinput, .pr_ctloutput = tcp_ctloutput, .pr_usrreqs = &tcp_usrreqs, .pr_init = tcp6_init, .pr_fasttimo = tcp_fasttimo, .pr_drain = tcp_drainstub, - }, - .ip6pr_input = tcp6_input, }, #ifdef DCCP -{ - .ip6pr_protosw = { - .pr_type = SOCK_CONN_DGRAM, +{ .pr_type = SOCK_CONN_DGRAM, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_DCCP, .pr_flags = PR_CONNREQUIRED|PR_ATOMIC|PR_LISTEN, + .pr_input = dccp6_input, .pr_ctlinput = dccp6_ctlinput, .pr_ctloutput = dccp_ctloutput, .pr_usrreqs = &dccp6_usrreqs, #ifndef INET .pr_init = dccp_init, #endif - }, - .ip6pr_input = dccp6_input, }, #endif /* DCCP */ #ifdef SCTP -{ - .ip6pr_protosw = { - .pr_type = SOCK_DGRAM, +{ .pr_type = SOCK_DGRAM, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_SCTP, .pr_flags = PR_ADDR_OPT|PR_WANTRCVD, + .pr_input = sctp6_input, .pr_ctlinput = sctp6_ctlinput, .pr_ctloutput = sctp_ctloutput, .pr_usrreqs = &sctp6_usrreqs, .pr_drain = sctp_drain, - }, - .ip6pr_input = sctp6_input, }, -{ - .ip6pr_protosw = { - .pr_type = SOCK_SEQPACKET, +{ .pr_type = SOCK_SEQPACKET, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_SCTP, .pr_flags = PR_ADDR_OPT|PR_WANTRCVD, + .pr_input = sctp6_input, .pr_ctlinput = sctp6_ctlinput, .pr_ctloutput = sctp_ctloutput, .pr_drain = sctp_drain, - }, - .ip6pr_input = sctp6_input, }, -{ - .ip6pr_protosw = { - .pr_type = SOCK_STREAM, +{ .pr_type = SOCK_STREAM, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_SCTP, .pr_flags = PR_CONNREQUIRED|PR_ADDR_OPT|PR_WANTRCVD|PR_LISTEN, + .pr_input = sctp6_input, .pr_ctlinput = sctp6_ctlinput, .pr_ctloutput = sctp_ctloutput, .pr_drain = sctp_drain, - }, - .ip6pr_input = sctp6_input, }, #endif /* SCTP */ -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_RAW, .pr_flags = PR_ATOMIC|PR_ADDR|PR_PURGEIF, + .pr_input = rip6_input, .pr_ctlinput = rip6_ctlinput, .pr_ctloutput = rip6_ctloutput, .pr_usrreqs = &rip6_usrreqs, - }, - .ip6pr_input = rip6_input, }, #ifdef GATEWAY -{ - .ip6pr_protosw = { - .pr_domain = &inet6domain, +{ .pr_domain = &inet6domain, .pr_protocol = IPPROTO_IPV6, .pr_slowtimo = ip6flow_slowtimo, .pr_init = ip6flow_poolinit, - }, }, #endif /* GATEWAY */ -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_ICMPV6, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = icmp6_input, .pr_ctlinput = rip6_ctlinput, .pr_ctloutput = icmp6_ctloutput, .pr_usrreqs = &rip6_usrreqs, .pr_init = icmp6_init, - }, - .ip6pr_input = icmp6_input, }, -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_DSTOPTS, .pr_flags = PR_ATOMIC|PR_ADDR, - }, - .ip6pr_input = dest6_input, + .pr_input = dest6_input, }, -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_ROUTING, .pr_flags = PR_ATOMIC|PR_ADDR, - }, - .ip6pr_input = route6_input, + .pr_input = route6_input, }, -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_FRAGMENT, .pr_flags = PR_ATOMIC|PR_ADDR, - }, - .ip6pr_input = frag6_input, + .pr_input = frag6_input, }, #ifdef IPSEC -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_AH, .pr_flags = PR_ATOMIC|PR_ADDR, + .pr_input = ipsec6_common_input, .pr_ctlinput = ah6_ctlinput, - }, - .ip6pr_input = ipsec6_common_input, }, -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_ESP, .pr_flags = PR_ATOMIC|PR_ADDR, + .pr_input = ipsec6_common_input, .pr_ctlinput = esp6_ctlinput, - }, - .ip6pr_input = ipsec6_common_input, }, -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_IPCOMP, .pr_flags = PR_ATOMIC|PR_ADDR, - }, - .ip6pr_input = ipsec6_common_input, + .pr_input = ipsec6_common_input, }, #endif /* IPSEC */ #ifdef INET -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_IPV4, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = encap6_input, .pr_ctlinput = encap6_ctlinput, .pr_ctloutput = rip6_ctloutput, .pr_usrreqs = &rip6_usrreqs, .pr_init = encap_init, - }, - .ip6pr_input = encap6_input, }, #endif -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_IPV6, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = encap6_input, .pr_ctlinput = encap6_ctlinput, .pr_ctloutput = rip6_ctloutput, .pr_usrreqs = &rip6_usrreqs, .pr_init = encap_init, - }, - .ip6pr_input = encap6_input, }, #if NETHERIP > 0 -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_ETHERIP, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = ip6_etherip_input, .pr_ctlinput = rip6_ctlinput, .pr_ctloutput = rip6_ctloutput, .pr_usrreqs = &rip6_usrreqs, - }, - .ip6pr_input = ip6_etherip_input, }, #endif #if NCARP > 0 -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_CARP, .pr_flags = PR_ATOMIC|PR_ADDR, + .pr_input = carp6_proto_input, .pr_ctloutput = rip6_ctloutput, .pr_usrreqs = &rip6_usrreqs, - }, - .ip6pr_input = carp6_proto_input, }, #endif /* NCARP */ -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_protocol = IPPROTO_PIM, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = pim6_input, .pr_ctloutput = rip6_ctloutput, .pr_usrreqs = &rip6_usrreqs, .pr_init = pim6_init, - }, - .ip6pr_input = pim6_input, }, /* raw wildcard */ -{ - .ip6pr_protosw = { - .pr_type = SOCK_RAW, +{ .pr_type = SOCK_RAW, .pr_domain = &inet6domain, .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, + .pr_input = rip6_input, .pr_ctloutput = rip6_ctloutput, .pr_usrreqs = &rip6_usrreqs, .pr_init = rip6_init, - }, - .ip6pr_input = rip6_input, }, }; Index: src/sys/netinet6/ip6protosw.h diff -u src/sys/netinet6/ip6protosw.h:1.24 src/sys/netinet6/ip6protosw.h:1.25 --- src/sys/netinet6/ip6protosw.h:1.24 Thu Jan 21 15:27:48 2016 +++ src/sys/netinet6/ip6protosw.h Thu Jan 21 15:41:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6protosw.h,v 1.24 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: ip6protosw.h,v 1.25 2016/01/21 15:41:30 riastradh Exp $ */ /* $KAME: ip6protosw.h,v 1.22 2001/02/08 18:02:08 itojun Exp $ */ /* @@ -112,8 +112,32 @@ struct ip6ctlparam { }; struct ip6protosw { - struct protosw ip6pr_protosw; - int (*ip6pr_input)(struct mbuf **, int *, int); + int pr_type; /* socket type used for */ + struct domain *pr_domain; /* domain protocol a member of */ + short pr_protocol; /* protocol number */ + short pr_flags; /* see below */ + +/* protocol-protocol hooks */ + int (*pr_input) /* input to protocol (from below) */ + (struct mbuf **, int *, int); + void *(*pr_ctlinput) /* control input (from below) */ + (int, const struct sockaddr *, void *); + int (*pr_ctloutput) /* control output (from above) */ + (int, struct socket *, struct sockopt *); + +/* user-protocol hook */ + const struct pr_usrreqs *pr_usrreqs; + +/* utility hooks */ + void (*pr_init) /* initialization hook */ + (void); + + void (*pr_fasttimo) /* fast timeout (200ms) */ + (void); + void (*pr_slowtimo) /* slow timeout (500ms) */ + (void); + void (*pr_drain) /* flush any excess space possible */ + (void); }; extern const struct ip6protosw inet6sw[]; Index: src/sys/netinet6/sctp6_usrreq.c diff -u src/sys/netinet6/sctp6_usrreq.c:1.2 src/sys/netinet6/sctp6_usrreq.c:1.3 --- src/sys/netinet6/sctp6_usrreq.c:1.2 Thu Jan 21 15:27:48 2016 +++ src/sys/netinet6/sctp6_usrreq.c Thu Jan 21 15:41:30 2016 @@ -1,5 +1,5 @@ /* $KAME: sctp6_usrreq.c,v 1.38 2005/08/24 08:08:56 suz Exp $ */ -/* $NetBSD: sctp6_usrreq.c,v 1.2 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: sctp6_usrreq.c,v 1.3 2016/01/21 15:41:30 riastradh Exp $ */ /* * Copyright (c) 2001, 2002, 2003, 2004 Cisco Systems, Inc. @@ -33,7 +33,7 @@ * SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sctp6_usrreq.c,v 1.2 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sctp6_usrreq.c,v 1.3 2016/01/21 15:41:30 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -94,6 +94,8 @@ __KERNEL_RCSID(0, "$NetBSD: sctp6_usrreq #include <net/net_osdep.h> +extern struct protosw inetsw[]; + #if defined(HAVE_NRL_INPCB) || defined(__FreeBSD__) #ifndef in6pcb #define in6pcb inpcb Index: src/sys/netipsec/ipsec_input.c diff -u src/sys/netipsec/ipsec_input.c:1.34 src/sys/netipsec/ipsec_input.c:1.35 --- src/sys/netipsec/ipsec_input.c:1.34 Thu Jan 21 15:27:48 2016 +++ src/sys/netipsec/ipsec_input.c Thu Jan 21 15:41:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: ipsec_input.c,v 1.34 2016/01/21 15:27:48 riastradh Exp $ */ +/* $NetBSD: ipsec_input.c,v 1.35 2016/01/21 15:41:30 riastradh Exp $ */ /* $FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/netipsec/ipsec_input.c,v 1.2.4.2 2003/03/28 20:32:53 sam Exp $ */ /* $OpenBSD: ipsec_input.c,v 1.63 2003/02/20 18:35:43 deraadt Exp $ */ @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ipsec_input.c,v 1.34 2016/01/21 15:27:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ipsec_input.c,v 1.35 2016/01/21 15:41:30 riastradh Exp $"); /* * IPsec input processing. @@ -431,12 +431,12 @@ ipsec4_common_input_cb(struct mbuf *m, s key_sa_recordxfer(sav, m); /* record data transfer */ - if ((inetsw[ip_protox[prot]].ippr_proto.pr_flags & PR_LASTHDR) != 0 && + if ((inetsw[ip_protox[prot]].pr_flags & PR_LASTHDR) != 0 && ipsec4_in_reject(m, NULL)) { error = EINVAL; goto bad; } - (*inetsw[ip_protox[prot]].ippr_input)(m, skip, prot); + (*inetsw[ip_protox[prot]].pr_input)(m, skip, prot); return 0; bad: m_freem(m);