Skip to content
Snippets Groups Projects
Commit 50b95529 authored by Michal Wasiak's avatar Michal Wasiak Committed by Adam Wujek
Browse files

snmp/bridge_mib: generate dot1dBasePortTable


Generate dot1dBasePortTable with a command:
mib2c -c mib2c.mfd.conf BRIDGE-MIB::dot1dBasePortTable

The data in this table is static, it does not need a cache.

Signed-off-by: default avatarMichal Wasiak <michal.wasiak@gmail.com>
parent e6582246
No related merge requests found
Showing
with 3305 additions and 0 deletions
########################################################################
##
## mib2c node setting for dot1dBasePort
##
## Remove the '##' comment delimeter to change settings
##
########################################################################
## Node declaration type? This is the C type to be used when
## declaring a variable to hold a value for this column. It
## is strongly recommended that you do not change this value.
## If you do, it is likely to break lots of generated code that
## you will have to fix.
##
## @eval $m2c_decl = long@
##
########################################################################
## Generate/use mapping functions? Useful if the MIB defines
## a different format or enumerations than you data store uses.
##
## @eval $m2c_node_skip_mapping = 1@
##
########################################################################
## Need a length for the value? Most OCTET-STRING based values will
## need a length, most other types will not. Do not change this one
## unless you know what you are doing! You will almost certainly need
## to fix lots of generated code if you do.
##
## @eval $m2c_node_needlength = 0@
##
########################################################################
## Skip get? Set this to 1 if you do not want to implement a value
## for this column.
##
## @eval $m2c_node_skip_get = 0@
##
########################################################################
##
## mib2c node setting for dot1dBasePortCircuit
##
## Remove the '##' comment delimeter to change settings
##
########################################################################
## Node declaration type? This is the C type to be used when
## declaring a variable to hold a value for this column. It
## is strongly recommended that you do not change this value.
## If you do, it is likely to break lots of generated code that
## you will have to fix.
##
## @eval $m2c_decl = oid@
##
########################################################################
## Generate/use mapping functions? Useful if the MIB defines
## a different format or enumerations than you data store uses.
##
## @eval $m2c_node_skip_mapping = 1@
##
########################################################################
## Need a length for the value? Most OCTET-STRING based values will
## need a length, most other types will not. Do not change this one
## unless you know what you are doing! You will almost certainly need
## to fix lots of generated code if you do.
##
## @eval $m2c_node_needlength = 1@
##
########################################################################
## Skip get? Set this to 1 if you do not want to implement a value
## for this column.
##
## @eval $m2c_node_skip_get = 0@
##
########################################################################
## Allow realloc when data size exceeds length? If your data
## store for this node is a pointer allocated with one of the
## alloc family functions, you can set this to 1 to use realloc
## when a new value length exceeds the old lenght. If you are
## using a fixed size buffer, this value should be 0.
##
## @eval $m2c_node_realloc = 0@
########################################################################
##
## mib2c node setting for dot1dBasePortDelayExceededDiscards
##
## Remove the '##' comment delimeter to change settings
##
########################################################################
## Node declaration type? This is the C type to be used when
## declaring a variable to hold a value for this column. It
## is strongly recommended that you do not change this value.
## If you do, it is likely to break lots of generated code that
## you will have to fix.
##
## @eval $m2c_decl = u_long@
##
########################################################################
## Generate/use mapping functions? Useful if the MIB defines
## a different format or enumerations than you data store uses.
##
## @eval $m2c_node_skip_mapping = 1@
##
########################################################################
## Need a length for the value? Most OCTET-STRING based values will
## need a length, most other types will not. Do not change this one
## unless you know what you are doing! You will almost certainly need
## to fix lots of generated code if you do.
##
## @eval $m2c_node_needlength = 0@
##
########################################################################
## Skip get? Set this to 1 if you do not want to implement a value
## for this column.
##
## @eval $m2c_node_skip_get = 0@
##
########################################################################
##
## mib2c node setting for dot1dBasePortIfIndex
##
## Remove the '##' comment delimeter to change settings
##
########################################################################
## Node declaration type? This is the C type to be used when
## declaring a variable to hold a value for this column. It
## is strongly recommended that you do not change this value.
## If you do, it is likely to break lots of generated code that
## you will have to fix.
##
## @eval $m2c_decl = long@
##
########################################################################
## Generate/use mapping functions? Useful if the MIB defines
## a different format or enumerations than you data store uses.
##
## @eval $m2c_node_skip_mapping = 1@
##
########################################################################
## Need a length for the value? Most OCTET-STRING based values will
## need a length, most other types will not. Do not change this one
## unless you know what you are doing! You will almost certainly need
## to fix lots of generated code if you do.
##
## @eval $m2c_node_needlength = 0@
##
########################################################################
## Skip get? Set this to 1 if you do not want to implement a value
## for this column.
##
## @eval $m2c_node_skip_get = 0@
##
########################################################################
##
## mib2c node setting for dot1dBasePortMtuExceededDiscards
##
## Remove the '##' comment delimeter to change settings
##
########################################################################
## Node declaration type? This is the C type to be used when
## declaring a variable to hold a value for this column. It
## is strongly recommended that you do not change this value.
## If you do, it is likely to break lots of generated code that
## you will have to fix.
##
## @eval $m2c_decl = u_long@
##
########################################################################
## Generate/use mapping functions? Useful if the MIB defines
## a different format or enumerations than you data store uses.
##
## @eval $m2c_node_skip_mapping = 1@
##
########################################################################
## Need a length for the value? Most OCTET-STRING based values will
## need a length, most other types will not. Do not change this one
## unless you know what you are doing! You will almost certainly need
## to fix lots of generated code if you do.
##
## @eval $m2c_node_needlength = 0@
##
########################################################################
## Skip get? Set this to 1 if you do not want to implement a value
## for this column.
##
## @eval $m2c_node_skip_get = 0@
##
## ########################################################################
##
## mib2c Table setting for dot1dBasePortTable
##
## ########################################################################
##
## User context structure type
##
@eval $m2c_context_reg = "netsnmp_data_list"@
##
## ########################################################################
##
## Allocate data structure in row structure? (vs embedd)
##
@eval $m2c_data_allocate = 0@
##
## ########################################################################
##
## Generate code to cache data?
##
@eval $m2c_data_cache = 0@
##
## ########################################################################
##
## Data context structure type
##
@eval $m2c_data_context = "generated"@ [generated|NAME]
##
## ########################################################################
##
## Generate function to initialize row context when created?
##
@eval $m2c_data_init = 1@
##
## ########################################################################
##
## Persistence of data context
## // 0:persistent, 1:semi-transient, 2:transient
##
@eval $m2c_data_transient = 0@
##
## ########################################################################
##
## Include some example code?
##
@eval $m2c_include_examples = 1@
##
## ########################################################################
##
## Generate code for irreversible_commit mode?
##
@eval $m2c_irreversible_commit = 0@
##
## ########################################################################
##
## Data access method
##
@eval $m2c_table_access = "container-cached"@
##
## ########################################################################
##
## Generate row dependency function?
##
@eval $m2c_table_dependencies = 0@
##
## ########################################################################
##
## Generate data store/restore functions for persistent storage?
##
@eval $m2c_table_persistent = 0@
##
## ########################################################################
##
## Generate code for dynamic row creation?
##
@eval $m2c_table_row_creation = 0@
##
## ########################################################################
##
## Generate code for settable objects?
##
@eval $m2c_table_settable = 0@
##
## ########################################################################
##
## Skip mapping between data context and MIB formats?
## // 0:generate maps, 1:skip maps, -1:skip unless enum/oid
##
@eval $m2c_table_skip_mapping = 1@
##
## ########################################################################
##
## Generate code for sparse tables?
##
@eval $m2c_table_sparse = 0@
##
## ########################################################################
##
## Generate Makefile/AgentX code?
##
@eval $mfd_generate_makefile = 1@
@eval $mfd_generate_subagent = 1@
##
************************************************************************
dot1dBasePortTable README
------------------------------------------------------------------------
This document describes the results of the mib2c code generation
system using the mfd code generation template. The resulting files
are documented both in this README file as well as per-table specific
README files. All of the files generated by this run of mib2c will
begin with the dot1dBasePortTable prefix.
Quick Start
-----------
For those interested in a quick start, to get a pseudo-todo list, try
this command in directory with the generated code:
grep -n "TODO:" *.[ch] | sed 's/\([^ ]*\) \(.*\)TODO\(.*\)/\3 (\1)/' | sort -n
Key:
:o: Optional
:r: Recommended
:M: Mandatory
:A: Advanced users
This will give you and ordered list of places in the code that you
may (or must) take a closer look at).
You may also want to take a look at the on-line tutorial, found here:
http://www.net-snmp.org/tutorial/tutorial-5/toolkit/mfd/index.html
MIBs For Dummies Overview
-------------------------
The MIBs For Dummies (MFD) configuration files have been written to help
SNMP novices implement SNMP MIBs. This section will be a brief
introduction to some of the general concepts you should be familar with.
Managed Information Base (MIB)
------------------------------
A SNMP MIB (Managed information base) is a text file that describes the
syntax for some set of data objects. The MIB creates a correlation
between an ASCII name for an object and a number OID (Object Identifier).
The SNMP protocol communicates information using the OIDs, and the MIB
allows tools to display a name, which we humans find easier to deal with.
To use an analogy, a MIB is much like a menu at a restaurant. If you've
ever been to a reataurant and ordered a meal, and later received a bill
that simply had '#6' on it, you get the idea. The name is easier for
the customers to remember, and the waiters and chefs use the number for
efficency.
Scalars
-------
A scalar variable is a unique object in a MIB which can represent
a single value. For example, the SNMP standard MIB-II defines a
variable, sysContact.0, which is a string containing the contact
information for the person in charge of a particular agent. Note
that scalar variable always end with '.0'.
Rows and Tables
---------------
When a group of related attributes occur more than once, they can be
grouped together in a table. A table has an index, which uniquely
identifies a particular row, and data columns, which contain the
attributes for that row.
For example, the SNMP standard MIB-II defines a table, ifTable, which
contains information on the ethernet interfaces on a system.
Data Structures
---------------
The code generated by the MFD configuration files has a few important
structures.
The Data Context
----------------
The data context structure should contain the necessary information
to provide the data for the columns in a given row. As long as you
can extract the data for a column for the data context, the data context
can be anything you want: a pointer to an existing structure, the
parameters needed for a function call or an actual copy of the data.
By default, a data context structure is generated with storage for
all the data in a row. Information on changing the default is presented
later on in this help.
The MIB Context
---------------
The MIB context structure is generated with storage for all the
indexes of a table. This data will be used when searching for the
correct row to process for a request.
The Row Request Context
-----------------------
Each table will have a unique data structure for holding data during
the processing of a particular row. The row request context contains
the registration context (that you supply during initilization),
the data context, the MIB context, the undo context (for settable
tables) and other data. There is also a netsnmp_data_list, which can
be used to temporary storage during processing.
The Table Registration Pointer
------------------------------
During initilization, you may provide a pointer to arbitrary data for
you own use. This pointer will be saved in the row request context,
and is passed as a parameter to several functions. It is not required,
and is provided as a way for you to access table specific data in
the generated code.
These files are top-level files potentially useful for all the tables:
------------------------------------------------------------------------
File : dot1dBasePortTable_Makefile
----------------------------------------------------------------------
Purpose : Make file for compiling a (sub)agent. This file is only
useful if you don't want to compile your code directly
into the Net-SNMP master agent.
Editable: Optional
Usage : make -f dot1dBasePortTable_Makefile
File : dot1dBasePortTable_subagent.c
----------------------------------------------------------------------
Purpose : This file contains a main() function for an agent or
sub-agent and is compiled using the Makefile above.
Table specific README files
------------------------------------------------------------------------
Each table for which code was generated has its own README file
describing the files specifically associated with each table. You
should probably read these next:
dot1dBasePortTable-README-dot1dBasePortTable.txt
These are miscellaneous auto-generated code files you generally
shouldn't edit. They contain code that ties your code together with
the Net-SNMP agent.
------------------------------------------------------------------------
File : dot1dBasePortTable.h
Purpose : Header file for the module set. Includes config_require
macros to auto-load the other code pieces when compiled
into the agent.
File : dot1dBasePortTable_oids.h
Purpose : C #define definitions of the tables, columns, and OIDs
File : dot1dBasePortTable_enums.h
Purpose : C #define definitions of the enumerated type values for
each column of each table that requires them.
File : dot1dBasePortTable_interface.c
Purpose : MFD interface to Net-SNMP. This auto-generated code ties the
functions you will fill out to the code that the agent needs.
/*
* Note: this file originally auto-generated by mib2c using
* version $ of $
*
* $Id:$
*/
/** \page MFD helper for dot1dBasePortTable
*
* \section intro Introduction
* Introductory text.
*
*/
/* standard Net-SNMP includes */
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
/* include our parent header */
#include "dot1dBasePortTable.h"
#include <net-snmp/agent/mib_modules.h>
#include "dot1dBasePortTable_interface.h"
const oid dot1dBasePortTable_oid[] = { DOT1DBASEPORTTABLE_OID };
const int dot1dBasePortTable_oid_size = OID_LENGTH(dot1dBasePortTable_oid);
dot1dBasePortTable_registration dot1dBasePortTable_user_context;
void initialize_table_dot1dBasePortTable(void);
void shutdown_table_dot1dBasePortTable(void);
/**
* Initializes the dot1dBasePortTable module
*/
void
init_dot1dBasePortTable(void)
{
DEBUGMSGTL(("verbose:dot1dBasePortTable:init_dot1dBasePortTable","called\n"));
/*
* TODO:300:o: Perform dot1dBasePortTable one-time module initialization.
*/
/*
* here we initialize all the tables we're planning on supporting
*/
if (should_init("dot1dBasePortTable"))
initialize_table_dot1dBasePortTable();
} /* init_dot1dBasePortTable */
/**
* Shut-down the dot1dBasePortTable module (agent is exiting)
*/
void
shutdown_dot1dBasePortTable(void)
{
if (should_init("dot1dBasePortTable"))
shutdown_table_dot1dBasePortTable();
}
/**
* Initialize the table dot1dBasePortTable
* (Define its contents and how it's structured)
*/
void
initialize_table_dot1dBasePortTable(void)
{
dot1dBasePortTable_registration * user_context;
u_long flags;
DEBUGMSGTL(("verbose:dot1dBasePortTable:initialize_table_dot1dBasePortTable","called\n"));
/*
* TODO:301:o: Perform dot1dBasePortTable one-time table initialization.
*/
/*
* TODO:302:o: |->Initialize dot1dBasePortTable user context
* if you'd like to pass in a pointer to some data for this
* table, allocate or set it up here.
*/
/*
* a netsnmp_data_list is a simple way to store void pointers. A simple
* string token is used to add, find or remove pointers.
*/
user_context = netsnmp_create_data_list("dot1dBasePortTable", NULL, NULL);
/*
* No support for any flags yet, but in the future you would
* set any flags here.
*/
flags = 0;
/*
* call interface initialization code
*/
_dot1dBasePortTable_initialize_interface(user_context, flags);
} /* initialize_table_dot1dBasePortTable */
/**
* Shutdown the table dot1dBasePortTable
*/
void
shutdown_table_dot1dBasePortTable(void)
{
/*
* call interface shutdown code
*/
_dot1dBasePortTable_shutdown_interface(&dot1dBasePortTable_user_context);
}
/**
* extra context initialization (eg default values)
*
* @param rowreq_ctx : row request context
* @param user_init_ctx : void pointer for user (parameter to rowreq_ctx_allocate)
*
* @retval MFD_SUCCESS : no errors
* @retval MFD_ERROR : error (context allocate will fail)
*/
int
dot1dBasePortTable_rowreq_ctx_init(dot1dBasePortTable_rowreq_ctx *rowreq_ctx,
void *user_init_ctx)
{
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortTable_rowreq_ctx_init","called\n"));
netsnmp_assert(NULL != rowreq_ctx);
/*
* TODO:210:o: |-> Perform extra dot1dBasePortTable rowreq initialization. (eg DEFVALS)
*/
return MFD_SUCCESS;
} /* dot1dBasePortTable_rowreq_ctx_init */
/**
* extra context cleanup
*
*/
void dot1dBasePortTable_rowreq_ctx_cleanup(dot1dBasePortTable_rowreq_ctx *rowreq_ctx)
{
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortTable_rowreq_ctx_cleanup","called\n"));
netsnmp_assert(NULL != rowreq_ctx);
/*
* TODO:211:o: |-> Perform extra dot1dBasePortTable rowreq cleanup.
*/
} /* dot1dBasePortTable_rowreq_ctx_cleanup */
/**
* pre-request callback
*
*
* @retval MFD_SUCCESS : success.
* @retval MFD_ERROR : other error
*/
int
dot1dBasePortTable_pre_request(dot1dBasePortTable_registration * user_context)
{
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortTable_pre_request","called\n"));
/*
* TODO:510:o: Perform dot1dBasePortTable pre-request actions.
*/
return MFD_SUCCESS;
} /* dot1dBasePortTable_pre_request */
/**
* post-request callback
*
* Note:
* New rows have been inserted into the container, and
* deleted rows have been removed from the container and
* released.
*
* @param user_context
* @param rc : MFD_SUCCESS if all requests succeeded
*
* @retval MFD_SUCCESS : success.
* @retval MFD_ERROR : other error (ignored)
*/
int
dot1dBasePortTable_post_request(dot1dBasePortTable_registration * user_context, int rc)
{
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortTable_post_request","called\n"));
/*
* TODO:511:o: Perform dot1dBasePortTable post-request actions.
*/
return MFD_SUCCESS;
} /* dot1dBasePortTable_post_request */
/** @{ */
/*
* Note: this file originally auto-generated by mib2c using
* version $ of $
*
* $Id:$
*/
#ifndef DOT1DBASEPORTTABLE_H
#define DOT1DBASEPORTTABLE_H
#ifdef __cplusplus
extern "C" {
#endif
/** @addtogroup misc misc: Miscellaneous routines
*
* @{
*/
#include <net-snmp/library/asn1.h>
/* other required module components */
/* *INDENT-OFF* */
config_add_mib(BRIDGE-MIB)
config_require(BRIDGE-MIB/dot1dBasePortTable/dot1dBasePortTable_interface)
config_require(BRIDGE-MIB/dot1dBasePortTable/dot1dBasePortTable_data_access)
config_require(BRIDGE-MIB/dot1dBasePortTable/dot1dBasePortTable_data_get)
config_require(BRIDGE-MIB/dot1dBasePortTable/dot1dBasePortTable_data_set)
/* *INDENT-ON* */
/* OID and column number definitions for dot1dBasePortTable */
#include "dot1dBasePortTable_oids.h"
/* enum definions */
#include "dot1dBasePortTable_enums.h"
/* *********************************************************************
* function declarations
*/
void init_dot1dBasePortTable(void);
void shutdown_dot1dBasePortTable(void);
/* *********************************************************************
* Table declarations
*/
/**********************************************************************
**********************************************************************
***
*** Table dot1dBasePortTable
***
**********************************************************************
**********************************************************************/
/*
* BRIDGE-MIB::dot1dBasePortTable is subid 4 of dot1dBase.
* Its status is Current.
* OID: .1.3.6.1.2.1.17.1.4, length: 9
*/
/* *********************************************************************
* When you register your mib, you get to provide a generic
* pointer that will be passed back to you for most of the
* functions calls.
*
* TODO:100:r: Review all context structures
*/
/*
* TODO:101:o: |-> Review dot1dBasePortTable registration context.
*/
typedef netsnmp_data_list dot1dBasePortTable_registration;
/**********************************************************************/
/*
* TODO:110:r: |-> Review dot1dBasePortTable data context structure.
* This structure is used to represent the data for dot1dBasePortTable.
*/
/*
* This structure contains storage for all the columns defined in the
* dot1dBasePortTable.
*/
typedef struct dot1dBasePortTable_data_s {
/*
* dot1dBasePortIfIndex(2)/InterfaceIndex/ASN_INTEGER/long(long)//l/A/w/e/R/d/H
*/
long dot1dBasePortIfIndex;
/*
* dot1dBasePortCircuit(3)/OBJECTID/ASN_OBJECT_ID/oid(oid)//L/A/w/e/r/d/h
*/
oid dot1dBasePortCircuit[128];
size_t dot1dBasePortCircuit_len; /* # of oid elements, not bytes */
/*
* dot1dBasePortDelayExceededDiscards(4)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
*/
u_long dot1dBasePortDelayExceededDiscards;
/*
* dot1dBasePortMtuExceededDiscards(5)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
*/
u_long dot1dBasePortMtuExceededDiscards;
} dot1dBasePortTable_data;
/*
* TODO:120:r: |-> Review dot1dBasePortTable mib index.
* This structure is used to represent the index for dot1dBasePortTable.
*/
typedef struct dot1dBasePortTable_mib_index_s {
/*
* dot1dBasePort(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h
*/
long dot1dBasePort;
} dot1dBasePortTable_mib_index;
/*
* TODO:121:r: | |-> Review dot1dBasePortTable max index length.
* If you KNOW that your indexes will never exceed a certain
* length, update this macro to that length.
*/
#define MAX_dot1dBasePortTable_IDX_LEN 1
/* *********************************************************************
* TODO:130:o: |-> Review dot1dBasePortTable Row request (rowreq) context.
* When your functions are called, you will be passed a
* dot1dBasePortTable_rowreq_ctx pointer.
*/
typedef struct dot1dBasePortTable_rowreq_ctx_s {
/** this must be first for container compare to work */
netsnmp_index oid_idx;
oid oid_tmp[MAX_dot1dBasePortTable_IDX_LEN];
dot1dBasePortTable_mib_index tbl_idx;
dot1dBasePortTable_data data;
/*
* flags per row. Currently, the first (lower) 8 bits are reserved
* for the user. See mfd.h for other flags.
*/
u_int rowreq_flags;
/*
* TODO:131:o: | |-> Add useful data to dot1dBasePortTable rowreq context.
*/
/*
* storage for future expansion
*/
netsnmp_data_list *dot1dBasePortTable_data_list;
} dot1dBasePortTable_rowreq_ctx;
typedef struct dot1dBasePortTable_ref_rowreq_ctx_s {
dot1dBasePortTable_rowreq_ctx *rowreq_ctx;
} dot1dBasePortTable_ref_rowreq_ctx;
/* *********************************************************************
* function prototypes
*/
int dot1dBasePortTable_pre_request(dot1dBasePortTable_registration * user_context);
int dot1dBasePortTable_post_request(dot1dBasePortTable_registration * user_context,
int rc);
int dot1dBasePortTable_rowreq_ctx_init(dot1dBasePortTable_rowreq_ctx *rowreq_ctx,
void *user_init_ctx);
void dot1dBasePortTable_rowreq_ctx_cleanup(dot1dBasePortTable_rowreq_ctx *rowreq_ctx);
dot1dBasePortTable_rowreq_ctx *
dot1dBasePortTable_row_find_by_mib_index(dot1dBasePortTable_mib_index *mib_idx);
extern const oid dot1dBasePortTable_oid[];
extern const int dot1dBasePortTable_oid_size;
#include "dot1dBasePortTable_interface.h"
#include "dot1dBasePortTable_data_access.h"
#include "dot1dBasePortTable_data_get.h"
#include "dot1dBasePortTable_data_set.h"
/*
* DUMMY markers, ignore
*
* TODO:099:x: *************************************************************
* TODO:199:x: *************************************************************
* TODO:299:x: *************************************************************
* TODO:399:x: *************************************************************
* TODO:499:x: *************************************************************
*/
#ifdef __cplusplus
}
#endif
#endif /* DOT1DBASEPORTTABLE_H */
/** @} */
CC=gcc
TABLE_PREFIX=dot1dBasePortTable
NETSNMPCONFIG=net-snmp-config
# uncomment this if you have GNU make
#NETSNMPCFLAGS := $(shell $(NETSNMPCONFIG) --base-cflags)
#NETSNMPLIBS := $(shell $(NETSNMPCONFIG) --agent-libs)
NETSNMPCFLAGS=`$(NETSNMPCONFIG) --base-cflags`
NETSNMPLIBS=`$(NETSNMPCONFIG) --agent-libs`
LIBS=$(NETSNMPLIBS)
STRICT_FLAGS = -Wall -Wstrict-prototypes
CFLAGS=-I. $(NETSNMPCFLAGS) $(STRICT_FLAGS)
USER_SRCS = \
$(TABLE_PREFIX)_data_get.c \
$(TABLE_PREFIX)_data_set.c \
$(TABLE_PREFIX)_data_access.c
SRCS = $(USER_SRCS) \
$(TABLE_PREFIX).c \
$(TABLE_PREFIX)_subagent.c \
$(TABLE_PREFIX)_interface.c
USER_OBJS = \
$(TABLE_PREFIX)_data_get.o \
$(TABLE_PREFIX)_data_set.o \
$(TABLE_PREFIX)_data_access.o
OBJS = $(USER_OBJS) \
$(TABLE_PREFIX).o \
$(TABLE_PREFIX)_subagent.o \
$(TABLE_PREFIX)_interface.o
TARGETS=$(TABLE_PREFIX)
.SUFFIXES:
.SUFFIXES: .c .o .deps
all: $(TARGETS)
user: $(USER_OBJS)
$(TARGETS): $(LIB_DEPS)
$(TABLE_PREFIX): $(OBJS) $(TABLE_PREFIX)_Makefile
$(CC) -o $(TABLE_PREFIX) $(OBJS) $(LIBS)
clean:
rm -f $(OBJS) $(TARGETS)
/*
* Note: this file originally auto-generated by mib2c using
* version $ of $
*
* $Id:$
*/
/* standard Net-SNMP includes */
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
/* include our parent header */
#include "dot1dBasePortTable.h"
#include "dot1dBasePortTable_data_access.h"
/** @ingroup interface
* @addtogroup data_access data_access: Routines to access data
*
* These routines are used to locate the data used to satisfy
* requests.
*
* @{
*/
/**********************************************************************
**********************************************************************
***
*** Table dot1dBasePortTable
***
**********************************************************************
**********************************************************************/
/*
* BRIDGE-MIB::dot1dBasePortTable is subid 4 of dot1dBase.
* Its status is Current.
* OID: .1.3.6.1.2.1.17.1.4, length: 9
*/
/**
* initialization for dot1dBasePortTable data access
*
* This function is called during startup to allow you to
* allocate any resources you need for the data table.
*
* @param dot1dBasePortTable_reg
* Pointer to dot1dBasePortTable_registration
*
* @retval MFD_SUCCESS : success.
* @retval MFD_ERROR : unrecoverable error.
*/
int
dot1dBasePortTable_init_data(dot1dBasePortTable_registration * dot1dBasePortTable_reg)
{
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortTable_init_data","called\n"));
/*
* TODO:303:o: Initialize dot1dBasePortTable data.
*/
/*
***************************************************
*** START EXAMPLE CODE ***
***---------------------------------------------***/
/*
* if you are the sole writer for the file, you could
* open it here. However, as stated earlier, we are assuming
* the worst case, which in this case means that the file is
* written to by someone else, and might not even exist when
* we start up. So we can't do anything here.
*/
/*
***---------------------------------------------***
*** END EXAMPLE CODE ***
***************************************************/
return MFD_SUCCESS;
} /* dot1dBasePortTable_init_data */
/**
* container overview
*
*/
/**
* container initialization
*
* @param container_ptr_ptr A pointer to a container pointer. If you
* create a custom container, use this parameter to return it
* to the MFD helper. If set to NULL, the MFD helper will
* allocate a container for you.
*
* This function is called at startup to allow you to customize certain
* aspects of the access method. For the most part, it is for advanced
* users. The default code should suffice for most cases. If no custom
* container is allocated, the MFD code will create one for your.
*
* @remark
* This would also be a good place to do any initialization needed
* for you data source. For example, opening a connection to another
* process that will supply the data, opening a database, etc.
*/
void
dot1dBasePortTable_container_init(netsnmp_container **container_ptr_ptr)
{
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortTable_container_init","called\n"));
if (NULL == container_ptr_ptr) {
snmp_log(LOG_ERR,"bad container param to dot1dBasePortTable_container_init\n");
return;
}
/*
* For advanced users, you can use a custom container. If you
* do not create one, one will be created for you.
*/
*container_ptr_ptr = NULL;
} /* dot1dBasePortTable_container_init */
/**
* container shutdown
*
* @param container_ptr A pointer to the container.
*
* This function is called at shutdown to allow you to customize certain
* aspects of the access method. For the most part, it is for advanced
* users. The default code should suffice for most cases.
*
* This function is called before dot1dBasePortTable_container_free().
*
* @remark
* This would also be a good place to do any cleanup needed
* for you data source. For example, closing a connection to another
* process that supplied the data, closing a database, etc.
*/
void
dot1dBasePortTable_container_shutdown(netsnmp_container *container_ptr)
{
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortTable_container_shutdown","called\n"));
if (NULL == container_ptr) {
snmp_log(LOG_ERR,"bad params to dot1dBasePortTable_container_shutdown\n");
return;
}
} /* dot1dBasePortTable_container_shutdown */
/**
* load initial data
*
* TODO:350:M: Implement dot1dBasePortTable data load
*
* @param container container to which items should be inserted
*
* @retval MFD_SUCCESS : success.
* @retval MFD_RESOURCE_UNAVAILABLE : Can't access data source
* @retval MFD_ERROR : other error.
*
* This function is called to load the index(es) (and data, optionally)
* for the every row in the data set.
*
* @remark
* While loading the data, the only important thing is the indexes.
* If access to your data is cheap/fast (e.g. you have a pointer to a
* structure in memory), it would make sense to update the data here.
* If, however, the accessing the data invovles more work (e.g. parsing
* some other existing data, or peforming calculations to derive the data),
* then you can limit yourself to setting the indexes and saving any
* information you will need later. Then use the saved information in
* dot1dBasePortTable_row_prep() for populating data.
*
* @note
* If you need consistency between rows (like you want statistics
* for each row to be from the same time frame), you should set all
* data here.
*
*/
int
dot1dBasePortTable_container_load(netsnmp_container *container)
{
dot1dBasePortTable_rowreq_ctx *rowreq_ctx;
size_t count = 0;
/*
* temporary storage for index values
*/
/*
* dot1dBasePort(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h
*/
long dot1dBasePort;
/*
* this example code is based on a data source that is a
* text file to be read and parsed.
*/
FILE *filep;
char line[MAX_LINE_SIZE];
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortTable_container_load","called\n"));
/*
***************************************************
*** START EXAMPLE CODE ***
***---------------------------------------------***/
/*
* open our data file.
*/
filep = fopen("/etc/dummy.conf", "r");
if(NULL == filep) {
return MFD_RESOURCE_UNAVAILABLE;
}
/*
***---------------------------------------------***
*** END EXAMPLE CODE ***
***************************************************/
/*
* TODO:351:M: |-> Load/update data in the dot1dBasePortTable container.
* loop over your dot1dBasePortTable data, allocate a rowreq context,
* set the index(es) [and data, optionally] and insert into
* the container.
*/
while( 1 ) {
/*
***************************************************
*** START EXAMPLE CODE ***
***---------------------------------------------***/
/*
* get a line (skip blank lines)
*/
do {
if (!fgets(line, sizeof(line), filep)) {
/* we're done */
fclose(filep);
filep = NULL;
}
} while (filep && (line[0] == '\n'));
/*
* check for end of data
*/
if(NULL == filep)
break;
/*
* parse line into variables
*/
/*
***---------------------------------------------***
*** END EXAMPLE CODE ***
***************************************************/
/*
* TODO:352:M: | |-> set indexes in new dot1dBasePortTable rowreq context.
* data context will be set from the param (unless NULL,
* in which case a new data context will be allocated)
*/
rowreq_ctx = dot1dBasePortTable_allocate_rowreq_ctx(NULL);
if (NULL == rowreq_ctx) {
snmp_log(LOG_ERR, "memory allocation failed\n");
return MFD_RESOURCE_UNAVAILABLE;
}
if(MFD_SUCCESS != dot1dBasePortTable_indexes_set(rowreq_ctx
, dot1dBasePort
)) {
snmp_log(LOG_ERR,"error setting index while loading "
"dot1dBasePortTable data.\n");
dot1dBasePortTable_release_rowreq_ctx(rowreq_ctx);
continue;
}
/*
* TODO:352:r: | |-> populate dot1dBasePortTable data context.
* Populate data context here. (optionally, delay until row prep)
*/
/* non-TRANSIENT data: no need to copy. set pointer to data */
/*
* insert into table container
*/
CONTAINER_INSERT(container, rowreq_ctx);
++count;
}
/*
***************************************************
*** START EXAMPLE CODE ***
***---------------------------------------------***/
if(NULL != filep)
fclose(filep);
/*
***---------------------------------------------***
*** END EXAMPLE CODE ***
***************************************************/
DEBUGMSGT(("verbose:dot1dBasePortTable:dot1dBasePortTable_container_load",
"inserted %d records\n", count));
return MFD_SUCCESS;
} /* dot1dBasePortTable_container_load */
/**
* container clean up
*
* @param container container with all current items
*
* This optional callback is called prior to all
* item's being removed from the container. If you
* need to do any processing before that, do it here.
*
* @note
* The MFD helper will take care of releasing all the row contexts.
*
*/
void
dot1dBasePortTable_container_free(netsnmp_container *container)
{
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortTable_container_free","called\n"));
/*
* TODO:380:M: Free dot1dBasePortTable container data.
*/
} /* dot1dBasePortTable_container_free */
/**
* prepare row for processing.
*
* When the agent has located the row for a request, this function is
* called to prepare the row for processing. If you fully populated
* the data context during the index setup phase, you may not need to
* do anything.
*
* @param rowreq_ctx pointer to a context.
*
* @retval MFD_SUCCESS : success.
* @retval MFD_ERROR : other error.
*/
int
dot1dBasePortTable_row_prep( dot1dBasePortTable_rowreq_ctx *rowreq_ctx)
{
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortTable_row_prep","called\n"));
netsnmp_assert(NULL != rowreq_ctx);
/*
* TODO:390:o: Prepare row for request.
* If populating row data was delayed, this is the place to
* fill in the row for this request.
*/
return MFD_SUCCESS;
} /* dot1dBasePortTable_row_prep */
/** @} */
/*
* Note: this file originally auto-generated by mib2c using
* version $ of $
*
* $Id:$
*/
#ifndef DOT1DBASEPORTTABLE_DATA_ACCESS_H
#define DOT1DBASEPORTTABLE_DATA_ACCESS_H
#ifdef __cplusplus
extern "C" {
#endif
/* *********************************************************************
* function declarations
*/
/* *********************************************************************
* Table declarations
*/
/**********************************************************************
**********************************************************************
***
*** Table dot1dBasePortTable
***
**********************************************************************
**********************************************************************/
/*
* BRIDGE-MIB::dot1dBasePortTable is subid 4 of dot1dBase.
* Its status is Current.
* OID: .1.3.6.1.2.1.17.1.4, length: 9
*/
int dot1dBasePortTable_init_data(dot1dBasePortTable_registration * dot1dBasePortTable_reg);
void dot1dBasePortTable_container_init(netsnmp_container **container_ptr_ptr);
void dot1dBasePortTable_container_shutdown(netsnmp_container *container_ptr);
int dot1dBasePortTable_container_load(netsnmp_container *container);
void dot1dBasePortTable_container_free(netsnmp_container *container);
/*
***************************************************
*** START EXAMPLE CODE ***
***---------------------------------------------***/
/* *********************************************************************
* Since we have no idea how you really access your data, we'll go with
* a worst case example: a flat text file.
*/
#define MAX_LINE_SIZE 256
/*
***---------------------------------------------***
*** END EXAMPLE CODE ***
***************************************************/
int dot1dBasePortTable_row_prep( dot1dBasePortTable_rowreq_ctx *rowreq_ctx);
#ifdef __cplusplus
}
#endif
#endif /* DOT1DBASEPORTTABLE_DATA_ACCESS_H */
/*
* Note: this file originally auto-generated by mib2c using
* version $ of $
*
* $Id:$
*/
/* standard Net-SNMP includes */
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
/* include our parent header */
#include "dot1dBasePortTable.h"
/** @defgroup data_get data_get: Routines to get data
*
* TODO:230:M: Implement dot1dBasePortTable get routines.
* TODO:240:M: Implement dot1dBasePortTable mapping routines (if any).
*
* These routine are used to get the value for individual objects. The
* row context is passed, along with a pointer to the memory where the
* value should be copied.
*
* @{
*/
/**********************************************************************
**********************************************************************
***
*** Table dot1dBasePortTable
***
**********************************************************************
**********************************************************************/
/*
* BRIDGE-MIB::dot1dBasePortTable is subid 4 of dot1dBase.
* Its status is Current.
* OID: .1.3.6.1.2.1.17.1.4, length: 9
*/
/* ---------------------------------------------------------------------
* TODO:200:r: Implement dot1dBasePortTable data context functions.
*/
/**
* set mib index(es)
*
* @param tbl_idx mib index structure
* @param dot1dBasePort_val
*
* @retval MFD_SUCCESS : success.
* @retval MFD_ERROR : other error.
*
* @remark
* This convenience function is useful for setting all the MIB index
* components with a single function call. It is assume that the C values
* have already been mapped from their native/rawformat to the MIB format.
*/
int
dot1dBasePortTable_indexes_set_tbl_idx(dot1dBasePortTable_mib_index *tbl_idx, long dot1dBasePort_val)
{
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortTable_indexes_set_tbl_idx","called\n"));
/* dot1dBasePort(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h */
tbl_idx->dot1dBasePort = dot1dBasePort_val;
return MFD_SUCCESS;
} /* dot1dBasePortTable_indexes_set_tbl_idx */
/**
* @internal
* set row context indexes
*
* @param reqreq_ctx the row context that needs updated indexes
*
* @retval MFD_SUCCESS : success.
* @retval MFD_ERROR : other error.
*
* @remark
* This function sets the mib indexs, then updates the oid indexs
* from the mib index.
*/
int
dot1dBasePortTable_indexes_set(dot1dBasePortTable_rowreq_ctx *rowreq_ctx, long dot1dBasePort_val)
{
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortTable_indexes_set","called\n"));
if(MFD_SUCCESS != dot1dBasePortTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx
, dot1dBasePort_val
))
return MFD_ERROR;
/*
* convert mib index to oid index
*/
rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
if(0 != dot1dBasePortTable_index_to_oid(&rowreq_ctx->oid_idx,
&rowreq_ctx->tbl_idx)) {
return MFD_ERROR;
}
return MFD_SUCCESS;
} /* dot1dBasePortTable_indexes_set */
/*---------------------------------------------------------------------
* BRIDGE-MIB::dot1dBasePortEntry.dot1dBasePortIfIndex
* dot1dBasePortIfIndex is subid 2 of dot1dBasePortEntry.
* Its status is Current, and its access level is ReadOnly.
* OID: .1.3.6.1.2.1.17.1.4.1.2
* Description:
The value of the instance of the ifIndex object,
defined in IF-MIB, for the interface corresponding
to this port.
*
* Attributes:
* accessible 1 isscalar 0 enums 0 hasdefval 0
* readable 1 iscolumn 1 ranges 1 hashint 1
* settable 0
* hint: d
*
* Ranges: 1 - 2147483647;
*
* Its syntax is InterfaceIndex (based on perltype INTEGER32)
* The net-snmp type is ASN_INTEGER. The C type decl is long (long)
*/
/**
* Extract the current value of the dot1dBasePortIfIndex data.
*
* Set a value using the data context for the row.
*
* @param rowreq_ctx
* Pointer to the row request context.
* @param dot1dBasePortIfIndex_val_ptr
* Pointer to storage for a long variable
*
* @retval MFD_SUCCESS : success
* @retval MFD_SKIP : skip this node (no value for now)
* @retval MFD_ERROR : Any other error
*/
int
dot1dBasePortIfIndex_get( dot1dBasePortTable_rowreq_ctx *rowreq_ctx, long * dot1dBasePortIfIndex_val_ptr )
{
/** we should have a non-NULL pointer */
netsnmp_assert( NULL != dot1dBasePortIfIndex_val_ptr );
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortIfIndex_get","called\n"));
netsnmp_assert(NULL != rowreq_ctx);
/*
* TODO:231:o: |-> Extract the current value of the dot1dBasePortIfIndex data.
* copy (* dot1dBasePortIfIndex_val_ptr ) from rowreq_ctx->data
*/
(* dot1dBasePortIfIndex_val_ptr ) = rowreq_ctx->data.dot1dBasePortIfIndex;
return MFD_SUCCESS;
} /* dot1dBasePortIfIndex_get */
/*---------------------------------------------------------------------
* BRIDGE-MIB::dot1dBasePortEntry.dot1dBasePortCircuit
* dot1dBasePortCircuit is subid 3 of dot1dBasePortEntry.
* Its status is Current, and its access level is ReadOnly.
* OID: .1.3.6.1.2.1.17.1.4.1.3
* Description:
For a port that (potentially) has the same value of
dot1dBasePortIfIndex as another port on the same bridge.
This object contains the name of an object instance
unique to this port. For example, in the case where
multiple ports correspond one-to-one with multiple X.25
virtual circuits, this value might identify an (e.g.,
the first) object instance associated with the X.25
virtual circuit corresponding to this port.
For a port which has a unique value of
dot1dBasePortIfIndex, this object can have the value
{ 0 0 }.
*
* Attributes:
* accessible 1 isscalar 0 enums 0 hasdefval 0
* readable 1 iscolumn 1 ranges 0 hashint 0
* settable 0
*
*
* Its syntax is OBJECTID (based on perltype OBJECTID)
* The net-snmp type is ASN_OBJECT_ID. The C type decl is oid (oid)
* This data type requires a length.
*/
/**
* Extract the current value of the dot1dBasePortCircuit data.
*
* Set a value using the data context for the row.
*
* @param rowreq_ctx
* Pointer to the row request context.
* @param dot1dBasePortCircuit_val_ptr_ptr
* Pointer to storage for a oid variable
* @param dot1dBasePortCircuit_val_ptr_len_ptr
* Pointer to a size_t. On entry, it will contain the size (in bytes)
* pointed to by dot1dBasePortCircuit.
* On exit, this value should contain the data size (in bytes).
*
* @retval MFD_SUCCESS : success
* @retval MFD_SKIP : skip this node (no value for now)
* @retval MFD_ERROR : Any other error
*
* @note If you need more than (*dot1dBasePortCircuit_val_ptr_len_ptr) bytes of memory,
* allocate it using malloc() and update dot1dBasePortCircuit_val_ptr_ptr.
* <b>DO NOT</b> free the previous pointer.
* The MFD helper will release the memory you allocate.
*
* @remark If you call this function yourself, you are responsible
* for checking if the pointer changed, and freeing any
* previously allocated memory. (Not necessary if you pass
* in a pointer to static memory, obviously.)
*/
int
dot1dBasePortCircuit_get( dot1dBasePortTable_rowreq_ctx *rowreq_ctx, oid **dot1dBasePortCircuit_val_ptr_ptr, size_t *dot1dBasePortCircuit_val_ptr_len_ptr )
{
/** we should have a non-NULL pointer and enough storage */
netsnmp_assert( (NULL != dot1dBasePortCircuit_val_ptr_ptr) && (NULL != *dot1dBasePortCircuit_val_ptr_ptr));
netsnmp_assert( NULL != dot1dBasePortCircuit_val_ptr_len_ptr );
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortCircuit_get","called\n"));
netsnmp_assert(NULL != rowreq_ctx);
/*
* TODO:231:o: |-> Extract the current value of the dot1dBasePortCircuit data.
* copy (* dot1dBasePortCircuit_val_ptr_ptr ) data and (* dot1dBasePortCircuit_val_ptr_len_ptr ) from rowreq_ctx->data
*/
/*
* make sure there is enough space for dot1dBasePortCircuit data
*/
if ((NULL == (* dot1dBasePortCircuit_val_ptr_ptr )) ||
((* dot1dBasePortCircuit_val_ptr_len_ptr ) <
(rowreq_ctx->data.dot1dBasePortCircuit_len* sizeof(rowreq_ctx->data.dot1dBasePortCircuit[0])))) {
/*
* allocate space for dot1dBasePortCircuit data
*/
(* dot1dBasePortCircuit_val_ptr_ptr ) = malloc(rowreq_ctx->data.dot1dBasePortCircuit_len* sizeof(rowreq_ctx->data.dot1dBasePortCircuit[0]));
if(NULL == (* dot1dBasePortCircuit_val_ptr_ptr )) {
snmp_log(LOG_ERR,"could not allocate memory (rowreq_ctx->data.dot1dBasePortCircuit)\n");
return MFD_ERROR;
}
}
(* dot1dBasePortCircuit_val_ptr_len_ptr ) = rowreq_ctx->data.dot1dBasePortCircuit_len* sizeof(rowreq_ctx->data.dot1dBasePortCircuit[0]);
memcpy( (* dot1dBasePortCircuit_val_ptr_ptr ), rowreq_ctx->data.dot1dBasePortCircuit, rowreq_ctx->data.dot1dBasePortCircuit_len* sizeof(rowreq_ctx->data.dot1dBasePortCircuit[0]) );
return MFD_SUCCESS;
} /* dot1dBasePortCircuit_get */
/*---------------------------------------------------------------------
* BRIDGE-MIB::dot1dBasePortEntry.dot1dBasePortDelayExceededDiscards
* dot1dBasePortDelayExceededDiscards is subid 4 of dot1dBasePortEntry.
* Its status is Current, and its access level is ReadOnly.
* OID: .1.3.6.1.2.1.17.1.4.1.4
* Description:
The number of frames discarded by this port due
to excessive transit delay through the bridge. It
is incremented by both transparent and source
route bridges.
*
* Attributes:
* accessible 1 isscalar 0 enums 0 hasdefval 0
* readable 1 iscolumn 1 ranges 0 hashint 0
* settable 0
*
*
* Its syntax is COUNTER (based on perltype COUNTER)
* The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
*/
/**
* Extract the current value of the dot1dBasePortDelayExceededDiscards data.
*
* Set a value using the data context for the row.
*
* @param rowreq_ctx
* Pointer to the row request context.
* @param dot1dBasePortDelayExceededDiscards_val_ptr
* Pointer to storage for a u_long variable
*
* @retval MFD_SUCCESS : success
* @retval MFD_SKIP : skip this node (no value for now)
* @retval MFD_ERROR : Any other error
*/
int
dot1dBasePortDelayExceededDiscards_get( dot1dBasePortTable_rowreq_ctx *rowreq_ctx, u_long * dot1dBasePortDelayExceededDiscards_val_ptr )
{
/** we should have a non-NULL pointer */
netsnmp_assert( NULL != dot1dBasePortDelayExceededDiscards_val_ptr );
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortDelayExceededDiscards_get","called\n"));
netsnmp_assert(NULL != rowreq_ctx);
/*
* TODO:231:o: |-> Extract the current value of the dot1dBasePortDelayExceededDiscards data.
* copy (* dot1dBasePortDelayExceededDiscards_val_ptr ) from rowreq_ctx->data
*/
(* dot1dBasePortDelayExceededDiscards_val_ptr ) = rowreq_ctx->data.dot1dBasePortDelayExceededDiscards;
return MFD_SUCCESS;
} /* dot1dBasePortDelayExceededDiscards_get */
/*---------------------------------------------------------------------
* BRIDGE-MIB::dot1dBasePortEntry.dot1dBasePortMtuExceededDiscards
* dot1dBasePortMtuExceededDiscards is subid 5 of dot1dBasePortEntry.
* Its status is Current, and its access level is ReadOnly.
* OID: .1.3.6.1.2.1.17.1.4.1.5
* Description:
The number of frames discarded by this port due
to an excessive size. It is incremented by both
transparent and source route bridges.
*
* Attributes:
* accessible 1 isscalar 0 enums 0 hasdefval 0
* readable 1 iscolumn 1 ranges 0 hashint 0
* settable 0
*
*
* Its syntax is COUNTER (based on perltype COUNTER)
* The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
*/
/**
* Extract the current value of the dot1dBasePortMtuExceededDiscards data.
*
* Set a value using the data context for the row.
*
* @param rowreq_ctx
* Pointer to the row request context.
* @param dot1dBasePortMtuExceededDiscards_val_ptr
* Pointer to storage for a u_long variable
*
* @retval MFD_SUCCESS : success
* @retval MFD_SKIP : skip this node (no value for now)
* @retval MFD_ERROR : Any other error
*/
int
dot1dBasePortMtuExceededDiscards_get( dot1dBasePortTable_rowreq_ctx *rowreq_ctx, u_long * dot1dBasePortMtuExceededDiscards_val_ptr )
{
/** we should have a non-NULL pointer */
netsnmp_assert( NULL != dot1dBasePortMtuExceededDiscards_val_ptr );
DEBUGMSGTL(("verbose:dot1dBasePortTable:dot1dBasePortMtuExceededDiscards_get","called\n"));
netsnmp_assert(NULL != rowreq_ctx);
/*
* TODO:231:o: |-> Extract the current value of the dot1dBasePortMtuExceededDiscards data.
* copy (* dot1dBasePortMtuExceededDiscards_val_ptr ) from rowreq_ctx->data
*/
(* dot1dBasePortMtuExceededDiscards_val_ptr ) = rowreq_ctx->data.dot1dBasePortMtuExceededDiscards;
return MFD_SUCCESS;
} /* dot1dBasePortMtuExceededDiscards_get */
/** @} */
/*
* Note: this file originally auto-generated by mib2c using
* version $ of $
*
* $Id:$
*
* @file dot1dBasePortTable_data_get.h
*
* @addtogroup get
*
* Prototypes for get functions
*
* @{
*/
#ifndef DOT1DBASEPORTTABLE_DATA_GET_H
#define DOT1DBASEPORTTABLE_DATA_GET_H
#ifdef __cplusplus
extern "C" {
#endif
/* *********************************************************************
* GET function declarations
*/
/* *********************************************************************
* GET Table declarations
*/
/**********************************************************************
**********************************************************************
***
*** Table dot1dBasePortTable
***
**********************************************************************
**********************************************************************/
/*
* BRIDGE-MIB::dot1dBasePortTable is subid 4 of dot1dBase.
* Its status is Current.
* OID: .1.3.6.1.2.1.17.1.4, length: 9
*/
/*
* indexes
*/
int dot1dBasePortIfIndex_get( dot1dBasePortTable_rowreq_ctx *rowreq_ctx, long * dot1dBasePortIfIndex_val_ptr );
int dot1dBasePortCircuit_get( dot1dBasePortTable_rowreq_ctx *rowreq_ctx, oid **dot1dBasePortCircuit_val_ptr_ptr, size_t *dot1dBasePortCircuit_val_ptr_len_ptr );
int dot1dBasePortDelayExceededDiscards_get( dot1dBasePortTable_rowreq_ctx *rowreq_ctx, u_long * dot1dBasePortDelayExceededDiscards_val_ptr );
int dot1dBasePortMtuExceededDiscards_get( dot1dBasePortTable_rowreq_ctx *rowreq_ctx, u_long * dot1dBasePortMtuExceededDiscards_val_ptr );
int dot1dBasePortTable_indexes_set_tbl_idx(dot1dBasePortTable_mib_index *tbl_idx, long dot1dBasePort_val);
int dot1dBasePortTable_indexes_set(dot1dBasePortTable_rowreq_ctx *rowreq_ctx, long dot1dBasePort_val);
#ifdef __cplusplus
}
#endif
#endif /* DOT1DBASEPORTTABLE_DATA_GET_H */
/** @} */
/*
* Note: this file originally auto-generated by mib2c using
* version $ of $
*
* $Id:$
*
*/
/* standard Net-SNMP includes */
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
/* include our parent header */
#include "dot1dBasePortTable.h"
/** @defgroup data_set data_set: Routines to set data
*
* These routines are used to set the value for individual objects. The
* row context is passed, along with the new value.
*
* @{
*/
/** @} */
/*
* Note: this file originally auto-generated by mib2c using
* version $ of $
*
* $Id:$
*/
#ifndef DOT1DBASEPORTTABLE_DATA_SET_H
#define DOT1DBASEPORTTABLE_DATA_SET_H
#ifdef __cplusplus
extern "C" {
#endif
/* *********************************************************************
* SET function declarations
*/
/* *********************************************************************
* SET Table declarations
*/
#ifdef __cplusplus
}
#endif
#endif /* DOT1DBASEPORTTABLE_DATA_SET_H */
/*
* Note: this file originally auto-generated by mib2c using
* $
*
* $Id:$
*/
#ifndef DOT1DBASEPORTTABLE_ENUMS_H
#define DOT1DBASEPORTTABLE_ENUMS_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* NOTES on enums
* ==============
*
* Value Mapping
* -------------
* If the values for your data type don't exactly match the
* possible values defined by the mib, you should map them
* below. For example, a boolean flag (1/0) is usually represented
* as a TruthValue in a MIB, which maps to the values (1/2).
*
*/
/*************************************************************************
*************************************************************************
*
* enum definitions for table dot1dBasePortTable
*
*************************************************************************
*************************************************************************/
#ifdef __cplusplus
}
#endif
#endif /* DOT1DBASEPORTTABLE_ENUMS_H */
/*
* Note: this file originally auto-generated by mib2c using
* version $ of $
*
* $Id:$
*/
/** @ingroup interface: Routines to interface to Net-SNMP
*
* \warning This code should not be modified, called directly,
* or used to interpret functionality. It is subject to
* change at any time.
*
* @{
*/
/*
* *********************************************************************
* *********************************************************************
* *********************************************************************
* *** ***
* *** NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE ***
* *** ***
* *** ***
* *** THIS FILE DOES NOT CONTAIN ANY USER EDITABLE CODE. ***
* *** ***
* *** ***
* *** THE GENERATED CODE IS INTERNAL IMPLEMENTATION, AND ***
* *** ***
* *** ***
* *** IS SUBJECT TO CHANGE WITHOUT WARNING IN FUTURE RELEASES. ***
* *** ***
* *** ***
* *********************************************************************
* *********************************************************************
* *********************************************************************
*/
#ifndef DOT1DBASEPORTTABLE_INTERFACE_H
#define DOT1DBASEPORTTABLE_INTERFACE_H
#ifdef __cplusplus
extern "C" {
#endif
#include "dot1dBasePortTable.h"
/* ********************************************************************
* Table declarations
*/
/* PUBLIC interface initialization routine */
void _dot1dBasePortTable_initialize_interface(dot1dBasePortTable_registration * user_ctx,
u_long flags);
void _dot1dBasePortTable_shutdown_interface(dot1dBasePortTable_registration * user_ctx);
dot1dBasePortTable_registration *
dot1dBasePortTable_registration_get( void );
dot1dBasePortTable_registration *
dot1dBasePortTable_registration_set( dot1dBasePortTable_registration * newreg );
netsnmp_container *dot1dBasePortTable_container_get( void );
int dot1dBasePortTable_container_size( void );
dot1dBasePortTable_rowreq_ctx * dot1dBasePortTable_allocate_rowreq_ctx(void *);
void dot1dBasePortTable_release_rowreq_ctx(dot1dBasePortTable_rowreq_ctx *rowreq_ctx);
int dot1dBasePortTable_index_to_oid(netsnmp_index *oid_idx,
dot1dBasePortTable_mib_index *mib_idx);
int dot1dBasePortTable_index_from_oid(netsnmp_index *oid_idx,
dot1dBasePortTable_mib_index *mib_idx);
/*
* access to certain internals. use with caution!
*/
void dot1dBasePortTable_valid_columns_set(netsnmp_column_info *vc);
#ifdef __cplusplus
}
#endif
#endif /* DOT1DBASEPORTTABLE_INTERFACE_H */
/** @} */
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment