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

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

?? pppfsm.c

?? 這是新華龍(www.xhl.xom.xn)開發的
?? C
?? 第 1 頁 / 共 2 頁
字號:
			/* 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一区二区三区免费野_久草精品视频
成人动漫一区二区三区| 99精品视频在线观看免费| 中文字幕国产一区| 欧美日韩国产高清一区二区三区| 国产一区二区成人久久免费影院| 亚洲三级免费电影| 久久综合九色综合97婷婷女人| 欧美色电影在线| 国产成人精品一区二区三区网站观看| 日韩av在线发布| 中文字幕五月欧美| 久久在线免费观看| 欧美精品九九99久久| 97精品国产97久久久久久久久久久久| 久久精品国内一区二区三区| 亚洲一区二区三区四区五区中文| 亚洲欧洲精品成人久久奇米网| 欧美mv日韩mv亚洲| 欧美一级在线免费| 欧美日韩国产综合视频在线观看| 97久久精品人人做人人爽 | 亚洲午夜视频在线| 亚洲日本乱码在线观看| 国产精品久久久久一区二区三区| 精品国产乱子伦一区| 日韩免费高清av| 欧美一区二区在线播放| 欧美日韩精品一区二区天天拍小说 | 亚洲老司机在线| 亚洲欧洲日韩在线| 国产精品美女久久福利网站| 国产亚洲美州欧州综合国| 日韩三级高清在线| 精品国一区二区三区| 26uuu国产在线精品一区二区| 555www色欧美视频| 欧美日韩精品欧美日韩精品一 | 免费成人av在线播放| 奇米精品一区二区三区在线观看| 曰韩精品一区二区| 亚洲综合丝袜美腿| 午夜视黄欧洲亚洲| 免费观看在线综合| 国产一区二三区| 国产大片一区二区| 99视频一区二区| 91捆绑美女网站| 欧美日韩一卡二卡| 欧美一级视频精品观看| 久久综合久久综合久久综合| 国产日韩在线不卡| 亚洲天堂网中文字| 亚洲国产美女搞黄色| 日韩精品视频网站| 国产一区二区三区在线观看免费 | 欧美韩日一区二区三区| 中文av字幕一区| 亚洲视频综合在线| 午夜精品久久久久久久久| 日韩在线一区二区三区| 久久国产尿小便嘘嘘尿| 成人影视亚洲图片在线| 在线观看免费亚洲| 日韩精品一区二区三区四区| 欧美激情一区二区在线| 亚洲一区在线视频| 久久99精品久久久久久动态图| 国产成人av自拍| 一本一本久久a久久精品综合麻豆| 欧美午夜精品一区二区三区| 精品噜噜噜噜久久久久久久久试看| 精品国精品自拍自在线| 成人欧美一区二区三区视频网页| 偷窥少妇高潮呻吟av久久免费 | 欧美这里有精品| 精品国产乱码久久久久久免费| 亚洲欧洲日韩av| 日韩avvvv在线播放| 成人美女视频在线观看18| 欧美蜜桃一区二区三区| 国产亚洲精品资源在线26u| 亚洲国产精品一区二区久久| 国产精品一区二区久久精品爱涩 | 91麻豆成人久久精品二区三区| 欧美一级片免费看| 国产精品五月天| 青青草国产精品亚洲专区无| 99r国产精品| 久久先锋影音av| 亚洲图片欧美综合| 成人动漫视频在线| 欧美刺激脚交jootjob| 亚洲精品久久久蜜桃| 国产成人精品亚洲日本在线桃色| 欧美性色综合网| 中文字幕不卡在线播放| 久久疯狂做爰流白浆xx| 在线观看不卡视频| 国产精品久久久久久一区二区三区 | 成人动漫精品一区二区| 日韩视频免费观看高清完整版| 亚洲欧美日韩中文播放| 国产一区二区三区黄视频| 欧美高清视频不卡网| 亚洲免费成人av| 国产mv日韩mv欧美| 精品国产成人在线影院| 日本不卡一区二区三区| 在线精品视频免费观看| 国产精品毛片大码女人| 国产精品一区二区在线看| 欧美本精品男人aⅴ天堂| 亚洲大片在线观看| 91国在线观看| 亚洲视频一区二区在线| 大尺度一区二区| 久久久国产午夜精品| 国产一区二区三区黄视频 | 亚洲乱码日产精品bd| 国产91精品免费| 欧美成人aa大片| 日本成人超碰在线观看| 欧美一级片免费看| 免费日韩伦理电影| 欧美丰满少妇xxxbbb| 丝袜a∨在线一区二区三区不卡| 欧美亚洲一区二区三区四区| 樱花草国产18久久久久| 一本久道中文字幕精品亚洲嫩| 最好看的中文字幕久久| 99精品视频在线播放观看| 国产精品国模大尺度视频| av一区二区三区四区| 中文字幕在线不卡一区二区三区| 国产91在线观看| 18成人在线观看| 色综合色狠狠综合色| 亚洲一区二区四区蜜桃| 欧美日韩一区二区三区高清| 午夜精品福利一区二区蜜股av | 一本色道久久综合亚洲aⅴ蜜桃| 亚洲精品一卡二卡| 欧美日韩色综合| 奇米影视7777精品一区二区| 日韩一级大片在线| 国产一区二区三区高清播放| 国产精品免费丝袜| 91麻豆.com| 日本亚洲视频在线| 欧美精品一区二区在线观看| 国产成人精品一区二区三区四区| 国产精品毛片高清在线完整版 | 国产女人18毛片水真多成人如厕 | av不卡在线播放| 一区二区久久久久久| 91精品国产手机| 国产乱一区二区| 日韩毛片视频在线看| 欧美高清性hdvideosex| 国产乱子轮精品视频| 亚洲视频网在线直播| 在线播放亚洲一区| 国产麻豆成人传媒免费观看| 亚洲男帅同性gay1069| 91麻豆精品国产| 国产999精品久久久久久绿帽| 亚洲品质自拍视频| 欧美一级专区免费大片| 成人av在线影院| 亚洲成a人v欧美综合天堂| 久久久91精品国产一区二区三区| 色综合婷婷久久| 美国三级日本三级久久99| 国产精品国产精品国产专区不蜜| 欧美日韩美少妇| 成人免费看黄yyy456| 天天综合网 天天综合色| 国产网红主播福利一区二区| 在线观看成人小视频| 国产精品影视在线观看| 亚洲bt欧美bt精品| 欧美国产精品久久| 欧美电影在线免费观看| 成人午夜精品一区二区三区| 天天影视色香欲综合网老头| 久久精品在这里| 欧美日韩不卡在线| 成人app网站| 精品一区二区三区视频在线观看 | 久久黄色级2电影| 一区二区在线观看av| 久久蜜桃一区二区| 7777精品久久久大香线蕉| 91美女片黄在线观看91美女| 韩国欧美一区二区| 天天色图综合网| 亚洲乱码日产精品bd| 欧美国产精品一区| 久久亚洲影视婷婷| 欧美大片日本大片免费观看|