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

📄 zanportpropertymib.c

📁 dot1x认证源码,包括dot1x数据包的收发,认证的配置,MIB的设计等
💻 C
📖 第 1 页 / 共 2 页
字号:
/* 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 + -