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

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

?? ppplcp.c

?? 完整的TCPIP!驗(yàn)證過(guò)的!
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*
 *  PPPLCP.C	-- negotiate data link options
 *
 *	This implementation of PPP is declared to be in the public domain.
 *
 *	Jan 91	Bill_Simpson@um.cc.umich.edu
 *		Computer Systems Consulting Services
 *
 *	Acknowledgements and correction history may be found in PPP.C
 */

#include <stdio.h>
#include "global.h"
#include "mbuf.h"
#include "iface.h"
#include "socket.h"
#include "ppp.h"
#include "pppfsm.h"
#include "ppplcp.h"
#include "ppppap.h"
#include "cmdparse.h"
#include "devparam.h"
#include "trace.h"


/* These defaults are defined in the PPP RFCs, and must not be changed */
static struct lcp_value_s lcp_default = {
	FALSE,		/* no need to negotiate defaults */

	LCP_MRU_DEFAULT,
	LCP_ACCM_DEFAULT,
	0,		/* no authentication */
	0,		/* no encryption */
	0L,		/* no magic number */
	0L,		/* no reporting period */
};

/* for test purposes, accept anything we understand in the NAK */
static uint16 lcp_negotiate = LCP_N_MRU | LCP_N_ACCM | LCP_N_AUTHENT
		| LCP_N_PFC | LCP_N_ACFC | LCP_N_MAGIC;

static byte_t option_length[] = {
	 0,		/* unused */
	 4,		/* MRU */
	 6,		/* ACCM */
	 4,		/* authentication */
	 4,		/* encryption */
	 6,		/* magic number */
	 6,		/* monitor reporting period */
	 2,		/* Protocol compression */
	 2		/* Address/Control compression */
};


static int dolcp_local(int argc, char *argv[], void *p);
static int dolcp_open(int argc, char *argv[], void *p);
static int dolcp_remote(int argc, char *argv[], void *p);

static int dolcp_accm(int argc, char *argv[], void *p);
static int dolcp_acfc(int argc, char *argv[], void *p);
static int dolcp_auth(int argc, char *argv[], void *p);
static int dolcp_magic(int argc, char *argv[], void *p);
static int dolcp_mru(int argc, char *argv[], void *p);
static int dolcp_pfc(int argc, char *argv[], void *p);
static int dolcp_default(int argc, char *argv[], void *p);

static void lcp_option(struct mbuf **bpp,
			struct lcp_value_s *value_p,
			byte_t o_type,
			byte_t o_length,
			struct mbuf **copy_bpp );
static void lcp_makeoptions(struct mbuf **bpp,
			struct lcp_value_s *value_p,
			uint16 negotiating);
static struct mbuf *lcp_makereq(struct fsm_s *fsm_p);

static int lcp_check(struct mbuf **bpp,
			struct lcp_s *lcp_p,
			struct lcp_side_s *side_p,
			struct option_hdr *option_p,
			int request);

static int lcp_request(struct fsm_s *fsm_p,
			struct config_hdr *config,
			struct mbuf **data);
static int lcp_ack(struct fsm_s *fsm_p,
			struct config_hdr *ackcnf,
			struct mbuf **data);
static int lcp_nak(struct fsm_s *fsm_p,
			struct config_hdr *nakcnf,
			struct mbuf **data);
static int lcp_reject(struct fsm_s *fsm_p,
			struct config_hdr *rejcnf,
			struct mbuf **data);

static void lcp_reset(struct fsm_s *fsm_p);
static void lcp_starting(struct fsm_s *fsm_p);
static void lcp_stopping(struct fsm_s *fsm_p);

static void lcp_closing(struct fsm_s *fsm_p);
static void lcp_opening(struct fsm_s *fsm_p);

static void lcp_free(struct fsm_s *fsm_p);


static struct fsm_constant_s lcp_constants = {
	"Lcp",
	PPP_LCP_PROTOCOL,
	0x0FFE,				/* codes 1-11 recognized */

	Lcp,
	LCP_REQ_TRY,
	LCP_NAK_TRY,
	LCP_TERM_TRY,
	LCP_TIMEOUT * 1000L,

	lcp_free,

	lcp_reset,
	lcp_starting,
	lcp_opening,
	lcp_closing,
	lcp_stopping,

	lcp_makereq,
	lcp_request,
	lcp_ack,
	lcp_nak,
	lcp_reject
};


/************************************************************************/

/* "ppp <iface> lcp" subcommands */
static struct cmds Lcpcmds[] = {
	"close",	doppp_close,	0,	0,	NULL,
	"listen",	doppp_passive,	0,	0,	NULL,
	"local",	dolcp_local,	0,	0,	NULL,
	"open",		dolcp_open,	0,	0,	NULL,
	"remote",	dolcp_remote,	0,	0,	NULL,
	"timeout",	doppp_timeout,	0,	0,	NULL,
	"try",		doppp_try,	0,	0,	NULL,
	NULL,
};

/* "ppp <iface> lcp [local | remote]" subcommands */
static struct cmds Lcpside_cmds[] = {
	"accm",		dolcp_accm,	0,	0,	NULL,
	"acfc",		dolcp_acfc,	0,	0,	NULL,
	"authenticate",	dolcp_auth,	0,	0,	NULL,
	"magic",	dolcp_magic,	0,	0,	NULL,
	"mru",		dolcp_mru,	0,	0,	NULL,
	"pfc",		dolcp_pfc,	0,	0,	NULL,
	"default",	dolcp_default,	0,	0,	NULL,
	NULL,
};


int
doppp_lcp(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	register struct iface *ifp = p;
	register struct ppp_s *ppp_p = ifp->edv;

	return subcmd(Lcpcmds, argc, argv, &(ppp_p->fsm[Lcp]));
}


static int
dolcp_local(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct fsm_s *fsm_p = p;
	struct lcp_s *lcp_p = fsm_p->pdv;
	return subcmd(Lcpside_cmds, argc, argv, &(lcp_p->local));
}


static int
dolcp_open(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct fsm_s *fsm_p = p;

	doppp_active( argc, argv, p );

	if ( fsm_p->ppp_p->phase >= pppLCP ) {
		fsm_start( fsm_p );
	}
	return 0;
}


static int
dolcp_remote(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct fsm_s *fsm_p = p;
	struct lcp_s *lcp_p = fsm_p->pdv;
	return subcmd(Lcpside_cmds, argc, argv, &(lcp_p->remote));
}

/************************************************************************/

static int
dolcp_accm(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct lcp_side_s *side_p = p;

	if (argc < 2) {
		printf("0x%08lx\n",side_p->want.accm);
	} else if (stricmp(argv[1],"allow") == 0) {
		return bit16cmd(&(side_p->will_negotiate),LCP_N_ACCM,
			"Allow ACCM", --argc, &argv[1] );
	} else {
		side_p->want.accm = strtoul(argv[1], NULL, 0);
		if ( side_p->want.accm != LCP_ACCM_DEFAULT )
			side_p->want.negotiate |= LCP_N_ACCM;
		else
			side_p->want.negotiate &= ~LCP_N_ACCM;
	}
	return 0;
}


static int
dolcp_acfc(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct lcp_side_s *side_p = p;

	if (stricmp(argv[1],"allow") == 0) {
		return bit16cmd(&(side_p->will_negotiate),LCP_N_ACFC,
			"Allow Address/Control Field Compression", --argc, &argv[1] );
	}
	return bit16cmd( &(side_p->want.negotiate), LCP_N_ACFC,
		"Address/Control Field Compression", argc, argv );
}


static int
dolcp_auth(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct lcp_side_s *side_p = p;

	if (argc < 2) {
		if ( side_p->want.negotiate & LCP_N_AUTHENT ) {
			switch ( side_p->want.authentication ) {
			case PPP_PAP_PROTOCOL:
				printf("Pap\n");
				break;
			default:
				printf("0x%04x\n", side_p->want.authentication);
				break;
			};
		} else {
			printf("None\n");
		}
	} else if (stricmp(argv[1],"allow") == 0) {
		return bit16cmd(&(side_p->will_negotiate),LCP_N_AUTHENT,
			"Allow Authentication", --argc, &argv[1] );
	} else if (stricmp(argv[1],"pap") == 0) {
		side_p->want.negotiate |= LCP_N_AUTHENT;
		side_p->want.authentication = PPP_PAP_PROTOCOL;
	} else if (stricmp(argv[1],"none") == 0) {
		side_p->want.negotiate &= ~LCP_N_AUTHENT;
	} else {
		printf("allow pap none\n");
		return 1;
	}
	return 0;
}


static int
dolcp_magic(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct lcp_side_s *side_p = p;
	int result = 0;

	if (argc < 2) {
		printf("%d\n",side_p->want.magic_number);
	} else if (stricmp(argv[1],"allow") == 0) {
		return bit16cmd(&(side_p->will_negotiate),LCP_N_MAGIC,
			"Allow Magic Number", --argc, &argv[1] );
	} else {
		register int32 x = strtoul(argv[1], NULL, 0);

		if ( !x ) {
			int test;

			/* Check for keyword */
			result = setbool( &test, "Magic Number", argc, argv );

			if ( test ) {
				/* Make a non-zero random number */
				x = rdclock() << ((rdclock() & 0xf)+8);
			}
		}
		if ( x ) {
			side_p->want.negotiate |= LCP_N_MAGIC;
		} else {
			side_p->want.negotiate &= ~LCP_N_MAGIC;
		}
		side_p->want.magic_number = x;
	}
	return result;
}


static int
dolcp_mru(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct lcp_side_s *side_p = p;

	if (argc < 2) {
		printf("%d\n",side_p->want.mru);
	} else if (stricmp(argv[1],"allow") == 0) {
		return bit16cmd(&(side_p->will_negotiate),LCP_N_MRU,
			"Allow MRU", --argc, &argv[1] );
	} else {
		register int x = (int)strtol( argv[1], NULL, 0 );

		if (x < LCP_MRU_LO || x > LCP_MRU_HI) {
			printf("MRU %s (%d) out of range %d thru %d\n",
				argv[1], x, LCP_MRU_LO, LCP_MRU_HI);
			return -1;
		} else if ( x != LCP_MRU_DEFAULT ) {
			side_p->want.negotiate |= LCP_N_MRU;
		} else {
			side_p->want.negotiate &= ~LCP_N_MRU;
		}
		side_p->want.mru = x;
	}
	return 0;
}


static int
dolcp_pfc(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct lcp_side_s *side_p = p;

	if (stricmp(argv[1],"allow") == 0) {
		return bit16cmd(&(side_p->will_negotiate),LCP_N_PFC,
			"Allow Protocol Field Compression", --argc, &argv[1] );
	}
	return bit16cmd( &(side_p->want.negotiate), LCP_N_PFC,
		"Protocol Field Compression", argc, argv );
}


static int
dolcp_default(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct lcp_side_s *side_p = p;

	ASSIGN( side_p->want, lcp_default );
	return 0;
}


/************************************************************************/
/*			E V E N T   P R O C E S S I N G			*/
/************************************************************************/

static void
lcp_option( bpp, value_p, o_type, o_length, copy_bpp )
struct mbuf **bpp;
struct lcp_value_s *value_p;
byte_t o_type;
byte_t o_length;
struct mbuf **copy_bpp;
{
	struct mbuf *bp;
	register uint8 *cp;
	register int toss = o_length - OPTION_HDR_LEN;

	if ((bp = alloc_mbuf(o_length)) == NULL) {
		return;
	}
	cp = bp->data;
	*cp++ = o_type;
	*cp++ = o_length;

	switch ( o_type ) {
	case LCP_MRU:
		put16(cp, value_p->mru);
		toss -= 2;
#ifdef PPP_DEBUG_OPTIONS
if (PPPtrace & PPP_DEBUG_OPTIONS)
	trace_log(PPPiface, "    making MRU: %d", value_p->mru);
#endif
		break;

	case LCP_ACCM:
		put32(cp, value_p->accm);
		toss -= 4;
#ifdef PPP_DEBUG_OPTIONS
if (PPPtrace & PPP_DEBUG_OPTIONS)
	trace_log(PPPiface, "    making ACCM: 0x%08lx", value_p->accm);
#endif
		break;

	case LCP_AUTHENT:
		put16(cp, value_p->authentication);
		toss -= 2;
#ifdef PPP_DEBUG_OPTIONS
if (PPPtrace & PPP_DEBUG_OPTIONS)
	trace_log(PPPiface, "    making Auth Protocol: 0x%04x",
		value_p->authentication);
#endif
		break;

	case LCP_MAGIC:
		put32(cp, value_p->magic_number);
		toss -= 4;
#ifdef PPP_DEBUG_OPTIONS
if (PPPtrace & PPP_DEBUG_OPTIONS)
	trace_log(PPPiface, "    making Magic Number: 0x%08lx",
		value_p->magic_number);
#endif
		break;

	case LCP_PFC:
#ifdef PPP_DEBUG_OPTIONS
if (PPPtrace & PPP_DEBUG_OPTIONS)
	trace_log(PPPiface, "    making Protocol compression");
#endif
		break;

	case LCP_ACFC:
#ifdef PPP_DEBUG_OPTIONS
if (PPPtrace & PPP_DEBUG_OPTIONS)
	trace_log(PPPiface, "    making Addr/Ctl compression");
#endif
		break;

	case LCP_ENCRYPT:		/* not implemented */
	case LCP_QUALITY:		/* not implemented */
	default:
#ifdef PPP_DEBUG_OPTIONS
if (PPPtrace & PPP_DEBUG_OPTIONS)
	trace_log(PPPiface, "    making unimplemented type %d", o_type);
#endif
		break;
	};

	while ( toss-- > 0 ) {
		*cp++ = pullchar(copy_bpp);
	}
	bp->cnt += o_length;
	append(bpp, &bp);
}


/************************************************************************/
/* Build a list of options */
static void
lcp_makeoptions(bpp, value_p, negotiating)
struct mbuf **bpp;
struct lcp_value_s *value_p;
uint16 negotiating;
{
	register int o_type;

	PPP_DEBUG_ROUTINES("lcp_makeoptions()");

	for ( o_type = 1; o_type <= LCP_OPTION_LIMIT; o_type++ ) {
		if (negotiating & (1 << o_type)) {
			lcp_option( bpp, value_p,
				o_type, option_length[ o_type ], NULL);
		}
	}
}


/************************************************************************/
/* Build a request to send to remote host */
static struct mbuf *
lcp_makereq(fsm_p)
struct fsm_s *fsm_p;
{
	struct lcp_s *lcp_p = fsm_p->pdv;
	struct mbuf *req_bp = NULL;

	PPP_DEBUG_ROUTINES("lcp_makereq()");

	lcp_makeoptions( &req_bp, &(lcp_p->local.work),
				lcp_p->local.work.negotiate );
	return(req_bp);
}


/************************************************************************/
/* Check the options, updating the working values.
 * Returns -1 if ran out of data, ACK/NAK/REJ as appropriate.
 */
static int
lcp_check( bpp, lcp_p, side_p, option_p, request )
struct mbuf **bpp;
struct lcp_s *lcp_p;
struct lcp_side_s *side_p;
struct option_hdr *option_p;
int request;
{
	int toss = option_p->len - OPTION_HDR_LEN;
	int option_result = CONFIG_ACK;		/* Assume good values */

	switch(option_p->type) {
	case LCP_MRU:
		side_p->work.mru = pull16(bpp);
		toss -= 2;
#ifdef PPP_DEBUG_OPTIONS
if (PPPtrace & PPP_DEBUG_OPTIONS)
	trace_log(PPPiface, "    checking MRU: %d", side_p->work.mru);
#endif
		/* Check if new value is appropriate */
		if (side_p->work.mru < LCP_MRU_LO) {
			side_p->work.mru = LCP_MRU_LO;
			option_result = CONFIG_NAK;
		} else if (side_p->work.mru > LCP_MRU_HI) {
			side_p->work.mru = LCP_MRU_HI;
			option_result = CONFIG_NAK;
		}
		if ( request && (side_p->want.negotiate & LCP_N_MRU)
		  && side_p->work.mru > side_p->want.mru ) {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线影院国内精品| 色8久久精品久久久久久蜜| 中文字幕五月欧美| 国产美女在线观看一区| 久久精品欧美日韩| 欧美精品在线一区二区| 欧洲亚洲国产日韩| 久久蜜桃av一区精品变态类天堂| 欧美久久久久久蜜桃| 久久精品999| 精品入口麻豆88视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 日韩精品久久理论片| 一区二区三区色| 在线看一区二区| 成人欧美一区二区三区黑人麻豆| 欧美mv日韩mv国产网站app| 国产成人一区在线| 精品无码三级在线观看视频| 国产91精品免费| aaa欧美大片| 91精品久久久久久久91蜜桃| 久久久久高清精品| 国产一区91精品张津瑜| 91蜜桃视频在线| 日韩在线一区二区| 久久久天堂av| 日本国产一区二区| 久久99久久精品| 成人欧美一区二区三区| 3d动漫精品啪啪| 成人精品gif动图一区| 石原莉奈在线亚洲二区| 国产精品视频观看| 91麻豆精品国产自产在线观看一区| 国产美女在线精品| 日韩成人精品视频| 亚洲欧洲国产日韩| 欧美成人欧美edvon| 精品国产第一区二区三区观看体验| 99久精品国产| 国内精品国产三级国产a久久| 中文字幕在线不卡一区| 精品国产乱子伦一区| 欧亚洲嫩模精品一区三区| 国产精品一区二区三区网站| 亚洲成av人片在线观看| 亚洲欧洲在线观看av| 久久先锋影音av| 欧美一区二区三区四区视频| 99精品欧美一区| 国产精品99久久久久久久vr| 日本亚洲欧美天堂免费| 亚洲国产欧美一区二区三区丁香婷| 日本一区二区久久| 精品成人一区二区三区四区| 91精品国产全国免费观看| 99国产精品久久久久久久久久久| 国产乱码精品一区二区三区五月婷| 日韩av中文字幕一区二区| 亚洲欧美视频一区| 国产精品久久久久毛片软件| 久久久精品免费网站| 日韩三级伦理片妻子的秘密按摩| 欧美色网一区二区| 欧美在线色视频| 色婷婷久久99综合精品jk白丝| 国产成人av一区二区三区在线观看| 六月婷婷色综合| 日韩精品成人一区二区三区| 亚洲成人免费影院| 亚洲bt欧美bt精品| 午夜影视日本亚洲欧洲精品| 亚洲午夜电影网| 亚洲图片欧美色图| 亚洲 欧美综合在线网络| 亚洲精品乱码久久久久久黑人| 日韩一区在线免费观看| 亚洲免费在线视频| 一区二区三区 在线观看视频| 亚洲另类色综合网站| 亚洲美女少妇撒尿| 欧美色爱综合网| 欧美日韩黄视频| 91精品国产综合久久香蕉麻豆| 国产不卡在线一区| 成人午夜视频免费看| 国产传媒欧美日韩成人| 不卡一区中文字幕| 91久久奴性调教| 欧美成va人片在线观看| 欧美美女一区二区在线观看| 欧美一区二区三区啪啪| 国产欧美中文在线| 91麻豆成人久久精品二区三区| 亚洲乱码一区二区三区在线观看| 亚洲欧美一区二区三区久本道91| 婷婷激情综合网| 日本成人中文字幕| 国产精品一区免费视频| 不卡电影免费在线播放一区| 一本色道久久加勒比精品| 欧美写真视频网站| 日韩一本二本av| 欧美极品美女视频| 一区二区三区在线看| 日韩黄色免费电影| 国产福利精品导航| 日本韩国精品在线| 国产在线一区二区| 欧洲精品中文字幕| 日韩小视频在线观看专区| 国产丝袜美腿一区二区三区| 亚洲人成亚洲人成在线观看图片| 午夜精品在线看| 国产老妇另类xxxxx| 91论坛在线播放| 精品久久久久一区二区国产| 中文字幕一区二区三| 丝袜美腿一区二区三区| 精品亚洲aⅴ乱码一区二区三区| 不卡大黄网站免费看| 美女视频黄a大片欧美| 成人性生交大片免费看视频在线| 91国偷自产一区二区开放时间 | 国产精品免费av| 亚洲一区二区欧美| 国产精品一区二区三区99| 欧美色精品在线视频| 中国色在线观看另类| 轻轻草成人在线| 色婷婷av一区| 日本一区二区不卡视频| 奇米精品一区二区三区在线观看一| 波多野结衣一区二区三区| 日韩西西人体444www| 一级中文字幕一区二区| 国产成人免费视频精品含羞草妖精| 欧美日韩国产成人在线免费| 亚洲欧洲精品一区二区三区不卡| 久国产精品韩国三级视频| 欧美在线一二三四区| 国产精品久久久久永久免费观看 | 2023国产精品视频| 亚洲成人tv网| 色88888久久久久久影院按摩| 久久久久99精品一区| 免费欧美高清视频| 欧美日韩国产影片| 亚洲男帅同性gay1069| 成人性生交大片免费看视频在线 | 国产精品国产三级国产三级人妇| 久久精品国产精品亚洲精品| 欧美剧情片在线观看| 3atv一区二区三区| 亚洲激情一二三区| 97se亚洲国产综合自在线| 亚洲国产精品黑人久久久| 日本午夜一区二区| zzijzzij亚洲日本少妇熟睡| 久久精品亚洲一区二区三区浴池| 久久9热精品视频| 日韩欧美在线影院| 日韩黄色免费网站| 日韩午夜在线影院| 精品在线播放午夜| 精品处破学生在线二十三| 韩国女主播成人在线观看| 精品成人一区二区三区四区| 日本午夜精品视频在线观看| 日本不卡视频一二三区| 欧美精品1区2区| 日本欧美大码aⅴ在线播放| 欧美日韩国产综合久久| 日欧美一区二区| 欧美一区二区视频在线观看| 日韩精品电影在线观看| 欧美一区二区三区思思人| 另类调教123区| 国产午夜一区二区三区| 成人污视频在线观看| 亚洲欧美日韩人成在线播放| 91极品视觉盛宴| 日韩av电影免费观看高清完整版| 国产综合色视频| 亚洲国产精品精华液ab| 91香蕉视频污在线| 亚洲午夜精品在线| 91精品国产综合久久香蕉麻豆 | 在线观看av一区二区| 亚洲不卡av一区二区三区| 日韩欧美在线影院| 成人免费视频一区二区| 一区二区三区在线视频观看 | 九九国产精品视频| 国产日韩欧美高清在线| 97se亚洲国产综合自在线观| 日韩专区欧美专区| 久久精品人人做人人爽人人| 色视频成人在线观看免|