⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipcpinterfaces.c

📁 这是全套的PPP协议的源码
💻 C
字号:
/* ipcpInterfaces.c - IPCP published interfaces *//* Copyright 1999 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01d,17jul02,emr  Bring into line for PPP 2.001e,22may02,as	In ipcpConfigCompressionSet() added NCP_STACK_DATA for accessing                 option_lists01d,04feb02,ak	modifed ipcpConfigCompressionSet() for memory reduction changes01c,25feb00,sj  ConfigSet interfaces should validate arguments01b,15feb00,sj  lock state before accessing stackData in Set interfaces01a,15jan2000, sgv Written*/#include "private/ppp/pppIpcpComponentP.h"#include "private/ppp/pppNcpComponentP.h"#include "ppp/interfaces/ipcpInterfaces.h"#include "ppp/m2pppIpcpGroup.h"LOCAL ULONG ipcpOperStatusGet ( PFW_PLUGIN_OBJ_STATE * state);LOCAL ULONG ipcpLocalToRemoteCompressionProtocolGet ( 		PFW_PLUGIN_OBJ_STATE * state);LOCAL ULONG ipcpRemoteToLocalCompressionProtocolGet ( 		PFW_PLUGIN_OBJ_STATE * state);LOCAL ULONG ipcpRemoteMaxSlotIdGet ( PFW_PLUGIN_OBJ_STATE * state);LOCAL ULONG ipcpLocalMaxSlotIdGet ( PFW_PLUGIN_OBJ_STATE * state);LOCAL ULONG ipcpConfigAdminStatusGet ( PFW_PLUGIN_OBJ_STATE * state);LOCAL ULONG ipcpConfigCompressionGet ( PFW_PLUGIN_OBJ_STATE * state);LOCAL STATUS ipcpConfigAdminStatusSet (PFW_PLUGIN_OBJ_STATE * ipcpState,			ULONG value);LOCAL STATUS ipcpConfigCompressionSet (PFW_PLUGIN_OBJ_STATE * ipcpState,			ULONG value); /******************************************************************************** ipcpInterfacesInit -*/void ipcpInterfacesInit    (    PPP_IPCP_COMPONENT * pComponent    )    {    PPP_IPCP_MIB_INTERFACE * ipcpMibStatusEntry = NULL;    ipcpMibStatusEntry = &pComponent->ipcpMibStatusEntry;    ipcpMibStatusEntry->ipcpOperStatusGet = ipcpOperStatusGet;    ipcpMibStatusEntry->ipcpLocalToRemoteCompressionProtocolGet = 		    ipcpLocalToRemoteCompressionProtocolGet;    ipcpMibStatusEntry->ipcpRemoteToLocalCompressionProtocolGet = 		    ipcpRemoteToLocalCompressionProtocolGet;    ipcpMibStatusEntry->ipcpRemoteMaxSlotIdGet = ipcpRemoteMaxSlotIdGet;    ipcpMibStatusEntry->ipcpLocalMaxSlotIdGet = ipcpLocalMaxSlotIdGet;    ipcpMibStatusEntry->ipcpConfigAdminStatusGet = ipcpConfigAdminStatusGet;    ipcpMibStatusEntry->ipcpConfigAdminStatusSet = ipcpConfigAdminStatusSet;    ipcpMibStatusEntry->ipcpConfigCompressionGet = ipcpConfigCompressionGet;    ipcpMibStatusEntry->ipcpConfigCompressionSet = ipcpConfigCompressionSet;    }/******************************************************************************** ipcpOperStatusGet -** This routine returns the state of the IPCP state machine.*/LOCAL ULONG ipcpOperStatusGet    (    PFW_PLUGIN_OBJ_STATE * state    )    {    IPCP_STACK_DATA * pStackData = (IPCP_STACK_DATA *)state->stackData;    return(pStackData->ipcp_mibs.pppIpOperStatus);    }/******************************************************************************** ipcpLocalToRemoteCompressionProtocolGet -*/LOCAL ULONG ipcpLocalToRemoteCompressionProtocolGet    (    PFW_PLUGIN_OBJ_STATE * state    )    {    IPCP_STACK_DATA * pStackData = (IPCP_STACK_DATA *)state->stackData;    return(pStackData->ipcp_mibs.pppIpLocalToRemoteCompressionProtocol);    }/******************************************************************************** ipcpRemoteToLocalCompressionProtocolGet -*/LOCAL ULONG ipcpRemoteToLocalCompressionProtocolGet    (    PFW_PLUGIN_OBJ_STATE * state    )    {    IPCP_STACK_DATA * pStackData = (IPCP_STACK_DATA *)state->stackData;    return(pStackData->ipcp_mibs.pppIpRemoteToLocalCompressionProtocol);    }/******************************************************************************** ipcpRemoteMaxSlotIdGet -*/LOCAL ULONG ipcpRemoteMaxSlotIdGet    (    PFW_PLUGIN_OBJ_STATE * state    )    {    IPCP_STACK_DATA * pStackData = (IPCP_STACK_DATA *)state->stackData;    return(pStackData->ipcp_mibs.pppIpRemoteMaxSlotId);    }/******************************************************************************** ipcpLocalMaxSlotIdGet -*/LOCAL ULONG ipcpLocalMaxSlotIdGet    (    PFW_PLUGIN_OBJ_STATE * state    )    {    IPCP_STACK_DATA * pStackData = (IPCP_STACK_DATA *)state->stackData;    return(pStackData->ipcp_mibs.pppIpLocalMaxSlotId);    }/******************************************************************************** ipcpConfigAdminStatusGet -*/LOCAL ULONG ipcpConfigAdminStatusGet    (    PFW_PLUGIN_OBJ_STATE * state    )    {    IPCP_STACK_DATA * pStackData = (IPCP_STACK_DATA *)state->stackData;    return(pStackData->ipcp_mibs.pppIpConfigAdminStatus);    }/******************************************************************************** ipcpConfigCompressionGet -*/LOCAL ULONG ipcpConfigCompressionGet    (    PFW_PLUGIN_OBJ_STATE * state    )    {    IPCP_STACK_DATA * pStackData = (IPCP_STACK_DATA *)state->stackData;    return(pStackData->ipcp_mibs.pppIpConfigCompression);    }/******************************************************************************** ipcpConfigAdminStatusSet -*/LOCAL STATUS ipcpConfigAdminStatusSet    (    PFW_PLUGIN_OBJ_STATE * state,    ULONG value    )    {    IPCP_STACK_DATA * pStackData = (IPCP_STACK_DATA *)state->stackData;    if (pfwPluginObjStateLock(state) != OK)	return ERROR;    if (pStackData->ipcp_mibs.pppIpConfigAdminStatus == value)	{	pfwPluginObjStateRelease(state);	return OK;	}    if (value == M2_pppIpConfigAdminStatus_close)        execute_ppp_state_machine (state, PPP_CLOSE_EVENT, NULL);    else if (value == M2_pppIpConfigAdminStatus_open)        execute_ppp_state_machine (state, PPP_OPEN_EVENT, NULL);    else	{	pfwPluginObjStateRelease(state);	return ERROR;	}    pStackData->ipcp_mibs.pppIpConfigAdminStatus = value;    pfwPluginObjStateRelease(state);    return (OK);    }/******************************************************************************** ipcpConfigCompressionSet -*/LOCAL STATUS ipcpConfigCompressionSet    (    PFW_PLUGIN_OBJ_STATE * state,    ULONG value    )    {    STATUS 				 status;    NCP_STACK_DATA *     pNcpStackData  = (NCP_STACK_DATA *) state->stackData;    IPCP_STACK_DATA *    pStackData     = (IPCP_STACK_DATA *) state->stackData;    IPCP_CONFIG_OPTION * ipcpOption     = NULL;    OPTION_LIST_ENTRY *  listOption     = NULL;	PPP_IPCP_COMPONENT*  pComponentData = NULL;	PFW_OBJ	*            pfw            = NULL;	char 				 partialString [256];	bzero (partialString, sizeof (partialString));	if (state == NULL)		return ERROR;	if ((pfw = pfwStackObjPfwGet (state->stackObj)) == NULL)		return ERROR;	pComponentData = (PPP_IPCP_COMPONENT *) pfwPluginObjGet (pfw, "PPP_IPCP");	if (pComponentData == NULL)		return ERROR;    ipcpOption = &pComponentData->option[IP_COMPRESSION_OPTION_TYPE];		if (ipcpOption == NULL)		return ERROR;    if (pfwPluginObjStateLock(state) != OK)	return ERROR;    if (pStackData->ipcp_mibs.pppIpConfigCompression == value)	{	pfwPluginObjStateRelease(state);	return OK;	}	    if (value == M2_pppIpConfigCompression_none)	{	if ((listOption = 		find_matching_option(&pNcpStackData->option_lists.configured,				    IP_COMPRESSION_OPTION_TYPE)) != NULL)	    {	    delete_entry_from_list((LINK *)&pNcpStackData->option_lists.configured,						(LINK *) listOption);	    free_ppp_option_list_entry (listOption);	    /* free tx_accepted list to restart from configured options */	    free_ppp_tx_accepted_option_list(				    &pNcpStackData->option_lists.tx_accepted);	    }	}    else if (value == M2_pppIpConfigCompression_vj_tcp)	{	/* free tx_accepted list to allow fresh start from configured options */	free_ppp_tx_accepted_option_list(&pNcpStackData->option_lists.tx_accepted);    bzero(partialString,256);	sprintf(partialString,"Local:Negotiation Required,Not Negotiable:002D0F01");	if ((status=generate_option_list_entry(pfw,&pNcpStackData->option_lists,					    partialString,					    ipcpOption->name,					    ipcpOption->optionType,"IPCP",					    ipcpOption->optionTypeString))!= OK)	    {	    pfwPluginObjStateRelease(state);	    return ERROR;	    }	}    else	{	pfwPluginObjStateRelease(state);	return ERROR;	}    pStackData->ipcp_mibs.pppIpConfigCompression = value;    pfwPluginObjStateRelease(state);    return (OK);    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -