*** src/kernel/freebsd.c.orig Fri Oct 21 03:07:37 1994 --- src/kernel/freebsd.c Tue Apr 11 18:17:25 1995 *************** *** 1,5 **** /* ! ** kernel/other.c Low level kernel access functions for FreeBSD 2.x ** ** This program is in the public domain and may be used freely by anyone ** who wants to. --- 1,5 ---- /* ! ** kernel/other.c Low level kernel access functions for FreeBSD 2.1 ** ** This program is in the public domain and may be used freely by anyone ** who wants to. *************** *** 77,82 **** --- 77,83 ---- static int nfile; static struct inpcb tcb; + static struct inpcb *dummy_tcb; int k_open() { *************** *** 140,146 **** return NULL; ! head = pcbp->inp_prev; do { if ( pcbp->inp_faddr.s_addr == faddr->s_addr && --- 141,147 ---- return NULL; ! head = *(pcbp->inp_list.le_prev); do { if ( pcbp->inp_faddr.s_addr == faddr->s_addr && *************** *** 148,155 **** pcbp->inp_fport == fport && pcbp->inp_lport == lport ) return pcbp->inp_socket; ! } while (pcbp->inp_next != head && ! getbuf((long) pcbp->inp_next, pcbp, sizeof(struct inpcb), "tcblist")); --- 149,156 ---- pcbp->inp_fport == fport && pcbp->inp_lport == lport ) return pcbp->inp_socket; ! } while (pcbp->inp_list.le_next != head && ! getbuf((long) pcbp->inp_list.le_next, pcbp, sizeof(struct inpcb), "tcblist")); *************** *** 185,192 **** /* -------------------- TCP PCB LIST -------------------- */ if (!getbuf(nl[N_TCB].n_value, &tcb, sizeof(tcb), "tcb")) return -1; ! ! tcb.inp_prev = (struct inpcb *) nl[N_TCB].n_value; sockp = getlist(&tcb, faddr, fport, laddr, lport); if (!sockp) --- 186,193 ---- /* -------------------- TCP PCB LIST -------------------- */ if (!getbuf(nl[N_TCB].n_value, &tcb, sizeof(tcb), "tcb")) return -1; ! dummy_tcb = ((struct inpcb *) nl[N_TCB].n_value); ! tcb.inp_list.le_prev = &dummy_tcb; sockp = getlist(&tcb, faddr, fport, laddr, lport); if (!sockp)