Example #1
0
void
sockstats(PNATState pData)
{
    char buff[256];
    size_t n;
    struct socket *so, *so_next;

    lprint("\n");

    lprint(
           "Proto[state]     Sock     Local Address, Port  Remote Address, Port RecvQ SendQ\n");

    QSOCKET_FOREACH(so, so_next, tcp)
    /* { */
        n = RTStrPrintf(buff, sizeof(buff), "tcp[%s]", so->so_tcpcb?tcpstates[so->so_tcpcb->t_state]:"NONE");
        while (n < 17)
            buff[n++] = ' ';
        buff[17] = 0;
        lprint("%s %3d   %15s %5d ",
               buff, so->s, inet_ntoa(so->so_laddr), RT_N2H_U16(so->so_lport));
        lprint("%15s %5d %5d %5d\n",
                inet_ntoa(so->so_faddr), RT_N2H_U16(so->so_fport),
                SBUF_LEN(&so->so_rcv), SBUF_LEN(&so->so_snd));
    LOOP_LABEL(tcp, so, so_next);
    }
Example #2
0
/*
 * Fast timeout routine for processing delayed acks
 */
void
tcp_fasttimo(PNATState pData)
{
    register struct socket *so, *so_next;
    register struct tcpcb *tp;

    LogFlowFuncEnter();

    so = tcb.so_next;
    if (so)
        QSOCKET_FOREACH (so, so_next, tcp)
        /* { */
            if (   (tp = (struct tcpcb *)so->so_tcpcb)
                && (tp->t_flags & TF_DELACK))
            {
                tp->t_flags &= ~TF_DELACK;
                tp->t_flags |= TF_ACKNOW;
                tcpstat.tcps_delack++;
                TCP_OUTPUT(pData, tp);
            }
        LOOP_LABEL(tcp, so, so_next);
        }