inpcb: Add function to set inpcbinfo's portinfo.
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Fri, 14 Apr 2017 05:34:16 +0000 (13:34 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Fri, 14 Apr 2017 05:34:16 +0000 (13:34 +0800)
This unbreaks inpcbinfo.portinfo_mask -> inpcbinfo.portinfo_cnt
conversion for divert inpcbs (unused by rip inpcbs).

sys/netinet/in_pcb.c
sys/netinet/in_pcb.h
sys/netinet/ip_divert.c
sys/netinet/raw_ip.c
sys/netinet/tcp_subr.c
sys/netinet/udp_usrreq.c

index 9c42d3f..7f8e68e 100644 (file)
@@ -224,6 +224,16 @@ in_pcbinfo_init(struct inpcbinfo *pcbinfo, int cpu, boolean_t shared)
        }
 }
 
+void
+in_pcbportinfo_set(struct inpcbinfo *pcbinfo, struct inpcbportinfo *portinfo,
+    int portinfo_cnt)
+{
+
+       KASSERT(portinfo_cnt > 0, ("invalid portinfo_cnt %d", portinfo_cnt));
+       pcbinfo->portinfo = portinfo;
+       pcbinfo->portinfo_cnt = portinfo_cnt;
+}
+
 struct baddynamicports baddynamicports;
 
 /*
index 9d09edd..8e5576b 100644 (file)
@@ -495,6 +495,7 @@ void        in_losing (struct inpcb *);
 void   in_rtchange (struct inpcb *, int);
 void   in_pcbinfo_init (struct inpcbinfo *, int, boolean_t);
 void   in_pcbportinfo_init (struct inpcbportinfo *, int, u_short);
+void   in_pcbportinfo_set(struct inpcbinfo *, struct inpcbportinfo *, int);
 int    in_pcballoc (struct socket *, struct inpcbinfo *);
 void   in_pcbunlink (struct inpcb *, struct inpcbinfo *);
 void   in_pcbunlink_flags (struct inpcb *, struct inpcbinfo *, int);
index ce996ca..f428c37 100644 (file)
@@ -133,7 +133,7 @@ div_init(void)
         * over the place for hashbase == NULL.
         */
        divcbinfo.hashbase = hashinit(1, M_PCB, &divcbinfo.hashmask);
-       divcbinfo.portinfo = &divcbportinfo;
+       in_pcbportinfo_set(&divcbinfo, &divcbportinfo, 1);
        divcbinfo.wildcardhashbase = hashinit(1, M_PCB,
                                              &divcbinfo.wildcardhashmask);
        divcbinfo.ipi_size = sizeof(struct inpcb);
index de2c972..db5f990 100644 (file)
@@ -136,7 +136,7 @@ rip_init(void)
         * over the place for hashbase == NULL.
         */
        ripcbinfo.hashbase = hashinit(1, M_PCB, &ripcbinfo.hashmask);
-       ripcbinfo.portinfo = &ripcbportinfo;
+       in_pcbportinfo_set(&ripcbinfo, &ripcbportinfo, 1);
        ripcbinfo.wildcardhashbase = hashinit(1, M_PCB,
                                              &ripcbinfo.wildcardhashmask);
        ripcbinfo.ipi_size = sizeof(struct inpcb);
index 003f7f2..56fc477 100644 (file)
@@ -394,8 +394,7 @@ tcp_init(void)
                ticb->hashbase = hashinit(hashsize, M_PCB,
                                          &ticb->hashmask);
                in_pcbportinfo_init(&portinfo[cpu], hashsize, cpu);
-               ticb->portinfo = portinfo;
-               ticb->portinfo_cnt = netisr_ncpus;
+               in_pcbportinfo_set(ticb, portinfo, netisr_ncpus);
                ticb->wildcardhashbase = hashinit(hashsize, M_PCB,
                                                  &ticb->wildcardhashmask);
                ticb->localgrphashbase = hashinit(hashsize, M_PCB,
index 5fb5beb..40a4ed5 100644 (file)
@@ -222,8 +222,7 @@ udp_init(void)
                uicb->hashbase = hashinit(UDBHASHSIZE, M_PCB, &uicb->hashmask);
 
                in_pcbportinfo_init(&portinfo[cpu], UDBHASHSIZE, cpu);
-               uicb->portinfo = portinfo;
-               uicb->portinfo_cnt = netisr_ncpus;
+               in_pcbportinfo_set(uicb, portinfo, netisr_ncpus);
 
                uicb->wildcardhashbase = hashinit(UDBHASHSIZE, M_PCB,
                    &uicb->wildcardhashmask);