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

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

?? tcp_input.c

?? vxworks的完整的源代碼
?? 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一区二区三区免费野_久草精品视频
亚洲欧美偷拍三级| 亚洲一二三区不卡| 亚洲欧美成aⅴ人在线观看| 一区二区三区在线播放| 日本aⅴ亚洲精品中文乱码| www.视频一区| av亚洲精华国产精华精华| 欧美日韩午夜在线| 国产欧美日韩在线视频| 天天色天天爱天天射综合| 秋霞av亚洲一区二区三| 欧美在线一二三| 精品福利一区二区三区| 亚洲综合一区在线| 国产aⅴ综合色| 91丨九色丨国产丨porny| 日韩欧美一区中文| 一区二区三区鲁丝不卡| 国产精品99精品久久免费| 在线欧美日韩国产| 国产日韩欧美高清在线| 国产精品一区二区你懂的| 奇米色777欧美一区二区| 欧美一区二区视频网站| 日本欧美一区二区| 国产精品入口麻豆原神| 日本福利一区二区| 一区二区在线观看不卡| 成人精品高清在线| 中文成人综合网| 精品久久久网站| 国产酒店精品激情| 欧美日韩在线综合| 日韩毛片高清在线播放| 国内久久精品视频| 精品欧美黑人一区二区三区| 日韩在线一区二区| 欧美亚洲一区三区| 精品成人a区在线观看| 青青草91视频| 91麻豆精品国产91久久久久| 亚洲永久精品国产| 一本一本大道香蕉久在线精品| 综合久久综合久久| www.99精品| 亚洲欧洲中文日韩久久av乱码| 成人爱爱电影网址| 夜夜精品视频一区二区| 色999日韩国产欧美一区二区| 国产精品成人午夜| 色哟哟精品一区| 亚洲电影在线播放| 欧美日韩高清不卡| 三级欧美在线一区| 欧美日韩一区二区三区在线看| 日韩电影免费一区| 精品国产精品一区二区夜夜嗨 | 国产精品久久看| 粉嫩欧美一区二区三区高清影视| 国产精品每日更新| 91视频精品在这里| 亚洲成人福利片| 久久久无码精品亚洲日韩按摩| 亚洲一区免费在线观看| 欧美区一区二区三区| 亚洲高清不卡在线观看| 日韩欧美一级二级三级| 国产成人激情av| 自拍视频在线观看一区二区| 日韩欧美综合在线| 国产suv一区二区三区88区| ●精品国产综合乱码久久久久| 欧美日韩五月天| 欧美一区二区三区视频| 欧美一卡2卡三卡4卡5免费| 天天射综合影视| 国产一区二区三区久久悠悠色av| 国产精品99久久久久久有的能看 | xnxx国产精品| 国产午夜亚洲精品午夜鲁丝片| 亚洲激情中文1区| 久久国产尿小便嘘嘘尿| 欧美刺激脚交jootjob| 国产日产欧美一区二区三区| 精品一区二区三区的国产在线播放| 欧美激情中文不卡| 日韩一区二区在线观看视频| 91网上在线视频| 国产美女一区二区| 午夜欧美视频在线观看| 亚洲乱码国产乱码精品精的特点 | 欧美日本韩国一区| 成人激情午夜影院| 国产一区二区剧情av在线| 亚洲国产成人porn| 亚洲欧美一区二区三区极速播放| 久久久久久久久99精品| 日韩视频免费观看高清完整版| 在线看不卡av| 色综合天天综合网国产成人综合天| 激情五月婷婷综合网| 久久精品国产一区二区三| 午夜在线成人av| 亚洲一区在线观看免费| 亚洲男人天堂av| 成人欧美一区二区三区| 中文字幕欧美区| 欧美国产日韩精品免费观看| 久久久综合网站| 久久在线免费观看| 亚洲精品一区二区在线观看| 日韩精品一区二区三区中文精品 | 麻豆国产精品一区二区三区 | 亚洲免费色视频| 国产精品第13页| 国产精品天美传媒| 国产欧美日韩不卡免费| 中文字幕欧美日韩一区| 中文字幕亚洲成人| 亚洲女人****多毛耸耸8| 一区二区三国产精华液| 夜色激情一区二区| 一区二区三区免费网站| 亚洲图片自拍偷拍| 午夜精品一区二区三区三上悠亚| 日韩综合一区二区| 激情综合色丁香一区二区| 狠狠色2019综合网| 国产aⅴ综合色| 色999日韩国产欧美一区二区| 欧美色成人综合| 欧美夫妻性生活| 久久亚洲二区三区| 韩日av一区二区| 久久精品免费看| 日韩精品一区二区三区三区免费| 欧美老肥妇做.爰bbww视频| 色哟哟国产精品免费观看| 91在线小视频| 91成人网在线| 欧美高清视频一二三区 | 欧美精选一区二区| 在线亚洲一区观看| 91麻豆精品国产无毒不卡在线观看| 日韩一级大片在线观看| 国产欧美日韩综合精品一区二区| 亚洲精品国久久99热| 日日噜噜夜夜狠狠视频欧美人| 黑人巨大精品欧美一区| 91在线观看下载| 91精品国产美女浴室洗澡无遮挡| 久久综合九色综合97婷婷 | 久久免费精品国产久精品久久久久| 国产精品久久久久桃色tv| 亚洲国产精品影院| 国产91精品露脸国语对白| 欧美精品精品一区| 国产精品国产三级国产有无不卡| 日韩黄色小视频| 99精品视频一区| 精品毛片乱码1区2区3区| 亚洲日本丝袜连裤袜办公室| 精品一二三四区| 色一区在线观看| 欧美大片在线观看| 在线观看欧美日本| 亚洲一区二区三区中文字幕| 欧美亚洲丝袜传媒另类| 不卡av在线网| 日韩亚洲欧美在线观看| 最新热久久免费视频| 久久99久久99| 欧美日韩高清在线| 伊人开心综合网| 久久超碰97中文字幕| 欧洲精品一区二区三区在线观看| 精品国产一二三| 五月天激情综合| 欧美亚洲高清一区二区三区不卡| 国产精品每日更新| 国产福利一区二区三区视频| 制服丝袜亚洲色图| 亚洲综合图片区| 99精品视频在线观看免费| 久久九九影视网| 久久se精品一区二区| 欧美一区二区三区在线观看| 亚洲成人一二三| 在线视频你懂得一区| 亚洲精品中文字幕乱码三区| 国产69精品久久久久777| 久久奇米777| 久88久久88久久久| 精品国产一区二区三区不卡| 久久99最新地址| 久久久久久久综合日本| 国产成人无遮挡在线视频| 久久久亚洲欧洲日产国码αv| 狠狠色丁香婷综合久久| xnxx国产精品|