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

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

?? pppoethernet.c

?? 這是全套的PPP協議的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
    M_BLK_ID packet;    if (pStackData->sendPADT == TRUE)        {        if ((packet = pppOEMakePADT(pComponentState)) != NULL)	    {	    ADAPTER_DEST_ADDR_AND_PROTOCOL_SET(pStackData,					    ETHERTYPE_PPPOE_DISCOVERY);	    pfwSend(pComponentState,packet);	    }        }    /* clear the session MAP */    pppOEStackIdMapClear (pComponentState);    /* if this is an AC daemon connection remove it from the service map */    if (pStackData->serviceMapId > 0)	{	pComponent->pppOEServiceNameMap[pStackData->serviceMapId] = NULL;	pStackData->serviceMapId = 0;	pComponent->pppOEServices--;	}    if (pStackData->pfwRFC2233CountTest)	pfwInterfaceReferenceDelete(		       pStackData->pfwRFC2233CountPair.interfaceObj);    pfwInterfaceReferenceDelete(pStackData->adapterInterface.interfaceObj);    PPPOE_STACK_DELETE_DONE(pComponentState);    return OK;    }/******************************************************************************** pppOEStackAdd - initialize a connection via a ethernet interface** This is the first interface invoked by the framework when initializing a* connection over an Ethernet interface. The profileData for this connection* contained in the componentState parameter has service names and other* parameters required to establish a connection.* * This component behaves as an Access Concentrator or a Host depending on* the configuration in the profile. In the former case the connection add phase* simply returns and in the latter case Discovery packets are initiated* to find the peer.** RETURNS: OK on success and ERROR otherwise*/LOCAL STATUS pppOEStackAdd    (    PFW_PLUGIN_OBJ_STATE * pComponentState, /* our state for this connection */    PFW_PLUGIN_OBJ_CALLBACKS * callbacks    )    {    PPPOE_PROFILE_DATA * pProfileData = 			(PPPOE_PROFILE_DATA *)(pComponentState->profileData);    PPPOE_STACK_DATA * pStackData = 			(PPPOE_STACK_DATA *)(pComponentState->stackData);    PPPOE_COMPONENT * pComponent =(PPPOE_COMPONENT *)pComponentState->pluginObj;    M_BLK_ID pPacket = NULL;    int id;    PFW_EVENT_OBJ * pPfwEventObj;    ULONG                        adapterInfoGetInterfaceId;    PFW_INTERFACE_STATE_PAIR     adapterInfoGetInterfaceStatePair;    if  (pStackData->collectPppAttributesEvent == NULL)	    {	    if  ((pStackData->collectPppAttributesEvent =	          pfwEventObjGet(pComponentState->pluginObj->pfwObj,                             "COLLECT_PPP_ATTRIBUTES_EVENT")) != NULL)            {	        pfwEventStackSubscribe(pComponentState,                                   pStackData->collectPppAttributesEvent,                                    pppOEFramingTypeHandler);	        }        }    /* initialize stack Data */    pStackData->connectionMode = pProfileData->connectionMode;    if (pComponent->operatingMode == PPPOE_HOST_MODE &&	pStackData->connectionMode == PPPOE_AC_MODE)	{	printf("PPPOE:Configured in PPPOE_HOST_MODE: Bad Connection mode 0x%x\n"		    ,pStackData->connectionMode);	return ERROR;	}    else if (pComponent->operatingMode == PPPOE_AC_MODE&&	pStackData->connectionMode == PPPOE_HOST_MODE)	{	printf("PPPOE:Configured in PPPOE_AC_MODE: Bad Connection mode 0x%x\n"		    ,pStackData->connectionMode);	return ERROR;	}    pStackData->pfwState = pComponentState;    pStackData->state = PPPOE_STATE_PADI;    bzero(pStackData->serviceName, sizeof(pStackData->serviceName));    bzero(pStackData->acName, sizeof(pStackData->acName));    strncpy(pStackData->acName,pProfileData->acNameTag,			    sizeof(pStackData->acName) -1);    memset(pStackData->srcEnet,0, ENET_LEN);    memset(pStackData->destEnet,0, ENET_LEN);    pStackData->more = NULL;    pStackData->pTimer = NULL;    pStackData->remPADIRetries = (pProfileData->discoveryRetries + 1) ;    pStackData->serviceMapId = 0;    pStackData->profileObj = NULL;    pStackData->pRecvdDiscPkt = NULL;    pStackData->pRetryDiscPkt = NULL;    pStackData->callbacks = callbacks;    /* get adapterInterface if it exists */    if ((id = pfwInterfaceIdGet(pComponentState->pluginObj->pfwObj,			"ADAPTER_DESTINATION_AND_PROTOCOL_SET_INTERFACE")) > 0)	{	pfwInterfaceObjAndStateGetViaStackObj(pComponentState->stackObj,				id, &pStackData->adapterInterface);	}    if ((adapterInfoGetInterfaceId = pfwInterfaceIdGet(pComponentState->pluginObj->pfwObj,			"ADAPTER_INFO_GET_INTERFACE")) > 0)	{	pfwInterfaceObjAndStateGetViaStackObj(pComponentState->stackObj,				adapterInfoGetInterfaceId, &adapterInfoGetInterfaceStatePair);        ((ADAPTER_INFO_GET_INTERFACE *)(adapterInfoGetInterfaceStatePair.interfaceObj))->            adapterPortIdGet (adapterInfoGetInterfaceStatePair.state, &(pStackData->portId));                                                 	}     /* get PPP administrative open event object and subcribe to it*/    if  (NULL != (pPfwEventObj =                  pfwEventObjGet(pComponentState->pluginObj->pfwObj,                                 "LCP_OPEN_EVENT")))        {        pfwEventStackSubscribe(pComponentState,                                pPfwEventObj,                               lcpOpenEventHandler);        }    else        {        return(ERROR);        }    /* get PPP administrative up event object and subcribe to it*/    if  (NULL != (pPfwEventObj =                  pfwEventObjGet(pComponentState->pluginObj->pfwObj,                                 "LCP_UP_EVENT")))        {        pfwEventStackSubscribe(pComponentState,                                pPfwEventObj,                               lcpUpEventHandler);        }    else        {        return(ERROR);        }    /* get PPP administrative up event object and subcribe to it*/    if  (NULL != (pPfwEventObj =                  pfwEventObjGet(pComponentState->pluginObj->pfwObj,                                 "LCP_DOWN_EVENT")))        {        pfwEventStackSubscribe(pComponentState,                                pPfwEventObj,                               lcpDownEventHandler);        }    else        {        return(ERROR);        }    /* Get pfwRFC2233CountPair and set pfwRFC2233CountTest */    RFC2233_COUNT_PAIR_GET(pComponentState,                            pStackData->pfwAuxIfId,                            pStackData->pfwRFC2233CountPair, 			   pStackData->pfwRFC2233CountTest);    /* if we are an Access Concentrator.... there is nothing to do */    if (pProfileData->connectionMode & PPPOE_AC_MODE) 	{	if (strlen(pProfileData->svcNameTag))	    strncpy(pStackData->serviceName, pProfileData->svcNameTag,		(sizeof(pStackData->serviceName) - 1) );	else	    sprintf (pStackData->serviceName,"%s","ANY");	return OK;	}    else if (pProfileData->connectionMode & PPPOE_HOST_MODE) 	{	/* well it looks like we are the host/client */	/* hosts need a retry timer */	if ((pStackData->pTimer = pfwTimerCreate(pComponentState)) == NULL)	    {	    return ERROR;	    }	/* set destination ethernet address to the broadcast address */	memcpy (pStackData->destEnet, etherBroadcastAddr, ENET_LEN);	if ((pPacket = pppOEMakePADI(pComponentState)) == NULL)	    return ERROR;	/* Send PADI packet */	pStackData->pRetryDiscPkt = pPacket;	return (pppOESendDiscPkt(pComponentState,0));	}    return ERROR;    }/******************************************************************************** pppOEReceive - PPPOE component receive interface* * This is interface handles all PPPOE frames received. This routine receives* the entire ethernet frame. Source and destination ethernet address are* retrieved and stored and the requisite response in the form of a PADR,* PADO or PADS packet is sent out by invoking the framework pppSend()** RETURNS: OK if successful and ERROR otherwise*/LOCAL STATUS pppOEReceive     (    PFW_PLUGIN_OBJ_STATE * pComponentState,/* our state for this connection */    M_BLK_ID * pMblkId			   /* pointer to packet received */    )    {    PPPOE_COMPONENT * pComponent =			    (PPPOE_COMPONENT *)pComponentState->pluginObj;    PPPOE_STACK_DATA * pStackData = 			(PPPOE_STACK_DATA *)(pComponentState->stackData);    PPPOE_PROFILE_DATA * pProfileData =                        (PPPOE_PROFILE_DATA *)pComponentState->profileData;    M_BLK_ID pFrame = NULL;    PFW_STACK_OBJ * newStackObj = 0;    struct ether_header etherHdr;    struct ether_header * pEtherHdr;    PPPOE_HEADER  pppOEHeader;    PPPOE_HEADER  * pPPPOEHeader;    M_BLK_ID pMblk = NULL;    PFW_PLUGIN_OBJ_STATE * pNewComponentState = NULL;    PPPOE_STACK_DATA * pNewStackData;    PPPOE_PROFILE_DATA * pNewProfileData;    PPPOE_TLV * firstTlv = NULL;    PPPOE_TLV * foundTlv;    if ((pMblkId == NULL) || ((pFrame = *pMblkId) == NULL))        {        RFC2233_COUNTER_UPDATE(pStackData->pfwRFC2233CountTest, 				pStackData->pfwRFC2233CountPair,                               M2_ctrId_ifInErrors, 1);	return ERROR;        }    /* Update counters */    pStackData->inputPackets ++;    pStackData->inputOctets += pFrame->mBlkPktHdr.len;    /*     * intial checks on the ethernet header etc. have already been done by     * the stack object resolver so we dont repeat it here.     */    pEtherHdr = mtod(pFrame, struct ether_header *);    bcopy(pFrame->mBlkHdr.mData, (char *)&etherHdr,sizeof(struct ether_header));    etherHdr.ether_type = ntohs(pEtherHdr->ether_type);    /* strip ethernet header from the received packet */    pFrame->mBlkHdr.mData += sizeof(struct ether_header);    pFrame->mBlkHdr.mLen -= sizeof(struct ether_header);    pFrame->mBlkPktHdr.len -= sizeof(struct ether_header);    /*     * copy PPPOE header      */    pPPPOEHeader = mtod(pFrame, PPPOE_HEADER *);    pppOEHeader.pppOE_ver = pPPPOEHeader->pppOE_ver;    pppOEHeader.pppOE_type = pPPPOEHeader->pppOE_type;    pppOEHeader.pppOE_code = pPPPOEHeader->pppOE_code;    pppOEHeader.pppOE_session = ntohs(pPPPOEHeader->pppOE_session);    pppOEHeader.pppOE_length = ntohs(pPPPOEHeader->pppOE_length);    /* strip PPPOE header */    pFrame->mBlkHdr.mData += sizeof(PPPOE_HEADER);    pFrame->mBlkHdr.mLen -= sizeof(PPPOE_HEADER);    pFrame->mBlkPktHdr.len -= sizeof(PPPOE_HEADER);    /* set packet length to length in PPPOE_HEADER */    if (pppOEHeader.pppOE_length < pFrame->mBlkHdr.mLen)	pFrame->mBlkHdr.mLen = pppOEHeader.pppOE_length;    /*     * retain the received Packet minus the headers; except in the case     * of PPPOE session packets     */    if (pppOEHeader.pppOE_code != PPPOE_CODE_SESSION)	{	pStackData->pRecvdDiscPkt = pFrame;	firstTlv = mtod(pFrame,PPPOE_TLV *);	}    /*     * save source and destination ethernet address if necessary     * and send the appropriate response in the case of PADI, PADR or PADO pkts.     */    switch (pppOEHeader.pppOE_code)	{	/* the first two cases are encountered by an AC */	case PPPOE_CODE_PADI:	    /*	     * service name is already validated by stack object resolver	     */	    /* copy address of sender as our destination address */	    memcpy(pStackData->destEnet, etherHdr.ether_shost, ENET_LEN);	    /* make an offer */	    if ((pMblk = pppOEMakePADO(pComponentState)) == NULL)		break;	    /* else */	    ADAPTER_DEST_ADDR_AND_PROTOCOL_SET(pStackData,					    ETHERTYPE_PPPOE_DISCOVERY);	    if (pfwSend (pComponentState, pMblk)		!= ERROR)		{		/* done with received discovery frame */		return PFW_OK_TERMINATE;		}	    else                {		break;                }	case PPPOE_CODE_PADR:	    /* VALIDATE SERVICE NAME AGAIN, RETURN SERVICE-NAME ERROR*/ 	    if ((((foundTlv = pppOEFindTlv(PPPOE_TAG_SVC_NAME,firstTlv,pFrame))		== NULL)) ||		(strncmp(pStackData->serviceName,PPPOE_TAG_VALUE(foundTlv),						PPPOE_TAG_LENGTH(foundTlv))))		{		/* send SERVICE NAME error */		if ((pMblk = pppOEAddSvcNameError(pComponentState)) != NULL)		    {		    pfwSend(pComponentState,pMblk);		    return PFW_OK_TERMINATE;		    }		break;		}	    /*	     * create a new stack using the same profile object that created	     * this daemon stack and offer a session	     */	    if ((newStackObj = pfwStackAdd(pStackData->profileObj,		pStackData->stackObjCallbacks,pStackData->userHandle)) == NULL)		break;	    /* else; get component state for the new connection */	    pNewComponentState = pfwPluginObjStateGet (newStackObj, 			    (PFW_PLUGIN_OBJ *)pComponent);            pfwPluginObjStateLock(pNewComponentState);	    pNewStackData = (PPPOE_STACK_DATA *)(pNewComponentState->stackData);	    pNewProfileData = (PPPOE_PROFILE_DATA *)					    (pNewComponentState->profileData);	    /* copy address of sender as our destination address */	    memcpy(pNewStackData->destEnet, etherHdr.ether_shost, ENET_LEN);	    /* copy the address at which we received this PADR */	    memcpy(pNewStackData->srcEnet, etherHdr.ether_dhost, ENET_LEN);	    /* hand over received packet to the new connection */	    pNewStackData->pRecvdDiscPkt = pStackData->pRecvdDiscPkt;	    pStackData->pRecvdDiscPkt = NULL;	    /*	     * set the stack object in the MAP (sessionID, stackObj)	     * for an AC the lower 16 bits of its stack object ID is the

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩亚洲综合| 亚洲综合免费观看高清在线观看| 亚洲国产精品成人综合| 亚洲国产精品久久人人爱蜜臀| 精品一区二区影视| 欧美日韩亚洲综合在线| 亚洲天堂福利av| 国产精品一区免费视频| 日韩欧美久久久| 亚洲一区二区三区影院| 成人精品国产福利| 久久久亚洲国产美女国产盗摄 | 337p日本欧洲亚洲大胆色噜噜| 一区二区不卡在线播放 | 国产三级精品三级| 水野朝阳av一区二区三区| 一本到不卡精品视频在线观看| 欧美激情在线看| 国产美女一区二区| 精品久久人人做人人爱| 麻豆精品精品国产自在97香蕉 | 精品久久久久久久久久久久久久久 | 亚洲激情中文1区| 不卡的av网站| 国产精品嫩草99a| 高清国产一区二区| 国产精品国产三级国产普通话三级| 国产精品一区三区| 国产丝袜欧美中文另类| 成人激情校园春色| 综合久久一区二区三区| 色婷婷综合久久久| 亚洲一级在线观看| 欧美日韩精品专区| 日韩电影一二三区| 精品少妇一区二区| 狠狠色综合播放一区二区| 亚洲美女视频一区| 色婷婷激情久久| 亚洲gay无套男同| 日韩一区二区三区视频在线 | 国产成人精品aa毛片| 国产午夜精品一区二区三区四区| 国产69精品久久99不卡| 成人欧美一区二区三区1314| 欧美又粗又大又爽| 日韩高清中文字幕一区| 日韩欧美美女一区二区三区| 国产一区二区三区蝌蚪| 国产精品久久久久精k8| 欧美性videosxxxxx| 日韩精品乱码av一区二区| 久久看人人爽人人| 成人理论电影网| 亚洲成av人片一区二区| 精品少妇一区二区三区视频免付费| 国产成人h网站| 亚洲线精品一区二区三区八戒| 日韩视频在线永久播放| 成人18视频在线播放| 亚洲高清三级视频| 2023国产精华国产精品| 91美女片黄在线观看91美女| 日本不卡视频在线观看| 国产精品欧美极品| 欧美一区二区三区视频| 成人免费视频播放| 肉色丝袜一区二区| 国产精品久久久久久久久果冻传媒 | 亚洲午夜电影网| 久久品道一品道久久精品| 91理论电影在线观看| 麻豆91在线播放免费| 亚洲人成小说网站色在线| 欧美精品一区二区三区四区 | 日韩欧美国产综合一区 | 成人免费精品视频| 午夜一区二区三区在线观看| 国产欧美一区二区精品忘忧草| 欧美日韩日日骚| 成人精品视频一区| 精品一区二区精品| 亚洲www啪成人一区二区麻豆| 欧美经典一区二区三区| 欧美大尺度电影在线| 欧美亚洲日本国产| 成人av午夜电影| 国产美女娇喘av呻吟久久 | 日韩av在线播放中文字幕| √…a在线天堂一区| 精品福利av导航| 日韩一区二区三区三四区视频在线观看 | 日韩精品乱码av一区二区| 综合分类小说区另类春色亚洲小说欧美 | 日本一区二区三区国色天香| 欧美不卡激情三级在线观看| 欧美日韩一区不卡| 色综合久久久久综合| 99这里只有精品| 国产成人高清在线| 风间由美中文字幕在线看视频国产欧美| 亚洲大片一区二区三区| 亚洲天堂网中文字| 亚洲欧美日韩系列| 亚洲天堂网中文字| 亚洲青青青在线视频| 综合欧美亚洲日本| 一区二区三区四区在线免费观看| 国产精品久久久久久久久果冻传媒 | 亚洲图片欧美色图| 亚洲一二三专区| 亚洲一本大道在线| 性感美女极品91精品| 婷婷开心激情综合| 日本三级韩国三级欧美三级| 天堂影院一区二区| 日本不卡免费在线视频| 美女网站在线免费欧美精品| 裸体一区二区三区| 国产一区二区三区在线观看免费| 国产综合色在线| 成人一区二区三区视频在线观看| 国产不卡在线一区| 成人app网站| 色悠悠亚洲一区二区| 欧美日韩一区二区三区在线看 | 麻豆一区二区三| 精品一区二区三区免费观看| 福利视频网站一区二区三区| 91视频.com| 这里只有精品电影| 国产亚洲精品免费| 亚洲欧美乱综合| 男女性色大片免费观看一区二区| 国产尤物一区二区在线| www.欧美日韩国产在线| 欧洲视频一区二区| 欧美va亚洲va| 最好看的中文字幕久久| 亚洲成人资源网| 国产乱人伦偷精品视频免下载| 91一区二区在线观看| 欧美日韩国产乱码电影| 精品免费国产一区二区三区四区| 中文在线资源观看网站视频免费不卡| 亚洲色图清纯唯美| 蜜臀99久久精品久久久久久软件| 高清不卡在线观看| 欧美日韩国产美女| 中文字幕亚洲成人| 男男成人高潮片免费网站| 成人黄色免费短视频| 欧美一区三区二区| 亚洲手机成人高清视频| 九九精品视频在线看| 欧美在线观看一区二区| 久久久.com| 日韩成人一级片| 在线精品视频一区二区三四| 精品久久久久久久一区二区蜜臀| 一个色在线综合| 成人一区二区在线观看| 日韩欧美一二三| 午夜欧美一区二区三区在线播放| 成人午夜免费av| 日韩午夜小视频| 亚洲h精品动漫在线观看| 91麻豆免费观看| 久久久久国产精品厨房| 日本aⅴ亚洲精品中文乱码| 91久久精品一区二区二区| 中文字幕不卡在线播放| 麻豆精品一区二区综合av| 欧美性感一区二区三区| 1024亚洲合集| 成人av在线网站| 久久久久久久一区| 久色婷婷小香蕉久久| 欧美日韩www| 亚洲一本大道在线| 欧洲视频一区二区| 亚洲另类色综合网站| 成人av电影在线观看| 国产欧美日韩三级| 风间由美中文字幕在线看视频国产欧美| 欧美成人在线直播| 欧美aⅴ一区二区三区视频| 欧美精品粉嫩高潮一区二区| 亚洲第四色夜色| 欧美日韩精品一区二区天天拍小说| 亚洲黄一区二区三区| 91麻豆国产在线观看| 亚洲欧美日韩人成在线播放| 99久久久久免费精品国产 | 91亚洲精品久久久蜜桃| 中文字幕第一区综合| 丁香六月综合激情| 国产精品二三区| 91黄色免费观看| 亚洲一区影音先锋|