summaryrefslogtreecommitdiffstats
path: root/cpukit/libnetworking/netinet/in_pcb.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libnetworking/netinet/in_pcb.c')
-rw-r--r--cpukit/libnetworking/netinet/in_pcb.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/cpukit/libnetworking/netinet/in_pcb.c b/cpukit/libnetworking/netinet/in_pcb.c
index 116f70eebf..312594dae2 100644
--- a/cpukit/libnetworking/netinet/in_pcb.c
+++ b/cpukit/libnetworking/netinet/in_pcb.c
@@ -79,9 +79,8 @@ static int ipport_hilastauto = IPPORT_HILASTAUTO; /* 44999 */
if ((var) < (min)) { (var) = (min); } \
else if ((var) > (max)) { (var) = (max); }
-#if 0
static int
-sysctl_net_ipport_check SYSCTL_HANDLER_ARGS
+sysctl_net_ipport_check(SYSCTL_HANDLER_ARGS)
{
int error = sysctl_handle_int(oidp,
oidp->oid_arg1, oidp->oid_arg2, req);
@@ -95,7 +94,6 @@ sysctl_net_ipport_check SYSCTL_HANDLER_ARGS
}
return error;
}
-#endif
#undef RANGECHK
@@ -126,10 +124,12 @@ in_pcballoc(so, pcbinfo)
if (inp == NULL)
return (ENOBUFS);
bzero((caddr_t)inp, sizeof(*inp));
+ inp->inp_gencnt = ++pcbinfo->ipi_gencnt;
inp->inp_pcbinfo = pcbinfo;
inp->inp_socket = so;
s = splnet();
LIST_INSERT_HEAD(pcbinfo->listhead, inp, inp_list);
+ pcbinfo->ipi_count++;
in_pcbinshash(inp);
splx(s);
so->so_pcb = (caddr_t)inp;
@@ -445,8 +445,10 @@ in_pcbdetach(inp)
struct inpcb *inp;
{
struct socket *so = inp->inp_socket;
+ struct inpcbinfo *ipi = inp->inp_pcbinfo;
int s;
+ inp->inp_gencnt = ++ipi->ipi_gencnt;
so->so_pcb = 0;
sofree(so);
if (inp->inp_options)
@@ -753,5 +755,6 @@ in_pcbrehash(inp)
inp->inp_lport, inp->inp_fport, inp->inp_pcbinfo->hashmask)];
LIST_INSERT_HEAD(head, inp, inp_hash);
+ inp->inp_pcbinfo->ipi_count--;
splx(s);
}