Creating a Subagent Using the eSNMP API
3.3 Creating a MIB Source File
typedef struct _chess_type {
OID
ches;
int
chessMaxGames;
int
chessNumGames;
char chessProductID_mark;
char chessMaxGames_mark;
char chessNumGames_mark;
} chess_type;
Although MIB group structures are provided for your use, you are not required to
use them. You can use the structure that works best with your method routines.
5. Method Routine Prototypes Section
The fifth section of the subtree_TBL.H file describes the method routine
prototypes. Each MIB group within the subtree has a method routine prototype
defined. A MIB group is a collection of MIB variables that are leaf nodes and that
share a common parent node.
There is always a function prototype for the method routine that handles the
Get
,
GetNext
, and
GetBulk
operations. If the group contains any writable variables,
there is also a function prototype for the method routine that handles
Set
operations. Pointers to these routines appear in the subtree’s object table which
is initialized in the subtree_TBL.C module. You must write method routines for
each prototype that is defined, as follows:
extern int mib-group get( METHOD *method );
extern int mib-group set( METHOD *method );
For example:
extern int chess_get( METHOD *method );
extern int chess_set( METHOD *method );
3.3.2.4 The subtree_TBL.C Output Files
The subtree_TBL.C file file contains the following sections:
1.
An array of integers representing the OIDs for each MIB variable
2.
An array of OBJECT structures
3.
An initialized SUBTREE structure
4.
Routines for allocating and freeing the
mib_group_type
The following sections describe each section of the subtree_TBL.C file.
1. Array of Integers Section
The first section of the subtree_TBL.C file is an array of integers used to represent
the OID of each MIB variable in the subtree. For example:
static unsigned int elems[] = {
1, 3, 6, 1, 4, 1, 36, 2, 15, 2, 99,
/* chess */
1, 3, 6, 1, 4, 1, 36, 2, 15, 2, 99, 1, 0, /* chessProductID */
. . .
1, 3, 6, 1, 4, 1, 36, 2, 15, 2, 99, 5, 1, 4, 0, /* moveStatus */
};
The first line represents the root of the tree; the other lines represent specific
variables. The latter groups are all terminated by a zero, a programming
convenience in internal implementations of API routines.
Creating a Subagent Using the eSNMP API 3–9