📄 zanportpropertymib.c
字号:
/* zanPortPropertyMib.c - IDB+ Module source for zanPortPropertyMib.mi2. */
/* Copyright 2001 Wind River, Inc. */
#include "copyright_wrs.h"
/*
modification history
--------------------
xxx,10Jul01,idb Created by IDBGEN. Ver 2.27
%%BeginUserCode zanPortPropertyMib_Modifications
%%EndUserCode zanPortPropertyMib_Modifications
*/
/*
DESCRIPTION
This module defines the IDB+ structures and IDB+ Object handler routines to
access the IDB+ objects defined in zanPortPropertyMib.mi2.
INCLUDE FILES: zanPortPropertyMib.h
*/
/* Includes */
#include "tmsTypes.h"
#include "idbLib.h"
#include "zanPortPropertyMib.h"
/* %%BeginUserCode zanPortPropertyMib_IncludeFiles */
#include "nvmLib.h"
#include <ZanPortProperty.h>
/* %%EndUserCode zanPortPropertyMib_IncludeFiles */
/* Defines */
/* %%BeginUserCode zanPortPropertyMib_Defines */
/* %%EndUserCode zanPortPropertyMib_Defines */
/* Globals */
/* %%BeginUserCode zanPortPropertyMib_Globals */
extern zanPortPropertyRoot_t g_zanPortProperty; /*wanghn 20030710 add*/
/* %%EndUserCode zanPortPropertyMib_Globals */
/* Locals */
LOCAL char * moduleName = "zanPortPropertyMib";
/* %%BeginUserCode zanPortPropertyMib_Locals */
/* %%EndUserCode zanPortPropertyMib_Locals */
/* Prototypes */
LOCAL STATUS zanPortPropertyMibScalarHandler ( idbRequest_t request, idb_t * idb );
LOCAL STATUS zanPropertyPortVlanEntryTableHandler ( idbRequest_t request, idb_t * idb );
/* %%BeginUserCode zanPortPropertyMib_Prototypes */
/* %%EndUserCode zanPortPropertyMib_Prototypes */
/****************************************************************************
* IDB+ Module Object Descriptors
*/
LOCAL idbObjDesc_t zanPropertyPortVlanEntry_objDesc[] = {
{ zanPropertyPortVlanPort, 1, 4, /* localId=0 1.3.6.1.4.1.10293.1.1.2.23.1.1.1.1 */
{ 0, 0 }, IDB_INTEGER, IDB_NOT_ACCESSIBLE,
(IDB_VALID|IDB_INDEX), zanPropertyPortVlanEntryTableHandler,
(char *)0, "zanPortPropertyMib:zanPropertyPortVlanPort" },
{ zanPropertyPortVlanVlan, 2, 4, /* localId=1 1.3.6.1.4.1.10293.1.1.2.23.1.1.1.2 */
{ 0, 0 }, IDB_INTEGER, IDB_NOT_ACCESSIBLE,
(IDB_VALID|IDB_INDEX), zanPropertyPortVlanEntryTableHandler,
(char *)0, "zanPortPropertyMib:zanPropertyPortVlanVlan" },
{ zanPropertyPortVlanType, 3, 4, /* localId=2 1.3.6.1.4.1.10293.1.1.2.23.1.1.1.3 */
{ 0, 0 }, IDB_INTEGER, (IDB_READ|IDB_WRITE),
(IDB_VALID), zanPropertyPortVlanEntryTableHandler,
(char *)0, "zanPortPropertyMib:zanPropertyPortVlanType" },
{ zanPropertyPortVlanRowStatus, 4, 4, /* localId=3 1.3.6.1.4.1.10293.1.1.2.23.1.1.1.4 */
{ 1, 6 }, IDB_RowStatus, (IDB_READ|IDB_WRITE),
(IDB_VALID), zanPropertyPortVlanEntryTableHandler,
(char *)0, "zanPortPropertyMib:zanPropertyPortVlanRowStatus" },
{ 0 }
};
/*****************************************************************************
* IDB+ Module OID Table
*
* The OID list below (e.g.,{1,3,6,1, ...}) is the OID prefix minus the
* last sub-identifier. The last sub-identifier is found in the
* object descriptor idbObjDesc_t structure.
*/
LOCAL idbOidTable_t oidTable[] = {
/* 0: Table Object -- zanPropertyPortVlanEntry */
{ IDB_SNMP_STRUCT, {1,3,6,1,4,1,10293,1,1,2,23,1,1,1}, 15, /*lint !e785 */
2, 2, { "zanPortPropertyMib:zanPropertyPortVlanPort", "zanPortPropertyMib:zanPropertyPortVlanVlan" }, /*lint !e785 */
zanPropertyPortVlanEntry_objDesc },
{ IDB_TERMINATOR }
};
/*****************************************************************************
* IDB+ Module Translate Table
*/
LOCAL idbXlateTable_t xlateTable[] = {
{ &oidTable[ 0], &zanPropertyPortVlanEntry_objDesc[0] },
{ &oidTable[ 0], &zanPropertyPortVlanEntry_objDesc[1] },
{ &oidTable[ 0], &zanPropertyPortVlanEntry_objDesc[2] },
{ &oidTable[ 0], &zanPropertyPortVlanEntry_objDesc[3] },
{ 0 }
};
/******************************************************************************
* User Local Functions.
*/
/* %%BeginUserCode zanPortPropertyMib_UserFunctions */
LOCAL STATUS zanPortPropertyMibNvmInit()
{
STATUS rc;
nvmMod_t * pMod;
rc = OK;
pMod = NULL;
/* **************** Durable objects **************** */
rc = nvmModuleCreate( moduleName, NVM_DURABLE, &pMod );
return rc;
}
STATUS portPropertyNvmObjUpdate
(
char * obj,
ulong_t * idx,
ulong_t idxLen,
char * val,
ulong_t valLen,
BOOL update
)
{
STATUS rc = OK;
LOCAL nvmMod_t * mod = NULL;
if ( mod == NULL )
{
if (nvmModuleIdGet( moduleName, NVM_DURABLE, &mod ) == ERROR)
return ERROR;
}
if (nvmObjectCreate (mod, obj, idx, idxLen, val, valLen) == ERROR)
{
if ( errnoGet() == S_nvmLib_ObjExists)
{
/* object already created */
if (update == TRUE)
rc = nvmObjectUpdate (mod, obj, idx, idxLen, val, valLen);
}
else
rc = ERROR;
}
/* else object did not exist; nvm object creation successful */
return rc;
}
STATUS portPropertyNvmObjDelete
(
char * obj,
ulong_t * idx,
ulong_t idxLen
)
{
LOCAL nvmMod_t * mod = NULL;
if ( mod == NULL )
{
if (nvmModuleIdGet( moduleName, NVM_DURABLE, &mod ) == ERROR)
return ERROR;
}
return nvmObjectDelete (mod, obj, idx, idxLen);
}
int portPropertyCompare(void *pNode, GENERIC_ARGUMENT key)
{
zanPortProperty_t *pPropertyNode = (zanPortProperty_t *)pNode;
if (key.u < pPropertyNode->Key)
return -1;
else if (key.u > pPropertyNode->Key)
return 1;
else
return 0;
}
STATUS addPortVlanType(u_long Vlan, u_long Port, zanPortProperty_t **propertyNode)
{
GENERIC_ARGUMENT key;
zanPortProperty_t *pPropertyNode = NULL;
STATUS rc;
pPropertyNode = (zanPortProperty_t *)calloc(1, sizeof(zanPortProperty_t));
if (pPropertyNode == NULL)
return ERROR;
bzero((char *)pPropertyNode, sizeof(zanPortProperty_t));
key.u = (Port << 16) | (Vlan & 0xfff);
rc = avlInsert(&(g_zanPortProperty.pPortProperty), (void *)pPropertyNode, key, portPropertyCompare);
if (rc == OK)
{
*propertyNode = pPropertyNode;
pPropertyNode->Key = key.u;
return OK;
}
else
{
return ERROR;
}
}
STATUS delPortVlanType(u_long Vlan, u_long Port, zanPortProperty_t **propertyNode)
{
zanPortProperty_t *pPropertyNode = NULL;
GENERIC_ARGUMENT key;
key.u = (Port << 16) | (Vlan & 0xfff);
pPropertyNode = (zanPortProperty_t *)(avlDelete(&(g_zanPortProperty.pPortProperty), key, portPropertyCompare));
*propertyNode = pPropertyNode;
return (pPropertyNode == NULL) ? ERROR : OK;
}
STATUS findPortVlanType(u_long Vlan, u_long Port, zanPortProperty_t **propertyNode)
{
zanPortProperty_t *pPropertyNode = NULL;
GENERIC_ARGUMENT key;
if (g_zanPortProperty.pPortProperty == NULL)
{
*propertyNode = NULL;
return ERROR;
}
key.u = (Port << 16) | (Vlan & 0xfff);
pPropertyNode = (zanPortProperty_t *)avlSearch(g_zanPortProperty.pPortProperty, key, portPropertyCompare);
*propertyNode = pPropertyNode;
/*semGive(gRadiusAuthUsrNodeRoot.semID);*/
return (pPropertyNode == NULL) ? ERROR : OK;
}
STATUS findNextPortVlanType(idb_t *pIdb, zanPortProperty_t **propertyNode)
{
zanPortProperty_t *pPropertyNode = NULL;
GENERIC_ARGUMENT key;
u_long Vlan,Port;
STATUS rc = OK;
switch (pIdb->indexSubIdCount)
{
case 2:
Port = pIdb->pIndex[0];
Vlan = pIdb->pIndex[1];
break;
case 1:
Port = pIdb->pIndex[0];
Vlan =0;
break;
case 0:
Port = 0;
Vlan = 0;
break;
default:
return ERROR;
}
if (g_zanPortProperty.pPortProperty == NULL)
{
*propertyNode = NULL;
return ERROR;
}
if (pIdb->indexSubIdCount == 0)
{
pPropertyNode = (zanPortProperty_t *)avlMinimumGet(g_zanPortProperty.pPortProperty);
if (pPropertyNode == NULL)
{
rc = idbErrorNoNextInstance();
*propertyNode = NULL;
return ERROR;
}
pIdb->pIndex[0] = (pPropertyNode->Key & 0xffff0000) >> 16;
pIdb->pIndex[1] = (pPropertyNode->Key & 0xfff);
pIdb->indexSubIdCount = 2;
*propertyNode = pPropertyNode;
return OK;
}
else
{
key.u = (Port << 16) | (Vlan & 0xfff);
pPropertyNode = (zanPortProperty_t *)avlSuccessorGet(g_zanPortProperty.pPortProperty, key, portPropertyCompare);
if (pPropertyNode == NULL)
{
rc = idbErrorNoNextInstance();
*propertyNode = NULL;
return ERROR;
}
pIdb->pIndex[0] = (pPropertyNode->Key & 0xffff0000) >> 16;
pIdb->pIndex[1] = (pPropertyNode->Key & 0xfff);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -