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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? fsm.c

?? vxworks下的實(shí)現(xiàn)網(wǎng)絡(luò)TCPIP協(xié)議的原代碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* fsm.c - {Link, IP} Control Protocol Finite State Machine *//* Copyright 1995 Wind River Systems, Inc. */#include "copyright_wrs.h"/* * Copyright (c) 1989 Carnegie Mellon University. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by Carnegie Mellon University.  The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. *//*modification history--------------------01d,10sep98,sgv  Added fix for interoperating with Windows01c,16jun95,dzb  header file consolidation.                 changed [UN]TIMEOUT macros to PPP_[UN]TIMEOUT.01b,16jan95,dzb  warnings cleanup.01a,21dec94,dab  VxWorks port - first WRS version.           +dzb  added: path for ppp header files, WRS copyright, strLib.h.*//* * TODO: * Deal with variable outgoing MTU. */#include "vxWorks.h"#include "stdio.h"#include "strLib.h"#include "sys/types.h"#include "socket.h"#include "net/if.h"#include "pppLib.h"extern char *proto_name();static void fsm_timeout __ARGS((caddr_t));static void fsm_rconfreq __ARGS((fsm *, int, u_char *, int));static void fsm_rconfack __ARGS((fsm *, int, u_char *, int));static void fsm_rconfnakrej __ARGS((fsm *, int, int, u_char *, int));static void fsm_rtermreq __ARGS((fsm *, int));static void fsm_rtermack __ARGS((fsm *));static void fsm_rcoderej __ARGS((fsm *, u_char *, int));static void fsm_sconfreq __ARGS((fsm *, int));#define PROTO_NAME(f)	((f)->callbacks->proto_name)/* * fsm_init - Initialize fsm. * * Initialize fsm state. */voidfsm_init(f)    fsm *f;{    f->state = INITIAL;    f->flags = 0;    f->id = (u_char)random();    f->timeouttime = DEFTIMEOUT;    f->maxconfreqtransmits = DEFMAXCONFREQS;    f->maxtermtransmits = DEFMAXTERMREQS;    f->maxnakloops = DEFMAXNAKLOOPS;}/* * fsm_lowerup - The lower layer is up. */voidfsm_lowerup(f)    fsm *f;{    switch( f->state ){    case INITIAL:	f->state = CLOSED;	break;    case STARTING:	if( f->flags & OPT_SILENT )	    f->state = STOPPED;	else {	    /* Send an initial configure-request */	    fsm_sconfreq(f, 0);	    f->state = REQSENT;	}	break;    default:	FSMDEBUG((LOG_INFO, "%s: Up event in state %d!",                  PROTO_NAME(f), f->state));    }}/* * fsm_lowerdown - The lower layer is down. * * Cancel all timeouts and inform upper layers. */voidfsm_lowerdown(f)    fsm *f;{    switch( f->state ){    case CLOSED:	f->state = INITIAL;	break;    case STOPPED:	f->state = STARTING;	if( f->callbacks->starting )	    (*f->callbacks->starting)(f);	break;    case CLOSING:	f->state = INITIAL;	PPP_UNTIMEOUT(fsm_timeout, (caddr_t) f);	/* Cancel timeout */	break;    case STOPPING:    case REQSENT:    case ACKRCVD:    case ACKSENT:	f->state = STARTING;	PPP_UNTIMEOUT(fsm_timeout, (caddr_t) f);	/* Cancel timeout */	break;    case OPENED:	if( f->callbacks->down )	    (*f->callbacks->down)(f);	f->state = STARTING;	break;    default:	FSMDEBUG((LOG_INFO, "%s: Down event in state %d!",                  PROTO_NAME(f), f->state));    }}/* * fsm_open - Link is allowed to come up. */voidfsm_open(f)    fsm *f;{    switch( f->state ){    case INITIAL:	f->state = STARTING;	if( f->callbacks->starting )	    (*f->callbacks->starting)(f);	break;    case CLOSED:	if( f->flags & OPT_SILENT )	    f->state = STOPPED;	else {	    /* Send an initial configure-request */	    fsm_sconfreq(f, 0);	    f->state = REQSENT;	}	break;    case CLOSING:	f->state = STOPPING;	/* fall through */    case STOPPED:    case OPENED:	if( f->flags & OPT_RESTART ){	    fsm_lowerdown(f);	    fsm_lowerup(f);	}	break;    }}/* * fsm_close - Start closing connection. * * Cancel timeouts and either initiate close or possibly go directly to * the CLOSED state. */voidfsm_close(f)    fsm *f;{    switch( f->state ){    case STARTING:	f->state = INITIAL;	break;    case STOPPED:	f->state = CLOSED;	break;    case STOPPING:	f->state = CLOSING;	break;    case REQSENT:    case ACKRCVD:    case ACKSENT:    case OPENED:	if( f->state != OPENED )	    PPP_UNTIMEOUT(fsm_timeout, (caddr_t) f);	/* Cancel timeout */	else if( f->callbacks->down )	    (*f->callbacks->down)(f);	/* Inform upper layers we're down */	/* Init restart counter, send Terminate-Request */	f->retransmits = f->maxtermtransmits;	fsm_sdata(f, TERMREQ, f->reqid = ++f->id, NULL, 0);	PPP_TIMEOUT(fsm_timeout, (caddr_t) f, f->timeouttime);	--f->retransmits;	f->state = CLOSING;	break;    }}/* * fsm_timeout - Timeout expired. */static voidfsm_timeout(arg)    caddr_t arg;{    fsm *f = (fsm *) arg;    switch (f->state) {    case CLOSING:    case STOPPING:	if( f->retransmits <= 0 ){	    /*	     * We've waited for an ack long enough.  Peer probably heard us.	     */	    f->state = (f->state == CLOSING)? CLOSED: STOPPED;	    if( f->callbacks->finished )		(*f->callbacks->finished)(f);	} else {	    /* Send Terminate-Request */	    fsm_sdata(f, TERMREQ, f->reqid = ++f->id, NULL, 0);	    PPP_TIMEOUT(fsm_timeout, (caddr_t) f, f->timeouttime);	    --f->retransmits;	}	break;    case REQSENT:    case ACKRCVD:    case ACKSENT:	if (f->retransmits <= 0) {	    syslog(LOG_WARNING, "%s: timeout sending Config-Requests",                   PROTO_NAME(f));	    f->state = STOPPED;	    if( (f->flags & OPT_PASSIVE) == 0 && f->callbacks->finished )		(*f->callbacks->finished)(f);	} else {	    /* Retransmit the configure-request */	    if (f->callbacks->retransmit)		(*f->callbacks->retransmit)(f);	    fsm_sconfreq(f, 1);		/* Re-send Configure-Request */	    if( f->state == ACKRCVD )		f->state = REQSENT;	}	break;    default:	FSMDEBUG((LOG_INFO, "%s: Timeout event in state %d!",                  PROTO_NAME(f), f->state));    }}/* * fsm_input - Input packet. */voidfsm_input(f, inpacket, l)    fsm *f;    u_char *inpacket;    int l;{    u_char *inp;    u_char code, id;    int len;    /*     * Parse header (code, id and length).     * If packet too short, drop it.     */    inp = inpacket;    if (l < HEADERLEN) {	FSMDEBUG((LOG_WARNING, "fsm_input(%x): Rcvd short header.",                  f->protocol));	return;    }    GETCHAR(code, inp);    GETCHAR(id, inp);    GETSHORT(len, inp);    if (len < HEADERLEN) {	FSMDEBUG((LOG_INFO, "fsm_input(%x): Rcvd illegal length.",                  f->protocol));	return;    }    if (len > l) {	FSMDEBUG((LOG_INFO, "fsm_input(%x): Rcvd short packet.",                  f->protocol));	return;    }    len -= HEADERLEN;		/* subtract header length */    if( f->state == INITIAL || f->state == STARTING ){	FSMDEBUG((LOG_INFO, "fsm_input(%x): Rcvd packet in state %d.",		  f->protocol, f->state));	return;    }    /*     * Action depends on code.     */    switch (code) {    case CONFREQ:	fsm_rconfreq(f, id, inp, len);	break;        case CONFACK:	fsm_rconfack(f, id, inp, len);	break;        case CONFNAK:    case CONFREJ:	fsm_rconfnakrej(f, code, id, inp, len);	break;        case TERMREQ:	fsm_rtermreq(f, id);	break;        case TERMACK:	fsm_rtermack(f);	break;        case CODEREJ:	fsm_rcoderej(f, inp, len);	break;        default:	if( !f->callbacks->extcode	   || !(*f->callbacks->extcode)(f, code, id, inp, len) )	    fsm_sdata(f, CODEREJ, ++f->id, inpacket, len + HEADERLEN);	break;    }}/* * fsm_rconfreq - Receive Configure-Request. */static voidfsm_rconfreq(f, id, inp, len)    fsm *f;    u_char id;    u_char *inp;    int len;{    int code = 0, reject_if_disagree;    FSMDEBUG((LOG_INFO, "fsm_rconfreq(%s): Rcvd id %d.", PROTO_NAME(f), id));    switch( f->state ){    case CLOSED:	/* Go away, we're closed */	fsm_sdata(f, TERMACK, id, NULL, 0);	return;    case CLOSING:    case STOPPING:	return;    case OPENED:	/* Go down and restart negotiation */	if( f->callbacks->down )	    (*f->callbacks->down)(f);	/* Inform upper layers */	fsm_sconfreq(f, 0);		/* Send initial Configure-Request */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区三区沐欲| 久久国产人妖系列| 亚洲精品菠萝久久久久久久| 亚洲日本护士毛茸茸| 亚洲国产日韩a在线播放| 日韩成人精品在线| 国产精品羞羞答答xxdd| 成人看片黄a免费看在线| 一本到不卡免费一区二区| 欧美夫妻性生活| 国产三级精品三级在线专区| 亚洲精品一二三| 老汉av免费一区二区三区| 国产成人精品免费看| 欧亚洲嫩模精品一区三区| 日韩视频在线观看一区二区| 国产精品美女久久久久久 | 狠狠色综合播放一区二区| 大桥未久av一区二区三区中文| 色天使色偷偷av一区二区| 日韩欧美国产综合在线一区二区三区| 久久综合色一综合色88| 亚洲精品日韩专区silk| 久久不见久久见中文字幕免费| 成人黄色在线视频| 欧美一卡二卡在线| 国产精品看片你懂得| 日本欧美久久久久免费播放网| 国产成a人亚洲精品| 欧美久久一二三四区| 欧美激情在线一区二区三区| 丝袜美腿亚洲色图| jlzzjlzz亚洲女人18| 日韩精品中文字幕在线不卡尤物| 中文字幕在线不卡| 久久成人18免费观看| 在线中文字幕一区| 国产欧美精品一区二区三区四区 | 91猫先生在线| 精品国产免费视频| 丝袜美腿一区二区三区| 91在线观看成人| 国产亚洲一区二区三区在线观看| 亚洲一卡二卡三卡四卡五卡| 盗摄精品av一区二区三区| 日韩欧美123| 亚洲第一主播视频| 97久久精品人人爽人人爽蜜臀| 精品国产乱码久久久久久图片 | 欧美一二三区精品| 洋洋成人永久网站入口| 成人性色生活片免费看爆迷你毛片| 欧美日高清视频| 亚洲美女偷拍久久| 波多野结衣的一区二区三区| 久久免费精品国产久精品久久久久| 亚洲成av人片一区二区| 99久久婷婷国产综合精品| xvideos.蜜桃一区二区| 免费成人av资源网| 欧美久久久久久久久久| 亚洲尤物视频在线| 欧美伊人精品成人久久综合97| 国产精品系列在线| 国产成人日日夜夜| 久久久99免费| 精品一区二区三区视频| 5566中文字幕一区二区电影| 亚洲国产成人av| 欧美午夜影院一区| 亚洲影院免费观看| 欧美在线播放高清精品| 一区二区三区在线视频播放 | 亚洲欧美激情一区二区| jlzzjlzz欧美大全| 亚洲日本一区二区| 在线亚洲一区二区| 亚洲一区二区在线视频| 在线精品视频一区二区三四| 一区二区三区自拍| 欧美日韩在线亚洲一区蜜芽| 亚洲国产精品久久久久婷婷884| 欧美偷拍一区二区| 日日摸夜夜添夜夜添精品视频 | 日韩专区在线视频| 8x8x8国产精品| 日韩成人伦理电影在线观看| 日韩午夜中文字幕| 国产资源精品在线观看| 久久精品亚洲麻豆av一区二区| 国产精品亚洲人在线观看| 欧美国产亚洲另类动漫| 不卡欧美aaaaa| 亚洲日本一区二区| 欧美日韩国产综合久久| 久久精品国产99| 久久久www免费人成精品| 成人看片黄a免费看在线| 亚洲三级在线看| 欧美日韩午夜在线| 老司机精品视频线观看86| 国产三级精品三级| 91麻豆免费在线观看| 亚洲成人免费视频| 日韩精品中文字幕一区二区三区| 国产精品一区二区三区乱码| 中文字幕日本不卡| 欧美日韩午夜精品| 国产综合成人久久大片91| 国产精品久久久久久久久免费丝袜 | 欧美日韩成人一区二区| 久久 天天综合| 国产精品麻豆网站| 欧美吻胸吃奶大尺度电影 | 久久久久久黄色| 色综合久久久久久久| 日韩vs国产vs欧美| 国产亚洲欧美色| 91国偷自产一区二区三区观看| 日韩影院免费视频| 中文字幕不卡三区| 欧美日韩高清在线播放| 国产资源精品在线观看| 亚洲另类在线视频| 日韩欧美你懂的| 夫妻av一区二区| 午夜精品久久久久久久99樱桃| 久久久久久99精品| 欧美老女人在线| 国产91丝袜在线播放九色| 亚洲一二三专区| 久久久精品日韩欧美| 欧美日韩中文字幕一区二区| 国产精品中文字幕一区二区三区| 成人免费小视频| 日韩欧美aaaaaa| 在线视频欧美区| 国产一区二区福利视频| 亚洲影院在线观看| 欧美国产一区在线| 日韩视频免费观看高清完整版在线观看| 高清在线成人网| 日韩精品乱码av一区二区| 日本一区二区免费在线观看视频| 欧美性感一类影片在线播放| 国产福利一区在线观看| 日韩在线卡一卡二| 亚洲欧美日韩久久精品| 久久久综合精品| 欧美精品国产精品| 色婷婷av一区| 国产成人日日夜夜| 九色porny丨国产精品| 亚洲一区二区欧美激情| 国产精品国产三级国产aⅴ入口| 日韩一区二区三区精品视频| 一本大道久久精品懂色aⅴ| 国产一区二区三区国产| 午夜av电影一区| 亚洲欧美另类图片小说| 国产欧美日韩在线视频| 欧美大片拔萝卜| 欧美日本一道本在线视频| 色哟哟欧美精品| 福利电影一区二区| 国产在线视频一区二区| 日产欧产美韩系列久久99| 亚洲一区二区三区四区不卡| 18成人在线观看| 国产欧美精品国产国产专区| 精品国产区一区| 欧美哺乳videos| 欧美一区二区性放荡片| 欧美三日本三级三级在线播放| 99国产精品视频免费观看| 成人一区在线看| 国产成人精品一区二| 精品一区二区三区视频在线观看| 日韩av一区二区在线影视| 亚洲国产综合人成综合网站| 亚洲精品视频免费看| 亚洲人亚洲人成电影网站色| 国产精品久久福利| 国产精品久久久久久久午夜片| 日本一区二区视频在线观看| 久久久久久亚洲综合| 久久久久久免费| 久久久久久久综合色一本| 精品国产91九色蝌蚪| 精品国产免费视频| 久久久久成人黄色影片| 久久久久久久久久电影| 国产精品视频第一区| 国产精品免费免费| 亚洲视频中文字幕| 亚洲欧美日韩小说| 亚洲午夜视频在线| 亚洲午夜精品17c| 天堂影院一区二区| 美腿丝袜亚洲综合|