📄 ipcpinterfaces.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 + -