Files
vxWorks/h/wrn/ospfv3/ospfv3MapiHelper.h
2025-08-20 18:25:46 +08:00

771 lines
34 KiB
C

/* ospfv3MapiHelper.h - header file for OSPFv3-MIB Helper Module */
/* Copyright 2004 Wind River Systems, Inc. */
#include "copyright_wrs.h"
/*
* Modification history
* --------------------
01f,27oct04,xli add ospf multicast extension struct
01e,25jun04,xli change the commits for oid enum
01d,30may03,xli change the ospfv3MulticastExtension data type from
integer to char*
01c,29may03,dsk included Xinzhi's changes from integration with Xinzhi
01b,10jan03,xli Add OSPFv3 specific enum value, data structures
and method routines
01a,16nov02,xli Initial file creation.
*/
/*
DESCRIPTION:
This file defines the draft-ietf-ospf-ospfv3-mib-05 MIB specific
Manamgenet Interface Local ID enumerations, the MIB object enumerations,
the MIB object sizes and some MIB API helper function prototypes.
*/
#ifndef __INCospfv3MapiHelper_h
#define __INCospfv3MapiHelper_h
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/***********************************************************************
* Management Interface draft-ietf-ospf-ospfv3-mib-05 Definitions
*/
/* OSPFv3 Version Number */
#define OSPFV3_VERSION 3
/* OSPFv3 Area Backbone, ospfv3AreaId = 0.0.0.0 */
#define OSPFV3_BACKBONE_AREA 00000000L
#define MIN_OSPFV3_EXT_LSDB_LIMIT -1L
#define MAX_OSPFV3_EXT_LSDB_LIMIT 2147483647L
#define MAX_OSPFV3_EXIT_OVERFLOW_INTERVAL 2147483647L
#define MAX_OSPFV3_PRIORITY 255L
#define MAX_OSPFV3_POLL_INTERVAL 2147483647L
#define MAX_OSPFV3_AGE 3600L
#define MIN_OSPFV3_HELLO_INTERVAL 1L
#define MAX_OSPFV3_HELLO_INTERVAL 65535L
#define MAX_OSPFV3_DEAD_INTERVAL 2147483647L
#define MAX_EXTERNAL_LSDB_SIZE 36L
/* draft-ietf-ospf-ospfv3-mib-05 MIB default value */
#define DEFVAL_mApiOspfv3ExtAreaLsdbLimit -1L
#define DEFVAL_mApiOspfv3ExitOverflowInterval 0
#define DEFVAL_mApiOspfv3ImportAsExtern 1
#define DEFVAL_mApiOspfv3AreaSummary 1
#define DEFVAL_mApiOspfv3AreaNssaTranslatorRole 2
#define DEFVAL_mApiOspfv3AreaNssaTranslatorStabilityInterval 40
#define DEFVAL_mApiOspfv3IfAreaId 00000000L
#define DEFVAL_mApiOspfv3IfAdminStat 1
#define DEFVAL_mApiOspfv3IfRtrPriority 1
#define DEFVAL_mApiOspfv3IfTransitDelay 1
#define DEFVAL_mApiOspfv3IfRetransInterval 5
#define DEFVAL_mApiOspfv3IfHelloInterval 10
#define DEFVAL_mApiOspfv3IfRtrDeadInterval 40
#define DEFVAL_mApiOspfv3IfPollInterval 120
#define DEFVAL_mApiOspfv3IfMulticastForwarding 1
#define DEFVAL_mApiOspfv3IfDemand 2
#define DEFVAL_mApiOspfv3VirtIfTransitDelay 1
#define DEFVAL_mApiOspfv3VirtIfRetransInterval 5
#define DEFVAL_mApiOspfv3VirtIfHelloInterval 10
#define DEFVAL_mApiOspfv3VirtIfHelloInterval 10
#define DEFVAL_mApiOspfv3VirtIfRtrDeadInterval 60
#define DEFVAL_mApiOspfv3NbmaNbrPriority 1
#define DEFVAL_mApiOspfv3NbmaNbaStorageType 3
#define DEFVAL_mApiHostNetMask 0xFFFFFFFF
/* WindNet OSPFv3 default value */
#define DEFVAL_mApiOspfv3IfType EmApiOspfv3IfType_broadcast
/* the following defines provides the number of sub-identifier
*(the instance length) of each table in draft-ietf-ospf-ospfv3-mib-05 MIB
*/
#define OSPFV3_AREA_INSTANCE_LEN 4
#define OSPFV3_AS_LSDB_INSTANCE_LEN 9
#define OSPFV3_AREA_LSDB_INSTANCE_LEN 13
#define OSPFV3_LINK_LSDB_INSTANCE_LEN 10
#define OSPFV3_HOST_INSTANCE_LEN 17
#define OSPFV3_INTF_INSTANCE_LEN 1
#define OSPFV3_VIRT_INTF_INSTANCE_LEN 8
#define OSPFV3_NBR_INSTANCE_LEN 5
#define OSPFV3_NBMA_NBR_INSTANCE_LEN 18
#define OSPFV3_VIRT_NBR_INSTANCE_LEN 8
#define OSPFV3_AREA_AGGREGATE_INSTANCE_LEN 23
/*************************************************************************
* Management Interface 1-based local ID enumerations for
* draft-ietf-ospf-ospfv3-mib-05 MIB.
*/
typedef enum {
mApiOspfv3RouterId = 1,
mApiOspfv3AdminStat,
mApiOspfv3VersionNumber,
mApiOspfv3AreaBdrRtrStatus,
mApiOspfv3ASBdrRtrStatus,
mApiOspfv3AsScopeLsaCount,
mApiOspfv3AsScopeLsaCksumSum,
mApiOspfv3OriginateNewLsas,
mApiOspfv3RxNewLsas,
mApiOspfv3ExtAreaLsdbLimit,
mApiOspfv3MulticastExtensions,
mApiOspfv3ExitOverflowInterval,
mApiOspfv3DemandExtensions,
mApiOspfv3TrafficEngineeringSupport,
mApiOspfv3AreaId, /* mApiOspfv3_t enumeration value = 15 */
mApiOspfv3ImportAsExtern,
mApiOspfv3SpfRuns,
mApiOspfv3AreaBdrRtrCount,
mApiOspfv3AsBdrRtrCount,
mApiOspfv3AreaScopeLsaCount,
mApiOspfv3AreaScopeLsaCksumSum,
mApiOspfv3AreaSummary,
mApiOspfv3AreaStatus,
mApiOspfv3StubMetric,
mApiOspfv3AreaNssaTranslatorRole,
mApiOspfv3AreaNssaTranslatorState,
mApiOspfv3AreaNssaTranslatorStabilityInterval,
mApiOspfv3AreaNssaTranslatorEvents,
mApiOspfv3AsLsdbType, /* mApiOspfv3_t enumeration value = 29 */
mApiOspfv3AsLsdbRouterId,
mApiOspfv3AsLsdbLsid,
mApiOspfv3AsLsdbSequence,
mApiOspfv3AsLsdbAge,
mApiOspfv3AsLsdbChecksum,
mApiOspfv3AsLsdbAdvertisement,
mApiOspfv3AreaLsdbAreaId, /* mApiOspfv3_t enumeration value = 36 */
mApiOspfv3AreaLsdbType,
mApiOspfv3AreaLsdbRouterId,
mApiOspfv3AreaLsdbLsid,
mApiOspfv3AreaLsdbSequence,
mApiOspfv3AreaLsdbAge,
mApiOspfv3AreaLsdbChecksum,
mApiOspfv3AreaLsdbAdvertisement,
mApiOspfv3LinkLsdbIfIndex, /* mApiOspfv3_t enumeration value = 44 */
mApiOspfv3LinkLsdbType,
mApiOspfv3LinkLsdbRouterId,
mApiOspfv3LinkLsdbLsid,
mApiOspfv3LinkLsdbSequence,
mApiOspfv3LinkLsdbAge,
mApiOspfv3LinkLsdbChecksum,
mApiOspfv3LinkLsdbAdvertisement,
mApiOspfv3HostAddressType, /* mApiOspfv3_t enumeration value = 52 */
mApiOspfv3HostAddress,
mApiOspfv3HostMetric,
mApiOspfv3HostStatus,
mApiOspfv3HostAreaID,
mApiOspfv3IfIndex, /* mApiOspfv3_t enumeration value = 57 */
mApiOspfv3IfAreaId,
mApiOspfv3IfType,
mApiOspfv3IfAdminStat,
mApiOspfv3IfRtrPriority,
mApiOspfv3IfTransitDelay,
mApiOspfv3IfRetransInterval,
mApiOspfv3IfHelloInterval,
mApiOspfv3IfRtrDeadInterval,
mApiOspfv3IfPollInterval,
mApiOspfv3IfState,
mApiOspfv3IfDesignatedRouter,
mApiOspfv3IfBackupDesignatedRouter,
mApiOspfv3IfEvents,
mApiOspfv3IfStatus,
mApiOspfv3IfMulticastForwarding,
mApiOspfv3IfDemand,
mApiOspfv3IfMetricValue,
mApiOspfv3IfLinkScopeLsaCount,
mApiOspfv3IfLinkLsaCksumSum,
mApiOspfv3IfInstId,
mApiOspfv3VirtIfAreaId, /* mApiOspfv3_t enumeration value = 78 */
mApiOspfv3VirtIfNeighbor,
mApiOspfv3VirtIfIndex,
mApiOspfv3VirtIfTransitDelay,
mApiOspfv3VirtIfRetransInterval,
mApiOspfv3VirtIfHelloInterval,
mApiOspfv3VirtIfRtrDeadInterval,
mApiOspfv3VirtIfState,
mApiOspfv3VirtIfEvents,
mApiOspfv3VirtIfStatus,
mApiOspfv3VirtIfLinkScopeLsaCount,
mApiOspfv3VirtIfLinkLsaCksumSum,
mApiOspfv3NbrIfIndex, /* mApiOspfv3_t enumeration value = 90 */
mApiOspfv3NbrRtrId,
mApiOspfv3NbrAddressType,
mApiOspfv3NbrAddress,
mApiOspfv3NbrOptions,
mApiOspfv3NbrPriority,
mApiOspfv3NbrState,
mApiOspfv3NbrEvents,
mApiOspfv3NbrLsRetransQLen,
mApiOspfv3NbrHelloSuppressed,
mApiOspfv3NbrIfId,
mApiOspfv3NbmaNbrIfIndex, /* mApiOspfv3_t enumeration value = 101 */
mApiOspfv3NbmaNbrAddressType,
mApiOspfv3NbmaNbrAddress,
mApiOspfv3NbmaNbrPriority,
mApiOspfv3NbmaNbrRtrId,
mApiOspfv3NbmaNbrState,
mApiOspfv3NbmaNbrStorageType,
mApiOspfv3NbmaNbrStatus,
mApiOspfv3VirtNbrArea, /* mApiOspfv3_t enumeration value = 109 */
mApiOspfv3VirtNbrRtrId,
mApiOspfv3VirtNbrIfIndex,
mApiOspfv3VirtNbrAddressType,
mApiOspfv3VirtNbrAddress,
mApiOspfv3VirtNbrOptions,
mApiOspfv3VirtNbrState,
mApiOspfv3VirtNbrEvents,
mApiOspfv3VirtNbrLsRetransQLen,
mApiOspfv3VirtNbrHelloSuppressed,
mApiOspfv3VirtNbrIfId,
mApiOspfv3AreaAggregateAreaID, /* mApiOspfv3_t enumeration value = 120 */
mApiOspfv3AreaAggregateAreaLsdbType,
mApiOspfv3AreaAggregatePrefixType,
mApiOspfv3AreaAggregatePrefix,
mApiOspfv3AreaAggregatePrefixLength,
mApiOspfv3AreaAggregateStatus,
mApiOspfv3AreaAggregateEffect
} mApiOspfv3_t;
/****************************************************************************
* Manamgenet Interface draft-ietf-ospf-ospfv3-mib-05 MIB object enumerations
*/
typedef enum {
unknown = 0,
ipv4 = 1,
ipv6 = 2,
ipv4z = 3,
ipv6z = 4,
dns = 16
} inetAddressType_t;
typedef enum {
EmApiOspfv3_true = 1,
EmApiOspfv3_false = 2
} mApiOspfv3TrueValue_t;
typedef enum {
EmApiOspfv3_enabled = 1,
EmApiOspfv3_disabled = 2
} mApiOspfv3Status_t;
/* Row Status enumerations. This is the same for all tables with the
* rowStatus object
*/
typedef enum {
EmApiOspfv3RowStatus_active = 1,
EmApiOspfv3RowStatus_notInService = 2,
EmApiOspfv3RowStatus_notReady = 3,
EmApiOspfv3RowStatus_createAndGo = 4,
EmApiOspfv3RowStatus_createAndWait = 5,
EmApiOspfv3RowStatus_destroy = 6
} mApiOspfv3RowStatus_t;
typedef enum {
EmApiOspfv3ImportAsExtern_importExternal = 1,
EmApiOspfv3ImportAsExtern_importNoExternal = 2,
EmApiOspfv3ImportAsExtern_importNssa = 3
} mApiOspfv3AreaImportAsType_t;
typedef enum {
EmApiOspfv3AreaSummary_noAreaSummary = 1,
EmApiOspfv3AreaSummary_sendAreaSummary = 2
} mApiOspfv3AreaSummary_t;
typedef enum {
EmApiOspfv3AreaNssaTranslatorState_enable = 1,
EmApiOspfv3AreaNssaTranslatorState_elected = 2,
EmApiOspfv3AreaNssaTranslatorState_disable = 3
} EmApiOspfv3AreaNssaTranslatorState_t;
typedef enum {
EmApiOspfv3LinkLsdbType_linkLsa = 8,
EmApiOspfv3AreaLsdbType_routerLsa = 8193,
EmApiOspfv3AreaLsdbType_networkLsa = 8194,
EmApiOspfv3AreaLsdbType_interAreaPrefixLsa = 8195,
EmApiOspfv3AreaLsdbType_interAreaRouterLsa = 8196,
EmApiOspfv3AreaLsdbType_groupMembershipLsa = 8198,
EmApiOspfv3AreaLsdbType_nssaExternalLsa = 8199,
EmApiOspfv3AreaLsdbType_intraAreaPrefixLsa = 8201,
EmApiOspfv3AsLsdbType_asExternalLink = 16389
} mApiOspfv3LsdbType_t;
typedef enum {
EmApiOspfv3IfType_broadcast = 1,
EmApiOspfv3IfType_nbma = 2,
EmApiOspfv3IfType_pointToPoint = 3,
EmApiOspfv3IfType_pointToMultipoint = 5
} mApiOspfv3IfType_t;
typedef enum {
EmApiOspfv3IfState_down = 1,
EmApiOspfv3IfState_loopback = 2,
EmApiOspfv3IfState_waiting = 3,
EmApiOspfv3IfState_pointToPoint = 4,
EmApiOspfv3IfState_designatedRouter = 5,
EmApiOspfv3IfState_backupDesignatedRouter = 6,
EmApiOspfv3IfState_otherDesignatedRouter = 7
} mApiOspfv3IfState_t;
typedef enum {
EmApiOspfv3IfMulticastForwarding_blocked = 1,
EmApiOspfv3IfMulticastForwarding_multicast = 2,
EmApiOspfv3IfMulticastForwarding_unicast = 3
} mApiOspfv3IfMcastType_t;
typedef enum {
EmApiOspfv3VirtIfState_down = 1,
EmApiOspfv3VirtIfState_pointToPoint = 4
} mApiOspfv3VirtIfState_t;
typedef enum {
EmApiOspfv3NbrState_down = 1,
EmApiOspfv3NbrState_attempt = 2,
EmApiOspfv3NbrState_init = 3,
EmApiOspfv3NbrState_twoWay = 4,
EmApiOspfv3NbrState_exchangeStart = 5,
EmApiOspfv3NbrState_exchange = 6,
EmApiOspfv3NbrState_loading = 7,
EmApiOspfv3NbrState_full = 8
} mApiOspfv3NbrState_t;
typedef enum {
EmApiOspfv3NbrStorageType_other = 1,
EmApiOspfv3NbrStorageType_volatile = 2,
EmApiOspfv3NbrStorageType_nonVolatile = 3,
EmApiOspfv3NbrStorageType_permanent = 4,
EmApiOspfv3NbrStorageType_readOnly = 5
} mApiOspfv3NbrStorageType_t;
typedef enum {
EmApiOspfv3AreaAggregateEffect_advertiseMatching = 1,
EmApiOspfv3AreaAggregateEffect_doNotAdvertiseMatching = 2
} mApiOspfv3AreaAggregateEffect_t;
/* mApiOspfv3ClientType_t enumeration type is used to identify the
* type of client that attaches to the mApiOspfv3Area_t or mApiOspfv3If_t.
* It is used when creating an mApiOspfv3Client_t node
*/
typedef enum {
EmApiOspfv3ClientType_intf = 1, /* client is physical interface */
EmApiOspfv3ClientType_vintf = 2, /* client is virtual interface */
EmApiOspfv3ClientType_host = 3, /* client is host interface */
EmApiOspfv3ClientType_nbr = 4, /* client is neighbor */
EmApiOspfv3ClientType_ag /* client is area aggregation */
} mApiOspfv3ClientType_t;
/***********************************************************************
* Mamagement Interface draft-ietf-ospf-ospfv3-mib-05 Data Structure.
*/
/* mApiOspfv3Client_t is used by mApiOspfv3Area_t to track instances of
* interface, virtual interface and host interface that are attached to
* this area. It is also used by mApiOspfv3If_t to track instances of
* neighbor that are associated with the interface. The <clientOldState>
* mApiOspfv3RowStatus_t enumeration type is only used by mApiOspfv3Area_t
* to remember the existing rowStatus of the clients before it forces the
* client to make the rowStatus state transition due to the rowStatus
* changes occur in the mApiOspfv3Area_t itself
*/
typedef struct mApiOspfv3Client
{
NODE node; /* linked list node */
void *pClient; /* pointer to client data structure */
int oldStatus; /* previous row stauts of the attached client */
mApiOspfv3ClientType_t
clientType; /* the type of client */
} mApiOspfv3Client_t;
/* OSPFv3 General Group variables
*/
typedef struct mApiospfv3MulticastExtensions
{
ulong_t intraAreaMulticast:1;
ulong_t interAreaMulticast:1;
ulong_t interAsMulticast:1;
ulong_t unsued:5;
} mApiospfv3MulticastExtensions_t;
typedef struct mApiOspfv3GenGroup
{
ulong_t ospfv3RouterId; /* read-write */
mApiOspfv3Status_t ospfv3AdminStat; /* read-write */
ulong_t ospfv3VersionNumber; /* read-only */
mApiOspfv3TrueValue_t ospfv3AreaBdrRtrStatus; /* read-only */
mApiOspfv3TrueValue_t ospfv3ASBdrRtrStatus; /* read-write */
ulong_t ospfv3AsScopeLsaCount; /* read-only */
ulong_t ospfv3AsScopeLsaCksumSum; /* read-only */
ulong_t ospfv3OriginateNewLsas; /* read-only */
ulong_t ospfv3RxNewLsas; /* read-only */
long ospfv3ExtAreaLsdbLimit; /* read-write */
mApiospfv3MulticastExtensions_t
ospfv3MulticastExtensions; /* read-only */
ulong_t ospfv3ExitOverflowInterval; /* read-write */
ushort ospfv3MulticastExtensionsLen;
/* the following read-write objects are implemented as read-only */
mApiOspfv3TrueValue_t ospfv3DemandExtensions; /* read-only */
mApiOspfv3TrueValue_t ospfv3TrafficEngineeringSupport; /* read-only */
} mApiOspfv3GenGroup_t;
/* an instance of mApiOspfv3AreaClass_t object will always be created each time a new
* OSPFv3 Area is added to the Management Database.
*/
typedef struct mApiOspfv3Area
{
AVL_NODE node; /* AVL Tree node */
void *pSpfStub; /* pointer to the stub associate with this area */
LIST listIfAttached; /* Interface clients attached, unsorted */
LIST listAreaAggregate; /* Area Aggregate instances */
ulong_t defaultStubMetric; /* default stub metric */
ushort_t numActiveIf; /* number of active interface attached */
ushort_t numActiveVirtIf; /* number of active virtual interface attached */
ushort_t numActiveHost; /* number of active host interface attached */
ushort_t numIfAttached; /* number of interface instances attached */
ushort_t numVirtIfAttached; /* number of virtual interface instances attached */
ushort_t numHostAttached; /* number of host interface instances attached */
ushort_t numAgAttached; /* number of area aggregate instances attached */
rsAction_t createdAs; /* the method this row is created */
mApiOspfv3TrueValue_t isTransitArea;
/* TRUE if this is a transit area */
/* objects associate with the ospfv3AreaTable */
ulong_t ospfv3AreaId; /* index object */
ulong_t ospfv3ImportAsExtern; /* read-create */
ulong_t ospfv3SpfRuns; /* read-only */
ulong_t ospfv3AreaBdrRtrCount; /* read-only */
ulong_t ospfv3AsBdrRtrCount; /* read-only */
ulong_t ospfv3AreaScopeLsaCount; /* read-only */
ulong_t ospfv3AreaScopeLsaCksumSum; /* read-only */
mApiOspfv3AreaSummary_t ospfv3AreaSummary; /* read-create */
mApiOspfv3RowStatus_t ospfv3AreaStatus; /* read-create */
ulong_t ospfv3StubMetric; /* read-create */
ushort_t ospfv3AreaNssaTranslatorRole; /* read-create */
ushort_t ospfv3AreaNssaTranslatorState; /* read-only */
ulong_t ospfv3AreaNssaTranslatorStabilityInterval;
/* read-create */
ulong_t ospfv3AreaNssaTranslatorEvents; /* read-only */
} mApiOspfv3Area_t;
/* objects associate with the ospfv3AsLsdbTable */
typedef struct mApiOspfv3AsLsdb
{
AVL_NODE node; /* AVL Tree node */
mApiOspfv3LsdbType_t ospfv3AsLsdbType; /* index object */
ulong_t ospfv3AsLsdbRouterId; /* index object */
ulong_t ospfv3AsLsdbLsid; /* index object */
long ospfv3AsLsdbSequence; /* read-only */
ulong_t ospfv3AsLsdbAge; /* read-only */
ulong_t ospfv3AsLsdbChecksum; /* read-only */
char* ospfv3AsLsdbAdvertisement; /* read-only */
ushort_t asLsdbLen; /* advertisement length, not MIB object */
} mApiOspfv3AsLsdb_t;
/* objects associate with the ospfv3AreaLsdbTable */
typedef struct mApiOspfv3AreaLsdb
{
AVL_NODE node; /* AVL Tree node */
ulong_t ospfv3AreaLsdbAreaId; /* index object */
mApiOspfv3LsdbType_t ospfv3AreaLsdbType; /* index object */
ulong_t ospfv3AreaLsdbRouterId; /* index object */
ulong_t ospfv3AreaLsdbLsid; /* index object */
long ospfv3AreaLsdbSequence; /* read-only */
ulong_t ospfv3AreaLsdbAge; /* read-only */
ulong_t ospfv3AreaLsdbChecksum; /* read-only */
char* ospfv3AreaLsdbAdvertisement; /* read-only */
ushort_t ospfv3AreaLsdbLen; /* advertisement length, not MIB object */
} mApiOspfv3AreaLsdb_t;
/* objects associate with the ospfv3LinkLsdbTable */
typedef struct mApiOspfv3LinkLsdb
{
AVL_NODE node; /* AVL Tree node */
ushort_t ospfv3LinkLsdbIfIndex; /* index object */
mApiOspfv3LsdbType_t ospfv3LinkLsdbType; /* index object */
ulong_t ospfv3LinkLsdbRouterId; /* index object */
ulong_t ospfv3LinkLsdbLsid; /* index object */
long ospfv3LinkLsdbSequence; /* read-only */
ulong_t ospfv3LinkLsdbAge; /* read-only */
ulong_t ospfv3LinkLsdbChecksum; /* read-only */
char* ospfv3LinkLsdbAdvertisement;
/* read-only */
ushort_t ospfv3LinkLsdbLen; /* advertisement length, not MIB object */
} mApiOspfv3LinkLsdb_t;
/* objects associate with the ospfv3HostTable */
typedef struct mApiOspfv3Host
{
AVL_NODE node; /* AVL Tree node */
ulong_t defaultMtu; /* default mtu from in_ifaddr structure */
ulong_t defaultNetmask; /* default netmask from in_ifaddr structure */
ulong_t defaultMetric; /* default metric from in_ifaddr structure */
rsAction_t createdAs; /* the method this row is created */
void *pArea; /* area associated with this host */
inetAddressType_t ospfv3HostAddressType; /* index object */
struct in6_addr ospfv3HostAddress; /* index object */
ulong_t ospfv3HostMetric; /* read-create */
mApiOspfv3RowStatus_t ospfv3HostStatus; /* read-create */
ulong_t ospfv3HostAreaId; /* read-create */
} mApiOspfv3Host_t;
/* objects associate with the ospfv3IfTable */
typedef struct mApiOspfv3If
{
AVL_NODE node; /* AVL Tree node */
LIST listNbrAttached; /* neighbors attached to this interface, unsorted */
ushort_t numNbrAttached; /* number of neighbors attached to this interface */
LIST listNbmaNbrAttached; /* NBMA neighbors attached to this interface, unsorted */
ushort_t numNbmaNbrAttached; /* number of NBMA neighbors attached to this interface */
ulong_t defaultMtu; /* default mtu from in_ifaddr structure */
ulong_t defaultNetmask; /* default netmask from in_ifaddr structure */
ulong_t defaultMetric; /* default metric from in_ifaddr structure */
rsAction_t createdAs; /* the method this row is created */
void *pIfMetric; /* metric associate with this interface */
void *pArea; /* pointer to area this interface connects */
char sysIfName[IFNAMSIZ]; /* interface name, e.g. `en'' or ``lo'' */
ushort_t sysIfIndex; /* numeric abbreviation for this interface */
int sysIfFlags; /* interface flags */
ulong_t ospfv3IfIndex; /* index object */
ulong_t ospfv3IfAreaId; /* read-create */
mApiOspfv3IfType_t ospfv3IfType; /* read-create */
mApiOspfv3Status_t ospfv3IfAdminStat; /* read-create */
ulong_t ospfv3IfRtrPriority; /* read-create */
ulong_t ospfv3IfTransitDelay; /* read-create */
ulong_t ospfv3IfRetransInterval; /* read-create */
ulong_t ospfv3IfHelloInterval; /* read-create */
ulong_t ospfv3IfRtrDeadInterval; /* read-create */
ulong_t ospfv3IfPollInterval; /* read-create */
mApiOspfv3IfState_t ospfv3IfState; /* read-only */
ulong_t ospfv3IfDesignatedRouter; /* read-only */
ulong_t ospfv3IfBackupDesignatedRouter; /* read-only */
ulong_t ospfv3IfEvents; /* read-only */
mApiOspfv3RowStatus_t ospfv3IfStatus; /* read-create */
ulong_t ospfv3IfMetricValue; /* read-create */
ulong_t ospfv3IfLinkScopeLsaCount; /* read-only */
ulong_t ospfv3IfLinkLsaCksumSum; /* read-only */
ulong_t ospfv3IfInstId; /* read-create */
/* the following read-create objects are implemented as read-only */
mApiOspfv3IfMcastType_t ospfv3IfMulticastForwarding;
mApiOspfv3TrueValue_t ospfv3IfDemand;
} mApiOspfv3If_t;
/* objects associate with the ospfv3VirtIfTable */
typedef struct mApiOspfv3VirtIf
{
AVL_NODE node; /* AVL Tree node */
void *pArea; /* pointer to transit area */
rsAction_t createdAs; /* the method this row is created */
ulong_t ospfv3VirtIfAreaId; /* index object */
ulong_t ospfv3VirtIfNeighbor; /* index object */
ushort_t ospfv3VirtIfIndex; /* read-create */
ulong_t ospfv3VirtIfTransitDelay; /* read-create */
ulong_t ospfv3VirtIfRetransInterval; /* read-create */
ulong_t ospfv3VirtIfHelloInterval; /* read-create */
ulong_t ospfv3VirtIfRtrDeadInterval; /* read-create */
mApiOspfv3VirtIfState_t ospfv3VirtIfState; /* read-only */
ulong_t ospfv3VirtIfEvents; /* read-only */
mApiOspfv3RowStatus_t ospfv3VirtIfStatus; /* read-create */
ulong_t ospfv3VirtIfLinkScopeLsaCount; /* read-create */
ulong_t ospfv3VirtIfLinkLsaksumSum; /* read-only */
} mApiOspfv3VirtIf_t;
/* objects associate with the ospfv3NbrTable */
typedef struct mApiOspfv3Nbr
{
AVL_NODE node; /* AVL Tree node */
void *pIf; /* interface associated with */
ushort_t ospfv3NbrIfIndex; /* index object */
ulong_t ospfv3NbrRtrId; /* index object */
inetAddressType_t ospfv3NbrAddressType; /* read-only */
struct in6_addr ospfv3NbrAddress; /* read-only */
ulong_t ospfv3NbrOptions; /* read-only */
ulong_t ospfv3NbrPriority; /* read-create */
mApiOspfv3NbrState_t ospfv3NbrState; /* read-only */
ulong_t ospfv3NbrEvents; /* read-only */
ulong_t ospfv3NbrLsRetransQLen; /* read-only */
mApiOspfv3TrueValue_t ospfv3NbrHelloSuppressed; /* read-only */
ulong_t ospfv3NbrIfId; /* read-only */
} mApiOspfv3Nbr_t;
/* objects associate with the ospfv3NbmaNbrTable */
typedef struct mApiOspfv3NbmaNbr
{
AVL_NODE node; /* AVL Tree node */
void *pIf; /* interface associated with */
rsAction_t createdAs; /* the method this row is created */
ushort_t ospfv3NbmaNbrIfIndex; /* index object */
inetAddressType_t ospfv3NbmaNbrAddressType; /* index object */
struct in6_addr ospfv3NbmaNbrAddress; /* index object */
ulong_t ospfv3NbmaNbrPriority; /* read-create */
ulong_t ospfv3NbmaNbrRtrId; /* read-only */
mApiOspfv3NbrState_t ospfv3NbmaNbrState; /* read-only */
mApiOspfv3NbrStorageType_t ospfv3NbmaNbrStorageType; /* read-create */
mApiOspfv3RowStatus_t ospfv3NbmaNbrStatus; /* read-create */
} mApiOspfv3NbmaNbr_t;
/* objects associate with the ospfv3VirtNbrTable */
typedef struct mApiOspfv3VirtNbr
{
AVL_NODE node; /* AVL Tree node */
ulong_t ospfv3VirtNbrArea; /* index object */
ulong_t ospfv3VirtNbrRtrId; /* index object */
inetAddressType_t ospfv3VirtNbrAddressType; /* read-only */
struct in6_addr ospfv3VirtNbrAddress; /* read-only */
ulong_t ospfv3VirtNbrOptions; /* read-only */
mApiOspfv3NbrState_t ospfv3VirtNbrState; /* read-only */
ulong_t ospfv3VirtNbrEvents; /* read-only */
ulong_t ospfv3VirtNbrLsRetransQLen; /* read-only */
mApiOspfv3TrueValue_t ospfv3VirtNbrHelloSuppressed; /* read-only */
ushort_t ospfv3VirtNbrIfId; /* read-only */
} mApiOspfv3VirtNbr_t;
/* objects associate with the ospfv3AreaAggregateTable */
typedef struct mApiOspfv3AreaAggregate
{
AVL_NODE node; /* AVL Tree node */
void *pArea; /* area associated with */
rsAction_t createdAs; /* the method this row is created */
ulong_t ospfv3AreaAggregateAreaID; /* index object */
mApiOspfv3LsdbType_t ospfv3AreaAggregateAreaLsdbType; /* index object */
inetAddressType_t ospfv3AreaAggregatePrefixType; /* index object */
struct in6_addr ospfv3AreaAggregatePrefix; /* index object */
ulong_t ospfv3AreaAggregatePrefixLength; /* index object */
mApiOspfv3RowStatus_t ospfv3AreaAggregateStatus; /* read-create */
mApiOspfv3AreaAggregateEffect_t ospfv3AreaAggregateEffect; /* read-create */
} mApiOspfv3AreaAggregate_t;
/* function pointer requires by ospfv3_mApi_avlTreeWalk() routine */
typedef STATUS (* AVL_WALK_FUNC)(void *pNode, void *arg);
/***************************************************************************************
* Public Function Prototypes for Management Interface
*/
/* ospfv3GeneralGroup helper routines */
IMPORT STATUS ospfv3_mApi_globalParmGet(mApiOspfv3GenGroup_t *thisGenGroup,
mApiRequest_t *pRequest,
mApiObject_t *pObject);
IMPORT STATUS ospfv3_mApi_globalParmSet(mApiRequest_t *pRequest,
mApiObject_t *pObject,
mApiReqType_t reqType);
/* ospfv3AreaTable helper routines */
IMPORT STATUS ospfv3_mApi_areaHelperGet( void *pRow,
mApiRequest_t *pRequest,
mApiObject_t *pObject );
IMPORT STATUS ospfv3_mApi_areaHelperSet(mApiRequest_t *pRequest,
rsRequest_t rsReqType );
IMPORT void ospfv3_mApi_areaHelperCreate( mApiOspfv3Area_t *pStaticArea );
IMPORT STATUS ospfv3_mApi_areaHelperRegisterIf( mApiOspfv3If_t *pIf,
int oldStatus );
/* ospfv3AsLasbTable helper routine */
IMPORT STATUS ospfv3_mApi_as_lsdbHelperGet( void *pRow,
mApiRequest_t *pRequest,
mApiObject_t *pObject );
IMPORT STATUS ospfv3_mApi_area_lsdbHelperGet( void *pRow,
mApiRequest_t *pRequest,
mApiObject_t *pObject );
IMPORT STATUS ospfv3_mApi_link_lsdbHelperGet( void *pRow,
mApiRequest_t *pRequest,
mApiObject_t *pObject );
/* ospfv3IfTable helper routines */
IMPORT STATUS ospfv3_mApi_ifHelperGet( void *pRow,
mApiRequest_t *pRequest,
mApiObject_t *pObject );
IMPORT STATUS ospfv3_mApi_ifHelperSet(mApiRequest_t *pRequest,
rsRequest_t rsReqType );
IMPORT void ospfv3_mApi_ifHelperCreate( mApiOspfv3If_t *pStaticIf);
IMPORT void ospfv3_mApi_ifHelperDelete( ulong_t ospfv3IfIpAddr );
/* ospfv3NbrTable helper routines */
IMPORT STATUS ospfv3_mApi_nbrHelperGet( void *pRow,
mApiRequest_t *pRequest,
mApiObject_t *pObject );
IMPORT STATUS ospfv3_mApi_nbrHelperRegister( mApiOspfv3Nbr_t *pNbr, ulong_t ospfv3IfIndex);
IMPORT void ospfv3_mApi_nbrHelperDeregister( mApiOspfv3Nbr_t *pNbr, ulong_t ospfv3IfIndex );
/* common AVL compare routine */
IMPORT int ospfv3MapiOidCompare( int oidLength,
ulong_t *pOid1,
ulong_t *pOid2 );
int ospfv3Ipv6AddressCompare(struct in6_addr address1, struct in6_addr address2);
/* misc AVL routines */
IMPORT STATUS ospfv3_mApi_avlTreeWalk( AVL_TREE * pRoot,
AVL_WALK_FUNC ospfv3MapiTreeWalk,
void *arg );
/* draft-ietf-ospf-ospfv3-mib-05 specific helper initialization routine */
IMPORT STATUS ospfv3_mApi_configurationGet( void );
IMPORT void ospfv3_mApi_reset( void );
IMPORT void ospfv3_mApi_initGeneralGroup( BOOL resetAllToDefault );
IMPORT STATUS ospfv3_mApi_initRsLib(void);
IMPORT STATUS ospfv3_mApi_initAvlTree(void);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __INCospfv3MapiHelper_h */