+
+tcp_prt(tdp)
+ register struct tcp_debug *tdp;
+{
+COUNT(TCP_PRT);
+
+ printf("%x ", ((int)tdp->td_tcb)&0xffffff);
+ if (tdp->td_inp == INSEND) {
+ printf("SEND #%x", tdp->td_sno);
+ tdp->td_lno = ntohs(tdp->td_lno);
+ tdp->td_wno = ntohs(tdp->td_wno);
+ } else {
+ if (tdp->td_inp == INRECV)
+ printf("RCV #%x ", tdp->td_sno);
+ printf("%s.%s",
+ tcpstates[tdp->td_old], tcpinputs[tdp->td_inp]);
+ if (tdp->td_inp == ISTIMER)
+ printf("(%s)", tcptimers[tdp->td_tim]);
+ printf(" -> %s",
+ tcpstates[(tdp->td_new > 0) ? tdp->td_new : tdp->td_old]);
+ if (tdp->td_new == -1)
+ printf(" (FAILED)");
+ }
+ /* GROSS... DEPENDS ON SIGN EXTENSION OF CHARACTERS */
+ if (tdp->td_lno)
+ printf(" len=%d", tdp->td_lno);
+ if (tdp->td_wno)
+ printf(" win=%d", tdp->td_wno);
+ if (tdp->td_flg & TH_FIN) printf(" FIN");
+ if (tdp->td_flg & TH_SYN) printf(" SYN");
+ if (tdp->td_flg & TH_RST) printf(" RST");
+ if (tdp->td_flg & TH_EOL) printf(" EOL");
+ if (tdp->td_flg & TH_ACK) printf(" ACK %x", tdp->td_ano);
+ if (tdp->td_flg & TH_URG) printf(" URG");
+ printf("\n");
+}