diff options
author | rwatson <rwatson@FreeBSD.org> | 2007-04-30 23:12:05 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2007-04-30 23:12:05 +0000 |
commit | c27ef034149379823d3f1a1ed091d766fe5abb17 (patch) | |
tree | 119273487ff879cda562b2fa2b8c40c1b950e2b0 /sys/netinet | |
parent | 7af8abc0c5540217c84e7fef30f265f5ebdee5c6 (diff) | |
download | FreeBSD-src-c27ef034149379823d3f1a1ed091d766fe5abb17.zip FreeBSD-src-c27ef034149379823d3f1a1ed091d766fe5abb17.tar.gz |
Rename some fields of struct inpcbinfo to have the ipi_ prefix,
consistent with the naming of other structure field members, and
reducing improper grep matches. Clean up and comment structure
fields in structure definition.
Diffstat (limited to 'sys/netinet')
-rw-r--r-- | sys/netinet/in_pcb.c | 39 | ||||
-rw-r--r-- | sys/netinet/in_pcb.h | 92 | ||||
-rw-r--r-- | sys/netinet/ip_divert.c | 9 | ||||
-rw-r--r-- | sys/netinet/raw_ip.c | 9 | ||||
-rw-r--r-- | sys/netinet/tcp_subr.c | 15 | ||||
-rw-r--r-- | sys/netinet/tcp_timewait.c | 15 | ||||
-rw-r--r-- | sys/netinet/udp_usrreq.c | 11 |
7 files changed, 113 insertions, 77 deletions
diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c index fc31367..0ad44f4 100644 --- a/sys/netinet/in_pcb.c +++ b/sys/netinet/in_pcb.c @@ -216,7 +216,7 @@ in_pcballoc(struct socket *so, struct inpcbinfo *pcbinfo) inp->inp_flags |= IN6P_IPV6_V6ONLY; } #endif - LIST_INSERT_HEAD(pcbinfo->listhead, inp, inp_list); + LIST_INSERT_HEAD(pcbinfo->ipi_listhead, inp, inp_list); pcbinfo->ipi_count++; so->so_pcb = (caddr_t)inp; #ifdef INET6 @@ -408,7 +408,7 @@ in_pcbbind_setup(struct inpcb *inp, struct sockaddr *nam, in_addr_t *laddrp, if (inp->inp_flags & INP_HIGHPORT) { first = ipport_hifirstauto; /* sysctl */ last = ipport_hilastauto; - lastport = &pcbinfo->lasthi; + lastport = &pcbinfo->ipi_lasthi; } else if (inp->inp_flags & INP_LOWPORT) { error = priv_check_cred(cred, PRIV_NETINET_RESERVEDPORT, SUSER_ALLOWJAIL); @@ -416,11 +416,11 @@ in_pcbbind_setup(struct inpcb *inp, struct sockaddr *nam, in_addr_t *laddrp, return error; first = ipport_lowfirstauto; /* 1023 */ last = ipport_lowlastauto; /* 600 */ - lastport = &pcbinfo->lastlow; + lastport = &pcbinfo->ipi_lastlow; } else { first = ipport_firstauto; /* sysctl */ last = ipport_lastauto; - lastport = &pcbinfo->lastport; + lastport = &pcbinfo->ipi_lastport; } /* * For UDP, use random port allocation as long as the user @@ -846,7 +846,7 @@ in_pcbnotifyall(struct inpcbinfo *pcbinfo, struct in_addr faddr, int errno, struct inpcbhead *head; INP_INFO_WLOCK(pcbinfo); - head = pcbinfo->listhead; + head = pcbinfo->ipi_listhead; for (inp = LIST_FIRST(head); inp != NULL; inp = ninp) { INP_LOCK(inp); ninp = LIST_NEXT(inp, inp_list); @@ -875,7 +875,7 @@ in_pcbpurgeif0(struct inpcbinfo *pcbinfo, struct ifnet *ifp) int i, gap; INP_INFO_RLOCK(pcbinfo); - LIST_FOREACH(inp, pcbinfo->listhead, inp_list) { + LIST_FOREACH(inp, pcbinfo->ipi_listhead, inp_list) { INP_LOCK(inp); imo = inp->inp_moptions; if ((inp->inp_vflag & INP_IPV4) && @@ -932,7 +932,8 @@ in_pcblookup_local(struct inpcbinfo *pcbinfo, struct in_addr laddr, * Look for an unconnected (wildcard foreign addr) PCB that * matches the local address and port we're looking for. */ - head = &pcbinfo->hashbase[INP_PCBHASH(INADDR_ANY, lport, 0, pcbinfo->hashmask)]; + head = &pcbinfo->ipi_hashbase[INP_PCBHASH(INADDR_ANY, lport, + 0, pcbinfo->ipi_hashmask)]; LIST_FOREACH(inp, head, inp_hash) { #ifdef INET6 if ((inp->inp_vflag & INP_IPV4) == 0) @@ -961,8 +962,8 @@ in_pcblookup_local(struct inpcbinfo *pcbinfo, struct in_addr laddr, * First see if this local port is in use by looking on the * port hash list. */ - porthash = &pcbinfo->porthashbase[INP_PCBPORTHASH(lport, - pcbinfo->porthashmask)]; + porthash = &pcbinfo->ipi_porthashbase[INP_PCBPORTHASH(lport, + pcbinfo->ipi_porthashmask)]; LIST_FOREACH(phd, porthash, phd_hash) { if (phd->phd_port == lport) break; @@ -1035,8 +1036,8 @@ in_pcblookup_hash(struct inpcbinfo *pcbinfo, struct in_addr faddr, /* * First look for an exact match. */ - head = &pcbinfo->hashbase[INP_PCBHASH(faddr.s_addr, lport, fport, - pcbinfo->hashmask)]; + head = &pcbinfo->ipi_hashbase[INP_PCBHASH(faddr.s_addr, lport, fport, + pcbinfo->ipi_hashmask)]; LIST_FOREACH(inp, head, inp_hash) { #ifdef INET6 if ((inp->inp_vflag & INP_IPV4) == 0) @@ -1058,8 +1059,8 @@ in_pcblookup_hash(struct inpcbinfo *pcbinfo, struct in_addr faddr, struct inpcb *local_wild_mapped = NULL; #endif - head = &pcbinfo->hashbase[INP_PCBHASH(INADDR_ANY, lport, 0, - pcbinfo->hashmask)]; + head = &pcbinfo->ipi_hashbase[INP_PCBHASH(INADDR_ANY, lport, + 0, pcbinfo->ipi_hashmask)]; LIST_FOREACH(inp, head, inp_hash) { #ifdef INET6 if ((inp->inp_vflag & INP_IPV4) == 0) @@ -1114,11 +1115,11 @@ in_pcbinshash(struct inpcb *inp) #endif /* INET6 */ hashkey_faddr = inp->inp_faddr.s_addr; - pcbhash = &pcbinfo->hashbase[INP_PCBHASH(hashkey_faddr, - inp->inp_lport, inp->inp_fport, pcbinfo->hashmask)]; + pcbhash = &pcbinfo->ipi_hashbase[INP_PCBHASH(hashkey_faddr, + inp->inp_lport, inp->inp_fport, pcbinfo->ipi_hashmask)]; - pcbporthash = &pcbinfo->porthashbase[INP_PCBPORTHASH(inp->inp_lport, - pcbinfo->porthashmask)]; + pcbporthash = &pcbinfo->ipi_porthashbase[ + INP_PCBPORTHASH(inp->inp_lport, pcbinfo->ipi_porthashmask)]; /* * Go through port list and look for a head for this lport. @@ -1168,8 +1169,8 @@ in_pcbrehash(struct inpcb *inp) #endif /* INET6 */ hashkey_faddr = inp->inp_faddr.s_addr; - head = &pcbinfo->hashbase[INP_PCBHASH(hashkey_faddr, - inp->inp_lport, inp->inp_fport, pcbinfo->hashmask)]; + head = &pcbinfo->ipi_hashbase[INP_PCBHASH(hashkey_faddr, + inp->inp_lport, inp->inp_fport, pcbinfo->ipi_hashmask)]; LIST_REMOVE(inp, inp_hash); LIST_INSERT_HEAD(head, inp, inp_hash); diff --git a/sys/netinet/in_pcb.h b/sys/netinet/in_pcb.h index 0de251a..c2d9c2b 100644 --- a/sys/netinet/in_pcb.h +++ b/sys/netinet/in_pcb.h @@ -44,11 +44,12 @@ struct inpcbpolicy; /* - * Common structure pcb for internet protocol implementation. - * Here are stored pointers to local and foreign host table - * entries, local and foreign socket numbers, and pointers - * up (to a socket structure) and down (to a protocol-specific) - * control block. + * Struct inpcb is the ommon structure pcb for the Internet Protocol + * implementation. + * + * Pointers to local and foreign host table entries, local and foreign socket + * numbers, and pointers up (to a socket structure) and down (to a + * protocol-specific control block) are stored here. */ LIST_HEAD(inpcbhead, inpcb); LIST_HEAD(inpcbporthead, inpcbport); @@ -56,8 +57,8 @@ typedef u_quad_t inp_gen_t; /* * PCB with AF_INET6 null bind'ed laddr can receive AF_INET input packet. - * So, AF_INET6 null laddr is also used as AF_INET null laddr, - * by utilize following structure. (At last, same as INRIA) + * So, AF_INET6 null laddr is also used as AF_INET null laddr, by utilizing + * the following structure. */ struct in_addr_4in6 { u_int32_t ia46_pad32[3]; @@ -65,8 +66,8 @@ struct in_addr_4in6 { }; /* - * NOTE: ipv6 addrs should be 64-bit aligned, per RFC 2553. - * in_conninfo has some extra padding to accomplish this. + * NOTE: ipv6 addrs should be 64-bit aligned, per RFC 2553. in_conninfo has + * some extra padding to accomplish this. */ struct in_endpoints { u_int16_t ie_fport; /* foreign port */ @@ -89,8 +90,8 @@ struct in_endpoints { }; /* - * XXX - * the defines for inc_* are hacks and should be changed to direct references + * XXX The defines for inc_* are hacks and should be changed to direct + * references. */ struct in_conninfo { u_int8_t inc_flags; @@ -137,7 +138,7 @@ struct inpcb { u_char inp_ip_p; /* protocol proto */ u_char inp_ip_minttl; /* minimum TTL or drop */ - /* Protocol dependent part; options. */ + /* Protocol-dependent part; options. */ struct { u_char inp4_ip_tos; /* type of service proto */ struct mbuf *inp4_options; /* IP options */ @@ -187,15 +188,15 @@ struct inpcb { #define in6p_ppcb inp_ppcb /* for KAME src sync over BSD*'s */ }; /* - * The range of the generation count, as used in this implementation, - * is 9e19. We would have to create 300 billion connections per - * second for this number to roll over in a year. This seems sufficiently - * unlikely that we simply don't concern ourselves with that possibility. + * The range of the generation count, as used in this implementation, is 9e19. + * We would have to create 300 billion connections per second for this number + * to roll over in a year. This seems sufficiently unlikely that we simply + * don't concern ourselves with that possibility. */ /* - * Interface exported to userland by various protocols which use - * inpcbs. Hack alert -- only define if struct xsocket is in scope. + * Interface exported to userland by various protocols which use inpcbs. Hack + * alert -- only define if struct xsocket is in scope. */ #ifdef _SYS_SOCKETVAR_H_ struct xinpcb { @@ -219,19 +220,48 @@ struct inpcbport { u_short phd_port; }; -struct inpcbinfo { /* XXX documentation, prefixes */ - struct inpcbhead *hashbase; - u_long hashmask; - struct inpcbporthead *porthashbase; - u_long porthashmask; - struct inpcbhead *listhead; - u_short lastport; - u_short lastlow; - u_short lasthi; - struct uma_zone *ipi_zone; /* zone to allocate pcbs from */ - u_int ipi_count; /* number of pcbs in this list */ - u_quad_t ipi_gencnt; /* current generation count */ - struct mtx ipi_mtx; +/* + * Global data structure for each high-level protocol (UDP, TCP, ...) in both + * IPv4 and IPv6. Holds inpcb lists and information for managing them. + */ +struct inpcbinfo { + /* + * Global list of inpcbs on the protocol. + */ + struct inpcbhead *ipi_listhead; + u_int ipi_count; + + /* + * Global hash of inpcbs, hashed by local and foreign addresses and + * port numbers. + */ + struct inpcbhead *ipi_hashbase; + u_long ipi_hashmask; + + /* + * Global hash of inpcbs, hashed by only local port number. + */ + struct inpcbporthead *ipi_porthashbase; + u_long ipi_porthashmask; + + /* + * Fields associated with port lookup and allocation. + */ + u_short ipi_lastport; + u_short ipi_lastlow; + u_short ipi_lasthi; + + /* + * UMA zone from which inpcbs are allocated for this protocol. + */ + struct uma_zone *ipi_zone; + + /* + * Generation count--incremented each time a connection is allocated + * or freed. + */ + u_quad_t ipi_gencnt; + struct mtx ipi_mtx; }; #define INP_LOCK_INIT(inp, d, t) \ diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c index 24806ef..bec12a2 100644 --- a/sys/netinet/ip_divert.c +++ b/sys/netinet/ip_divert.c @@ -147,14 +147,15 @@ div_init(void) { INP_INFO_LOCK_INIT(&divcbinfo, "div"); LIST_INIT(&divcb); - divcbinfo.listhead = &divcb; + divcbinfo.ipi_listhead = &divcb; /* * XXX We don't use the hash list for divert IP, but it's easier * to allocate a one entry hash list than it is to check all * over the place for hashbase == NULL. */ - divcbinfo.hashbase = hashinit(1, M_PCB, &divcbinfo.hashmask); - divcbinfo.porthashbase = hashinit(1, M_PCB, &divcbinfo.porthashmask); + divcbinfo.ipi_hashbase = hashinit(1, M_PCB, &divcbinfo.ipi_hashmask); + divcbinfo.ipi_porthashbase = hashinit(1, M_PCB, + &divcbinfo.ipi_porthashmask); divcbinfo.ipi_zone = uma_zcreate("divcb", sizeof(struct inpcb), NULL, NULL, div_inpcb_init, div_inpcb_fini, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); @@ -575,7 +576,7 @@ div_pcblist(SYSCTL_HANDLER_ARGS) return ENOMEM; INP_INFO_RLOCK(&divcbinfo); - for (inp = LIST_FIRST(divcbinfo.listhead), i = 0; inp && i < n; + for (inp = LIST_FIRST(divcbinfo.ipi_listhead), i = 0; inp && i < n; inp = LIST_NEXT(inp, inp_list)) { INP_LOCK(inp); if (inp->inp_gencnt <= gencnt && diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c index 0c76d30..80c2d72 100644 --- a/sys/netinet/raw_ip.c +++ b/sys/netinet/raw_ip.c @@ -133,14 +133,15 @@ rip_init() { INP_INFO_LOCK_INIT(&ripcbinfo, "rip"); LIST_INIT(&ripcb); - ripcbinfo.listhead = &ripcb; + ripcbinfo.ipi_listhead = &ripcb; /* * XXX We don't use the hash list for raw IP, but it's easier * to allocate a one entry hash list than it is to check all * over the place for hashbase == NULL. */ - ripcbinfo.hashbase = hashinit(1, M_PCB, &ripcbinfo.hashmask); - ripcbinfo.porthashbase = hashinit(1, M_PCB, &ripcbinfo.porthashmask); + ripcbinfo.ipi_hashbase = hashinit(1, M_PCB, &ripcbinfo.ipi_hashmask); + ripcbinfo.ipi_porthashbase = hashinit(1, M_PCB, + &ripcbinfo.ipi_porthashmask); ripcbinfo.ipi_zone = uma_zcreate("ripcb", sizeof(struct inpcb), NULL, NULL, rip_inpcb_init, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); uma_zone_set_max(ripcbinfo.ipi_zone, maxsockets); @@ -858,7 +859,7 @@ rip_pcblist(SYSCTL_HANDLER_ARGS) return ENOMEM; INP_INFO_RLOCK(&ripcbinfo); - for (inp = LIST_FIRST(ripcbinfo.listhead), i = 0; inp && i < n; + for (inp = LIST_FIRST(ripcbinfo.ipi_listhead), i = 0; inp && i < n; inp = LIST_NEXT(inp, inp_list)) { INP_LOCK(inp); if (inp->inp_gencnt <= gencnt && diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 0ef4a0d..656231c 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -315,16 +315,17 @@ tcp_init(void) INP_INFO_LOCK_INIT(&tcbinfo, "tcp"); LIST_INIT(&tcb); - tcbinfo.listhead = &tcb; + tcbinfo.ipi_listhead = &tcb; TUNABLE_INT_FETCH("net.inet.tcp.tcbhashsize", &hashsize); if (!powerof2(hashsize)) { printf("WARNING: TCB hash size not a power of 2\n"); hashsize = 512; /* safe default */ } tcp_tcbhashsize = hashsize; - tcbinfo.hashbase = hashinit(hashsize, M_PCB, &tcbinfo.hashmask); - tcbinfo.porthashbase = hashinit(hashsize, M_PCB, - &tcbinfo.porthashmask); + tcbinfo.ipi_hashbase = hashinit(hashsize, M_PCB, + &tcbinfo.ipi_hashmask); + tcbinfo.ipi_porthashbase = hashinit(hashsize, M_PCB, + &tcbinfo.ipi_porthashmask); tcbinfo.ipi_zone = uma_zcreate("inpcb", sizeof(struct inpcb), NULL, NULL, tcp_inpcb_init, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); uma_zone_set_max(tcbinfo.ipi_zone, maxsockets); @@ -856,7 +857,7 @@ tcp_drain(void) * usefull. */ INP_INFO_RLOCK(&tcbinfo); - LIST_FOREACH(inpb, tcbinfo.listhead, inp_list) { + LIST_FOREACH(inpb, tcbinfo.ipi_listhead, inp_list) { if (inpb->inp_vflag & INP_TIMEWAIT) continue; INP_LOCK(inpb); @@ -977,8 +978,8 @@ tcp_pcblist(SYSCTL_HANDLER_ARGS) return (ENOMEM); INP_INFO_RLOCK(&tcbinfo); - for (inp = LIST_FIRST(tcbinfo.listhead), i = 0; inp != NULL && i < n; - inp = LIST_NEXT(inp, inp_list)) { + for (inp = LIST_FIRST(tcbinfo.ipi_listhead), i = 0; inp != NULL && i + < n; inp = LIST_NEXT(inp, inp_list)) { INP_LOCK(inp); if (inp->inp_gencnt <= gencnt) { /* diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c index 0ef4a0d..656231c 100644 --- a/sys/netinet/tcp_timewait.c +++ b/sys/netinet/tcp_timewait.c @@ -315,16 +315,17 @@ tcp_init(void) INP_INFO_LOCK_INIT(&tcbinfo, "tcp"); LIST_INIT(&tcb); - tcbinfo.listhead = &tcb; + tcbinfo.ipi_listhead = &tcb; TUNABLE_INT_FETCH("net.inet.tcp.tcbhashsize", &hashsize); if (!powerof2(hashsize)) { printf("WARNING: TCB hash size not a power of 2\n"); hashsize = 512; /* safe default */ } tcp_tcbhashsize = hashsize; - tcbinfo.hashbase = hashinit(hashsize, M_PCB, &tcbinfo.hashmask); - tcbinfo.porthashbase = hashinit(hashsize, M_PCB, - &tcbinfo.porthashmask); + tcbinfo.ipi_hashbase = hashinit(hashsize, M_PCB, + &tcbinfo.ipi_hashmask); + tcbinfo.ipi_porthashbase = hashinit(hashsize, M_PCB, + &tcbinfo.ipi_porthashmask); tcbinfo.ipi_zone = uma_zcreate("inpcb", sizeof(struct inpcb), NULL, NULL, tcp_inpcb_init, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); uma_zone_set_max(tcbinfo.ipi_zone, maxsockets); @@ -856,7 +857,7 @@ tcp_drain(void) * usefull. */ INP_INFO_RLOCK(&tcbinfo); - LIST_FOREACH(inpb, tcbinfo.listhead, inp_list) { + LIST_FOREACH(inpb, tcbinfo.ipi_listhead, inp_list) { if (inpb->inp_vflag & INP_TIMEWAIT) continue; INP_LOCK(inpb); @@ -977,8 +978,8 @@ tcp_pcblist(SYSCTL_HANDLER_ARGS) return (ENOMEM); INP_INFO_RLOCK(&tcbinfo); - for (inp = LIST_FIRST(tcbinfo.listhead), i = 0; inp != NULL && i < n; - inp = LIST_NEXT(inp, inp_list)) { + for (inp = LIST_FIRST(tcbinfo.ipi_listhead), i = 0; inp != NULL && i + < n; inp = LIST_NEXT(inp, inp_list)) { INP_LOCK(inp); if (inp->inp_gencnt <= gencnt) { /* diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c index 0966f2e..f6be5dc 100644 --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -156,10 +156,11 @@ udp_init() { INP_INFO_LOCK_INIT(&udbinfo, "udp"); LIST_INIT(&udb); - udbinfo.listhead = &udb; - udbinfo.hashbase = hashinit(UDBHASHSIZE, M_PCB, &udbinfo.hashmask); - udbinfo.porthashbase = hashinit(UDBHASHSIZE, M_PCB, - &udbinfo.porthashmask); + udbinfo.ipi_listhead = &udb; + udbinfo.ipi_hashbase = hashinit(UDBHASHSIZE, M_PCB, + &udbinfo.ipi_hashmask); + udbinfo.ipi_porthashbase = hashinit(UDBHASHSIZE, M_PCB, + &udbinfo.ipi_porthashmask); udbinfo.ipi_zone = uma_zcreate("udpcb", sizeof(struct inpcb), NULL, NULL, udp_inpcb_init, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); uma_zone_set_max(udbinfo.ipi_zone, maxsockets); @@ -633,7 +634,7 @@ udp_pcblist(SYSCTL_HANDLER_ARGS) return (ENOMEM); INP_INFO_RLOCK(&udbinfo); - for (inp = LIST_FIRST(udbinfo.listhead), i = 0; inp && i < n; + for (inp = LIST_FIRST(udbinfo.ipi_listhead), i = 0; inp && i < n; inp = LIST_NEXT(inp, inp_list)) { INP_LOCK(inp); if (inp->inp_gencnt <= gencnt && |