亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tcp_input.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
#endif					(void) tcp_output(tp);					tp->snd_cwnd = tp->snd_ssthresh +					       tp->t_maxseg * tp->t_dupacks;					if (SEQ_GT(onxt, tp->snd_nxt))						tp->snd_nxt = onxt;					goto drop;				} else if (tp->t_dupacks > tcprexmtthresh) {					tp->snd_cwnd += tp->t_maxseg;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_WARNING event */            WV_NET_PORTOUT_EVENT_2 (NET_CORE_EVENT, WV_NET_WARNING, 13, 6,                              tp->t_inpcb->inp_lport, tp->t_inpcb->inp_fport,                                   WV_NETEVENT_TCPIN_SENDFAIL, WV_NET_RECV,                                    so->so_fd, tp->t_dupacks)#endif  /* INCLUDE_WVNET */#endif					(void) tcp_output(tp);					goto drop;				}			} else				tp->t_dupacks = 0;			break;		}		/*		 * If the congestion window was inflated to account		 * for the other side's cached packets, retract it.		 */		if (tp->t_dupacks > tcprexmtthresh &&		    tp->snd_cwnd > tp->snd_ssthresh)			tp->snd_cwnd = tp->snd_ssthresh;		tp->t_dupacks = 0;		if (SEQ_GT(ti->ti_ack, tp->snd_max)) {			tcpstat.tcps_rcvacktoomuch++;			goto dropafterack;		}		acked = ti->ti_ack - tp->snd_una;		tcpstat.tcps_rcvackpack++;		tcpstat.tcps_rcvackbyte += acked;		/*		 * If we have a timestamp reply, update smoothed		 * round trip time.  If no timestamp is present but		 * transmit timer is running and timed sequence		 * number was acked, update smoothed round trip time.		 * Since we now have an rtt measurement, cancel the		 * timer backoff (cf., Phil Karn's retransmit alg.).		 * Recompute the initial retransmit timer.		 */		if (ts_present)			tcp_xmit_timer(tp, tcp_now-ts_ecr+1);		else if (tp->t_rtt && SEQ_GT(ti->ti_ack, tp->t_rtseq))			tcp_xmit_timer(tp,tp->t_rtt);		/*		 * If all outstanding data is acked, stop retransmit		 * timer and remember to restart (more output or persist).		 * If there is more data to be acked, restart retransmit		 * timer, using current (possibly backed-off) value.		 */		if (ti->ti_ack == tp->snd_max) {			tp->t_timer[TCPT_REXMT] = 0;			needoutput = 1;		} else if (tp->t_timer[TCPT_PERSIST] == 0)			tp->t_timer[TCPT_REXMT] = tp->t_rxtcur;		/*		 * When new data is acked, open the congestion window.		 * If the window gives us less than ssthresh packets		 * in flight, open exponentially (maxseg per packet).		 * Otherwise open linearly: maxseg per window		 * (maxseg * (maxseg / cwnd) per packet).		 */		{		register u_int cw = tp->snd_cwnd;		register u_int incr = tp->t_maxseg;		if (cw > tp->snd_ssthresh)			incr = incr * incr / cw;		tp->snd_cwnd = min(cw + incr, TCP_MAXWIN<<tp->snd_scale);		}		if (acked > so->so_snd.sb_cc) {			tp->snd_wnd -= so->so_snd.sb_cc;			sbdrop(&so->so_snd, (int)so->so_snd.sb_cc);			ourfinisacked = 1;		} else {			sbdrop(&so->so_snd, acked);			tp->snd_wnd -= acked;			ourfinisacked = 0;		}		if ((so->so_snd.sb_want > 0) || (so->so_snd.sb_sel) ||		    (sowakeupHook != NULL))		    {		    if (sbspace (&so->so_snd) >= so->so_snd.sb_lowat)			sowwakeup(so);                    }		tp->snd_una = ti->ti_ack;		if (SEQ_LT(tp->snd_nxt, tp->snd_una))			tp->snd_nxt = tp->snd_una;		switch (tp->t_state) {		/*		 * In FIN_WAIT_1 STATE in addition to the processing		 * for the ESTABLISHED state if our FIN is now acknowledged		 * then enter FIN_WAIT_2.		 */		case TCPS_FIN_WAIT_1:			if (ourfinisacked) {				/*				 * If we can't receive any more				 * data, then closing user can proceed.				 * Starting the timer is contrary to the				 * specification, but if we don't get a FIN				 * we'll hang forever.				 */				if (so->so_state & SS_CANTRCVMORE) {					soisdisconnected(so);					tp->t_timer[TCPT_2MSL] = tcp_maxidle;				}#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_INFO event */            WV_NET_PORTIN_EVENT_1 (NET_AUX_EVENT, WV_NET_INFO, 33, 15,                                   ti->ti_sport, ti->ti_dport,                                   WV_NETEVENT_TCPIN_SENDCLOSED, WV_NET_RECV,                                    so->so_fd)#endif  /* INCLUDE_WVNET */#endif				tp->t_state = TCPS_FIN_WAIT_2;			}			break;	 	/*		 * In CLOSING STATE in addition to the processing for		 * the ESTABLISHED state if the ACK acknowledges our FIN		 * then enter the TIME-WAIT state, otherwise ignore		 * the segment.		 */		case TCPS_CLOSING:			if (ourfinisacked) {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_INFO event */            WV_NET_PORTIN_EVENT_1 (NET_AUX_EVENT, WV_NET_INFO, 34, 16,                                   ti->ti_sport, ti->ti_dport,                                   WV_NETEVENT_TCPIN_CLOSEWAIT, WV_NET_RECV,                                    so->so_fd)#endif  /* INCLUDE_WVNET */#endif				tp->t_state = TCPS_TIME_WAIT;				tcp_canceltimers(tp);				tp->t_timer[TCPT_2MSL] = 2 * TCPTV_MSL;				soisdisconnected(so);			}			break;		/*		 * In LAST_ACK, we may still be waiting for data to drain		 * and/or to be acked, as well as for the ack of our FIN.		 * If our FIN is now acknowledged, delete the TCB,		 * enter the closed state and return.		 */		case TCPS_LAST_ACK:			if (ourfinisacked) {				tp = tcp_close(tp);				goto drop;			}			break;		/*		 * In TIME_WAIT state the only thing that should arrive		 * is a retransmission of the remote FIN.  Acknowledge		 * it and restart the finack timer.		 */		case TCPS_TIME_WAIT:#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_INFO event */        WV_NET_PORTIN_EVENT_2 (NET_AUX_EVENT, WV_NET_INFO, 37, 19,                               ti->ti_sport, ti->ti_dport,                               WV_NETEVENT_TCPIN_CLOSE_RESTART, WV_NET_RECV,                               so->so_fd, TRUE)#endif  /* INCLUDE_WVNET */#endif			tp->t_timer[TCPT_2MSL] = 2 * TCPTV_MSL;			goto dropafterack;		}	}step6:	/*	 * Update window information.	 * Don't look at window if no ACK: TAC's send garbage on first SYN.         *         * More specifically, update the window when:         *  1) The ACK flag is set, and either:         *      a) The segment contains new data (snd_wl1 < ti_seq) OR         *      b) The segment is a repeat (snd_wl1 == ti_seq).         *         *  2) In case 1b), one of the following conditions also applies:         *      a) The segment acknowledges more data (snd_wl2 < ti_ack) OR         *      b) No new data is acknowledged, but the window size increases.         *         * The wl2 == ti_ack test might be redundant since the received         * ACK value can't realistically decrease when snd_wl1 == ti_seq.	 */	if ( (tiflags & TH_ACK) &&	    (SEQ_LT(tp->snd_wl1, ti->ti_seq) ||               (tp->snd_wl1 == ti->ti_seq &&	          (SEQ_LT(tp->snd_wl2, ti->ti_ack) ||                  (tp->snd_wl2 == ti->ti_ack && tiwin > tp->snd_wnd))               )            ))            {		/* keep track of pure window updates */		if (ti->ti_len == 0 &&		    tp->snd_wl2 == ti->ti_ack && tiwin > tp->snd_wnd)			tcpstat.tcps_rcvwinupd++;		tp->snd_wnd = tiwin;		tp->snd_wl1 = ti->ti_seq;		tp->snd_wl2 = ti->ti_ack;		if (tp->snd_wnd > tp->max_sndwnd)			tp->max_sndwnd = tp->snd_wnd;		needoutput = 1;	}	/*	 * Process segments with URG.	 */	if ((tiflags & TH_URG) && ti->ti_urp &&	    TCPS_HAVERCVDFIN(tp->t_state) == 0) {		/*		 * This is a kludge, but if we receive and accept		 * random urgent pointers, we'll crash in		 * soreceive.  It's hard to imagine someone		 * actually wanting to send this much urgent data.		 */		if (ti->ti_urp + so->so_rcv.sb_cc > sb_max) {			ti->ti_urp = 0;			/* XXX */			tiflags &= ~TH_URG;		/* XXX */			goto dodata;			/* XXX */		}		/*		 * If this segment advances the known urgent pointer,		 * then mark the data stream.  This should not happen		 * in CLOSE_WAIT, CLOSING, LAST_ACK or TIME_WAIT STATES since		 * a FIN has been received from the remote side. 		 * In these states we ignore the URG.		 *		 * According to RFC961 (Assigned Protocols),		 * the urgent pointer points to the last octet		 * of urgent data.  We continue, however,		 * to consider it to indicate the first octet		 * of data past the urgent section as the original 		 * spec states (in one of two places).		 */		if (SEQ_GT(ti->ti_seq+ti->ti_urp, tp->rcv_up)) {			tp->rcv_up = ti->ti_seq + ti->ti_urp;			so->so_oobmark = so->so_rcv.sb_cc +			    (tp->rcv_up - tp->rcv_nxt) - 1;			if (so->so_oobmark == 0)				so->so_state |= SS_RCVATMARK;			sohasoutofband(so);			tp->t_oobflags &= ~(TCPOOB_HAVEDATA | TCPOOB_HADDATA);		}		/*		 * Remove out of band data so doesn't get presented to user.		 * This can happen independent of advancing the URG pointer,		 * but if two URG's are pending at once, some out-of-band		 * data may creep in... ick.		 */		if (ti->ti_urp <= ti->ti_len &&		     (so->so_options & SO_OOBINLINE) == 0)			tcp_pulloutofband(so, ti, m);	} else		/*		 * If no out of band data is expected,		 * pull receive urgent pointer along		 * with the receive window.		 */		if (SEQ_GT(tp->rcv_nxt, tp->rcv_up))			tp->rcv_up = tp->rcv_nxt;dodata:							/* XXX */	/*	 * Process the segment text, merging it into the TCP sequencing queue,	 * and arranging for acknowledgment of receipt if necessary.	 * This process logically involves adjusting tp->rcv_wnd as data	 * is presented to the user (this happens in tcp_usrreq.c,	 * case PRU_RCVD).  If a FIN has already been received on this	 * connection then we just ignore the text.	 */	if ((ti->ti_len || (tiflags&TH_FIN)) &&	    TCPS_HAVERCVDFIN(tp->t_state) == 0) {		TCP_REASS(tp, ti, m, so, tiflags);	} else {		m_freem(m);		tiflags &= ~TH_FIN;	}	/*	 * If FIN is received ACK the FIN and let the user know	 * that the connection is closing.	 */	if (tiflags & TH_FIN) {		if (TCPS_HAVERCVDFIN(tp->t_state) == 0) {			socantrcvmore(so);			tp->t_flags |= TF_ACKNOW;			tp->rcv_nxt++;		}		switch (tp->t_state) {	 	/*		 * In ESTABLISHED state		 * enter the CLOSE_WAIT state.		 */		case TCPS_SYN_RECEIVED:                    break;          /* avoid SYN+FIN death */		case TCPS_ESTABLISHED:		#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_INFO event */        WV_NET_PORTIN_EVENT_1 (NET_AUX_EVENT, WV_NET_INFO, 35, 17,                               ti->ti_sport, ti->ti_dport,                               WV_NETEVENT_TCPIN_RECVCLOSED, WV_NET_RECV,                               so->so_fd)#endif  /* INCLUDE_WVNET */#endif			tp->t_state = TCPS_CLOSE_WAIT;			break;	 	/*		 * If still in FIN_WAIT_1 STATE FIN has not been acked so		 * enter the CLOSING state.		 */		case TCPS_FIN_WAIT_1:#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_INFO event */            WV_NET_PORTIN_EVENT_1 (NET_AUX_EVENT, WV_NET_INFO, 36, 18,                                   ti->ti_sport, ti->ti_dport,                                   WV_NETEVENT_TCPIN_CLOSING, WV_NET_RECV,                                   so->so_fd)#endif  /* INCLUDE_WVNET */#endif			tp->t_state = TCPS_CLOSING;			break;	 	/*		 * In FIN_WAIT_2 state enter the TIME_WAIT state,		 * starting the time-wait timer, turning off the other 		 * standard timers.		 */		case TCPS_FIN_WAIT_2:#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_INFO event */            WV_NET_PORTIN_EVENT_1 (NET_AUX_EVENT, WV_NET_INFO, 34, 16,                                   ti->ti_sport, ti->ti_dport,                                   WV_NETEVENT_TCPIN_CLOSEWAIT, WV_NET_RECV,                                   so->so_fd)#endif  /* INCLUDE_WVNET */#endif			tp->t_state = TCPS_TIME_WAIT;			tcp_canceltimers(tp);			tp->t_timer[TCPT_2MSL] = 2 * TCPTV_MSL;			soisdisconnected(so);			break;		/*		 * In TIME_WAIT state restart the 2 MSL time_wait timer.		 */		case TCPS_TIME_WAIT:#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_INFO event */        WV_NET_PORTIN_EVENT_2 (NET_AUX_EVENT, WV_NET_INFO, 37, 19,                               ti->ti_sport, ti->ti_dport,                               WV_NETEVENT_TCPIN_CLOSE_RESTART, WV_NET_RECV,                               so->so_fd, FALSE)#endif  /* INCLUDE_WVNET */#endif			tp->t_timer[TCPT_2MSL] = 2 * TCPTV_MSL;			break;		}	}	if (so->so_options & SO_DEBUG)		(*tcpTraceRtn)(TA_INPUT, ostate, tp, &tcp_saveti, 0);	/*	 * Return any desired output.	 */	if (needoutput || (tp->t_flags & TF_ACKNOW))		(void) tcp_output(tp);	return;dropafterack:	/*	 * Generate an ACK dropping incoming segment if it occupies	 * sequence space, where the ACK reflects our state.	 */	if (tiflags & TH_RST)		goto drop;	m_freem(m);	tp->t_flags |= TF_ACKNOW;	(void) tcp_output(tp);	return;dropwithreset:	/*	 * Generate a RST, dropping incoming segment.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费观看成人短视频| **欧美大码日韩| 欧美精品在欧美一区二区少妇| 狠狠色狠狠色综合日日91app| 日韩—二三区免费观看av| 亚洲精品中文在线| 亚洲三级在线观看| 亚洲国产日韩a在线播放性色| 中文字幕在线不卡国产视频| 中文字幕一区三区| 亚洲精品欧美综合四区| 亚洲国产另类av| 奇米精品一区二区三区在线观看| 视频一区二区欧美| 蜜臀av国产精品久久久久| 男男视频亚洲欧美| 狠狠色伊人亚洲综合成人| 国产91综合一区在线观看| 99精品久久免费看蜜臀剧情介绍| 色狠狠色噜噜噜综合网| 欧美日本一区二区| 欧美变态tickle挠乳网站| 精品国产一区二区国模嫣然| 久久蜜桃av一区精品变态类天堂| 国产精品久久毛片| 亚洲高清视频在线| 国产麻豆日韩欧美久久| 97精品国产97久久久久久久久久久久| 91激情在线视频| 日韩三级在线观看| 欧美一区二区久久久| 日韩女优av电影| 久久日一线二线三线suv| 国产精品久久综合| 日韩电影在线免费看| 国产999精品久久久久久| 91国内精品野花午夜精品| 欧美一区二区黄| 久久精品人人做人人综合| 久久精品综合网| 国产精品久久久久久久久免费樱桃| 国产婷婷色一区二区三区四区| 亚洲激情校园春色| 国产一区二区在线影院| av亚洲精华国产精华| 777久久久精品| 亚洲欧美另类图片小说| 国产酒店精品激情| 这里只有精品视频在线观看| 综合欧美亚洲日本| 国产在线视频一区二区三区| 色综合天天综合狠狠| 精品人在线二区三区| 一区二区成人在线观看| 国产91精品久久久久久久网曝门 | 亚洲女同一区二区| 捆绑变态av一区二区三区| 欧美亚洲综合网| 中文字幕在线不卡视频| 国产精品888| 91精品国产aⅴ一区二区| 一区二区三区精品视频| a在线欧美一区| 欧美经典三级视频一区二区三区| 日本欧美加勒比视频| 色婷婷精品久久二区二区蜜臂av | 美脚の诱脚舐め脚责91| 色婷婷精品大视频在线蜜桃视频| 欧美一区2区视频在线观看| 1000部国产精品成人观看| 久久国产综合精品| 欧美日韩免费在线视频| 一区二区三区成人在线视频| 99精品视频中文字幕| 国产精品无人区| 成人黄色一级视频| 国产精品久久久久久久久免费相片| 国产伦精一区二区三区| 国产亚洲一区二区在线观看| 国产精品一区专区| 久久蜜桃一区二区| 国产一区二区三区四区五区美女 | 另类小说视频一区二区| 日韩欧美www| 蜜桃视频免费观看一区| 日韩一区二区三区视频在线 | 亚洲精品国产一区二区精华液| 91丨porny丨蝌蚪视频| 亚洲欧美在线高清| 欧美亚洲另类激情小说| 午夜精品123| 精品久久久久久久人人人人传媒| 激情深爱一区二区| 国产精品欧美久久久久无广告| 从欧美一区二区三区| 最新成人av在线| 欧美视频一区二区三区在线观看| 夜夜精品视频一区二区| 91精品国产一区二区三区香蕉| 日韩福利电影在线观看| 亚洲精品一区二区三区蜜桃下载| 国产.欧美.日韩| 一区二区三区免费| 337p亚洲精品色噜噜狠狠| 韩国精品久久久| 中文字幕日韩一区| 91精品国产一区二区三区香蕉| 国产在线视频不卡二| 亚洲啪啪综合av一区二区三区| 欧美美女网站色| 成人av在线一区二区| 亚洲午夜影视影院在线观看| 精品久久久久久亚洲综合网| 国产成人av一区二区| 亚洲宅男天堂在线观看无病毒| 欧美日韩国产成人在线91| 精品在线免费视频| 亚洲精品免费在线| 欧美三级三级三级| 国产不卡在线播放| 无码av免费一区二区三区试看| 久久美女高清视频| 欧美精品一级二级| 成人av集中营| 奇米影视在线99精品| 亚洲人成网站影音先锋播放| 91精品国产色综合久久不卡电影| 国产综合成人久久大片91| 亚洲成人7777| 亚洲精品videosex极品| 亚洲精品久久久蜜桃| 久久午夜老司机| 91精品欧美综合在线观看最新| 色狠狠一区二区三区香蕉| 成人免费毛片片v| 经典一区二区三区| 蜜桃av一区二区三区电影| 亚洲与欧洲av电影| 中文字幕高清不卡| 国产夜色精品一区二区av| 日韩午夜在线观看视频| 欧美日韩在线一区二区| 色噜噜久久综合| 99re6这里只有精品视频在线观看| 国产呦精品一区二区三区网站| 日韩电影免费一区| 日日嗨av一区二区三区四区| 亚洲黄色尤物视频| 日韩理论在线观看| 亚洲丝袜美腿综合| 亚洲欧美日韩国产中文在线| 国产精品久久久久aaaa| 国产日韩欧美不卡| 国产精品色一区二区三区| 日本一区二区动态图| 国产欧美一区二区精品秋霞影院| 91精品国产综合久久精品性色| 欧美最猛黑人xxxxx猛交| 99riav久久精品riav| 91亚洲精华国产精华精华液| 韩国欧美一区二区| 婷婷国产v国产偷v亚洲高清| 亚洲va国产天堂va久久en| 亚洲高清免费视频| 视频一区二区三区在线| 久久精品久久99精品久久| 经典三级在线一区| 成人精品视频一区二区三区| 成人sese在线| 91成人在线免费观看| 欧美精品色综合| 日韩欧美一区中文| 久久中文娱乐网| 久久久久久久综合狠狠综合| 日本一区二区成人在线| 中文字幕一区二区三区在线不卡| 亚洲欧美日韩在线不卡| 偷拍一区二区三区四区| 五月激情综合婷婷| 国产一区二区成人久久免费影院| 国产精品1024| 97成人超碰视| 7777精品久久久大香线蕉| 精品国产乱码91久久久久久网站| 国产视频一区二区三区在线观看 | 欧美在线不卡视频| 日韩欧美国产成人一区二区| 国产精品美女久久久久久久久久久| 日韩一区日韩二区| 日本欧美一区二区三区乱码| 国产成人自拍在线| 欧美在线小视频| 日韩午夜电影在线观看| 国产精品亲子乱子伦xxxx裸| 午夜av一区二区三区| 不卡大黄网站免费看| 欧美视频在线一区| 中文字幕欧美日本乱码一线二线| 一区二区三区高清| 国产白丝网站精品污在线入口|