On 20/02/17(Mon) 22:30, Mark Kettenis wrote:
> David Hill schreef op 2017-02-19 03:22:
> > Hello -
> > 
> > This moves the 'struct protosw' declarations to use C99 initializers.
> > Requested by mpi@
> 
> With C99 initializers it is no longer necessary to explicitly
> initialize zero-initialized members (such as null-pointers).
> That could reduce the diff considerably and perhaps make it
> more swallowable for folks.

Yes please.  Since the goal is to reduce the number of "pr_*"
occurrences not having the NULL lines would help even more.

> > Index: kern/uipc_proto.c
> > ===================================================================
> > RCS file: /cvs/src/sys/kern/uipc_proto.c,v
> > retrieving revision 1.11
> > diff -u -p -r1.11 uipc_proto.c
> > --- kern/uipc_proto.c       5 Feb 2017 07:57:08 -0000       1.11
> > +++ kern/uipc_proto.c       19 Feb 2017 02:15:00 -0000
> > @@ -49,20 +49,53 @@
> >  extern     struct domain unixdomain;               /* or at least forward 
> > */
> > 
> >  struct protosw unixsw[] = {
> > -{
> > SOCK_STREAM,        &unixdomain,    PF_LOCAL,       
> > PR_CONNREQUIRED|PR_WANTRCVD|PR_RIGHTS,
> > -  0,               0,              0,              0,
> > -  uipc_usrreq,
> > -  0,               0,              0,              0,
> > +{
> > +  .pr_type = SOCK_STREAM,
> > +  .pr_domain       = &unixdomain,
> > +  .pr_protocol  = PF_LOCAL,
> > +  .pr_flags        = PR_CONNREQUIRED|PR_WANTRCVD|PR_RIGHTS,
> > +  .pr_input        = NULL,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = NULL,
> > +  .pr_usrreq       = uipc_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> >  },
> > -{
> > SOCK_SEQPACKET,&unixdomain, PF_LOCAL,       
> > PR_ATOMIC|PR_CONNREQUIRED|PR_WANTRCVD|PR_RIGHTS,
> > -  0,               0,              0,              0,
> > -  uipc_usrreq,
> > -  0,               0,              0,              0,
> > +{
> > +  .pr_type = SOCK_SEQPACKET,
> > +  .pr_domain       = &unixdomain,
> > +  .pr_protocol     = PF_LOCAL,
> > +  .pr_flags        = PR_ATOMIC|PR_CONNREQUIRED|PR_WANTRCVD|PR_RIGHTS,
> > +  .pr_input        = NULL,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = NULL,
> > +  .pr_usrreq       = uipc_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> >  },
> > -{ SOCK_DGRAM,      &unixdomain,    PF_LOCAL,       
> > PR_ATOMIC|PR_ADDR|PR_RIGHTS,
> > -  0,               0,              0,              0,
> > -  uipc_usrreq,
> > -  0,               0,              0,              0,
> > +{
> > +  .pr_type = SOCK_DGRAM,
> > +  .pr_domain       = &unixdomain,
> > +  .pr_protocol     = PF_LOCAL,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR|PR_RIGHTS,
> > +  .pr_input        = NULL,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = NULL,
> > +  .pr_usrreq       = uipc_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> >  }
> >  };
> > 
> > Index: net/pfkey.c
> > ===================================================================
> > RCS file: /cvs/src/sys/net/pfkey.c,v
> > retrieving revision 1.36
> > diff -u -p -r1.36 pfkey.c
> > --- net/pfkey.c     24 Jan 2017 10:08:30 -0000      1.36
> > +++ net/pfkey.c     19 Feb 2017 02:15:00 -0000
> > @@ -266,20 +266,20 @@ struct domain pfkeydomain = {
> >  };
> > 
> >  static struct protosw pfkey_protosw_template = {
> > -   SOCK_RAW,
> > -   &pfkeydomain,
> > -   -1, /* protocol */
> > -   PR_ATOMIC | PR_ADDR,
> > -   NULL, /* input */
> > -   (void *) pfkey_output,
> > -   NULL, /* ctlinput */
> > -   NULL, /* ctloutput */
> > -   pfkey_usrreq,
> > -   NULL, /* init */
> > -   NULL, /* fasttimo */
> > -   NULL, /* slowtimo */
> > -   NULL, /* drain */
> > -   NULL    /* sysctl */
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &pfkeydomain,
> > +  .pr_protocol     = -1,
> > +  .pr_flags        = PR_ATOMIC | PR_ADDR,
> > +  .pr_input        = NULL,
> > +  .pr_output       = (void *) pfkey_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = NULL,
> > +  .pr_usrreq       = pfkey_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> >  };
> > 
> >  int
> > Index: net/rtsock.c
> > ===================================================================
> > RCS file: /cvs/src/sys/net/rtsock.c,v
> > retrieving revision 1.222
> > diff -u -p -r1.222 rtsock.c
> > --- net/rtsock.c    1 Feb 2017 20:59:47 -0000       1.222
> > +++ net/rtsock.c    19 Feb 2017 02:15:00 -0000
> > @@ -1654,13 +1654,23 @@ sysctl_rtable_rtstat(void *oldp, size_t
> >  extern     struct domain routedomain;              /* or at least forward 
> > */
> > 
> >  struct protosw routesw[] = {
> > -{ SOCK_RAW,        &routedomain,   0,              
> > PR_ATOMIC|PR_ADDR|PR_WANTRCVD,
> > -  0,               route_output,   0,              route_ctloutput,
> > -  route_usrreq,
> > -  raw_init,        0,              0,              0,
> > -  sysctl_rtable,
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &routedomain,
> > +  .pr_protocol     = 0,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR|PR_WANTRCVD,
> > +  .pr_input        = NULL,
> > +  .pr_output       = route_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = route_ctloutput,
> > +  .pr_usrreq       = route_usrreq,
> > +  .pr_init = raw_init,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = sysctl_rtable
> >  }
> > -};
> > +};
> > 
> >  struct domain routedomain =
> >      { PF_ROUTE, "route", route_init, 0, 0,
> > Index: netinet/in_proto.c
> > ===================================================================
> > RCS file: /cvs/src/sys/netinet/in_proto.c,v
> > retrieving revision 1.72
> > diff -u -p -r1.72 in_proto.c
> > --- netinet/in_proto.c      29 Jan 2017 19:58:47 -0000      1.72
> > +++ netinet/in_proto.c      19 Feb 2017 02:15:00 -0000
> > @@ -175,138 +175,380 @@
> >  u_char ip_protox[IPPROTO_MAX];
> > 
> >  struct protosw inetsw[] = {
> > -{ 0,               &inetdomain,    0,              0,
> > -  0,               0,              0,              0,
> > -  0,
> > -  ip_init, 0,              ip_slowtimo,    ip_drain,       ip_sysctl
> > -},
> > -{ SOCK_DGRAM,      &inetdomain,    IPPROTO_UDP,    
> > PR_ATOMIC|PR_ADDR|PR_SPLICE,
> > -  udp_input,       0,              udp_ctlinput,   ip_ctloutput,
> > -  udp_usrreq,
> > -  udp_init,        0,              0,              0,              
> > udp_sysctl
> > -},
> > -{
> > SOCK_STREAM,        &inetdomain,    IPPROTO_TCP,    
> > PR_CONNREQUIRED|PR_WANTRCVD|PR_ABRTACPTDIS|PR_SPLICE,
> > -  tcp_input,       0,              tcp_ctlinput,   tcp_ctloutput,
> > -  tcp_usrreq,
> > -  tcp_init,        0,              tcp_slowtimo,   0,              
> > tcp_sysctl
> > -},
> > -{ SOCK_RAW,        &inetdomain,    IPPROTO_RAW,    PR_ATOMIC|PR_ADDR,
> > -  rip_input,       rip_output,     0,              rip_ctloutput,
> > -  rip_usrreq,
> > -  0,               0,              0,              0,
> > -},
> > -{ SOCK_RAW,        &inetdomain,    IPPROTO_ICMP,   PR_ATOMIC|PR_ADDR,
> > -  icmp_input,      rip_output,     0,              rip_ctloutput,
> > -  rip_usrreq,
> > -  icmp_init,       0,              0,              0,              
> > icmp_sysctl
> > +{
> > +  .pr_type = 0,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = 0,
> > +  .pr_flags        = 0,
> > +  .pr_input        = NULL,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = NULL,
> > +  .pr_usrreq       = NULL,
> > +  .pr_init = ip_init,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = ip_slowtimo,
> > +  .pr_drain        = ip_drain,
> > +  .pr_sysctl       = ip_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_DGRAM,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_UDP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR|PR_SPLICE,
> > +  .pr_input        = udp_input,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = udp_ctlinput,
> > +  .pr_ctloutput    = ip_ctloutput,
> > +  .pr_usrreq       = udp_usrreq,
> > +  .pr_init = udp_init,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = udp_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_STREAM,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_TCP,
> > +  .pr_flags        = PR_CONNREQUIRED|PR_WANTRCVD|PR_ABRTACPTDIS|PR_SPLICE,
> > +  .pr_input        = tcp_input,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = tcp_ctlinput,
> > +  .pr_ctloutput    = tcp_ctloutput,
> > +  .pr_usrreq       = tcp_usrreq,
> > +  .pr_init = tcp_init,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = tcp_slowtimo,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = tcp_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_RAW,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = rip_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_ICMP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = icmp_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = icmp_init,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = icmp_sysctl
> >  },
> >  #if NGIF > 0
> > -{ SOCK_RAW,        &inetdomain,    IPPROTO_IPV4,   PR_ATOMIC|PR_ADDR,
> > -  in_gif_input,    rip_output,     0,              rip_ctloutput,
> > -  rip_usrreq,
> > -  0,               0,              0,              0,              
> > ipip_sysctl
> > -},
> > -{ SOCK_RAW,   &inetdomain,    IPPROTO_ETHERIP, PR_ATOMIC|PR_ADDR,
> > -  etherip_input,  rip_output, 0,              rip_ctloutput,
> > -  rip_usrreq,
> > -  0,          0,              0,              0,           etherip_sysctl
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_IPV4,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = in_gif_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = ipip_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_ETHERIP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = etherip_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = etherip_sysctl
> >  },
> >  #ifdef INET6
> > -{ SOCK_RAW,        &inetdomain,    IPPROTO_IPV6,   PR_ATOMIC|PR_ADDR,
> > -  in_gif_input,    rip_output,      0,             0,
> > -  rip_usrreq,      /*XXX*/
> > -  0,               0,              0,              0,
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_IPV6,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = in_gif_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = NULL,
> > +  .pr_usrreq       = rip_usrreq, /* XXX */
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> >  },
> >  #endif
> >  #ifdef MPLS
> > -{ SOCK_RAW,        &inetdomain,    IPPROTO_MPLS,   PR_ATOMIC|PR_ADDR,
> > -  etherip_input,  rip_output,       0,             0,
> > -  rip_usrreq,
> > -  0,               0,              0,              0,
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_MPLS,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = etherip_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = NULL,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> >  },
> >  #endif
> >  #else /* NGIF */
> > -{ SOCK_RAW,        &inetdomain,    IPPROTO_IPIP,   PR_ATOMIC|PR_ADDR,
> > -  ip4_input,       rip_output,     0,              rip_ctloutput,
> > -  rip_usrreq,
> > -  0,               0,              0,              0,              
> > ipip_sysctl
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_IPIP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = ip4_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = ipip_sysctl
> >  },
> >  #ifdef INET6
> > -{ SOCK_RAW,        &inetdomain,    IPPROTO_IPV6,   PR_ATOMIC|PR_ADDR,
> > -  ip4_input,       rip_output,     0,              rip_ctloutput,
> > -  rip_usrreq,      /*XXX*/
> > -  0,               0,              0,              0,
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_IPV6,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = ip4_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq, /* XXX */
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> >  },
> >  #endif
> >  #endif /*NGIF*/
> > -{ SOCK_RAW,        &inetdomain,    IPPROTO_IGMP,   PR_ATOMIC|PR_ADDR,
> > -  igmp_input,      rip_output,     0,              rip_ctloutput,
> > -  rip_usrreq,
> > -  igmp_init,       igmp_fasttimo,  igmp_slowtimo,  0,              
> > igmp_sysctl
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_IGMP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = igmp_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = igmp_init,
> > +  .pr_fasttimo     = igmp_fasttimo,
> > +  .pr_slowtimo     = igmp_slowtimo,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = igmp_sysctl
> >  },
> >  #ifdef IPSEC
> > -{ SOCK_RAW,   &inetdomain,    IPPROTO_AH,     PR_ATOMIC|PR_ADDR,
> > -  ah4_input,   rip_output,    ah4_ctlinput,   rip_ctloutput,
> > -  rip_usrreq,
> > -  0,          0,              0,              0,           ah_sysctl
> > -},
> > -{ SOCK_RAW,   &inetdomain,    IPPROTO_ESP,    PR_ATOMIC|PR_ADDR,
> > -  esp4_input,  rip_output,    esp4_ctlinput,  rip_ctloutput,
> > -  rip_usrreq,
> > -  0,          0,              0,              0,           esp_sysctl
> > -},
> > -{ SOCK_RAW,   &inetdomain,    IPPROTO_IPCOMP, PR_ATOMIC|PR_ADDR,
> > -  ipcomp4_input,  rip_output, 0,              rip_ctloutput,
> > -  rip_usrreq,
> > -  0,          0,              0,              0,
> > ipcomp_sysctl
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_AH,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = ah4_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = ah4_ctlinput,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = ah_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_ESP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = esp4_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = esp4_ctlinput,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = esp_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_IPCOMP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = ipcomp4_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = ipcomp_sysctl
> >  },
> >  #endif /* IPSEC */
> >  #if NGRE > 0
> > -{ SOCK_RAW,     &inetdomain,    IPPROTO_GRE,    PR_ATOMIC|PR_ADDR,
> > -  gre_input,    rip_output,     0,              rip_ctloutput,
> > -  gre_usrreq,
> > -  0,            0,              0,             0,          gre_sysctl
> > -},
> > -{ SOCK_RAW,     &inetdomain,    IPPROTO_MOBILE, PR_ATOMIC|PR_ADDR,
> > -  gre_mobile_input,     rip_output,     0,              rip_ctloutput,
> > -  rip_usrreq,
> > -  0,            0,              0,              0,         ipmobile_sysctl
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_GRE,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = gre_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = gre_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = gre_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_MOBILE,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = gre_mobile_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = ipmobile_sysctl
> >  },
> >  #endif /* NGRE > 0 */
> >  #if NCARP > 0
> > -{ SOCK_RAW,        &inetdomain,    IPPROTO_CARP,   PR_ATOMIC|PR_ADDR,
> > -  carp_proto_input,        rip_output,     0,              rip_ctloutput,
> > -  rip_usrreq,
> > -  0,               0,              0,              0,              
> > carp_sysctl
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_CARP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = carp_proto_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = carp_sysctl
> >  },
> >  #endif /* NCARP > 0 */
> >  #if NPFSYNC > 0
> > -{ SOCK_RAW,        &inetdomain,    IPPROTO_PFSYNC, PR_ATOMIC|PR_ADDR,
> > -  pfsync_input,    rip_output,     0,              rip_ctloutput,
> > -  rip_usrreq,
> > -  0,               0,              0,              0,              
> > pfsync_sysctl
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_PFSYNC,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = pfsync_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = pfsync_sysctl
> >  },
> >  #endif /* NPFSYNC > 0 */
> >  #if NPF > 0
> > -{ SOCK_RAW,        &inetdomain,    IPPROTO_DIVERT, PR_ATOMIC|PR_ADDR,
> > -  0,               0,              0,              rip_ctloutput,
> > -  divert_usrreq,
> > -  divert_init,     0,              0,              0,              
> > divert_sysctl
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_DIVERT,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = NULL,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = divert_usrreq,
> > +  .pr_init = divert_init,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = divert_sysctl
> >  },
> >  #endif /* NPF > 0 */
> >  #if NETHERIP > 0
> > -{ SOCK_RAW,   &inetdomain,    IPPROTO_ETHERIP, PR_ATOMIC|PR_ADDR,
> > -  ip_etherip_input,  rip_output, 0,              rip_ctloutput,
> > -  rip_usrreq,
> > -  0,          0,              0,              0,           
> > ip_etherip_sysctl
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = IPPROTO_ETHERIP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = ip_etherip_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = ip_etherip_sysctl
> >  },
> >  #endif /* NETHERIP */
> > -/* raw wildcard */
> > -{ SOCK_RAW,        &inetdomain,    0,              PR_ATOMIC|PR_ADDR,
> > -  rip_input,       rip_output,     0,              rip_ctloutput,
> > -  rip_usrreq,
> > -  rip_init,        0,              0,              0,
> > -},
> > +{
> > +  /* raw wildcard */
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inetdomain,
> > +  .pr_protocol     = 0,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = rip_input,
> > +  .pr_output       = rip_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip_ctloutput,
> > +  .pr_usrreq       = rip_usrreq,
> > +  .pr_init = rip_init,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> > +}
> >  };
> > 
> >  struct domain inetdomain =
> > Index: netinet6/in6_proto.c
> > ===================================================================
> > RCS file: /cvs/src/sys/netinet6/in6_proto.c,v
> > retrieving revision 1.88
> > diff -u -p -r1.88 in6_proto.c
> > --- netinet6/in6_proto.c    29 Jan 2017 19:58:47 -0000      1.88
> > +++ netinet6/in6_proto.c    19 Feb 2017 02:15:00 -0000
> > @@ -122,125 +122,338 @@
> >  u_char ip6_protox[IPPROTO_MAX];
> > 
> >  struct protosw inet6sw[] = {
> > -{ 0,               &inet6domain,   IPPROTO_IPV6,   0,
> > -  0,               0,              0,              0,
> > -  0,
> > -  ip6_init,        0,              frag6_slowtimo, frag6_drain,
> > -  ip6_sysctl,
> > -},
> > -{ SOCK_DGRAM,      &inet6domain,   IPPROTO_UDP,    
> > PR_ATOMIC|PR_ADDR|PR_SPLICE,
> > -  udp_input,       0,              udp6_ctlinput,  ip6_ctloutput,
> > -  udp_usrreq,      0,
> > -  0,               0,              0,
> > -  udp_sysctl,
> > -},
> > -{
> > SOCK_STREAM,        &inet6domain,   IPPROTO_TCP,    
> > PR_CONNREQUIRED|PR_WANTRCVD|PR_ABRTACPTDIS|PR_SPLICE,
> > -  tcp_input,       0,              tcp6_ctlinput,  tcp_ctloutput,
> > -  tcp_usrreq,
> > -  0,               0,              0,              0,
> > -  tcp_sysctl,
> > -},
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_RAW,    PR_ATOMIC|PR_ADDR,
> > -  rip6_input,      rip6_output,    rip6_ctlinput,  rip6_ctloutput,
> > -  rip6_usrreq,
> > -  0,               0,              0,              0,              
> > rip6_sysctl
> > -},
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_ICMPV6, PR_ATOMIC|PR_ADDR,
> > -  icmp6_input,     rip6_output,    rip6_ctlinput,  rip6_ctloutput,
> > -  rip6_usrreq,
> > -  icmp6_init,      icmp6_fasttimo, 0,              0,
> > -  icmp6_sysctl,
> > -},
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_DSTOPTS,PR_ATOMIC|PR_ADDR,
> > -  dest6_input,     0,              0,              0,
> > -  0,
> > -  0,               0,              0,              0,
> > -},
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_ROUTING,PR_ATOMIC|PR_ADDR,
> > -  route6_input,    0,              0,              0,
> > -  0,
> > -  0,               0,              0,              0,
> > -},
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_FRAGMENT,PR_ATOMIC|PR_ADDR,
> > -  frag6_input,     0,              0,              0,
> > -  0,
> > -  0,               0,              0,              0,
> > +{
> > +  .pr_type = 0,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_IPV6,
> > +  .pr_flags        = 0,
> > +  .pr_input        = NULL,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = NULL,
> > +  .pr_usrreq       = NULL,
> > +  .pr_init = ip6_init,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = frag6_slowtimo,
> > +  .pr_drain        = frag6_drain,
> > +  .pr_sysctl       = ip6_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_DGRAM,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_UDP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR|PR_SPLICE,
> > +  .pr_input        = udp_input,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = udp6_ctlinput,
> > +  .pr_ctloutput    = ip6_ctloutput,
> > +  .pr_usrreq       = udp_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = udp_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_STREAM,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_TCP,
> > +  .pr_flags        = PR_CONNREQUIRED|PR_WANTRCVD|PR_ABRTACPTDIS|PR_SPLICE,
> > +  .pr_input        = tcp_input,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = tcp6_ctlinput,
> > +  .pr_ctloutput    = tcp_ctloutput,
> > +  .pr_usrreq       = tcp_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = tcp_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_RAW,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = rip6_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = rip6_ctlinput,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = rip6_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_ICMPV6,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = icmp6_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = rip6_ctlinput,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,
> > +  .pr_init = icmp6_init,
> > +  .pr_fasttimo     = icmp6_fasttimo,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = icmp6_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_DSTOPTS,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = dest6_input,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = NULL,
> > +  .pr_usrreq       = NULL,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_ROUTING,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = route6_input,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = NULL,
> > +  .pr_usrreq       = NULL,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_FRAGMENT,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = frag6_input,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = NULL,
> > +  .pr_usrreq       = NULL,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> >  },
> >  #ifdef IPSEC
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_AH,     PR_ATOMIC|PR_ADDR,
> > -  ah6_input,       rip6_output,    0,              rip6_ctloutput,
> > -  rip6_usrreq,
> > -  0,               0,              0,              0,
> > -  ah_sysctl,
> > -},
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_ESP,    PR_ATOMIC|PR_ADDR,
> > -  esp6_input,      rip6_output,    0,              rip6_ctloutput,
> > -  rip6_usrreq,
> > -  0,               0,              0,              0,
> > -  esp_sysctl,
> > -},
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_IPCOMP, PR_ATOMIC|PR_ADDR,
> > -  ipcomp6_input, rip6_output,      0,              rip6_ctloutput,
> > -  rip6_usrreq,
> > -  0,               0,              0,              0,
> > -  ipcomp_sysctl,
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_AH,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = ah6_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = ah_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_ESP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = esp6_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = esp_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_IPCOMP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = ipcomp6_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = ipcomp_sysctl
> >  },
> >  #endif /* IPSEC */
> >  #if NGIF > 0
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_ETHERIP,PR_ATOMIC|PR_ADDR,
> > -  etherip_input, rip6_output,      0,              rip6_ctloutput,
> > -  rip6_usrreq,
> > -  0,               0,              0,              0,              
> > etherip_sysctl
> > -},
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_IPV6,   PR_ATOMIC|PR_ADDR,
> > -  in6_gif_input, rip6_output,      0,              rip6_ctloutput,
> > -  rip6_usrreq,     /* XXX */
> > -  0,               0,              0,              0,
> > -},
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_IPV4,   PR_ATOMIC|PR_ADDR,
> > -  in6_gif_input, rip6_output,      0,              rip6_ctloutput,
> > -  rip6_usrreq,     /* XXX */
> > -  0,               0,              0,              0,
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_ETHERIP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = etherip_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = etherip_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_IPV6,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = in6_gif_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,  /* XXX */
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_IPV4,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = in6_gif_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,  /* XXX */
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> >  },
> >  #else /* NGIF */
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_IPV6,   PR_ATOMIC|PR_ADDR,
> > -  ip4_input,       rip6_output,    0,              rip6_ctloutput,
> > -  rip6_usrreq,     /* XXX */
> > -  0,               0,              0,              0,              
> > ipip_sysctl
> > -},
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_IPV4,   PR_ATOMIC|PR_ADDR,
> > -  ip4_input,       rip6_output,    0,              rip6_ctloutput,
> > -  rip6_usrreq,     /* XXX */
> > -  0,               0,              0,              0,
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_IPV6,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = ip4_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,  /* XXX */
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = ipip_sysctl
> > +},
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_IPV4,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = ip4_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,  /* XXX */
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL,
> >  },
> >  #endif /* GIF */
> >  #if NCARP > 0
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_CARP,   PR_ATOMIC|PR_ADDR,
> > -  carp6_proto_input,       rip6_output,    0,      rip6_ctloutput,
> > -  rip6_usrreq,
> > -  0,               0,              0,              0,              
> > carp_sysctl
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_CARP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = carp6_proto_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = carp_sysctl
> >  },
> >  #endif /* NCARP */
> >  #if NPF > 0
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_DIVERT, PR_ATOMIC|PR_ADDR,
> > -  0,               0,              0,      rip6_ctloutput,
> > -  divert6_usrreq,
> > -  divert6_init,    0,              0,              0,              
> > divert6_sysctl
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_DIVERT,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = NULL,
> > +  .pr_output       = NULL,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = divert6_usrreq,
> > +  .pr_init = divert6_init,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = divert6_sysctl
> >  },
> >  #endif /* NPF > 0 */
> >  #if NETHERIP > 0
> > -{ SOCK_RAW,        &inet6domain,   IPPROTO_ETHERIP,PR_ATOMIC|PR_ADDR,
> > -  ip6_etherip_input, rip6_output,  0,              rip6_ctloutput,
> > -  rip6_usrreq,
> > -  0,               0,              0,              0,              
> > ip_etherip_sysctl
> > +{
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = IPPROTO_ETHERIP,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = ip6_etherip_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,
> > +  .pr_init = NULL,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = ip_etherip_sysctl
> >  },
> >  #endif /* NETHERIP */
> > -/* raw wildcard */
> > -{ SOCK_RAW,        &inet6domain,   0,              PR_ATOMIC|PR_ADDR,
> > -  rip6_input,      rip6_output,    0,              rip6_ctloutput,
> > -  rip6_usrreq,     rip6_init,
> > -  0,               0,              0,
> > -},
> > +{
> > +  /* raw wildcard */
> > +  .pr_type = SOCK_RAW,
> > +  .pr_domain       = &inet6domain,
> > +  .pr_protocol     = 0,
> > +  .pr_flags        = PR_ATOMIC|PR_ADDR,
> > +  .pr_input        = rip6_input,
> > +  .pr_output       = rip6_output,
> > +  .pr_ctlinput     = NULL,
> > +  .pr_ctloutput    = rip6_ctloutput,
> > +  .pr_usrreq       = rip6_usrreq,
> > +  .pr_init = rip6_init,
> > +  .pr_fasttimo     = NULL,
> > +  .pr_slowtimo     = NULL,
> > +  .pr_drain        = NULL,
> > +  .pr_sysctl       = NULL
> > +}
> >  };
> > 
> >  struct domain inet6domain =
> 

Reply via email to