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

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

?? pap.c

?? FreeRtos Source code Version 4.04
?? C
字號:
/****************************************************************************** pap.c - Network Password Authentication Protocol program file.** Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc.* portions Copyright (c) 1997 by Global Election Systems Inc.** The authors hereby grant permission to use, copy, modify, distribute,* and license this software and its documentation for any purpose, provided* that existing copyright notices are retained in all copies and that this* notice and the following disclaimer are included verbatim in any * distributions. No written agreement, license, or royalty fee is required* for any of the authorized uses.** THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.******************************************************************************** REVISION HISTORY** 03-01-01 Marc Boucher <marc@mbsi.ca>*   Ported to lwIP.* 97-12-12 Guy Lancaster <lancasterg@acm.org>, Global Election Systems Inc.*	Original.*****************************************************************************//* * upap.c - User/Password Authentication Protocol. * * 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. */#include "ppp.h"#include "auth.h"#include "pap.h"#include "pppdebug.h"#if PAP_SUPPORT > 0/***********************************//*** LOCAL FUNCTION DECLARATIONS ***//***********************************//* * Protocol entry points. */static void upap_init (int);static void upap_lowerup (int);static void upap_lowerdown (int);static void upap_input (int, u_char *, int);static void upap_protrej (int);static void upap_timeout (void *);static void upap_reqtimeout (void *);static void upap_rauthreq (upap_state *, u_char *, int, int);static void upap_rauthack (upap_state *, u_char *, int, int);static void upap_rauthnak (upap_state *, u_char *, int, int);static void upap_sauthreq (upap_state *);static void upap_sresp (upap_state *, u_char, u_char, char *, int);/******************************//*** PUBLIC DATA STRUCTURES ***//******************************/struct protent pap_protent = {    PPP_PAP,    upap_init,    upap_input,    upap_protrej,    upap_lowerup,    upap_lowerdown,    NULL,    NULL,#if 0    upap_printpkt,    NULL,#endif    1,    "PAP",#if 0    NULL,    NULL,    NULL#endif};upap_state upap[NUM_PPP];		/* UPAP state; one for each unit *//***********************************//*** PUBLIC FUNCTION DEFINITIONS ***//***********************************//* *  Set the default login name and password for the pap sessions */void upap_setloginpasswd(int unit, const char *luser, const char *lpassword){	upap_state *u = &upap[unit];		/* Save the username and password we're given */	u->us_user = luser;	u->us_userlen = strlen(luser);	u->us_passwd = lpassword;	u->us_passwdlen = strlen(lpassword);}/* * upap_authwithpeer - Authenticate us with our peer (start client). * * Set new state and send authenticate's. */void upap_authwithpeer(int unit, char *user, char *password){	upap_state *u = &upap[unit];		UPAPDEBUG((LOG_INFO, "upap_authwithpeer: %d user=%s password=%s s=%d\n",				unit, user, password, u->us_clientstate));		upap_setloginpasswd(unit, user, password);	u->us_transmits = 0;		/* Lower layer up yet? */	if (u->us_clientstate == UPAPCS_INITIAL ||			u->us_clientstate == UPAPCS_PENDING) {		u->us_clientstate = UPAPCS_PENDING;		return;	}		upap_sauthreq(u);			/* Start protocol */}/* * upap_authpeer - Authenticate our peer (start server). * * Set new state. */void upap_authpeer(int unit){	upap_state *u = &upap[unit];		/* Lower layer up yet? */	if (u->us_serverstate == UPAPSS_INITIAL ||			u->us_serverstate == UPAPSS_PENDING) {		u->us_serverstate = UPAPSS_PENDING;		return;	}		u->us_serverstate = UPAPSS_LISTEN;	if (u->us_reqtimeout > 0)		TIMEOUT(upap_reqtimeout, u, u->us_reqtimeout);}/**********************************//*** LOCAL FUNCTION DEFINITIONS ***//**********************************//* * upap_init - Initialize a UPAP unit. */static void upap_init(int unit){	upap_state *u = &upap[unit];	UPAPDEBUG((LOG_INFO, "upap_init: %d\n", unit));		u->us_unit = unit;	u->us_user = NULL;	u->us_userlen = 0;	u->us_passwd = NULL;	u->us_passwdlen = 0;	u->us_clientstate = UPAPCS_INITIAL;	u->us_serverstate = UPAPSS_INITIAL;	u->us_id = 0;	u->us_timeouttime = UPAP_DEFTIMEOUT;	u->us_maxtransmits = 10;	u->us_reqtimeout = UPAP_DEFREQTIME;}/* * upap_timeout - Retransmission timer for sending auth-reqs expired. */static void upap_timeout(void *arg){	upap_state *u = (upap_state *) arg;		UPAPDEBUG((LOG_INFO, "upap_timeout: %d timeout %d expired s=%d\n", 				u->us_unit, u->us_timeouttime, u->us_clientstate));		if (u->us_clientstate != UPAPCS_AUTHREQ)		return;		if (u->us_transmits >= u->us_maxtransmits) {		/* give up in disgust */		UPAPDEBUG((LOG_ERR, "No response to PAP authenticate-requests\n"));		u->us_clientstate = UPAPCS_BADAUTH;		auth_withpeer_fail(u->us_unit, PPP_PAP);		return;	}		upap_sauthreq(u);		/* Send Authenticate-Request */}/* * upap_reqtimeout - Give up waiting for the peer to send an auth-req. */static void upap_reqtimeout(void *arg){	upap_state *u = (upap_state *) arg;		if (u->us_serverstate != UPAPSS_LISTEN)		return;			/* huh?? */		auth_peer_fail(u->us_unit, PPP_PAP);	u->us_serverstate = UPAPSS_BADAUTH;}/* * upap_lowerup - The lower layer is up. * * Start authenticating if pending. */static void upap_lowerup(int unit){	upap_state *u = &upap[unit];		UPAPDEBUG((LOG_INFO, "upap_lowerup: %d s=%d\n", unit, u->us_clientstate));		if (u->us_clientstate == UPAPCS_INITIAL)		u->us_clientstate = UPAPCS_CLOSED;	else if (u->us_clientstate == UPAPCS_PENDING) {		upap_sauthreq(u);	/* send an auth-request */	}		if (u->us_serverstate == UPAPSS_INITIAL)		u->us_serverstate = UPAPSS_CLOSED;	else if (u->us_serverstate == UPAPSS_PENDING) {		u->us_serverstate = UPAPSS_LISTEN;		if (u->us_reqtimeout > 0)			TIMEOUT(upap_reqtimeout, u, u->us_reqtimeout);	}}/* * upap_lowerdown - The lower layer is down. * * Cancel all timeouts. */static void upap_lowerdown(int unit){	upap_state *u = &upap[unit];		UPAPDEBUG((LOG_INFO, "upap_lowerdown: %d s=%d\n", unit, u->us_clientstate));		if (u->us_clientstate == UPAPCS_AUTHREQ)	/* Timeout pending? */		UNTIMEOUT(upap_timeout, u);		/* Cancel timeout */	if (u->us_serverstate == UPAPSS_LISTEN && u->us_reqtimeout > 0)		UNTIMEOUT(upap_reqtimeout, u);		u->us_clientstate = UPAPCS_INITIAL;	u->us_serverstate = UPAPSS_INITIAL;}/* * upap_protrej - Peer doesn't speak this protocol. * * This shouldn't happen.  In any case, pretend lower layer went down. */static void upap_protrej(int unit){	upap_state *u = &upap[unit];		if (u->us_clientstate == UPAPCS_AUTHREQ) {		UPAPDEBUG((LOG_ERR, "PAP authentication failed due to protocol-reject\n"));		auth_withpeer_fail(unit, PPP_PAP);	}	if (u->us_serverstate == UPAPSS_LISTEN) {		UPAPDEBUG((LOG_ERR, "PAP authentication of peer failed (protocol-reject)\n"));		auth_peer_fail(unit, PPP_PAP);	}	upap_lowerdown(unit);}/* * upap_input - Input UPAP packet. */static void upap_input(int unit, u_char *inpacket, int l){	upap_state *u = &upap[unit];	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 < UPAP_HEADERLEN) {		UPAPDEBUG((LOG_INFO, "pap_input: rcvd short header.\n"));		return;	}	GETCHAR(code, inp);	GETCHAR(id, inp);	GETSHORT(len, inp);	if (len < UPAP_HEADERLEN) {		UPAPDEBUG((LOG_INFO, "pap_input: rcvd illegal length.\n"));		return;	}	if (len > l) {		UPAPDEBUG((LOG_INFO, "pap_input: rcvd short packet.\n"));		return;	}	len -= UPAP_HEADERLEN;		/*	 * Action depends on code.	 */	switch (code) {	case UPAP_AUTHREQ:		upap_rauthreq(u, inp, id, len);		break;		case UPAP_AUTHACK:		upap_rauthack(u, inp, id, len);		break;		case UPAP_AUTHNAK:		upap_rauthnak(u, inp, id, len);		break;		default:				/* XXX Need code reject */		break;	}}/* * upap_rauth - Receive Authenticate. */static void upap_rauthreq(	upap_state *u, 	u_char *inp, 	int id,	int len){	u_char ruserlen, rpasswdlen;	char *ruser, *rpasswd;	int retcode;	char *msg;	int msglen;		UPAPDEBUG((LOG_INFO, "pap_rauth: Rcvd id %d.\n", id));		if (u->us_serverstate < UPAPSS_LISTEN)		return;		/*	 * If we receive a duplicate authenticate-request, we are	 * supposed to return the same status as for the first request.	 */	if (u->us_serverstate == UPAPSS_OPEN) {		upap_sresp(u, UPAP_AUTHACK, id, "", 0);	/* return auth-ack */		return;	}	if (u->us_serverstate == UPAPSS_BADAUTH) {		upap_sresp(u, UPAP_AUTHNAK, id, "", 0);	/* return auth-nak */		return;	}		/*	 * Parse user/passwd.	 */	if (len < sizeof (u_char)) {		UPAPDEBUG((LOG_INFO, "pap_rauth: rcvd short packet.\n"));		return;	}	GETCHAR(ruserlen, inp);	len -= sizeof (u_char) + ruserlen + sizeof (u_char);	if (len < 0) {		UPAPDEBUG((LOG_INFO, "pap_rauth: rcvd short packet.\n"));		return;	}	ruser = (char *) inp;	INCPTR(ruserlen, inp);	GETCHAR(rpasswdlen, inp);	if (len < rpasswdlen) {		UPAPDEBUG((LOG_INFO, "pap_rauth: rcvd short packet.\n"));		return;	}	rpasswd = (char *) inp;		/*	 * Check the username and password given.	 */	retcode = check_passwd(u->us_unit, ruser, ruserlen, rpasswd,			   rpasswdlen, &msg, &msglen);	BZERO(rpasswd, rpasswdlen);		upap_sresp(u, retcode, id, msg, msglen);		if (retcode == UPAP_AUTHACK) {		u->us_serverstate = UPAPSS_OPEN;		auth_peer_success(u->us_unit, PPP_PAP, ruser, ruserlen);	} else {		u->us_serverstate = UPAPSS_BADAUTH;		auth_peer_fail(u->us_unit, PPP_PAP);	}		if (u->us_reqtimeout > 0)		UNTIMEOUT(upap_reqtimeout, u);}/* * upap_rauthack - Receive Authenticate-Ack. */static void upap_rauthack(	upap_state *u,	u_char *inp,	int id,	int len){	u_char msglen;	char *msg;		UPAPDEBUG((LOG_INFO, "pap_rauthack: Rcvd id %d s=%d\n", id, u->us_clientstate));		if (u->us_clientstate != UPAPCS_AUTHREQ) /* XXX */		return;		/*	 * Parse message.	 */	if (len < sizeof (u_char)) {		UPAPDEBUG((LOG_INFO, "pap_rauthack: rcvd short packet.\n"));		return;	}	GETCHAR(msglen, inp);	len -= sizeof (u_char);	if (len < msglen) {		UPAPDEBUG((LOG_INFO, "pap_rauthack: rcvd short packet.\n"));		return;	}	msg = (char *) inp;	PRINTMSG(msg, msglen);		u->us_clientstate = UPAPCS_OPEN;		auth_withpeer_success(u->us_unit, PPP_PAP);}/* * upap_rauthnak - Receive Authenticate-Nakk. */static void upap_rauthnak(	upap_state *u,	u_char *inp,	int id,	int len){	u_char msglen;	char *msg;		UPAPDEBUG((LOG_INFO, "pap_rauthnak: Rcvd id %d s=%d\n", id, u->us_clientstate));		if (u->us_clientstate != UPAPCS_AUTHREQ) /* XXX */		return;		/*	 * Parse message.	 */	if (len < sizeof (u_char)) {		UPAPDEBUG((LOG_INFO, "pap_rauthnak: rcvd short packet.\n"));		return;	}	GETCHAR(msglen, inp);	len -= sizeof (u_char);	if (len < msglen) {		UPAPDEBUG((LOG_INFO, "pap_rauthnak: rcvd short packet.\n"));		return;	}	msg = (char *) inp;	PRINTMSG(msg, msglen);		u->us_clientstate = UPAPCS_BADAUTH;		UPAPDEBUG((LOG_ERR, "PAP authentication failed\n"));	auth_withpeer_fail(u->us_unit, PPP_PAP);}/* * upap_sauthreq - Send an Authenticate-Request. */static void upap_sauthreq(upap_state *u){	u_char *outp;	int outlen;		outlen = UPAP_HEADERLEN + 2 * sizeof (u_char) 			+ u->us_userlen + u->us_passwdlen;	outp = outpacket_buf[u->us_unit];		MAKEHEADER(outp, PPP_PAP);		PUTCHAR(UPAP_AUTHREQ, outp);	PUTCHAR(++u->us_id, outp);	PUTSHORT(outlen, outp);	PUTCHAR(u->us_userlen, outp);	BCOPY(u->us_user, outp, u->us_userlen);	INCPTR(u->us_userlen, outp);	PUTCHAR(u->us_passwdlen, outp);	BCOPY(u->us_passwd, outp, u->us_passwdlen);		pppWrite(u->us_unit, outpacket_buf[u->us_unit], outlen + PPP_HDRLEN);		UPAPDEBUG((LOG_INFO, "pap_sauth: Sent id %d\n", u->us_id));		TIMEOUT(upap_timeout, u, u->us_timeouttime);	++u->us_transmits;	u->us_clientstate = UPAPCS_AUTHREQ;}/* * upap_sresp - Send a response (ack or nak). */static void upap_sresp(	upap_state *u,	u_char code, 	u_char id,	char *msg,	int msglen){	u_char *outp;	int outlen;		outlen = UPAP_HEADERLEN + sizeof (u_char) + msglen;	outp = outpacket_buf[u->us_unit];	MAKEHEADER(outp, PPP_PAP);		PUTCHAR(code, outp);	PUTCHAR(id, outp);	PUTSHORT(outlen, outp);	PUTCHAR(msglen, outp);	BCOPY(msg, outp, msglen);	pppWrite(u->us_unit, outpacket_buf[u->us_unit], outlen + PPP_HDRLEN);		UPAPDEBUG((LOG_INFO, "pap_sresp: Sent code %d, id %d s=%d\n", 				code, id, u->us_clientstate));}#if 0/* * upap_printpkt - print the contents of a PAP packet. */static int upap_printpkt(	u_char *p,	int plen,	void (*printer) (void *, char *, ...),	void *arg){	(void)p;	(void)plen;	(void)printer;	(void)arg;	return 0;}#endif#endif /* PAP_SUPPORT */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产欧美一区二区| 丁香六月久久综合狠狠色| 国产精品美女久久久久久久| 日韩欧美中文字幕公布| 欧美日韩精品久久久| 欧美色大人视频| 欧美日韩久久不卡| 日韩欧美aaaaaa| 欧美成人一区二区三区片免费| 日韩你懂的在线播放| 欧美刺激脚交jootjob| 久久夜色精品国产欧美乱极品| 精品久久久久一区二区国产| wwww国产精品欧美| 国产精品乱人伦| 一区二区三区在线观看欧美| 亚洲国产精品一区二区久久恐怖片 | 日韩黄色免费网站| 图片区小说区国产精品视频| 日韩不卡免费视频| 精品一区二区三区视频| 国产成人自拍高清视频在线免费播放| 国产精选一区二区三区| 99riav久久精品riav| 91成人国产精品| 日韩一区二区电影网| 久久久久久久综合日本| 亚洲天堂网中文字| 免费观看在线色综合| 高清不卡在线观看av| 欧美亚洲尤物久久| 2023国产精品| 一区二区成人在线视频| 久久99精品国产91久久来源| 成人国产精品视频| 91.com视频| 亚洲欧洲99久久| 久久99深爱久久99精品| 99精品国产91久久久久久| 在线不卡免费欧美| 中文字幕巨乱亚洲| 日韩在线a电影| av激情亚洲男人天堂| 日韩欧美一区在线| 亚洲欧美另类久久久精品 | 日韩高清一区在线| 成人黄色综合网站| 精品国产乱码久久久久久影片| 亚洲欧美日本韩国| 国产精品 欧美精品| 制服丝袜成人动漫| 一区二区三区视频在线观看| 国产精品69久久久久水密桃| 欧美日本一道本在线视频| 国产精品美女一区二区在线观看| 蜜桃视频在线观看一区二区| 色婷婷精品大在线视频 | 亚洲免费视频成人| 国产成人精品www牛牛影视| 欧美精品v国产精品v日韩精品 | 国产精品自拍网站| 欧美一三区三区四区免费在线看| 亚洲视频在线观看三级| 国产一区二区中文字幕| 欧美大肚乱孕交hd孕妇| 日韩国产成人精品| 欧美剧在线免费观看网站 | 欧美日韩精品欧美日韩精品一| 亚洲色图制服丝袜| 不卡视频在线看| 国产精品美女久久福利网站| 国产传媒久久文化传媒| 久久久精品国产免大香伊| 国产精品1024久久| 26uuu亚洲| 国产精品亚洲а∨天堂免在线| 欧美刺激脚交jootjob| 蜜臀国产一区二区三区在线播放| 欧美另类高清zo欧美| 视频精品一区二区| 日韩一区二区三区电影| 蜜臀av性久久久久蜜臀av麻豆| 欧美一区二区观看视频| 人人精品人人爱| 欧美va天堂va视频va在线| 久久av资源网| 中日韩av电影| 色婷婷av一区二区三区大白胸| 亚洲另类中文字| 欧美日韩国产美| 蜜臀av性久久久久蜜臀aⅴ四虎 | 成人avav在线| 一区二区三区小说| 欧美天堂一区二区三区| 日本怡春院一区二区| 精品国产1区二区| 成人美女视频在线看| 亚洲激情自拍偷拍| 9191成人精品久久| 国产精品系列在线播放| 亚洲欧美一区二区三区国产精品 | 欧美一级艳片视频免费观看| 麻豆精品视频在线观看| 日本一区二区三区国色天香| 色狠狠一区二区| 久久精品国产网站| 综合av第一页| 欧美一区二区播放| 成人av电影在线播放| 亚洲图片一区二区| 欧美高清一级片在线观看| 欧美主播一区二区三区| 国产一区二区三区国产| 一区二区免费在线| 2020国产精品| 欧美日韩一区二区三区四区 | 91麻豆福利精品推荐| 美女视频黄a大片欧美| 亚洲欧洲性图库| 精品国产髙清在线看国产毛片| av在线这里只有精品| 麻豆视频观看网址久久| 一区二区三区91| 国产精品国产精品国产专区不蜜| 欧美日韩高清在线| 91免费观看视频在线| 国产乱妇无码大片在线观看| 亚洲一区二区在线播放相泽| 国产女人水真多18毛片18精品视频| 欧美日韩精品一区二区三区| 成人爽a毛片一区二区免费| 日韩成人一区二区三区在线观看| 欧美国产激情二区三区| 18成人在线观看| 精品嫩草影院久久| 欧美一级二级三级乱码| 欧美图区在线视频| 91老师国产黑色丝袜在线| 成人一级黄色片| 激情久久五月天| 日本亚洲欧美天堂免费| 亚洲成人自拍一区| 一区二区三区不卡在线观看 | 一本大道av伊人久久综合| 成人免费视频网站在线观看| 激情成人综合网| 激情综合色丁香一区二区| 日韩高清不卡在线| 日韩中文字幕麻豆| 视频一区中文字幕国产| 午夜av一区二区三区| 亚洲高清三级视频| 亚洲1区2区3区视频| 日日摸夜夜添夜夜添国产精品| 亚洲成人午夜影院| 日韩综合小视频| 老司机精品视频在线| 捆绑紧缚一区二区三区视频 | 国产精品美女久久久久久久网站| 国产偷v国产偷v亚洲高清| 国产调教视频一区| 国产精品天天摸av网| 亚洲欧洲性图库| 亚洲在线中文字幕| 日韩影院在线观看| 国精产品一区一区三区mba桃花| 精品在线观看视频| 成人a区在线观看| 色欧美88888久久久久久影院| 欧美在线观看视频一区二区三区| 欧美日韩你懂得| 欧美成人video| 亚洲国产成人一区二区三区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产高清在线观看免费不卡| 成人黄色av网站在线| 91免费观看视频在线| 欧美福利视频一区| 久久综合九色综合欧美就去吻| 中文成人av在线| 五月天婷婷综合| 国产**成人网毛片九色| 在线视频欧美精品| 欧美精品一区二区在线播放| 中文字幕中文乱码欧美一区二区| 亚洲日本在线a| 久久精品99国产精品| 91麻豆精品国产91久久久使用方法 | 成人免费看的视频| 欧美日韩色综合| 国产欧美一区二区三区在线看蜜臀 | 亚洲一区二区综合| 国产制服丝袜一区| 91久久精品一区二区| 欧美刺激脚交jootjob| 亚洲综合久久久久| 成人一区在线观看| 欧美一级专区免费大片| 亚洲色图一区二区三区| 国内精品第一页|