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

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

?? pap.c

?? MCS-51的一個Free小型操作系統,在KeilC中下編譯工作
?? 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| 日韩欧美在线网站| 亚洲三级在线看| 一本久久精品一区二区| 亚洲精品伦理在线| 在线观看www91| 日韩精品午夜视频| 精品电影一区二区| 成人av在线影院| 尤物在线观看一区| 91麻豆精品91久久久久久清纯| 日本美女一区二区三区视频| 欧美xxx久久| 99视频在线精品| 亚洲国产wwwccc36天堂| 欧美一二三区在线| 国产黄人亚洲片| 亚洲欧美日韩小说| 91精品国产色综合久久不卡电影| 精品一区二区在线视频| 国产精品久久久爽爽爽麻豆色哟哟| 色综合色综合色综合色综合色综合| 亚洲国产欧美日韩另类综合| 欧美本精品男人aⅴ天堂| 99视频精品免费视频| 亚洲gay无套男同| 久久久一区二区| 欧美三区在线视频| 国产美女精品人人做人人爽| 一区二区三区在线看| 欧美精品一区二区三区在线| 91捆绑美女网站| 久久er精品视频| 亚洲免费高清视频在线| 精品国产区一区| 欧美亚日韩国产aⅴ精品中极品| 国产在线精品不卡| 亚洲综合免费观看高清完整版| 精品国产91乱码一区二区三区 | 国产99久久久国产精品潘金| 亚洲精品国产第一综合99久久| 精品三级av在线| 精品视频一区 二区 三区| 国产成人久久精品77777最新版本| 五月天欧美精品| 欧美—级在线免费片| 欧美一级黄色大片| 欧美亚洲禁片免费| 99久久综合狠狠综合久久| 国产真实乱偷精品视频免| 亚洲国产一区二区三区 | 91精品国产综合久久蜜臀| 成人av午夜电影| 国产一本一道久久香蕉| 三级久久三级久久| 一区二区三区在线观看动漫| 国产欧美日韩久久| 久久久欧美精品sm网站 | 国产免费观看久久| 精品欧美一区二区三区精品久久| 在线国产电影不卡| 91在线你懂得| 北条麻妃一区二区三区| 国产不卡在线播放| 激情久久五月天| 亚洲电影一区二区三区| 亚洲另类色综合网站| 国产精品初高中害羞小美女文| 久久久99精品久久| 国产校园另类小说区| 国产三级一区二区| 欧美精品一区二区三区蜜臀| 欧美大黄免费观看| 日韩精品资源二区在线| 日韩欧美一二三四区| 日韩一区二区在线观看| 91精品欧美综合在线观看最新| 欧美影院午夜播放| 欧美日韩在线精品一区二区三区激情| 91无套直看片红桃| 色8久久精品久久久久久蜜| 91国产精品成人| 欧美日韩免费一区二区三区视频| 在线一区二区三区四区五区| 91九色最新地址| 欧美日韩久久不卡| 日韩一级二级三级精品视频| 久久亚洲精华国产精华液| www久久久久| 国产欧美视频一区二区| 国产人成亚洲第一网站在线播放| 久久久久久久久久久久电影| 国产精品美女久久久久久2018| 国产精品久久久久影院亚瑟| 一区二区三区四区不卡在线| 亚洲国产精品久久久男人的天堂| 婷婷成人综合网| 久久av资源网| 成人av第一页| 欧美揉bbbbb揉bbbbb| 日韩一二三区不卡| 中日韩免费视频中文字幕| 国产一区二区三区久久久| 99久久伊人网影院| 亚洲香肠在线观看| 欧美经典一区二区三区| 亚洲视频电影在线| 日韩精品电影在线观看| 国产一区二区三区免费播放| 91论坛在线播放| 日韩精品一区二区三区中文精品| 2023国产精品视频| 国产精品久久国产精麻豆99网站 | 欧美激情综合在线| 一区二区三区高清| 美国欧美日韩国产在线播放| 成人美女在线观看| 欧美老人xxxx18| 久久久精品国产免大香伊| 一区二区三区在线播放| 麻豆成人av在线| 色综合婷婷久久| 精品福利一区二区三区| 亚洲精品欧美综合四区| 极品尤物av久久免费看| 欧美性大战久久久久久久蜜臀| 欧美精品一区男女天堂| 亚洲成人资源网| 成人福利在线看| 欧美大片顶级少妇| 夜色激情一区二区| 福利91精品一区二区三区| 欧美日韩国产经典色站一区二区三区 | 国产性色一区二区| 日韩电影在线观看电影| 色婷婷综合久色| 久久久久久久久免费| 日韩精品久久久久久| 94-欧美-setu| 精品99久久久久久| 天堂成人国产精品一区| 91色porny蝌蚪| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲黄色小说网站| 成人精品视频一区| 久久先锋资源网| 午夜精品福利一区二区三区蜜桃| 成人免费视频视频在线观看免费| 欧美一区二区三区在线视频| 亚洲男人电影天堂| 成人av动漫在线| 国产日韩三级在线| 久久国产三级精品| 日韩午夜激情av| 亚洲地区一二三色| 一本到高清视频免费精品| 国产欧美日韩综合| 国产精品一区一区| 久久久久久久久久美女| 久久超碰97中文字幕| 日韩免费视频线观看| 婷婷丁香激情综合| 欧美日韩国产一区| 亚洲一区二区欧美日韩| 色综合久久88色综合天天 | 337p日本欧洲亚洲大胆精品| 五月综合激情婷婷六月色窝| 91国内精品野花午夜精品| 一区二区三区四区视频精品免费| 成人激情电影免费在线观看| 中文字幕第一区二区| 成人午夜免费电影| 中文字幕av在线一区二区三区| 国产精品77777竹菊影视小说| 2020日本不卡一区二区视频| 久久成人18免费观看| 久久久综合精品| 波多野洁衣一区| 亚洲一区免费观看| 欧美亚洲国产bt| 麻豆免费看一区二区三区| 精品久久久久久最新网址| 狠狠色丁香久久婷婷综合_中| 欧美电影精品一区二区| 国产大陆a不卡| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| www.日韩av| 亚洲一区免费在线观看| 91精选在线观看| 国产福利91精品一区二区三区| 中文在线一区二区| 91一区二区三区在线播放| 一区二区三区91| 91精品欧美久久久久久动漫| 国产做a爰片久久毛片| 国产精品欧美久久久久一区二区| 色综合久久久久网| 天天av天天翘天天综合网| 精品裸体舞一区二区三区| 成人激情小说网站|