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

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

?? ppppap.c

?? 很好的TCP_IP協議源代碼分析,很適用很好
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
 *  PPPPAP.C	-- Password Authentication Protocol for PPP
 *
 *	Acknowledgements and correction history may be found in PPP.C
 */

#include <stdio.h>
#include "global.h"
#include "mbuf.h"
#include "proc.h"
#include "iface.h"
#include "session.h"
#include "socket.h"
#include "ppp.h"
#include "pppfsm.h"
#include "ppplcp.h"
#include "ppppap.h"
#include "cmdparse.h"
#include "files.h"
#include "trace.h"
#include "main.h"

static int dopap_user(int argc, char *argv[], void *p);

static void pap_monitor(int mustask, void *v1, void *v2);
static void pap_pwdlookup(struct pap_s *pap_p);

static struct mbuf *pap_makereq(struct fsm_s *fsm_p);

static int pap_verify(char *username, char *password);
static void pap_shutdown(struct fsm_s *fsm_p);
static void pap_opening(struct fsm_s *fsm_p, int flag);

static int pap_request(struct fsm_s *fsm_p,
			struct config_hdr *hdr,
			struct mbuf **data);
static int pap_check(struct fsm_s *fsm_p,
			struct config_hdr *hdr,
			struct mbuf **data);
static void pap_timeout(void *vp);

static void pap_free(struct fsm_s *fsm_p);


static struct fsm_constant_s pap_constants = {
	"Pap",
	PPP_PAP_PROTOCOL,
	0x000E,				/* codes 1-3 recognized */

	Pap,
	PAP_REQ_TRY,
	PAP_FAIL_MAX,
	0,
	PAP_TIMEOUT * 1000L,

	pap_free,

	fsm_no_action,		/* pap_reset, */
	fsm_no_action,		/* pap_starting, */
	fsm_no_action,		/* pap_opening, */
	fsm_no_action,		/* pap_closing, */
	fsm_no_action,		/* pap_stopping, */

	pap_makereq,
	fsm_no_check,		/* pap_request, */
	fsm_no_check,		/* pap_ack, */
	fsm_no_check,		/* pap_nak, */
	fsm_no_check,		/* pap_reject */
};


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

/* "ppp <iface> pap" subcommands */
static struct cmds Papcmds[] = {
	"timeout",	doppp_timeout,	0,	0,	NULL,
	"try",		doppp_try,	0,	0,	NULL,
	"user",		dopap_user,	0,	0,	NULL,
	NULL,
};


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

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


/* Set user/password */
int
dopap_user(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	register struct fsm_s *fsm_p = p;
	register struct pap_s *pap_p = fsm_p->pdv;

	if (argc < 2) {
		printf("%s\n",
			(pap_p->username == NULL) ? "None" : pap_p->username);
		return 0;
	}
	free(pap_p->username);
	pap_p->username = NULL;
	free(pap_p->password);
	pap_p->password = NULL;

	if (stricmp(argv[1],"none") != 0) {
		pap_p->username = strdup(argv[1]);
		if (argc > 2) {
			pap_p->password = strdup(argv[2]);
		} else {
			pap_pwdlookup( pap_p );
		}
	}
	return 0;
}


/****************************************************************************/
/* Bring up a session on the console for for the username/password.
 * Return a NULL in either username or password if aborted.
 */
static void
pap_monitor(unused, v1, v2)
int unused;
void *v1;
void *v2;
{
	struct iface *iface = v1;
	struct fsm_s *fsm_p = v2;
	struct pap_s *pap_p = fsm_p->pdv;
	char buf[21];
	struct session *sp;
	int wait_code = 0;

	/* Allocate a session control block */
	if((sp = newsession("PPP/PAP",PPPPASS,1)) == NULL){
		printf("Too many sessions\n");
		return;
	}

	while ( !main_exit && wait_code == 0 ) {
		/* get user name */
		if (pap_p->username == NULL) {
			printf ("%s: PPP/PAP  Username: ", iface->name);
			fflush(sp->output);
			if (fgets(buf,20,sp->input) != NULL) {
				rip(buf);
				if (strlen(buf) > 0) {
					pap_p->username = strdup(buf);
				}
			}
		} else {
			printf ("%s: PPP/PAP  Username: %s\n",
				iface->name, pap_p->username);
			fflush(sp->output);
		}

		/* get pass word */
		if (pap_p->username != NULL
		 && pap_p->password == NULL) {
			/* turn off echo */
			sp->ttystate.echo = 0;
			printf("%s: PPP/PAP  Password: ",iface->name);
			fflush(sp->output);
			if (fgets(buf,20,sp->input) != NULL) {
				rip(buf);
				if ( strlen(buf) > 0 ) {
					pap_p->password = strdup(buf);
				}
			}
			printf("\n");
			fflush(sp->output);
			/* Turn echo back on */
			sp->ttystate.echo = 1;
		}

		/* send pap request */
		fsm_sendreq(fsm_p);
		wait_code = kwait ( pap_p );

		/* show ack/nak reply */
		if ( wait_code != EABORT && pap_p->message != NULL ) {
			printf ("%s: PPP/PAP  %s\n",
				iface->name, pap_p->message );
		}
		printf ( "\n" );
		fflush(sp->output);

	}

	/* clean up */
	if ( wait_code != EABORT ) {
		ppause ( 10000L );
	}
	freesession(sp);
	pap_p->pp = NULL;
}


/* Check the FTP userfile for this user; get password if available */
static void
pap_pwdlookup(pap_p)
struct pap_s *pap_p;
{
	char *buf;
	char *password;
	int permission;

	if ( pap_p->username == NULL )
		return;

	if ( (buf = userlookup( pap_p->username, &password, NULL,
			&permission, NULL )) == NULL )
		return;

	/* Check permissions for this user */
	if ( (permission & PPP_PWD_LOOKUP) == 0 ) {
		/* Not in ftpuser file for password lookup */
		free(buf);
		return;
	}

	/* Save the password from this userfile record */
	if ( strlen(password) != 0 )
		pap_p->password = strdup(password);
	free(buf);
}


/*******************************************/
/* Verify user and password sent by remote host */
static int
pap_verify(username,password)
char *username;
char *password;
{
	int privs;
	char *path;
	int anony = 0;

	/* Use same login as FTP server */
	path = mallocw(128);
	privs = userlogin(username,password,&path,128,&anony);
	free(path);

	/* Check privs for this user */
	if (privs == -1) {
		trace_log(PPPiface,"PAP: username/password incorrect or not found: %s",
				username);
		return -1;
	}

	if ((privs & PPP_ACCESS_PRIV) == 0) {
		trace_log(PPPiface,"PAP: no permission for PPP access: %s",
				username);
		return -1;
	}
	return 0;
}


/****************************************************************************/
/* Build a request to send to remote host */
static struct mbuf *
pap_makereq(fsm_p)
struct fsm_s *fsm_p;
{
	struct pap_s *pap_p = fsm_p->pdv;
	struct mbuf *req_bp = NULL;
	register uint8 *cp;
	int len;

	PPP_DEBUG_ROUTINES("pap_makereq()");

	if ( pap_p->username == NULL
	 ||  pap_p->password == NULL ) {
		fsm_log( fsm_p, "NULL username or password" );
		return NULL;
	}

#ifdef PPP_DEBUG_OPTIONS
	if (PPPtrace & PPP_DEBUG_OPTIONS)
		trace_log(PPPiface, "    making user id %s", pap_p->username);
#endif

	/* Get buffer for authenticate request packet */
	len = 2 + strlen(pap_p->username) + strlen(pap_p->password);
	if ((req_bp = alloc_mbuf(len)) == NULL)
		return NULL;

	/* Load user id and password for authenticate packet */
	cp = req_bp->data;
	*cp++ = (uint8)strlen(pap_p->username);
	if ( strlen(pap_p->username) > 0 )
		cp = (uint8 *)stpcpy((char *)cp, pap_p->username);

	*cp++ = (char)strlen(pap_p->password);
	if ( strlen(pap_p->password) > 0 )
		cp = (uint8 *)stpcpy((char *)cp, pap_p->password);

	req_bp->cnt += len;
	return(req_bp);
}


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

/* abandon PAP attempt; shutdown LCP layer */
static void
pap_shutdown(fsm_p)
struct fsm_s *fsm_p;
{
	struct ppp_s *ppp_p = fsm_p->ppp_p;

	PPP_DEBUG_ROUTINES("pap_shutdown()");

	if (PPPtrace > 1)
		fsm_log( fsm_p, "Failed; close connection" );

	fsm_close( &(ppp_p->fsm[Lcp]) );
}


/* Configuration negotiation complete */
static void
pap_opening(fsm_p, flag)
struct fsm_s *fsm_p;
int flag;
{
	register struct ppp_s *ppp_p = fsm_p->ppp_p;

	fsm_log(fsm_p, "Open");

	stop_timer(&(fsm_p->timer));

	if ( !((fsm_p->flags &= ~flag) & (PPP_AP_LOCAL | PPP_AP_REMOTE)) ) {
		fsm_p->state = fsmOPENED;
	}
	ppp_p->flags &= ~flag;
	ppp_ready(ppp_p);
}


/****************************************************************************/
/* Check request from remote host */
static int
pap_request(
struct fsm_s *fsm_p,
struct config_hdr *hdr,
struct mbuf **data
){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成a人片在线观看中文| 国产精品久久久久一区二区三区 | 成人中文字幕合集| 久久精品一级爱片| av电影天堂一区二区在线观看| 国产精品国产三级国产a| 91小视频在线免费看| 亚洲国产精品一区二区www在线| 欧美日韩一卡二卡三卡| 美女视频黄免费的久久| 国产日产欧美一区| 色婷婷狠狠综合| 午夜欧美视频在线观看| 精品久久国产老人久久综合| 国产成人综合网站| 亚洲成人中文在线| 久久久精品免费免费| 91麻豆福利精品推荐| 日韩**一区毛片| 亚洲国产精品成人综合色在线婷婷| 91丨九色丨蝌蚪富婆spa| 日韩国产高清在线| 国产精品情趣视频| 67194成人在线观看| 国产精品一区二区黑丝| 亚洲小说欧美激情另类| 精品乱人伦一区二区三区| 成人avav在线| 免费观看91视频大全| 亚洲天堂免费在线观看视频| 日韩欧美一区二区免费| 色婷婷精品大在线视频 | 国产在线精品一区在线观看麻豆| 国产精品午夜免费| 678五月天丁香亚洲综合网| 成人爱爱电影网址| 精品一区免费av| 一区二区高清视频在线观看| 久久久国产午夜精品| 欧美精品在线一区二区| 99精品久久只有精品| 久久草av在线| 婷婷久久综合九色综合绿巨人| 国产精品网站导航| 精品福利一二区| 91麻豆精品国产无毒不卡在线观看 | 精品久久一区二区三区| 在线精品亚洲一区二区不卡| 在线观看三级视频欧美| 99这里都是精品| 国产成人日日夜夜| 久久er精品视频| 丝袜美腿一区二区三区| 亚洲一区二区在线播放相泽| 1区2区3区欧美| 日本一区二区高清| www成人在线观看| 日韩欧美成人一区| 欧美电影在线免费观看| 欧美午夜精品理论片a级按摩| 成人aa视频在线观看| 国产成人一级电影| 国产激情精品久久久第一区二区| 久久99精品久久久久久国产越南| 天天综合色天天综合| 午夜私人影院久久久久| 亚洲精品中文字幕乱码三区| 亚洲丝袜精品丝袜在线| 日韩美女视频一区二区| 亚洲色图.com| 中文字幕av一区二区三区| 久久精品欧美一区二区三区不卡| 久久青草国产手机看片福利盒子| 日韩欧美亚洲国产精品字幕久久久| 制服视频三区第一页精品| 欧美高清精品3d| 91精品一区二区三区久久久久久| 制服.丝袜.亚洲.另类.中文| 欧美一区二区日韩一区二区| 日韩精品一区二区三区蜜臀| 精品久久久久一区二区国产| 精品国产乱码久久久久久久| 亚洲精品一区二区三区香蕉| 久久久精品免费网站| 国产精品亲子伦对白| 亚洲裸体在线观看| 亚洲成av人综合在线观看| 青青草国产成人av片免费| 精品综合免费视频观看| 国产成人免费视频网站高清观看视频| 成人午夜免费视频| 91成人免费网站| 日韩精品专区在线| 久久人人爽人人爽| 国产精品久99| 午夜亚洲福利老司机| 韩国av一区二区| 91在线一区二区三区| 欧美日韩欧美一区二区| 精品国产乱码久久久久久老虎 | 日韩精品在线看片z| 久久久久国产一区二区三区四区| 国产精品你懂的在线欣赏| 亚洲一区中文在线| 蜜臀va亚洲va欧美va天堂| 成人一区二区三区视频在线观看| 日本韩国欧美在线| 欧美成人video| 亚洲欧美日韩久久精品| 男人的j进女人的j一区| 成人av网站在线| 91精品国产综合久久小美女| 中文字幕巨乱亚洲| 日韩中文欧美在线| www.亚洲色图.com| 综合色天天鬼久久鬼色| 亚洲福利电影网| 国产成人精品aa毛片| 欧美老肥妇做.爰bbww视频| 欧美国产成人精品| 日韩精品久久理论片| 99精品视频一区二区| 日韩欧美一级精品久久| 亚洲激情图片qvod| 国产福利精品导航| 777a∨成人精品桃花网| 亚洲欧美日韩在线| 精品一区二区三区免费| 欧美在线视频全部完| 日本一区二区不卡视频| 蜜臂av日日欢夜夜爽一区| 在线亚洲欧美专区二区| 国产网站一区二区| 久久成人免费网| 日本韩国欧美在线| 国产精品短视频| 国产精品亚洲一区二区三区在线 | 国产黄色91视频| 91精品国产丝袜白色高跟鞋| 亚洲美女电影在线| 成人免费毛片a| 久久日韩粉嫩一区二区三区| 五月婷婷综合在线| 在线观看不卡一区| 亚洲图片激情小说| www.亚洲色图| 国产精品美女一区二区| 激情亚洲综合在线| 欧美一级xxx| 日韩精品免费专区| 6080日韩午夜伦伦午夜伦| 亚洲自拍偷拍九九九| 91视频一区二区三区| 中文字幕亚洲在| 成人av影院在线| 中文字幕av一区二区三区免费看| 国产一区二区精品在线观看| 欧美电影免费观看高清完整版在| 日韩 欧美一区二区三区| 欧美年轻男男videosbes| 亚洲高清免费一级二级三级| 欧亚一区二区三区| 亚洲第一电影网| 欧美日韩国产高清一区二区| 亚洲综合区在线| 欧美日韩精品一区二区在线播放| 一区二区激情小说| 欧美日韩亚洲综合| 肉色丝袜一区二区| 日韩精品中文字幕一区| 麻豆国产欧美一区二区三区| 日韩午夜精品电影| 国产精品一区免费在线观看| 国产日本一区二区| 播五月开心婷婷综合| 成人免费在线播放视频| 色香蕉成人二区免费| 香蕉久久一区二区不卡无毒影院| 337p亚洲精品色噜噜| 国内精品嫩模私拍在线| 国产欧美精品在线观看| 成人激情黄色小说| 亚洲精品乱码久久久久久黑人 | 不卡一区二区三区四区| 亚洲精品一二三| 7777精品伊人久久久大香线蕉的 | 日本伊人精品一区二区三区观看方式| 69堂亚洲精品首页| 国产精品91一区二区| 奇米影视7777精品一区二区| 精品88久久久久88久久久| 成人性生交大片免费看中文网站 | 婷婷成人综合网| www激情久久| 91免费观看视频在线| 日韩主播视频在线| 国产日产欧美一区二区视频| 日本电影欧美片| 极品少妇xxxx偷拍精品少妇| 中文字幕在线观看不卡视频|