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

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

?? discovery.c

?? PPPoE協議在Psos中的實現源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
			   (unsigned) conn->peerEth[2],			   (unsigned) conn->peerEth[3],			   (unsigned) conn->peerEth[4],			   (unsigned) conn->peerEth[5]);		    printf("--------------------------------------------------\n");	    }	    syslog(LOG_DEBUG, "PADO: peer Mac: %02x:%02x:%02x:%02x:%02x:%02x", (unsigned) conn->peerEth[0],(unsigned) conn->peerEth[1],	          (unsigned) conn->peerEth[2],(unsigned) conn->peerEth[3],(unsigned) conn->peerEth[4],(unsigned) conn->peerEth[5]);	    conn->discoveryState = STATE_RECEIVED_PADO;    }        sendPADR(conn);     return;error:    pfree((char *)ptr);    return;    	}	/************************************************************************%FUNCTION: sendPADR*%ARGUMENTS:* conn -- PPPoE connection structur*%RETURNS:* Nothing*%DESCRIPTION:* Sends a PADR packet***********************************************************************/voidsendPADR(PPPoEConnection *conn){    UINT16_t namelen = 0;    UINT16_t plen;    u_char *outp = outpacket_buf;    char *ptr;    int tm,i;        if (conn->serviceName) {	namelen = (UINT16_t) strlen(conn->serviceName);    }    plen = TAG_HDR_SIZE + namelen;        if (conn->cookie.type)  plen += ntohs(conn->cookie.length) + TAG_HDR_SIZE;    if (conn->relayId.type) plen += ntohs(conn->relayId.length) + TAG_HDR_SIZE;	        tm = PADI_TIMEOUT;    for(i=0;i<conn->padr_trans;i++) tm = tm*2;      PUTSHORT(ETH_PPPOE_DISCOVERY, outp);    PUTCHAR(0x11,outp);     PUTCHAR(CODE_PADR, outp);    PUTSHORT(0, outp);    PUTSHORT(plen, outp);    PUTSHORT(TAG_SERVICE_NAME, outp);    PUTSHORT(namelen, outp);    if (conn->serviceName) {	BCOPY(conn->serviceName, outp, namelen);    }    if (conn->cookie.type) {    	ptr = (char *)(&(conn->cookie));    	BCOPY(ptr, outp, (ntohs(conn->cookie.length) + TAG_HDR_SIZE));    }    if (conn->relayId.type) {    	ptr = (char *)(&(conn->relayId));    	BCOPY(ptr, outp, (ntohs(conn->relayId.length) + TAG_HDR_SIZE));    }    	    output( conn->peerEth, 0, outpacket_buf, plen+8 );       TIMEOUT(padr_timeout, (caddr_t)conn, tm);    ++conn->padr_trans;    conn->discoveryState = STATE_SENT_PADR;    syslog(LOG_INFO, "send PADR: Sent code %d .", CODE_PADR);   }/************************************************************************%FUNCTION: recvPADS*%ARGUMENTS:   *conn -- PPPoEConnection structure*%RETURNS:      Nothing*%DESCRIPTION:  Receive a PADO packet***********************************************************************/voidrecvPADS(PPPoEConnection *conn, unsigned char *ptr, unsigned int num){    PPPoEPacket *packet;            packet = (PPPoEPacket *)ptr;        if (ntohs(packet->length) + HDR_SIZE > num) {	    syslog(LOG_ERR, "Bogus PPPoE length field (%u)", (unsigned int) ntohs(packet->length));	    goto error;    }        if (memcmp(packet->h_source, conn->peerEth, ETH_ALEN)) {    	    syslog(LOG_ERR, "This packet is not from AC !");    	    goto error;    }         if (memcmp(packet->h_dest, conn->myEth, ETH_ALEN)) {     	   syslog(LOG_ERR,"This packet is not for me !");     	   goto error;     }        parsePacket(packet, parsePADSTags, conn);    conn->discoveryState = STATE_SESSION;     conn->session = ntohs(packet->session);    syslog(LOG_INFO, "PPP session is %d", (int) ntohs(conn->session));    /* RFC 2516 says session id MUST NOT be zero or 0xFFFF */    if (conn->session == 0 || conn->session == 0xFFFF) {	syslog(LOG_ERR, "Access concentrator used a session value of %x -- the AC is violating RFC 2516", (unsigned int) ntohs(conn->session));    }    lcp_lowerup(0);    lcp_open(0);    return;error:    pfree((char *)ptr);    return;    	    	}	static voidpadi_timeout(arg)    caddr_t arg;{    PPPoEConnection *u = (PPPoEConnection *) arg;    if (u->discoveryState != STATE_SENT_PADI)	return;    if (u->padi_trans >= MAX_PADI_ATTEMPTS) {	/* give up in disgust */	syslog(LOG_ERR, "Dont receive PADO");	return;    }    sendPADI(u);		/* Send PADI */}	static voidpadr_timeout(arg)    caddr_t arg;{    PPPoEConnection *u = (PPPoEConnection *) arg;    if (u->discoveryState != STATE_SENT_PADR)	return;    if (u->padr_trans >= MAX_PADI_ATTEMPTS) {	/* give up in disgust */	syslog(LOG_ERR, "Dont receive PADS");	return;    }    sendPADR(u);		/* Send PADI */}	intparsePacket(PPPoEPacket *packet, ParseFunc *func, void *extra){    UINT16_t len = ntohs(packet->length);    unsigned char *curTag;    UINT16_t tagType, tagLen;    if (packet->ver != 1) {	syslog(LOG_ERR, "Invalid PPPoE version (%d)", (int) packet->ver);	return -1;    }    if (packet->type != 1) {	syslog(LOG_ERR, "Invalid PPPoE type (%d)", (int) packet->type);	return -1;    }    /* Do some sanity checks on packet */    if (len > ETH_DATA_LEN - 6) { /* 6-byte overhead for PPPoE header */	syslog(LOG_ERR, "Invalid PPPoE packet length (%u)", len);	return -1;    }    /* Step through the tags */    curTag = packet->payload;    while(curTag - packet->payload < len) {	/* Alignment is not guaranteed, so do this by hand... */	tagType = (((UINT16_t) curTag[0]) << 8) +	    (UINT16_t) curTag[1];	tagLen = (((UINT16_t) curTag[2]) << 8) +	    (UINT16_t) curTag[3];	if (tagType == TAG_END_OF_LIST) {	    return 0;	}	if ((curTag - packet->payload) + tagLen + TAG_HDR_SIZE > len) {	    syslog(LOG_ERR, "Invalid PPPoE tag length (%u)", tagLen);	    return -1;	}	func(tagType, tagLen, curTag+TAG_HDR_SIZE, extra);	curTag = curTag + TAG_HDR_SIZE + tagLen;    }    return 0;}voidsendPADT(PPPoEConnection *conn, char const *msg){    u_char *outp = outpacket_buf;         	    UINT16_t plen = 0;    char *ptr;    UINT16_t elen;        /* Do nothing if no session established yet */    if (!conn->session) return;        if (msg)  plen += strlen(msg) + TAG_HDR_SIZE;    if (conn->cookie.type)  plen += ntohs(conn->cookie.length) + TAG_HDR_SIZE;    if (conn->relayId.type) plen += ntohs(conn->relayId.length) + TAG_HDR_SIZE;	        PUTSHORT(ETH_PPPOE_DISCOVERY, outp);    PUTCHAR(0x11,outp);     PUTCHAR(CODE_PADT, outp);    PUTSHORT(conn->session, outp);  conn->session = 0;    PUTSHORT(plen, outp);	        if (msg) {    	elen = strlen(msg);    	PUTSHORT(TAG_GENERIC_ERROR, outp);    	PUTSHORT(elen, outp);	BCOPY( msg, outp, elen );	INCPTR(elen, outp);	    }    if (conn->cookie.type) {    	ptr = (char *)(&(conn->cookie));    	BCOPY(ptr, outp, (ntohs(conn->cookie.length) + TAG_HDR_SIZE));    	INCPTR((ntohs(conn->cookie.length) + TAG_HDR_SIZE), outp);    }    if (conn->relayId.type) {    	ptr = (char *)(&(conn->relayId));    	BCOPY(ptr, outp, (ntohs(conn->relayId.length) + TAG_HDR_SIZE));    }    	    output( conn->peerEth, 0, outpacket_buf, plen+8 );    syslog(LOG_INFO, "send PADT: Sent code %d .", CODE_PADT);    }	voidrecvPADT(PPPoEConnection *conn, unsigned char *ptr, unsigned int num){    PPPoEPacket *packet;            packet = (PPPoEPacket *)ptr;        if (ntohs(packet->length) + HDR_SIZE > num) {	    syslog(LOG_ERR, "PADT:Bogus PPPoE length field (%u)", (unsigned int) ntohs(packet->length));	    goto error;    }        if (memcmp(packet->h_source, conn->peerEth, ETH_ALEN)) {    	    syslog(LOG_ERR, "PADT:This packet is not from AC !");    	    goto error;    }         if (memcmp(packet->h_dest, conn->myEth, ETH_ALEN)) {     	   syslog(LOG_ERR,"PADT:This packet is not for me !");     	   goto error;     }    if (ntohs(packet->session) != conn->session) {	   syslog(LOG_ERR,"PADT:This packet's id doesn't match !");     	   goto error;     }	    syslog(LOG_INFO,"Session %d terminated -- received PADT from peer",(int) ntohs(packet->session));        parsePacket(packet, parseLogErrs, NULL);    sendPADT(conn, "Received PADT from peer");    error:    pfree((char *)ptr);    return;    	        }	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲久本草在线中文字幕| 精品人在线二区三区| 久久国产精品免费| 亚洲精品欧美在线| 久久奇米777| 欧美三级一区二区| 成人动漫一区二区在线| 美女视频一区二区三区| 亚洲国产美女搞黄色| 中文字幕在线观看一区二区| 日韩欧美不卡在线观看视频| 在线看国产一区| youjizz国产精品| 国产一区二三区好的| 日日摸夜夜添夜夜添精品视频| 国产精品第五页| 国产三级精品视频| 久久综合色之久久综合| 日韩欧美中文字幕公布| 欧美日韩一卡二卡| 色综合欧美在线| 99久久99久久精品国产片果冻 | 欧美日韩久久一区| www.亚洲人| 成人免费毛片高清视频| 国产麻豆精品在线| 国产综合成人久久大片91| 免播放器亚洲一区| 日韩国产在线一| 亚洲444eee在线观看| 亚洲成人动漫在线免费观看| 一区二区欧美国产| 怡红院av一区二区三区| 中文字幕欧美一| 中文字幕在线不卡国产视频| 国产精品乱码久久久久久| 国产欧美一区二区三区在线看蜜臀| 26uuu国产日韩综合| 国产片一区二区| 国产精品久久毛片a| 国产精品久久久久7777按摩| 亚洲国产高清在线| 国产精品成人一区二区艾草 | 色综合亚洲欧洲| 色综合久久综合中文综合网| 色婷婷亚洲一区二区三区| 一本久道久久综合中文字幕| 色综合天天综合网国产成人综合天| 色综合久久99| 欧美亚洲国产一区二区三区| 1000部国产精品成人观看| 亚洲精品国产一区二区三区四区在线| 欧美军同video69gay| 3751色影院一区二区三区| 日韩一区二区三区四区五区六区| 日韩一区二区在线观看视频| 日韩欧美激情在线| 久久综合九色欧美综合狠狠| 国产精品成人一区二区三区夜夜夜 | 亚洲国产精品传媒在线观看| 久久精品夜夜夜夜久久| 国产精品美女一区二区| 亚洲激情图片小说视频| 日韩精品一二三四| 激情综合色丁香一区二区| 大胆亚洲人体视频| 欧美亚洲禁片免费| 精品裸体舞一区二区三区| 国产精品丝袜91| 亚洲成人免费影院| 国内精品国产三级国产a久久| 成人美女视频在线观看18| 91久久国产综合久久| 日韩视频免费观看高清完整版 | 国产欧美日韩在线看| 亚洲免费大片在线观看| 日韩国产欧美三级| 国产河南妇女毛片精品久久久| 91美女蜜桃在线| 日韩久久精品一区| 一区二区三区自拍| 狂野欧美性猛交blacked| av动漫一区二区| 精品欧美乱码久久久久久| 自拍偷拍国产精品| 蜜臀精品久久久久久蜜臀 | 欧美岛国在线观看| 国产精品麻豆99久久久久久| 日韩成人一区二区三区在线观看| 国产91丝袜在线观看| 91麻豆精品国产| 亚洲欧洲日产国产综合网| 日韩av高清在线观看| 一本色道综合亚洲| 久久婷婷国产综合国色天香| 亚洲已满18点击进入久久| 精品一二线国产| 欧美亚洲综合色| 国产婷婷色一区二区三区| 午夜精品福利一区二区蜜股av| 极品少妇一区二区| 在线综合视频播放| 亚洲另类春色校园小说| 国产美女精品一区二区三区| 3d成人动漫网站| 亚洲一二三四区不卡| 成人污视频在线观看| 精品美女一区二区三区| 婷婷国产v国产偷v亚洲高清| 色婷婷综合激情| 中文字幕一区二区三区不卡| 国产一区二区三区| 日韩免费在线观看| 青青草精品视频| 欧美男生操女生| 一区二区免费在线| 色综合久久久网| 亚洲视频香蕉人妖| 丁香亚洲综合激情啪啪综合| 精品久久一区二区三区| 日韩电影免费一区| 欧美日韩国产一区二区三区地区| 亚洲精品视频一区| 99久久婷婷国产综合精品电影 | 精品久久五月天| 免费在线看成人av| 宅男噜噜噜66一区二区66| 午夜国产精品一区| 欧美日韩情趣电影| 亚洲国产成人精品视频| 欧美三级电影在线观看| 亚洲午夜电影网| 欧美三级在线播放| 亚洲18影院在线观看| 91麻豆精品国产自产在线观看一区| 一区二区三区在线免费播放| 在线观看欧美黄色| 丝瓜av网站精品一区二区| 日韩一区二区三区在线视频| 美女爽到高潮91| 国产午夜精品一区二区三区视频 | 欧美一区二区三区四区高清| 日韩高清国产一区在线| 日韩三级在线免费观看| 久久99精品国产.久久久久久 | 精品精品国产高清a毛片牛牛 | 91福利视频网站| 午夜视频在线观看一区二区三区 | 欧美精品久久久久久久多人混战| 午夜视频一区二区| 777奇米四色成人影色区| 蜜桃久久久久久| 国产亚洲综合性久久久影院| 成人国产亚洲欧美成人综合网| 亚洲男人天堂av网| 欧美精品久久一区二区三区| 免费观看30秒视频久久| 国产午夜亚洲精品午夜鲁丝片| 成a人片亚洲日本久久| 亚洲一二三级电影| 精品99一区二区三区| www.av精品| 日韩激情av在线| 欧美激情一区二区三区不卡 | 国产欧美日韩精品在线| 91亚洲精品乱码久久久久久蜜桃| 亚洲一区二区三区在线播放| 日韩一级二级三级精品视频| 丁香婷婷综合色啪| 一区二区免费在线| 2021国产精品久久精品| 99久久99久久精品免费观看| 男女视频一区二区| 中文字幕av一区二区三区高 | 色欧美片视频在线观看| 蜜臀a∨国产成人精品| 欧美激情一区二区三区不卡| 欧美三级中文字幕| 风间由美一区二区av101| 亚洲一区av在线| 日本一区二区视频在线| 欧美体内she精高潮| 欧美三级视频在线| 国产乱淫av一区二区三区| 一区二区三区加勒比av| 久久亚洲精品国产精品紫薇| 欧美影院精品一区| 国产成人自拍高清视频在线免费播放| 亚洲人成网站影音先锋播放| 2023国产精品| 在线电影一区二区三区| 成人av网站大全| 久久99精品久久久久久久久久久久 | 日韩av一区二区三区四区| 自拍偷在线精品自拍偷无码专区| 日韩一区二区在线看| 欧美亚洲愉拍一区二区| 成人av综合在线| 国产一区二区三区美女| 日韩国产精品久久|