VirtualBox

Changeset 37728 in vbox for trunk/src/VBox/Devices/Network


Ignore:
Timestamp:
Jul 1, 2011 12:09:55 PM (13 years ago)
Author:
vboxsync
Message:

NAT: tcp_input more flow logging.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/slirp/tcp_input.c

    r35923 r37728  
    9999    int flags;
    100100    STAM_PROFILE_START(&pData->StatTCP_reassamble, tcp_reassamble);
     101    LogFlowFuncEnter();
     102    LogFlowFunc(("pData:%p, tp:%p, th:%p, tlenp:%p, m:%p\n", pData, tp, th, tlenp, m));
    101103
    102104    /*
     
    111113     */
    112114    if (th == NULL)
     115    {
     116        LogFlowFunc(("%d -> present\n", __LINE__));
    113117        goto present;
     118    }
    114119
    115120    /*
     
    129134        *tlenp = 0;
    130135        STAM_PROFILE_STOP(&pData->StatTCP_reassamble, tcp_reassamble);
     136        LogFlowFuncLeave();
    131137        return (0);
    132138    }
     
    143149        *tlenp = 0;
    144150        STAM_PROFILE_STOP(&pData->StatTCP_reassamble, tcp_reassamble);
     151        LogFlowFuncLeave();
    145152        return (0);
    146153    }
     
    184191                 * completes.
    185192                 */
     193                LogFlowFunc(("%d -> present\n", __LINE__));
    186194                goto present;   /* ??? */
    187195            }
     
    326334            tcp_close(pData, tp);
    327335            STAM_PROFILE_STOP(&pData->StatTCP_input, counter_input);
     336            LogFlowFuncLeave();
    328337            return;
    329338        }
     
    332341        tiflags = ti->ti_flags;
    333342
     343        LogFlowFunc(("%d -> cont_conn\n", __LINE__));
    334344        goto cont_conn;
    335345    }
     
    375385    {
    376386        tcpstat.tcps_rcvbadsum++;
     387        LogFlowFunc(("%d -> drop\n", __LINE__));
    377388        goto drop;
    378389    }
     
    387398    {
    388399        tcpstat.tcps_rcvbadoff++;
     400        LogFlowFunc(("%d -> drop\n", __LINE__));
    389401        goto drop;
    390402    }
     
    437449     */
    438450findso:
     451    LogFlowFunc(("findso: %R[natsock]\n", so));
    439452    if (so != NULL && so != &tcb)
    440453        SOCKET_UNLOCK(so);
     
    500513    {
    501514        if ((tiflags & (TH_SYN|TH_FIN|TH_RST|TH_URG|TH_ACK)) != TH_SYN)
     515        {
     516            LogFlowFunc(("%d -> dropwithreset\n", __LINE__));
    502517            goto dropwithreset;
     518        }
    503519
    504520        if ((so = socreate()) == NULL)
     521        {
     522            LogFlowFunc(("%d -> dropwithreset\n", __LINE__));
    505523            goto dropwithreset;
     524        }
    506525        if (tcp_attach(pData, so) < 0)
    507526        {
    508527            RTMemFree(so); /* Not sofree (if it failed, it's not insqued) */
     528            LogFlowFunc(("%d -> dropwithreset\n", __LINE__));
    509529            goto dropwithreset;
    510530        }
     
    539559    if (so->so_state & SS_ISFCONNECTING)
    540560    {
     561        LogFlowFunc(("%d -> drop\n", __LINE__));
    541562        goto drop;
    542563    }
     
    546567    /* XXX Should never fail */
    547568    if (tp == 0)
     569    {
     570        LogFlowFunc(("%d -> dropwithreset\n", __LINE__));
    548571        goto dropwithreset;
     572    }
    549573    if (tp->t_state == TCPS_CLOSED)
    550574    {
     575        LogFlowFunc(("%d -> drop\n", __LINE__));
    551576        goto drop;
    552577    }
     
    756781        {
    757782            if (tiflags & TH_RST)
     783            {
     784                LogFlowFunc(("%d -> drop\n", __LINE__));
    758785                goto drop;
     786            }
    759787            if (tiflags & TH_ACK)
     788            {
     789                LogFlowFunc(("%d -> dropwithreset\n", __LINE__));
    760790                goto dropwithreset;
     791            }
    761792            if ((tiflags & TH_SYN) == 0)
     793            {
     794                LogFlowFunc(("%d -> drop\n", __LINE__));
    762795                goto drop;
     796            }
    763797
    764798            /*
     
    809843            SOCKET_UNLOCK(so);
    810844            STAM_PROFILE_STOP(&pData->StatTCP_input, counter_input);
     845            LogFlowFuncLeave();
    811846            return;
    812847
     
    815850             * Check if the connect succeeded
    816851             */
     852            LogFlowFunc(("cont_conn:\n"));
    817853            if (so->so_state & SS_NOFDREF)
    818854            {
    819855                tp = tcp_close(pData, tp);
     856                LogFlowFunc(("%d -> dropwithreset\n", __LINE__));
    820857                goto dropwithreset;
    821858            }
    822859cont_input:
     860            LogFlowFunc(("cont_input:\n"));
    823861            tcp_template(tp);
    824862
     
    838876            tp->t_timer[TCPT_KEEP] = TCPTV_KEEP_INIT;
    839877            tcpstat.tcps_accepts++;
     878            LogFlowFunc(("%d -> trimthenstep6\n", __LINE__));
    840879            goto trimthenstep6;
    841880        } /* case TCPS_LISTEN */
     
    857896                && (   SEQ_LEQ(ti->ti_ack, tp->iss)
    858897                    || SEQ_GT(ti->ti_ack, tp->snd_max)))
     898            {
     899                LogFlowFunc(("%d -> dropwithreset\n", __LINE__));
    859900                goto dropwithreset;
     901            }
    860902
    861903            if (tiflags & TH_RST)
     
    863905                if (tiflags & TH_ACK)
    864906                    tp = tcp_drop(pData, tp, 0); /* XXX Check t_softerror! */
     907                LogFlowFunc(("%d -> drop\n", __LINE__));
    865908                goto drop;
    866909            }
     
    868911            if ((tiflags & TH_SYN) == 0)
    869912            {
     913                LogFlowFunc(("%d -> drop\n", __LINE__));
    870914                goto drop;
    871915            }
     
    908952
    909953trimthenstep6:
     954            LogFlowFunc(("trimthenstep6:\n"));
    910955            /*
    911956             * Advance ti->ti_seq to correspond to first data byte.
     
    925970            tp->snd_wl1 = ti->ti_seq - 1;
    926971            tp->rcv_up = ti->ti_seq;
    927             Log2(("hit6\n"));
     972            LogFlowFunc(("%d -> step6\n", __LINE__));
    928973            goto step6;
    929974    } /* switch tp->t_state */
     
    10311076        tp = tcp_close(pData, tp);
    10321077        tcpstat.tcps_rcvafterclose++;
     1078        LogFlowFunc(("%d -> dropwithreset\n", __LINE__));
    10331079        goto dropwithreset;
    10341080    }
     
    10581104                tp = tcp_close(pData, tp);
    10591105                SOCKET_UNLOCK(tp->t_socket);
     1106                LogFlowFunc(("%d -> findso\n", __LINE__));
    10601107                goto findso;
    10611108            }
     
    10731120            }
    10741121            else
     1122            {
     1123                LogFlowFunc(("%d -> dropafterack\n", __LINE__));
    10751124                goto dropafterack;
     1125            }
    10761126        }
    10771127        else
     
    11111161            case TCPS_SYN_RECEIVED:
    11121162/*              so->so_error = ECONNREFUSED; */
     1163                LogFlowFunc(("%d -> close\n", __LINE__));
    11131164                goto close;
    11141165
     
    11191170/*              so->so_error = ECONNRESET; */
    11201171close:
    1121                 tp->t_state = TCPS_CLOSED;
    1122                 tcpstat.tcps_drops++;
    1123                 tp = tcp_close(pData, tp);
    1124                 goto drop;
     1172            LogFlowFunc(("close:\n"));
     1173            tp->t_state = TCPS_CLOSED;
     1174            tcpstat.tcps_drops++;
     1175            tp = tcp_close(pData, tp);
     1176            LogFlowFunc(("%d -> drop\n", __LINE__));
     1177            goto drop;
    11251178
    11261179            case TCPS_CLOSING:
    11271180            case TCPS_LAST_ACK:
    11281181            case TCPS_TIME_WAIT:
    1129                 tp = tcp_close(pData, tp);
    1130                 goto drop;
     1182            tp = tcp_close(pData, tp);
     1183            LogFlowFunc(("%d -> drop\n", __LINE__));
     1184            goto drop;
    11311185        }
    11321186
     
    11381192    {
    11391193        tp = tcp_drop(pData, tp, 0);
     1194        LogFlowFunc(("%d -> dropwithreset\n", __LINE__));
    11401195        goto dropwithreset;
    11411196    }
     
    11461201    if ((tiflags & TH_ACK) == 0)
    11471202    {
     1203        LogFlowFunc(("%d -> drop\n", __LINE__));
    11481204        goto drop;
    11491205    }
     
    11871243            tp->snd_wl1 = ti->ti_seq - 1;
    11881244            /* Avoid ack processing; snd_una==ti_ack  =>  dup ack */
     1245            LogFlowFunc(("%d -> synrx_to_est\n", __LINE__));
    11891246            goto synrx_to_est;
    11901247            /* fall into ... */
     
    12541311                        if (SEQ_GT(onxt, tp->snd_nxt))
    12551312                            tp->snd_nxt = onxt;
     1313                        LogFlowFunc(("%d -> drop\n", __LINE__));
    12561314                        goto drop;
    12571315                    }
     
    12601318                        tp->snd_cwnd += tp->t_maxseg;
    12611319                        (void) tcp_output(pData, tp);
     1320                        LogFlowFunc(("%d -> drop\n", __LINE__));
    12621321                        goto drop;
    12631322                    }
     
    12681327            }
    12691328synrx_to_est:
     1329            LogFlowFunc(("%d -> synrx_to_est:\n"));
    12701330            /*
    12711331             * If the congestion window was inflated to account
     
    12791339            {
    12801340                tcpstat.tcps_rcvacktoomuch++;
     1341                LogFlowFunc(("%d -> dropafterack\n", __LINE__));
    12811342                goto dropafterack;
    12821343            }
     
    14141475                    {
    14151476                        tp = tcp_close(pData, tp);
     1477                        LogFlowFunc(("%d -> drop\n", __LINE__));
    14161478                        goto drop;
    14171479                    }
     
    14251487                case TCPS_TIME_WAIT:
    14261488                    tp->t_timer[TCPT_2MSL] = 2 * TCPTV_MSL;
     1489                    LogFlowFunc(("%d -> dropafterack\n", __LINE__));
    14271490                    goto dropafterack;
    14281491            }
     
    14301493
    14311494step6:
     1495    LogFlowFunc(("step6:\n"));
    14321496    /*
    14331497     * Update window information.
     
    14721536            ti->ti_urp = 0;
    14731537            tiflags &= ~TH_URG;
     1538            LogFlowFunc(("%d -> dodata\n", __LINE__));
    14741539            goto dodata;
    14751540        }
     
    15061571            tp->rcv_up = tp->rcv_nxt;
    15071572dodata:
     1573    LogFlowFunc(("dodata:\n"));
    15081574
    15091575    /*
     
    16351701    SOCKET_UNLOCK(so);
    16361702    STAM_PROFILE_STOP(&pData->StatTCP_input, counter_input);
     1703    LogFlowFuncLeave();
    16371704    return;
    16381705
    16391706dropafterack:
    1640     Log2(("drop after ack\n"));
     1707    LogFlowFunc(("dropafterack:\n"));
    16411708    /*
    16421709     * Generate an ACK dropping incoming segment if it occupies
     
    16441711     */
    16451712    if (tiflags & TH_RST)
     1713    {
     1714        LogFlowFunc(("%d -> drop\n", __LINE__));
    16461715        goto drop;
     1716    }
    16471717    m_freem(pData, m);
    16481718    tp->t_flags |= TF_ACKNOW;
     
    16501720    SOCKET_UNLOCK(so);
    16511721    STAM_PROFILE_STOP(&pData->StatTCP_input, counter_input);
     1722    LogFlowFuncLeave();
    16521723    return;
    16531724
    16541725dropwithreset:
     1726    LogFlowFunc(("dropwithreset:\n"));
    16551727    /* reuses m if m!=NULL, m_free() unnecessary */
    16561728    if (tiflags & TH_ACK)
     
    16671739        SOCKET_UNLOCK(so);
    16681740    STAM_PROFILE_STOP(&pData->StatTCP_input, counter_input);
     1741    LogFlowFuncLeave();
    16691742    return;
    16701743
    16711744drop:
     1745    LogFlowFunc(("drop:\n"));
    16721746    /*
    16731747     * Drop space held by incoming segment and return.
     
    16831757
    16841758    STAM_PROFILE_STOP(&pData->StatTCP_input, counter_input);
     1759    LogFlowFuncLeave();
    16851760    return;
    16861761}
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette