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

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

?? pppfsm.c

?? 完整的TCPIP!驗證過的!
?? C
?? 第 1 頁 / 共 2 頁
字號:
		case fsmCLOSED:
		case fsmLISTEN:
			/* Out of Sync; kill the remote */
			fsm_sendtermack(fsm_p, hdr.id);
			/* fallthru */
		case fsmTERM_Sent:
			/* We are attempting to close connection; */
			/* wait for timeout to resend a Terminate Request */
			free_p(bpp);
			break;
		};
		break;

	case CONFIG_NAK:
		switch(fsm_p->state) {
		case fsmREQ_Sent:
		case fsmACK_Sent:
			/* Update our config request to reflect NAKed options */
			if ((*fsm_p->pdc->nak)(fsm_p, &hdr, bpp) == 0) {
				/* Send updated config request */
				fsm_sendreq(fsm_p);
			}
			break;

		case fsmOPENED:		/* Unexpected event? */
			(*fsm_p->pdc->closing)(fsm_p);
			(*fsm_p->pdc->starting)(fsm_p);
			fsm_reset(fsm_p);
			/* fallthru */
		case fsmACK_Rcvd:	/* Unexpected event? */
			free_p(bpp);
			fsm_sendreq(fsm_p);
			fsm_p->state = fsmREQ_Sent;
			break;

		case fsmCLOSED:
		case fsmLISTEN:
			/* Out of Sync; kill the remote */
			fsm_sendtermack(fsm_p, hdr.id);
			/* fallthru */
		case fsmTERM_Sent:
			/* We are attempting to close connection; */
			/* wait for timeout to resend a Terminate Request */
			free_p(bpp);
			break;
		};
		break;

	case CONFIG_REJ:
		switch(fsm_p->state) {
		case fsmREQ_Sent:
		case fsmACK_Sent:
			if((*fsm_p->pdc->reject)(fsm_p, &hdr, bpp) == 0) {
				fsm_sendreq(fsm_p);
			}
			break;

		case fsmOPENED:		/* Unexpected event? */
			(*fsm_p->pdc->closing)(fsm_p);
			(*fsm_p->pdc->starting)(fsm_p);
			fsm_reset(fsm_p);
			/* fallthru */
		case fsmACK_Rcvd:	/* Unexpected event? */
			free_p(bpp);
			fsm_sendreq(fsm_p);
			fsm_p->state = fsmREQ_Sent;
			break;

		case fsmCLOSED:
		case fsmLISTEN:
			/* Out of Sync; kill the remote */
			fsm_sendtermack(fsm_p, hdr.id);
			/* fallthru */
		case fsmTERM_Sent:
			/* We are attempting to close connection; */
			/* wait for timeout to resend a Terminate Request */
			free_p(bpp);
			break;
		};
		break;

	case TERM_REQ:
		fsm_log(fsm_p, "Peer requested Termination");

		switch(fsm_p->state) {
		case fsmOPENED:
			fsm_sendtermack(fsm_p, hdr.id);
			(*fsm_p->pdc->closing)(fsm_p);
			(*fsm_p->pdc->stopping)(fsm_p);
			fsm_reset(fsm_p);
			break;

		case fsmACK_Rcvd:
		case fsmACK_Sent:
			fsm_p->state = fsmREQ_Sent;
			/* fallthru */
		case fsmREQ_Sent:
		case fsmTERM_Sent:
			/* waiting for timeout */
			/* fallthru */
		case fsmCLOSED:
		case fsmLISTEN:
			/* Unexpected, but make them happy */
			fsm_sendtermack(fsm_p, hdr.id);
			break;
		};
		break;

	case TERM_ACK:
		switch(fsm_p->state) {
		case fsmTERM_Sent:
			stop_timer(&(fsm_p->timer));

			fsm_log(fsm_p, "Terminated");
			(*fsm_p->pdc->stopping)(fsm_p);
			fsm_reset(fsm_p);
			break;

		case fsmOPENED:
			/* Remote host has abruptly closed connection */
			fsm_log(fsm_p, "Terminated unexpectly");
			(*fsm_p->pdc->closing)(fsm_p);
			fsm_reset(fsm_p);
			if ( fsm_sendreq(fsm_p) == 0 ) {
				fsm_p->state = fsmREQ_Sent;
			}
			break;

		case fsmACK_Sent:
		case fsmACK_Rcvd:
			fsm_p->state = fsmREQ_Sent;
			/* fallthru */
		case fsmREQ_Sent:
			/* waiting for timeout */
			/* fallthru */
		case fsmCLOSED:
		case fsmLISTEN:
			/* Unexpected, but no action needed */
			break;
		};
		break;

	case CODE_REJ:
		trace_log(PPPiface,"%s PPP/%s Code Reject;"
			" indicates faulty implementation",
			fsm_p->ppp_p->iface->name,
			fsm_p->pdc->name);
		(*fsm_p->pdc->stopping)(fsm_p);
		fsm_reset(fsm_p);
		free_p(bpp);
		break;

	case PROT_REJ:
		trace_log(PPPiface,"%s PPP/%s Protocol Reject;"
			" please do not use this protocol",
			fsm_p->ppp_p->iface->name,
			fsm_p->pdc->name);
		free_p(bpp);
		break;

	case ECHO_REQ:
		switch(fsm_p->state) {
		case fsmOPENED:
			fsm_send( fsm_p, ECHO_REPLY, hdr.id, bpp );
			break;

		case fsmCLOSED:
		case fsmLISTEN:
			/* Out of Sync; kill the remote */
			fsm_sendtermack(fsm_p, hdr.id);
			/* fallthru */
		case fsmREQ_Sent:
		case fsmACK_Rcvd:
		case fsmACK_Sent:
		case fsmTERM_Sent:
			/* ignore */
			free_p(bpp);
			break;
		};
		break;

	case ECHO_REPLY:
	case DISCARD_REQ:
	case QUALITY_REPORT:
		free_p(bpp);
		break;

	default:
		trace_log(PPPiface,"%s PPP/%s Unknown packet type: %d;"
			" Sending Code Reject",
			fsm_p->ppp_p->iface->name,
			fsm_p->pdc->name,
			hdr.code);

		hdr.len += CONFIG_HDR_LEN;	/* restore length */
		htoncnf( &hdr, bpp );	/* put header back on */
		fsm_send( fsm_p, CODE_REJ, hdr.id, bpp );

		switch(fsm_p->state) {
		case fsmREQ_Sent:
		case fsmACK_Rcvd:
		case fsmACK_Sent:
		case fsmOPENED:
			fsm_p->state = fsmLISTEN;
			break;

		case fsmCLOSED:
		case fsmLISTEN:
		case fsmTERM_Sent:
			/* no change */
			break;
		};
		break;
	}
}


/************************************************************************/
/* Timeout while waiting for reply from remote host */
static void
fsm_timeout(vp)
void *vp;
{
	struct fsm_s *fsm_p = (struct fsm_s *)vp;

	PPPtrace = fsm_p->ppp_p->trace;
	PPPiface = fsm_p->ppp_p->iface;

	fsm_log( fsm_p, "Timeout" );

	switch(fsm_p->state) {
	case fsmREQ_Sent:
	case fsmACK_Rcvd:
	case fsmACK_Sent:
		if (fsm_p->retry > 0) {
			fsm_sendreq(fsm_p);
			fsm_p->state = fsmREQ_Sent;
		} else {
			fsm_log(fsm_p, "Request retry exceeded");
			fsm_reset(fsm_p);
		}
		break;

	case fsmTERM_Sent:
		if (fsm_p->retry > 0) {
			fsm_sendtermreq(fsm_p);
		} else {
			fsm_log(fsm_p, "Terminate retry exceeded");
			(*fsm_p->pdc->stopping)(fsm_p);
			fsm_reset(fsm_p);
		}
		break;

	case fsmCLOSED:
	case fsmLISTEN:
	case fsmOPENED:
		/* nothing to do */
		break;
	}
}


/************************************************************************/
/*			I N I T I A L I Z A T I O N			*/
/************************************************************************/

/* Start FSM (after open event, and physical line up) */
void
fsm_start(fsm_p)
struct fsm_s *fsm_p;
{
	if ( fsm_p->pdv == NULL )
		return;

	PPPtrace = fsm_p->ppp_p->trace;
	PPPiface = fsm_p->ppp_p->iface;

	fsm_log(fsm_p, "Start");

	if ( !(fsm_p->flags & (FSM_ACTIVE | FSM_PASSIVE)) )
		return;

	switch ( fsm_p->state ) {
	case fsmCLOSED:
	case fsmLISTEN:
	case fsmTERM_Sent:
		(*fsm_p->pdc->starting)(fsm_p);
		fsm_reset(fsm_p);

		if ( fsm_p->flags & FSM_ACTIVE ){
			fsm_sendreq(fsm_p);
			fsm_p->state = fsmREQ_Sent;
		}
		break;
	default:
		/* already started */
		break;
	};
}


/************************************************************************/
/* Physical Line Down Event */
void
fsm_down(fsm_p)
struct fsm_s *fsm_p;
{
	if ( fsm_p->pdv == NULL )
		return;

	PPPtrace = fsm_p->ppp_p->trace;
	PPPiface = fsm_p->ppp_p->iface;

	fsm_log(fsm_p, "Down");

	switch ( fsm_p->state ) {
	case fsmREQ_Sent:
	case fsmACK_Rcvd:
	case fsmACK_Sent:
		stop_timer(&(fsm_p->timer));
		fsm_reset(fsm_p);
		break;

	case fsmOPENED:
		(*fsm_p->pdc->closing)(fsm_p);
		/* fallthru */
	case fsmTERM_Sent:
		fsm_reset(fsm_p);
		break;

	case fsmCLOSED:
	case fsmLISTEN:
		/* nothing to do */
		break;
	};
}


/************************************************************************/
/* Close the connection */
void
fsm_close(fsm_p)
struct fsm_s *fsm_p;
{
	if ( fsm_p->pdv == NULL )
		return;

	PPPtrace = fsm_p->ppp_p->trace;
	PPPiface = fsm_p->ppp_p->iface;

	fsm_log(fsm_p, "Close");

	switch ( fsm_p->state ) {
	case fsmOPENED:
		(*fsm_p->pdc->closing)(fsm_p);
		/* fallthru */
	case fsmACK_Sent:
		fsm_p->retry = fsm_p->try_terminate;
		fsm_sendtermreq(fsm_p);
		fsm_p->state = fsmTERM_Sent;
		break;

	case fsmREQ_Sent:
	case fsmACK_Rcvd:
		/* simply wait for REQ timeout to expire */
		fsm_p->retry = 0;
		fsm_p->state = fsmTERM_Sent;
		break;

	case fsmLISTEN:
		fsm_p->state = fsmCLOSED;
		break;

	case fsmTERM_Sent:
	case fsmCLOSED:
		/* nothing to do */
		break;
	};
}


/************************************************************************/
/* Initialize the fsm for this protocol
 * Called from protocol _init
 */
void
fsm_init(fsm_p)
struct fsm_s *fsm_p;
{
	struct timer *t = &(fsm_p->timer);

	PPP_DEBUG_ROUTINES("fsm_init()");

	fsm_p->try_req = fsm_p->pdc->try_req;
	fsm_p->try_nak = fsm_p->pdc->try_nak;
	fsm_p->try_terminate = fsm_p->pdc->try_terminate;
	fsm_reset(fsm_p);

	/* Initialize timer */
	t->func = (void (*)())fsm_timeout;
	t->arg = (void *)fsm_p;
	set_timer(t, fsm_p->pdc->timeout);
	fsm_timer(fsm_p);
	stop_timer(t);
}


void
fsm_free(fsm_p)
struct fsm_s *fsm_p;
{
	if ( fsm_p->pdv != NULL ) {
		(*fsm_p->pdc->free)(fsm_p);

		free( fsm_p->pdv );
		fsm_p->pdv = NULL;
	}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品色眯眯| 欧美人体做爰大胆视频| 国产区在线观看成人精品| 久久国产尿小便嘘嘘| 日韩一区二区精品在线观看| 日韩av电影天堂| 精品日韩一区二区三区 | 精品剧情在线观看| 国产综合久久久久久鬼色| 国产丝袜欧美中文另类| 99久久99久久精品国产片果冻| 亚洲视频图片小说| 欧美日韩另类一区| 精彩视频一区二区三区| 日韩电影网1区2区| 久久亚洲一级片| 99国产精品久久久久久久久久久| 亚洲色大成网站www久久九九| 欧美色区777第一页| 狠狠色丁香久久婷婷综合_中| 国产免费成人在线视频| 欧美综合色免费| 黄色精品一二区| 一区二区三区影院| 日韩亚洲欧美成人一区| 国产69精品一区二区亚洲孕妇| 亚洲激情图片qvod| 日韩欧美国产高清| 色综合一区二区| 免费黄网站欧美| 中文字幕日本不卡| 日韩午夜电影在线观看| 成人午夜精品一区二区三区| 香港成人在线视频| 国产欧美日本一区视频| 91精品国产综合久久精品性色| 国产福利视频一区二区三区| 亚洲gay无套男同| 国产精品伦一区二区三级视频| 欧美性生活一区| 成人性视频免费网站| 亚洲mv在线观看| 国产精品美女久久久久久| 日韩一二三区视频| 欧美性受xxxx| 99re亚洲国产精品| 国产在线播放一区| 日韩精品亚洲专区| 亚洲三级视频在线观看| 久久精品一区蜜桃臀影院| 欧美高清你懂得| 91精品福利在线| 成人av一区二区三区| 狠狠色狠狠色综合系列| 午夜精品久久久久久久| 亚洲日本乱码在线观看| 日本一区二区三区视频视频| 欧美一区在线视频| 欧美日韩视频专区在线播放| av在线这里只有精品| 国产美女精品一区二区三区| 日韩黄色片在线观看| 亚洲免费在线播放| 中文字幕一区二区三区在线不卡| www欧美成人18+| 26uuu欧美| 欧美成人vps| 欧美一区二区三区免费视频| 欧美精品乱码久久久久久 | 欧美日韩在线一区二区| 99热这里都是精品| 国产91高潮流白浆在线麻豆| 国产成人自拍高清视频在线免费播放| 日韩精品一级中文字幕精品视频免费观看 | 99久久精品国产网站| 国产成人av网站| 国产丶欧美丶日本不卡视频| 韩国欧美国产1区| 国内精品不卡在线| 国产在线观看一区二区| 国产原创一区二区| 国内精品免费**视频| 国产九色sp调教91| 国产毛片一区二区| 成人毛片在线观看| av福利精品导航| 色成人在线视频| 欧美视频在线观看一区| 欧美日韩在线电影| 538prom精品视频线放| 欧美日本国产一区| 精品少妇一区二区三区日产乱码 | 亚洲一区二区三区精品在线| 亚洲一区二区欧美激情| 日韩av网站免费在线| 久久99精品久久久| 成人精品小蝌蚪| 91论坛在线播放| 欧美日本乱大交xxxxx| 欧美成人官网二区| 欧美经典三级视频一区二区三区| 亚洲欧美乱综合| 日产国产高清一区二区三区| 国产综合色精品一区二区三区| 成人午夜看片网址| 欧美日韩在线观看一区二区| 久久综合九色综合欧美就去吻| 国产精品美女久久久久久久久| 亚洲一区二区欧美日韩 | 欧美激情一区二区三区全黄| 亚洲视频网在线直播| 欧美96一区二区免费视频| 国产露脸91国语对白| 91蜜桃传媒精品久久久一区二区| 777xxx欧美| 中文字幕精品—区二区四季| 日韩黄色小视频| 99久久综合99久久综合网站| 9191成人精品久久| 亚洲国产高清aⅴ视频| 国产一区二区在线影院| 国产91精品免费| 一本色道**综合亚洲精品蜜桃冫 | 在线影视一区二区三区| 欧美久久久影院| 久久精品一区二区三区不卡牛牛| 国产三级精品三级| 亚洲女性喷水在线观看一区| 麻豆精品视频在线观看视频| 国产成人在线免费| 色欲综合视频天天天| 欧美一区二区三区免费| 国产精品女人毛片| 午夜在线成人av| 国产自产视频一区二区三区| 色综合婷婷久久| 日韩欧美色综合网站| 中文字幕欧美激情一区| 久久疯狂做爰流白浆xx| 成人毛片视频在线观看| 91精品国产乱| 综合色天天鬼久久鬼色| 日本美女一区二区| 在线观看亚洲一区| 久久久久综合网| 亚洲精品福利视频网站| 韩国欧美国产一区| 欧美三级在线播放| 亚洲另类在线一区| 国产在线精品一区二区不卡了 | 日本中文字幕一区二区有限公司| 懂色av一区二区三区免费观看| 欧美老女人第四色| 国产精品久久久久精k8| 美女视频黄 久久| 7777精品伊人久久久大香线蕉超级流畅| 久久九九国产精品| 日韩电影网1区2区| 欧美亚洲国产怡红院影院| 国产偷v国产偷v亚洲高清| 精品午夜久久福利影院| 欧美人与禽zozo性伦| 亚洲精品免费在线播放| 国产成人精品三级麻豆| 欧美一区二区二区| 一区二区久久久久久| 99国产精品久久久久久久久久久| 久久久精品2019中文字幕之3| 亚洲欧美日韩中文播放| 色域天天综合网| 日韩一区有码在线| 成人影视亚洲图片在线| 精品国产91洋老外米糕| 国产高清视频一区| 欧美大片顶级少妇| 久久精品免费看| 欧美日本一道本| 亚洲精品中文在线| 欧美一a一片一级一片| 亚洲男人的天堂av| 91色porny蝌蚪| 国产精品不卡在线| 91成人在线观看喷潮| 亚洲综合色网站| 欧美中文字幕亚洲一区二区va在线 | 91美女蜜桃在线| 日韩毛片精品高清免费| 成人福利视频在线| 中文字幕制服丝袜成人av| 色综合久久久久久久久| 一区二区三区精品在线观看| 色综合色狠狠天天综合色| 中文字幕中文字幕一区| 99久久久精品| 午夜一区二区三区视频| 4438x亚洲最大成人网| 日韩中文字幕不卡| 欧美变态口味重另类| 色呦呦国产精品| 亚洲与欧洲av电影|