summaryrefslogtreecommitdiff
path: root/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects
diff options
context:
space:
mode:
Diffstat (limited to 'cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects')
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects.h1
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects.h1
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects/eocExtOcnBcmpGlobalObjects.c241
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects/eocExtOcnBcmpGlobalObjects.h16
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects.h2
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects.h2
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable.h5
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoCbatCardIndex.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoCnuIndex.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoList.m2d43
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoSeq.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/table-eocExtCnuSubCarrierModuInfoTable.m2d103
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable-README-FIRST.txt167
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable-README-eocExtCnuSubCarrierModuInfoTable.txt506
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable.c201
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable.h196
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_access.c338
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_access.h63
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_get.c202
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_get.h59
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_set.c24
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_set.h27
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_enums.h40
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_interface.c911
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_interface.h84
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_oids.h37
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable.h5
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/node-eocExtCnuCbatCardIndex.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/node-eocExtCnuCnuIndex.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/node-eocExtCnuMacLimitation.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/table-eocExtCnuTable.m2d103
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable-README-FIRST.txt167
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable-README-eocExtCnuTable.txt579
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable.c218
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable.h198
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_access.c373
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_access.h64
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_get.c166
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_get.h59
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_set.c613
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_set.h55
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_enums.h40
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_interface.c1479
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_interface.h87
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_oids.h41
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects.h1
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable.h5
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortActualDuplex.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortActualSpeed.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortCbatCardIndex.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortCnuIndex.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortCnuPortIndex.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortConfAutoNeg.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortConfDuplex.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortConfSpeed.m2d35
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/table-eocExtCnuEtherPortTable.m2d103
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable-README-FIRST.txt167
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable-README-eocExtCnuEtherPortTable.txt775
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable.c218
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable.h224
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_access.c440
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_access.h69
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_get.c379
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_get.h63
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_set.c1021
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_set.h75
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_enums.h122
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_interface.c1625
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_interface.h87
-rw-r--r--cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_oids.h53
70 files changed, 13433 insertions, 0 deletions
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects.h
new file mode 100644
index 0000000000..af9212d0d5
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects.h
@@ -0,0 +1 @@
+config_require(mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects)
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects.h
new file mode 100644
index 0000000000..0ee71ba99d
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects.h
@@ -0,0 +1 @@
+config_require(mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects/eocExtOcnBcmpGlobalObjects)
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects/eocExtOcnBcmpGlobalObjects.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects/eocExtOcnBcmpGlobalObjects.c
new file mode 100644
index 0000000000..f921eec728
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects/eocExtOcnBcmpGlobalObjects.c
@@ -0,0 +1,241 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * : mib2c.scalar.conf 11805 2005-01-07 09:37:18Z dts12 $
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include "eocExtOcnBcmpGlobalObjects.h"
+
+/** Initializes the eocExtOcnBcmpGlobalObjects module */
+void
+init_eocExtOcnBcmpGlobalObjects(void)
+{
+ static oid eocExtOcnBcmpEnable_oid[] = { 1,3,6,1,4,1,17409,2,4,20,2,1,1 };
+ static oid eocExtOcnBcmpVersion_oid[] = { 1,3,6,1,4,1,17409,2,4,20,2,1,2 };
+
+ DEBUGMSGTL(("eocExtOcnBcmpGlobalObjects", "Initializing\n"));
+
+ netsnmp_register_scalar(
+ netsnmp_create_handler_registration("eocExtOcnBcmpEnable", handle_eocExtOcnBcmpEnable,
+ eocExtOcnBcmpEnable_oid, OID_LENGTH(eocExtOcnBcmpEnable_oid),
+ HANDLER_CAN_RWRITE
+ ));
+ netsnmp_register_scalar(
+ netsnmp_create_handler_registration("eocExtOcnBcmpVersion", handle_eocExtOcnBcmpVersion,
+ eocExtOcnBcmpVersion_oid, OID_LENGTH(eocExtOcnBcmpVersion_oid),
+ HANDLER_CAN_RONLY
+ ));
+}
+
+int
+handle_eocExtOcnBcmpEnable(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *reqinfo,
+ netsnmp_request_info *requests)
+{
+ int ret;
+ bcmp_enable_t bcmp_enable;
+ int *bcmp_enable_save = NULL;
+ char buffer[LIBSPID_LINE_MAX_LEN];
+ long value;
+ /* We are never called for a GETNEXT if it's registered as a
+ "instance", as it's "magically" handled for us. */
+
+ /* a instance handler also only hands us one request at a time, so
+ we don't need to loop over a list of requests; we'll only get one. */
+
+ switch (reqinfo->mode)
+ {
+ case MODE_GET:
+ ret = libspid_config_read_item (
+ LIBSPID_SYSTEM_CONF_PATH,
+ LIBSPID_SYSTEM_CONF_LABEL_BCMP_ENABLE,
+ buffer, LIBSPID_LINE_MAX_LEN);
+
+ if (LIBSPID_SUCCESS != ret)
+ {
+ snmp_log (LOG_ERR, "libspid_config_read_item error\n");
+ bcmp_enable = BCMP_ENABLE_NO;
+ }
+ else
+ {
+ if (!strncmp (buffer, LIBSPID_SYSTEM_CONF_VALUE_YES,
+ strlen (LIBSPID_SYSTEM_CONF_VALUE_YES)))
+ {
+ bcmp_enable = BCMP_ENABLE_YES;
+ }
+ else
+ {
+ bcmp_enable = BCMP_ENABLE_NO;
+ }
+ }
+ snmp_set_var_typed_value (requests->requestvb, ASN_INTEGER,
+ (u_char *) &bcmp_enable,
+ sizeof (bcmp_enable));
+ break;
+ case MODE_SET_RESERVE1:
+ ret = netsnmp_check_vb_type (requests->requestvb, ASN_INTEGER);
+ if ( ret != SNMP_ERR_NOERROR )
+ {
+ netsnmp_set_request_error (reqinfo, requests, ret );
+ }
+ ret = netsnmp_check_vb_range (
+ requests->requestvb,
+ BCMP_ENABLE_YES,
+ BCMP_ENABLE_NO);
+ if (ret != SNMP_ERR_NOERROR)
+ {
+ netsnmp_set_request_error (reqinfo, requests, ret);
+ }
+ break;
+
+ case MODE_SET_RESERVE2:
+ ret = libspid_config_read_item (
+ LIBSPID_SYSTEM_CONF_PATH,
+ LIBSPID_SYSTEM_CONF_LABEL_BCMP_ENABLE,
+ buffer, LIBSPID_LINE_MAX_LEN);
+ if (LIBSPID_SUCCESS != ret)
+ {
+ snmp_log (LOG_ERR, "libspid_config_read_item error\n");
+ bcmp_enable = BCMP_ENABLE_NO;
+ }
+ else
+ {
+ if (!strncmp (buffer, LIBSPID_SYSTEM_CONF_VALUE_YES,
+ strlen (LIBSPID_SYSTEM_CONF_VALUE_YES)))
+ {
+ bcmp_enable = BCMP_ENABLE_YES;
+ }
+ else
+ {
+ bcmp_enable = BCMP_ENABLE_NO;
+ }
+ }
+
+ memdup ((u_char **) &bcmp_enable_save,
+ (u_char *) &bcmp_enable,
+ sizeof (bcmp_enable));
+
+ if ( NULL == bcmp_enable_save)
+ {
+ netsnmp_set_request_error (reqinfo, requests,
+ SNMP_ERR_RESOURCEUNAVAILABLE);
+ }
+ else
+ {
+ netsnmp_request_add_list_data (requests,
+ netsnmp_create_data_list
+ ("bcmp", bcmp_enable_save,
+ free));
+ }
+ break;
+
+ case MODE_SET_FREE:
+ /* free resources allocated in RESERVE1 and/or
+ RESERVE2. Something failed somewhere, and the states
+ below won't be called. */
+ break;
+
+ case MODE_SET_ACTION:
+ value = *(requests->requestvb->val.integer);
+ switch (value)
+ {
+ case BCMP_ENABLE_YES:
+ ret = libspid_config_write_item (
+ LIBSPID_SYSTEM_CONF_PATH,
+ LIBSPID_SYSTEM_CONF_LABEL_BCMP_ENABLE,
+ LIBSPID_SYSTEM_CONF_VALUE_YES);
+ break;
+ case BCMP_ENABLE_NO:
+ ret = libspid_config_write_item (
+ LIBSPID_SYSTEM_CONF_PATH,
+ LIBSPID_SYSTEM_CONF_LABEL_BCMP_ENABLE,
+ LIBSPID_SYSTEM_CONF_VALUE_NO);
+ break;
+ default:
+ ret = LIBSPID_ERROR_CHECK;
+ break;
+ }
+
+ if (LIBSPID_SUCCESS != ret)
+ {
+ netsnmp_set_request_error (reqinfo, requests,
+ SNMP_ERR_COMMITFAILED);
+ }
+
+ break;
+
+ case MODE_SET_COMMIT:
+ break;
+
+ case MODE_SET_UNDO:
+ value = *((long *) netsnmp_request_get_list_data (requests, "bcmp"));
+
+ switch (value)
+ {
+ case BCMP_ENABLE_YES:
+ ret = libspid_config_write_item (
+ LIBSPID_SYSTEM_CONF_PATH,
+ LIBSPID_SYSTEM_CONF_LABEL_BCMP_ENABLE,
+ LIBSPID_SYSTEM_CONF_VALUE_YES);
+ break;
+ case BCMP_ENABLE_NO:
+ ret = libspid_config_write_item (
+ LIBSPID_SYSTEM_CONF_PATH,
+ LIBSPID_SYSTEM_CONF_LABEL_BCMP_ENABLE,
+ LIBSPID_SYSTEM_CONF_VALUE_NO);
+ break;
+ default:
+ ret = LIBSPID_ERROR_CHECK;
+ break;
+ }
+
+ if (LIBSPID_SUCCESS != ret)
+ {
+ netsnmp_set_request_error (reqinfo, requests,
+ SNMP_ERR_UNDOFAILED);
+ }
+
+ break;
+
+ default:
+ snmp_log (LOG_ERR,
+ "unknown mode (%d) in handle_eocExtOcnBcmpEnable\n",
+ reqinfo->mode );
+ return SNMP_ERR_GENERR;
+ }
+
+ return SNMP_ERR_NOERROR;
+}
+int
+handle_eocExtOcnBcmpVersion(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *reqinfo,
+ netsnmp_request_info *requests)
+{
+ char * bcmp_version = EOC_BCMP_VERSION;
+ /* We are never called for a GETNEXT if it's registered as a
+ "instance", as it's "magically" handled for us. */
+
+ /* a instance handler also only hands us one request at a time, so
+ we don't need to loop over a list of requests; we'll only get one. */
+
+ switch (reqinfo->mode)
+ {
+ case MODE_GET:
+ snmp_set_var_typed_value (requests->requestvb, ASN_OCTET_STR,
+ (u_char *) bcmp_version,
+ sizeof (bcmp_version));
+ break;
+ default:
+ /* we should never get here, so this is a really bad error */
+ snmp_log (LOG_ERR,
+ "unknown mode (%d) in handle_eocExtOcnBcmpVersion\n",
+ reqinfo->mode );
+ return SNMP_ERR_GENERR;
+ }
+
+ return SNMP_ERR_NOERROR;
+}
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects/eocExtOcnBcmpGlobalObjects.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects/eocExtOcnBcmpGlobalObjects.h
new file mode 100644
index 0000000000..52fcde587c
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtBcmpObjects/eocExtOcnBcmpGlobalObjects/eocExtOcnBcmpGlobalObjects.h
@@ -0,0 +1,16 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * : mib2c.scalar.conf 11805 2005-01-07 09:37:18Z dts12 $
+ */
+#ifndef EOCEXTOCNBCMPGLOBALOBJECTS_H
+#define EOCEXTOCNBCMPGLOBALOBJECTS_H
+
+/* include common header */
+#include "EoCCommon.h"
+
+/* function declarations */
+void init_eocExtOcnBcmpGlobalObjects(void);
+Netsnmp_Node_Handler handle_eocExtOcnBcmpEnable;
+Netsnmp_Node_Handler handle_eocExtOcnBcmpVersion;
+
+#endif /* EOCEXTOCNBCMPGLOBALOBJECTS_H */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects.h
new file mode 100644
index 0000000000..5aac919893
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects.h
@@ -0,0 +1,2 @@
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects)
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects)
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects.h
new file mode 100644
index 0000000000..15e201fa33
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects.h
@@ -0,0 +1,2 @@
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable)
+//config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable)
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable.h
new file mode 100644
index 0000000000..d677c9a104
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable.h
@@ -0,0 +1,5 @@
+//config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable)
+//config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_access)
+//config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_set)
+//config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_interface)
+//config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_get)
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoCbatCardIndex.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoCbatCardIndex.m2d
new file mode 100644
index 0000000000..756a107138
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoCbatCardIndex.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuSubCarrierModuInfoCbatCardIndex
+##
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoCnuIndex.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoCnuIndex.m2d
new file mode 100644
index 0000000000..46ff689a97
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoCnuIndex.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuSubCarrierModuInfoCnuIndex
+##
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoList.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoList.m2d
new file mode 100644
index 0000000000..d22093d184
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoList.m2d
@@ -0,0 +1,43 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuSubCarrierModuInfoList
+##
+## 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 = char@
+##
+########################################################################
+## 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@
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoSeq.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoSeq.m2d
new file mode 100644
index 0000000000..2da40a5d83
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/node-eocExtCnuSubCarrierModuInfoSeq.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuSubCarrierModuInfoSeq
+##
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/table-eocExtCnuSubCarrierModuInfoTable.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/table-eocExtCnuSubCarrierModuInfoTable.m2d
new file mode 100644
index 0000000000..496e8267a8
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/defaults/table-eocExtCnuSubCarrierModuInfoTable.m2d
@@ -0,0 +1,103 @@
+## ########################################################################
+##
+## mib2c Table setting for eocExtCnuSubCarrierModuInfoTable
+##
+## ########################################################################
+##
+## 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 = 1@
+##
+## ########################################################################
+##
+## 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 = 1@
+##
+## ########################################################################
+##
+## Include some example code?
+##
+@eval $m2c_include_examples = 0@
+##
+## ########################################################################
+##
+## 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 = 0@
+@eval $mfd_generate_subagent = 0@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable-README-FIRST.txt b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable-README-FIRST.txt
new file mode 100644
index 0000000000..83f17a0001
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable-README-FIRST.txt
@@ -0,0 +1,167 @@
+************************************************************************
+eocExtCnuSubCarrierModuInfoTable 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 eocExtCnuSubCarrierModuInfoTable 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 : eocExtCnuSubCarrierModuInfoTable_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 eocExtCnuSubCarrierModuInfoTable_Makefile
+
+
+ File : eocExtCnuSubCarrierModuInfoTable_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:
+
+ eocExtCnuSubCarrierModuInfoTable-README-eocExtCnuSubCarrierModuInfoTable.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 : eocExtCnuSubCarrierModuInfoTable.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 : eocExtCnuSubCarrierModuInfoTable_oids.h
+ Purpose : C #define definitions of the tables, columns, and OIDs
+
+ File : eocExtCnuSubCarrierModuInfoTable_enums.h
+ Purpose : C #define definitions of the enumerated type values for
+ each column of each table that requires them.
+
+ File : eocExtCnuSubCarrierModuInfoTable_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.
+
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable-README-eocExtCnuSubCarrierModuInfoTable.txt b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable-README-eocExtCnuSubCarrierModuInfoTable.txt
new file mode 100644
index 0000000000..2ba0f8005e
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable-README-eocExtCnuSubCarrierModuInfoTable.txt
@@ -0,0 +1,506 @@
+************************************************************************
+eocExtCnuSubCarrierModuInfoTable README
+------------------------------------------------------------------------
+ This readme file describes the code generated by mib2c (using the MIBs
+ for Dummies (MFD) configuration file). The code generated was
+ generated specifically for the following SNMP table:
+
+ eocExtCnuSubCarrierModuInfoTable
+
+ Your code will be called when the snmp agent receives requests for
+ the eocExtCnuSubCarrierModuInfoTable table. The agent will start by looking for the right
+ row in your existing data to operate on, if one exists.
+
+
+ Configuration Variables
+ ------------------------------------------------------------
+ Some variables used for code generation may be set to affect the code
+ generation. You may override these variables by setting them in the
+ file defaults/table-eocExtCnuSubCarrierModuInfoTable.m2d, and then re-running mib2c.
+
+ m2c_table_settable (currently '0')
+ --------------------------------------------------------
+ This variable determines whether or not code is generated to support
+ MIB object which have an access of read-write or read-create. The
+ default is set based on whether or not the table contains writable
+ objects, but can be over-ridden.
+
+ Syntax: @eval $m2c_table_settable = 0@
+
+
+ m2c_table_dependencies (currently '0')
+ --------------------------------------------------------
+ This variable determines whether or not code is generated to support
+ checking dependencies between columns, rows or tables. The default
+ is set based on whether or not the table contains writable objects,
+ but can be over-ridden.
+
+ Syntax: @eval $m2c_table_dependencies = 0@
+
+
+ m2c_table_row_creation (currently '0')
+ --------------------------------------------------------
+ This variable determines whether or not code is generated to support
+ checking creation of new rows via SNMP. The default is set based on
+ whether or not the table contains read-create objects, but can be
+ over-ridden.
+
+ Syntax: @eval $m2c_table_row_creation = 0@
+
+
+ m2c_context_reg (currently 'netsnmp_data_list')
+ --------------------------------------------------------
+ This variable contains the structure name to typedef for the
+ eocExtCnuSubCarrierModuInfoTable_registration.
+
+ During initilization, you will provide a pointer to a structure of
+ this type. This pointer is used as a parameter to many functions so
+ that you have access to your registration data. The default is a
+ netsnmp_data_list pointer, which will allow you to keep multiple
+ pointers tagged by a text name. If you have a new or existing structure
+ you would rather use, you can redefine this variable.
+
+
+ To avoid regenerating code, you may also change this typedef directly
+ in the eocExtCnuSubCarrierModuInfoTable.h header.
+
+ Syntax: @eval $m2c_context_reg = "struct my_registration_context@
+
+
+ m2c_data_context (currently 'generated')
+ --------------------------------------------------------
+ This variable contains the structure name to typedef for the
+ eocExtCnuSubCarrierModuInfoTable_data.
+
+ This typedef is used in the row request context structure for the table,
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx.
+
+ The typedef in the primary table context will be used for the data and
+ undo structure types. This structure should contain all the data
+ needed for all the columns in the table. The default is 'generated',
+ which will cuase a new data strcuture to be generated with data members
+ for each column.
+
+ To avoid regenerating code, you may also change this typedef directly
+ in the eocExtCnuSubCarrierModuInfoTable.h header.
+
+ Syntax: @eval $m2c_data_context = "struct my_data_context"@
+
+
+ m2c_data_allocate (currently '0')
+ --------------------------------------------------------
+ This variable determines whether or not the data context (see above)
+ requires memory to be allocated. The default generated data structure
+ does not. If you are using a custom data context which needs to
+ allocate memory, override this value and two additional functions
+ will be generated:
+
+ eocExtCnuSubCarrierModuInfoTable_allocate_data
+ eocExtCnuSubCarrierModuInfoTable_release_data
+
+ Syntax: @eval $m2c_data_allocate = 1@
+
+
+ m2c_data_init (currently '1')
+ --------------------------------------------------------
+ This variable determines whether or not the data context (see above)
+ or any other items you have added to the table context requires
+ initialization. The default generated data structure does not. If you
+ are using a custom data context or have added items needing initialization
+ to the table context, override this value and two additional functions
+ will be generated:
+
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_init
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_cleanup
+
+ Syntax: @eval 1 = 1@
+
+
+ m2c_table_access (currently 'container-cached')
+ ------------------------------------------------------------------
+ This variable determines which data interface will be use to generate
+ code for looking up data for a given index. The default is the
+ 'container-cached' access code, which caches the data in a netsnmp-
+ container (usually a sorted array).
+
+ Available options can be determined by checking for mib2c configuration
+ files that begin with 'mfd-access-*'.
+
+ Syntax: @eval $m2c_table_access = 'container-cached'@
+
+
+ m2c_include_examples (currently '0')
+ ------------------------------------------------------------------
+ This variable determines whether or not to generate example code. The
+ default is to generate example code.
+
+ Syntax: @eval $m2c_include_examples = 0@
+
+
+ m2c_data_transient (currently '1')
+ ------------------------------------------------------------------
+ This variable determines how the generated example code deals with the
+ data during data lookup. See the table readme file for details on how
+ the current table access method interprets this value. In general,
+ a value of 0 indicates persistent data, 1 indicates semi-transient and
+ 2 indicates transient data.
+
+ Syntax: @eval $m2c_data_transient = 0@
+
+
+ Index(es) for the eocExtCnuSubCarrierModuInfoTable table
+ ------------------------------------------------------------
+ The index(es) for the eocExtCnuSubCarrierModuInfoTable table are:
+
+ eocExtCnuSubCarrierModuInfoCbatCardIndex:
+ Syntax: INTEGER32
+ DataType: INTEGER32
+ ASN type: ASN_INTEGER
+ C-code type: long
+ eocExtCnuSubCarrierModuInfoCnuIndex:
+ Syntax: INTEGER32
+ DataType: INTEGER32
+ ASN type: ASN_INTEGER
+ C-code type: long
+ eocExtCnuSubCarrierModuInfoSeq:
+ Syntax: INTEGER32
+ DataType: INTEGER32
+ ASN type: ASN_INTEGER
+ C-code type: long
+
+ You should know how to set all these values from your data context,
+ eocExtCnuSubCarrierModuInfoTable_data.
+
+
+************************************************************************
+eocExtCnuSubCarrierModuInfoTable File Overview
+------------------------------------------------------------------------
+ Several files have been generated to implement the eocExtCnuSubCarrierModuInfoTable
+ table. We'll go through these files, one by one, explaining each and
+ letting you know which you need to edit.
+
+
+File: eocExtCnuSubCarrierModuInfoTable_data_access.[c|h]
+------------------------------------------------------------------------
+ The eocExtCnuSubCarrierModuInfoTable_data_access file contains the interface to your data in
+ its raw format. These functions are used to build the row cache or
+ locate the row (depending on the table access method).
+
+ Set MIB context
+ -----------------
+ TODO : Set MIB index values
+ FUNC : eocExtCnuSubCarrierModuInfoTable_indexes_set
+ WHERE: eocExtCnuSubCarrierModuInfoTable_data_access.c
+
+ This is a convenience function for setting the index context from
+ the native C data. Where necessary, value mapping should be done.
+
+ This function should update the table index values (found in
+ tbl_idx) for the given raw data.
+
+
+ container summary
+ ------------------------
+ The container data access code is for cases when you want to
+ store your data in the agent/sub-agent.
+
+ ... to be continued...
+
+
+ cache summary
+ ------------------------
+ The container-cached data access code is for cases when you want to
+ cache your data in the agent/sub-agent.
+
+ ... to be continued...
+
+
+
+
+File: eocExtCnuSubCarrierModuInfoTable_enums.h
+------------------------------------------------------------------------
+ This file contains macros for mapping enumeration values when the
+ enumerated values defined by the MIB do not match the values used
+ internally.
+
+ Review this file to see if any values need to be updated.
+
+
+File: eocExtCnuSubCarrierModuInfoTable_data_get.c
+------------------------------------------------------------------------
+ Get data for column
+ -------------------
+ TODO : retrieve column data from raw data
+ FUNC : eocExtCnuSubCarrierModuInfoList_get
+
+
+
+File: eocExtCnuSubCarrierModuInfoTable_data_set.c
+------------------------------------------------------------------------
+
+ This table does not support set requests.
+
+
+************************************************************************
+eocExtCnuSubCarrierModuInfoTable Reference
+------------------------------------------------------------------------
+
+Function flow
+----------------------------------------------------
+To give you the general idea of how the functions flow works, this
+example flow is from a complete table implementation.
+
+NOTE: Depending on your configuration, some of the functions used in the
+ examples below may not have been generated for the
+ eocExtCnuSubCarrierModuInfoTable table.
+
+ Conversely, the examples below may not include some functions that
+ were generated for the eocExtCnuSubCarrierModuInfoTable table.
+
+To watch the flow of the eocExtCnuSubCarrierModuInfoTable table, use the
+following debug tokens:
+
+ snmp_agent
+ helper:table:req
+ eocExtCnuSubCarrierModuInfoTable
+ verbose:eocExtCnuSubCarrierModuInfoTable
+ internal:eocExtCnuSubCarrierModuInfoTable
+
+e.g.
+ snmpd -f -Le -DeocExtCnuSubCarrierModuInfoTable,verbose:eocExtCnuSubCarrierModuInfoTable,internal:eocExtCnuSubCarrierModuInfoTable
+
+
+Initialization
+--------------------------------
+init_xxxTable: called xxx.c
+ initialize_table_xxxTable xxx.c
+ _xxxTable_initialize_interface xxx_interface.c
+ xxxTable_init_data xxx_data_access.c
+ _xxxTable_container_init xxx_interface.c
+ xxxTable_container_init xxx_data_access.c
+
+
+GET Request
+--------------------------------
+_cache_load xxx_interface.c
+ xxxTable_cache_load xxx_data_access.c
+ xxxTable_allocate_rowreq_ctx xxx_interface.c
+ xxxTable_allocate_data xxx_data_get.c
+ xxxTable_rowreq_ctx_init xxx_data_get.c
+ xxxTable_indexes_set xxx_data_get.c
+ xxxTable_indexes_set_tbl_idx xxx_data_get.c
+
+xxxTable_pre_request
+
+_mfd_xxxTable_object_lookup xxx_interface.c
+ xxxTable_row_prep xxx_data_access.c
+
+_mfd_xxxTable_get_values xxx_interface.c
+ _mfd_xxxTable_get_column xxx_interface.c
+ yyy_get xxx_data_get.c
+
+xxxTable_post_request
+
+
+GETNEXT Request
+--------------------------------
+_cache_load ...
+xxxTable_pre_request ...
+_mfd_xxxTable_object_lookup ...
+_mfd_xxxTable_get_values ...
+xxxTable_post_request ...
+
+
+SET Request: success
+--------------------------------
+_cache_load ...
+xxxTable_pre_request
+_mfd_xxxTable_object_lookup ...
+
+_mfd_xxxTable_check_objects xxx_interface.c
+ _xxxTable_check_column xxx_interface.c
+ yyy_check_value xxx_data_set.c
+
+_mfd_xxxTable_undo_setup xxx_interface.c
+ xxxTable_allocate_data ...
+ xxxTable_undo_setup xxx_interface.c
+ _xxxTable_undo_setup_column xxx_interface.c
+ yyy_undo_setup xxx_data_set.c
+
+_mfd_xxxTable_set_values xxx_interface.c
+ _xxxTable_set_column xxx_interface.c
+ yyy_set xxx_data_set.c
+
+_mfd_xxxTable_check_dependencies xxx_interface.c
+ xxxTable_check_dependencies xxx_data_set.c
+
+_mfd_xxxTable_commit xxx_interface.c
+ xxxTable_commit xxx_data_set.c
+
+_mfd_xxxTable_undo_cleanup xxx_interface.c
+ xxxTable_undo_cleanup xxx_data_set.c
+ xxxTable_release_data ...
+
+xxxTable_post_request ...
+
+
+SET Request: row creation
+--------------------------------
+_cache_load ...
+xxxTable_pre_request
+
+_mfd_xxxTable_object_lookup ...
+ xxxTable_index_from_oid xxx_interface.c
+ xxxTable_allocate_rowreq_ctx ...
+ ...
+ _xxxTable_check_indexes xxx_interface.c
+ yyy_check_index xxx_data_set.c
+ xxxTable_validate_index xxx_data_set.c
+
+_mfd_xxxTable_check_objects ...
+ _xxxTable_check_column ...
+ yyy_check_value ...
+ _xxxTable_check_column ...
+ yyy_check_value ...
+
+_mfd_xxxTable_undo_setup ...
+_mfd_xxxTable_set_values ...
+_mfd_xxxTable_check_dependencies ...
+_mfd_xxxTable_commit ...
+_mfd_xxxTable_undo_cleanup ...
+xxxTable_post_request ...
+
+
+SET Resuest: value error
+--------------------------------
+_cache_load ...
+xxxTable_pre_request ...
+_mfd_xxxTable_object_lookup ...
+
+_mfd_xxxTable_check_objects ...
+ _xxxTable_check_column ...
+ yyy_check_value ...
+ ERROR:"yyy value not supported"
+
+xxxTable_post_request ...
+
+
+SET Request: commit failure
+--------------------------------
+_cache_load ...
+xxxTable_pre_request ...
+_mfd_xxxTable_object_lookup ...
+_mfd_xxxTable_check_objects ...
+_mfd_xxxTable_undo_setup ...
+_mfd_xxxTable_set_values ...
+_mfd_xxxTable_check_dependencies ...
+
+_mfd_xxxTable_commit ...
+ xxxTable_commit ...
+ ERROR: bad rc -1
+
+_mfd_xxxTable_undo_commit xxx_interface.c
+ xxxTable_undo_commit xxx_data_set.c
+
+_mfd_xxxTable_undo_values xxx_interface.c
+ _xxxTable_undo_column xxx_interface.c
+ yyy_undo xxx_data_set.c
+
+_mfd_xxxTable_undo_cleanup ...
+xxxTable_post_request ...
+
+
+Row release (user initiated)
+--------------------------------
+xxxTable_release_rowreq_ctx xxx_interface.c
+ xxxTable_rowreq_ctx_cleanup xxx_data_get.c
+ xxxTable_release_data xxx_data_get.c
+
+
+
+Table / column details
+----------------------------------------------------
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuSubCarrierModuInfoTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuSubCarrierModuInfoTable is subid 2 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.2, length: 13
+*/
+
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuSubCarrierModuInfoEntry.eocExtCnuSubCarrierModuInfoCbatCardIndex
+ * eocExtCnuSubCarrierModuInfoCbatCardIndex is subid 1 of eocExtCnuSubCarrierModuInfoEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.2.1.1
+ * Description:
+cbat card number as index
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is INTEGER32 (based on perltype INTEGER32)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuSubCarrierModuInfoEntry.eocExtCnuSubCarrierModuInfoCnuIndex
+ * eocExtCnuSubCarrierModuInfoCnuIndex is subid 2 of eocExtCnuSubCarrierModuInfoEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.2.1.2
+ * Description:
+cnu numberas index
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is INTEGER32 (based on perltype INTEGER32)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuSubCarrierModuInfoEntry.eocExtCnuSubCarrierModuInfoSeq
+ * eocExtCnuSubCarrierModuInfoSeq is subid 3 of eocExtCnuSubCarrierModuInfoEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.2.1.3
+ * Description:
+modulation information segment sequence
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is INTEGER32 (based on perltype INTEGER32)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuSubCarrierModuInfoEntry.eocExtCnuSubCarrierModuInfoList
+ * eocExtCnuSubCarrierModuInfoList is subid 4 of eocExtCnuSubCarrierModuInfoEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.2.1.4
+ * Description:
+modulation information segment
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is OCTETSTR (based on perltype OCTETSTR)
+ * The net-snmp type is ASN_OCTET_STR. The C type decl is char (char)
+ * This data type requires a length.
+ */
+
+
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable.c
new file mode 100644
index 0000000000..0ed0f89aa5
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable.c
@@ -0,0 +1,201 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 14170 $ of $
+ *
+ * $Id:$
+ */
+/** \page MFD helper for eocExtCnuSubCarrierModuInfoTable
+ *
+ * \section intro Introduction
+ * Introductory text.
+ *
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuSubCarrierModuInfoTable.h"
+
+#include <net-snmp/agent/mib_modules.h>
+
+#include "eocExtCnuSubCarrierModuInfoTable_interface.h"
+
+oid eocExtCnuSubCarrierModuInfoTable_oid[] = { EOCEXTCNUSUBCARRIERMODUINFOTABLE_OID };
+int eocExtCnuSubCarrierModuInfoTable_oid_size = OID_LENGTH(eocExtCnuSubCarrierModuInfoTable_oid);
+
+ eocExtCnuSubCarrierModuInfoTable_registration eocExtCnuSubCarrierModuInfoTable_user_context;
+
+void initialize_table_eocExtCnuSubCarrierModuInfoTable(void);
+void shutdown_table_eocExtCnuSubCarrierModuInfoTable(void);
+
+
+/**
+ * Initializes the eocExtCnuSubCarrierModuInfoTable module
+ */
+void
+init_eocExtCnuSubCarrierModuInfoTable(void)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:init_eocExtCnuSubCarrierModuInfoTable","called\n"));
+
+ /*
+ * TODO:300:o: Perform eocExtCnuSubCarrierModuInfoTable one-time module initialization.
+ */
+
+ /*
+ * here we initialize all the tables we're planning on supporting
+ */
+ if (should_init("eocExtCnuSubCarrierModuInfoTable"))
+ initialize_table_eocExtCnuSubCarrierModuInfoTable();
+
+} /* init_eocExtCnuSubCarrierModuInfoTable */
+
+/**
+ * Shut-down the eocExtCnuSubCarrierModuInfoTable module (agent is exiting)
+ */
+void
+shutdown_eocExtCnuSubCarrierModuInfoTable(void)
+{
+ if (should_init("eocExtCnuSubCarrierModuInfoTable"))
+ shutdown_table_eocExtCnuSubCarrierModuInfoTable();
+
+}
+
+/**
+ * Initialize the table eocExtCnuSubCarrierModuInfoTable
+ * (Define its contents and how it's structured)
+ */
+void
+initialize_table_eocExtCnuSubCarrierModuInfoTable(void)
+{
+ eocExtCnuSubCarrierModuInfoTable_registration * user_context;
+ u_long flags;
+
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:initialize_table_eocExtCnuSubCarrierModuInfoTable","called\n"));
+
+ /*
+ * TODO:301:o: Perform eocExtCnuSubCarrierModuInfoTable one-time table initialization.
+ */
+
+ /*
+ * TODO:302:o: |->Initialize eocExtCnuSubCarrierModuInfoTable 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("eocExtCnuSubCarrierModuInfoTable", NULL, NULL);
+
+ /*
+ * No support for any flags yet, but in the future you would
+ * set any flags here.
+ */
+ flags = 0;
+
+ /*
+ * call interface initialization code
+ */
+ _eocExtCnuSubCarrierModuInfoTable_initialize_interface(user_context, flags);
+} /* initialize_table_eocExtCnuSubCarrierModuInfoTable */
+
+/**
+ * Shutdown the table eocExtCnuSubCarrierModuInfoTable
+ */
+void
+shutdown_table_eocExtCnuSubCarrierModuInfoTable(void)
+{
+ /*
+ * call interface shutdown code
+ */
+ _eocExtCnuSubCarrierModuInfoTable_shutdown_interface(&eocExtCnuSubCarrierModuInfoTable_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
+eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_init(eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx,
+ void *user_init_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_init","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:210:o: |-> Perform extra eocExtCnuSubCarrierModuInfoTable rowreq initialization. (eg DEFVALS)
+ */
+
+ return MFD_SUCCESS;
+} /* eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_init */
+
+/**
+ * extra context cleanup
+ *
+ */
+void eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_cleanup(eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_cleanup","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:211:o: |-> Perform extra eocExtCnuSubCarrierModuInfoTable rowreq cleanup.
+ */
+} /* eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_cleanup */
+
+/**
+ * pre-request callback
+ *
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR : other error
+ */
+int
+eocExtCnuSubCarrierModuInfoTable_pre_request(eocExtCnuSubCarrierModuInfoTable_registration * user_context)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_pre_request","called\n"));
+
+ /*
+ * TODO:510:o: Perform eocExtCnuSubCarrierModuInfoTable pre-request actions.
+ */
+
+ return MFD_SUCCESS;
+} /* eocExtCnuSubCarrierModuInfoTable_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
+eocExtCnuSubCarrierModuInfoTable_post_request(eocExtCnuSubCarrierModuInfoTable_registration * user_context, int rc)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_post_request","called\n"));
+
+ /*
+ * TODO:511:o: Perform eocExtCnuSubCarrierModuInfoTable post-request actions.
+ */
+
+ return MFD_SUCCESS;
+} /* eocExtCnuSubCarrierModuInfoTable_post_request */
+
+
+/** @{ */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable.h
new file mode 100644
index 0000000000..aedb0fc641
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable.h
@@ -0,0 +1,196 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUSUBCARRIERMODUINFOTABLE_H
+#define EOCEXTCNUSUBCARRIERMODUINFOTABLE_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(NSCRTV-EPONEOC-MOD-EOC-MIB)
+config_require(NSCRTV-EPONEOC-MOD-EOC-MIB/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_interface)
+config_require(NSCRTV-EPONEOC-MOD-EOC-MIB/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_access)
+config_require(NSCRTV-EPONEOC-MOD-EOC-MIB/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_get)
+config_require(NSCRTV-EPONEOC-MOD-EOC-MIB/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_set)
+ /* *INDENT-ON* */
+
+/* OID and column number definitions for eocExtCnuSubCarrierModuInfoTable */
+#include "eocExtCnuSubCarrierModuInfoTable_oids.h"
+
+/* enum definions */
+#include "eocExtCnuSubCarrierModuInfoTable_enums.h"
+
+/* *********************************************************************
+ * function declarations
+ */
+void init_eocExtCnuSubCarrierModuInfoTable(void);
+void shutdown_eocExtCnuSubCarrierModuInfoTable(void);
+
+/* *********************************************************************
+ * Table declarations
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuSubCarrierModuInfoTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuSubCarrierModuInfoTable is subid 2 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.2, length: 13
+*/
+/* *********************************************************************
+ * 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 eocExtCnuSubCarrierModuInfoTable registration context.
+ */
+typedef netsnmp_data_list eocExtCnuSubCarrierModuInfoTable_registration;
+
+/**********************************************************************/
+/*
+ * TODO:110:r: |-> Review eocExtCnuSubCarrierModuInfoTable data context structure.
+ * This structure is used to represent the data for eocExtCnuSubCarrierModuInfoTable.
+ */
+/*
+ * This structure contains storage for all the columns defined in the
+ * eocExtCnuSubCarrierModuInfoTable.
+ */
+typedef struct eocExtCnuSubCarrierModuInfoTable_data_s {
+
+ /*
+ * eocExtCnuSubCarrierModuInfoList(4)/OCTETSTR/ASN_OCTET_STR/char(char)//L/A/w/e/r/d/h
+ */
+ char eocExtCnuSubCarrierModuInfoList[65535];
+size_t eocExtCnuSubCarrierModuInfoList_len; /* # of char elements, not bytes */
+
+} eocExtCnuSubCarrierModuInfoTable_data;
+
+
+/*
+ * TODO:120:r: |-> Review eocExtCnuSubCarrierModuInfoTable mib index.
+ * This structure is used to represent the index for eocExtCnuSubCarrierModuInfoTable.
+ */
+typedef struct eocExtCnuSubCarrierModuInfoTable_mib_index_s {
+
+ /*
+ * eocExtCnuSubCarrierModuInfoCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
+ */
+ long eocExtCnuSubCarrierModuInfoCbatCardIndex;
+
+ /*
+ * eocExtCnuSubCarrierModuInfoCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
+ */
+ long eocExtCnuSubCarrierModuInfoCnuIndex;
+
+ /*
+ * eocExtCnuSubCarrierModuInfoSeq(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
+ */
+ long eocExtCnuSubCarrierModuInfoSeq;
+
+
+} eocExtCnuSubCarrierModuInfoTable_mib_index;
+
+ /*
+ * TODO:121:r: | |-> Review eocExtCnuSubCarrierModuInfoTable max index length.
+ * If you KNOW that your indexes will never exceed a certain
+ * length, update this macro to that length.
+*/
+#define MAX_eocExtCnuSubCarrierModuInfoTable_IDX_LEN 3
+
+
+/* *********************************************************************
+ * TODO:130:o: |-> Review eocExtCnuSubCarrierModuInfoTable Row request (rowreq) context.
+ * When your functions are called, you will be passed a
+ * eocExtCnuSubCarrierModuInfoTable_rowreq_ctx pointer.
+ */
+typedef struct eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_s {
+
+ /** this must be first for container compare to work */
+ netsnmp_index oid_idx;
+ oid oid_tmp[MAX_eocExtCnuSubCarrierModuInfoTable_IDX_LEN];
+
+ eocExtCnuSubCarrierModuInfoTable_mib_index tbl_idx;
+
+ eocExtCnuSubCarrierModuInfoTable_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 eocExtCnuSubCarrierModuInfoTable rowreq context.
+ */
+
+ /*
+ * storage for future expansion
+ */
+ netsnmp_data_list *eocExtCnuSubCarrierModuInfoTable_data_list;
+
+} eocExtCnuSubCarrierModuInfoTable_rowreq_ctx;
+
+typedef struct eocExtCnuSubCarrierModuInfoTable_ref_rowreq_ctx_s {
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx;
+} eocExtCnuSubCarrierModuInfoTable_ref_rowreq_ctx;
+
+/* *********************************************************************
+ * function prototypes
+ */
+ int eocExtCnuSubCarrierModuInfoTable_pre_request(eocExtCnuSubCarrierModuInfoTable_registration * user_context);
+ int eocExtCnuSubCarrierModuInfoTable_post_request(eocExtCnuSubCarrierModuInfoTable_registration * user_context,
+ int rc);
+
+ int eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_init(eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx,
+ void *user_init_ctx);
+ void eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_cleanup(eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx);
+
+
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *
+ eocExtCnuSubCarrierModuInfoTable_row_find_by_mib_index(eocExtCnuSubCarrierModuInfoTable_mib_index *mib_idx);
+
+extern oid eocExtCnuSubCarrierModuInfoTable_oid[];
+extern int eocExtCnuSubCarrierModuInfoTable_oid_size;
+
+
+#include "eocExtCnuSubCarrierModuInfoTable_interface.h"
+#include "eocExtCnuSubCarrierModuInfoTable_data_access.h"
+#include "eocExtCnuSubCarrierModuInfoTable_data_get.h"
+#include "eocExtCnuSubCarrierModuInfoTable_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 /* EOCEXTCNUSUBCARRIERMODUINFOTABLE_H */
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_access.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_access.c
new file mode 100644
index 0000000000..530059ee36
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_access.c
@@ -0,0 +1,338 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 14170 $ of $
+ *
+ * $Id:$
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuSubCarrierModuInfoTable.h"
+
+
+#include "eocExtCnuSubCarrierModuInfoTable_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 eocExtCnuSubCarrierModuInfoTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuSubCarrierModuInfoTable is subid 2 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.2, length: 13
+*/
+
+/**
+ * initialization for eocExtCnuSubCarrierModuInfoTable data access
+ *
+ * This function is called during startup to allow you to
+ * allocate any resources you need for the data table.
+ *
+ * @param eocExtCnuSubCarrierModuInfoTable_reg
+ * Pointer to eocExtCnuSubCarrierModuInfoTable_registration
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR : unrecoverable error.
+ */
+int
+eocExtCnuSubCarrierModuInfoTable_init_data(eocExtCnuSubCarrierModuInfoTable_registration * eocExtCnuSubCarrierModuInfoTable_reg)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_init_data","called\n"));
+
+ /*
+ * TODO:303:o: Initialize eocExtCnuSubCarrierModuInfoTable data.
+ */
+
+ return MFD_SUCCESS;
+} /* eocExtCnuSubCarrierModuInfoTable_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.
+ * @param cache A pointer to a cache structure. You can set the timeout
+ * and other cache flags using this pointer.
+ *
+ * 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.
+ *
+ * This is also the place to set up cache behavior. The default, to
+ * simply set the cache timeout, will work well with the default
+ * container. If you are using a custom container, you may want to
+ * look at the cache helper documentation to see if there are any
+ * flags you want to set.
+ *
+ * @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
+eocExtCnuSubCarrierModuInfoTable_container_init(netsnmp_container **container_ptr_ptr,
+ netsnmp_cache *cache)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_container_init","called\n"));
+
+ if (NULL == container_ptr_ptr) {
+ snmp_log(LOG_ERR,"bad container param to eocExtCnuSubCarrierModuInfoTable_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;
+
+ if (NULL == cache) {
+ snmp_log(LOG_ERR,"bad cache param to eocExtCnuSubCarrierModuInfoTable_container_init\n");
+ return;
+ }
+
+ /*
+ * TODO:345:A: Set up eocExtCnuSubCarrierModuInfoTable cache properties.
+ *
+ * Also for advanced users, you can set parameters for the
+ * cache. Do not change the magic pointer, as it is used
+ * by the MFD helper. To completely disable caching, set
+ * cache->enabled to 0.
+ */
+ cache->timeout = EOCEXTCNUSUBCARRIERMODUINFOTABLE_CACHE_TIMEOUT; /* seconds */
+} /* eocExtCnuSubCarrierModuInfoTable_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 eocExtCnuSubCarrierModuInfoTable_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
+eocExtCnuSubCarrierModuInfoTable_container_shutdown(netsnmp_container *container_ptr)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_container_shutdown","called\n"));
+
+ if (NULL == container_ptr) {
+ snmp_log(LOG_ERR,"bad params to eocExtCnuSubCarrierModuInfoTable_container_shutdown\n");
+ return;
+ }
+
+} /* eocExtCnuSubCarrierModuInfoTable_container_shutdown */
+
+/**
+ * load initial data
+ *
+ * TODO:350:M: Implement eocExtCnuSubCarrierModuInfoTable data load
+ * This function will also be called by the cache helper to load
+ * the container again (after the container free function has been
+ * called to free the previous contents).
+ *
+ * @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
+ * eocExtCnuSubCarrierModuInfoTable_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
+eocExtCnuSubCarrierModuInfoTable_container_load(netsnmp_container *container)
+{
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx;
+ size_t count = 0;
+
+ /*
+ * temporary storage for index values
+ */
+ /*
+ * eocExtCnuSubCarrierModuInfoCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
+ */
+ long eocExtCnuSubCarrierModuInfoCbatCardIndex;
+ /*
+ * eocExtCnuSubCarrierModuInfoCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
+ */
+ long eocExtCnuSubCarrierModuInfoCnuIndex;
+ /*
+ * eocExtCnuSubCarrierModuInfoSeq(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
+ */
+ long eocExtCnuSubCarrierModuInfoSeq;
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_container_load","called\n"));
+
+ /*
+ * TODO:351:M: |-> Load/update data in the eocExtCnuSubCarrierModuInfoTable container.
+ * loop over your eocExtCnuSubCarrierModuInfoTable data, allocate a rowreq context,
+ * set the index(es) [and data, optionally] and insert into
+ * the container.
+ */
+ while( 1 ) {
+ /*
+ * check for end of data; bail out if there is no more data
+ */
+ if( 1 )
+ break;
+
+ /*
+ * TODO:352:M: | |-> set indexes in new eocExtCnuSubCarrierModuInfoTable rowreq context.
+ * data context will be set from the param (unless NULL,
+ * in which case a new data context will be allocated)
+ */
+ rowreq_ctx = eocExtCnuSubCarrierModuInfoTable_allocate_rowreq_ctx(NULL);
+ if (NULL == rowreq_ctx) {
+ snmp_log(LOG_ERR, "memory allocation failed\n");
+ return MFD_RESOURCE_UNAVAILABLE;
+ }
+ if(MFD_SUCCESS != eocExtCnuSubCarrierModuInfoTable_indexes_set(rowreq_ctx
+ , eocExtCnuSubCarrierModuInfoCbatCardIndex
+ , eocExtCnuSubCarrierModuInfoCnuIndex
+ , eocExtCnuSubCarrierModuInfoSeq
+ )) {
+ snmp_log(LOG_ERR,"error setting index while loading "
+ "eocExtCnuSubCarrierModuInfoTable data.\n");
+ eocExtCnuSubCarrierModuInfoTable_release_rowreq_ctx(rowreq_ctx);
+ continue;
+ }
+
+ /*
+ * TODO:352:r: | |-> populate eocExtCnuSubCarrierModuInfoTable data context.
+ * Populate data context here. (optionally, delay until row prep)
+ */
+ /*
+ * TRANSIENT or semi-TRANSIENT data:
+ * copy data or save any info needed to do it in row_prep.
+ */
+ /*
+ * setup/save data for eocExtCnuSubCarrierModuInfoList
+ * eocExtCnuSubCarrierModuInfoList(4)/OCTETSTR/ASN_OCTET_STR/char(char)//L/A/w/e/r/d/h
+ */
+ /** no mapping */
+ /*
+ * make sure there is enough space for eocExtCnuSubCarrierModuInfoList data
+ */
+ if ((NULL == rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList) ||
+ (rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList_len <
+ (eocExtCnuSubCarrierModuInfoList_len* sizeof(eocExtCnuSubCarrierModuInfoList[0])))) {
+ snmp_log(LOG_ERR,"not enough space for value\n");
+ return MFD_ERROR;
+ }
+ rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList_len = eocExtCnuSubCarrierModuInfoList_len* sizeof(eocExtCnuSubCarrierModuInfoList[0]);
+ memcpy( rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList, eocExtCnuSubCarrierModuInfoList, eocExtCnuSubCarrierModuInfoList_len* sizeof(eocExtCnuSubCarrierModuInfoList[0]) );
+
+
+ /*
+ * insert into table container
+ */
+ CONTAINER_INSERT(container, rowreq_ctx);
+ ++count;
+ }
+
+ DEBUGMSGT(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_container_load",
+ "inserted %d records\n", count));
+
+ return MFD_SUCCESS;
+} /* eocExtCnuSubCarrierModuInfoTable_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
+eocExtCnuSubCarrierModuInfoTable_container_free(netsnmp_container *container)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_container_free","called\n"));
+
+ /*
+ * TODO:380:M: Free eocExtCnuSubCarrierModuInfoTable container data.
+ */
+} /* eocExtCnuSubCarrierModuInfoTable_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
+eocExtCnuSubCarrierModuInfoTable_row_prep( eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_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;
+} /* eocExtCnuSubCarrierModuInfoTable_row_prep */
+
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_access.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_access.h
new file mode 100644
index 0000000000..5ec5cc0493
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_access.h
@@ -0,0 +1,63 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUSUBCARRIERMODUINFOTABLE_DATA_ACCESS_H
+#define EOCEXTCNUSUBCARRIERMODUINFOTABLE_DATA_ACCESS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* *********************************************************************
+ * function declarations
+ */
+
+/* *********************************************************************
+ * Table declarations
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuSubCarrierModuInfoTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuSubCarrierModuInfoTable is subid 2 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.2, length: 13
+*/
+
+
+ int eocExtCnuSubCarrierModuInfoTable_init_data(eocExtCnuSubCarrierModuInfoTable_registration * eocExtCnuSubCarrierModuInfoTable_reg);
+
+
+ /*
+ * TODO:180:o: Review eocExtCnuSubCarrierModuInfoTable cache timeout.
+ * The number of seconds before the cache times out
+ */
+#define EOCEXTCNUSUBCARRIERMODUINFOTABLE_CACHE_TIMEOUT 60
+
+void eocExtCnuSubCarrierModuInfoTable_container_init(netsnmp_container **container_ptr_ptr,
+ netsnmp_cache *cache);
+void eocExtCnuSubCarrierModuInfoTable_container_shutdown(netsnmp_container *container_ptr);
+
+int eocExtCnuSubCarrierModuInfoTable_container_load(netsnmp_container *container);
+void eocExtCnuSubCarrierModuInfoTable_container_free(netsnmp_container *container);
+
+int eocExtCnuSubCarrierModuInfoTable_cache_load(netsnmp_container *container);
+void eocExtCnuSubCarrierModuInfoTable_cache_free(netsnmp_container *container);
+
+ int eocExtCnuSubCarrierModuInfoTable_row_prep( eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUSUBCARRIERMODUINFOTABLE_DATA_ACCESS_H */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_get.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_get.c
new file mode 100644
index 0000000000..290a34eb0a
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_get.c
@@ -0,0 +1,202 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12088 $ of $
+ *
+ * $Id:$
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuSubCarrierModuInfoTable.h"
+
+
+/** @defgroup data_get data_get: Routines to get data
+ *
+ * TODO:230:M: Implement eocExtCnuSubCarrierModuInfoTable get routines.
+ * TODO:240:M: Implement eocExtCnuSubCarrierModuInfoTable 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 eocExtCnuSubCarrierModuInfoTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuSubCarrierModuInfoTable is subid 2 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.2, length: 13
+*/
+
+/* ---------------------------------------------------------------------
+ * TODO:200:r: Implement eocExtCnuSubCarrierModuInfoTable data context functions.
+ */
+
+
+/**
+ * set mib index(es)
+ *
+ * @param tbl_idx mib index structure
+ * @param eocExtCnuSubCarrierModuInfoCbatCardIndex_val
+ * @param eocExtCnuSubCarrierModuInfoCnuIndex_val
+ * @param eocExtCnuSubCarrierModuInfoSeq_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
+eocExtCnuSubCarrierModuInfoTable_indexes_set_tbl_idx(eocExtCnuSubCarrierModuInfoTable_mib_index *tbl_idx, long eocExtCnuSubCarrierModuInfoCbatCardIndex_val, long eocExtCnuSubCarrierModuInfoCnuIndex_val, long eocExtCnuSubCarrierModuInfoSeq_val)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_indexes_set_tbl_idx","called\n"));
+
+ /* eocExtCnuSubCarrierModuInfoCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h */
+ tbl_idx->eocExtCnuSubCarrierModuInfoCbatCardIndex = eocExtCnuSubCarrierModuInfoCbatCardIndex_val;
+
+ /* eocExtCnuSubCarrierModuInfoCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h */
+ tbl_idx->eocExtCnuSubCarrierModuInfoCnuIndex = eocExtCnuSubCarrierModuInfoCnuIndex_val;
+
+ /* eocExtCnuSubCarrierModuInfoSeq(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h */
+ tbl_idx->eocExtCnuSubCarrierModuInfoSeq = eocExtCnuSubCarrierModuInfoSeq_val;
+
+
+ return MFD_SUCCESS;
+} /* eocExtCnuSubCarrierModuInfoTable_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
+eocExtCnuSubCarrierModuInfoTable_indexes_set(eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx, long eocExtCnuSubCarrierModuInfoCbatCardIndex_val, long eocExtCnuSubCarrierModuInfoCnuIndex_val, long eocExtCnuSubCarrierModuInfoSeq_val)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_indexes_set","called\n"));
+
+ if(MFD_SUCCESS != eocExtCnuSubCarrierModuInfoTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx
+ , eocExtCnuSubCarrierModuInfoCbatCardIndex_val
+ , eocExtCnuSubCarrierModuInfoCnuIndex_val
+ , eocExtCnuSubCarrierModuInfoSeq_val
+ ))
+ return MFD_ERROR;
+
+ /*
+ * convert mib index to oid index
+ */
+ rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
+ if(0 != eocExtCnuSubCarrierModuInfoTable_index_to_oid(&rowreq_ctx->oid_idx,
+ &rowreq_ctx->tbl_idx)) {
+ return MFD_ERROR;
+ }
+
+ return MFD_SUCCESS;
+} /* eocExtCnuSubCarrierModuInfoTable_indexes_set */
+
+
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuSubCarrierModuInfoEntry.eocExtCnuSubCarrierModuInfoList
+ * eocExtCnuSubCarrierModuInfoList is subid 4 of eocExtCnuSubCarrierModuInfoEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.2.1.4
+ * Description:
+modulation information segment
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is OCTETSTR (based on perltype OCTETSTR)
+ * The net-snmp type is ASN_OCTET_STR. The C type decl is char (char)
+ * This data type requires a length.
+ */
+/**
+ * Extract the current value of the eocExtCnuSubCarrierModuInfoList data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param eocExtCnuSubCarrierModuInfoList_val_ptr_ptr
+ * Pointer to storage for a char variable
+ * @param eocExtCnuSubCarrierModuInfoList_val_ptr_len_ptr
+ * Pointer to a size_t. On entry, it will contain the size (in bytes)
+ * pointed to by eocExtCnuSubCarrierModuInfoList.
+ * 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 (*eocExtCnuSubCarrierModuInfoList_val_ptr_len_ptr) bytes of memory,
+ * allocate it using malloc() and update eocExtCnuSubCarrierModuInfoList_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
+eocExtCnuSubCarrierModuInfoList_get( eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx, char **eocExtCnuSubCarrierModuInfoList_val_ptr_ptr, size_t *eocExtCnuSubCarrierModuInfoList_val_ptr_len_ptr )
+{
+ /** we should have a non-NULL pointer and enough storage */
+ netsnmp_assert( (NULL != eocExtCnuSubCarrierModuInfoList_val_ptr_ptr) && (NULL != *eocExtCnuSubCarrierModuInfoList_val_ptr_ptr));
+ netsnmp_assert( NULL != eocExtCnuSubCarrierModuInfoList_val_ptr_len_ptr );
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoList_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+/*
+ * TODO:231:o: |-> Extract the current value of the eocExtCnuSubCarrierModuInfoList data.
+ * copy (* eocExtCnuSubCarrierModuInfoList_val_ptr_ptr ) data and (* eocExtCnuSubCarrierModuInfoList_val_ptr_len_ptr ) from rowreq_ctx->data
+ */
+ /*
+ * make sure there is enough space for eocExtCnuSubCarrierModuInfoList data
+ */
+ if ((NULL == (* eocExtCnuSubCarrierModuInfoList_val_ptr_ptr )) ||
+ ((* eocExtCnuSubCarrierModuInfoList_val_ptr_len_ptr ) <
+ (rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList_len* sizeof(rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList[0])))) {
+ /*
+ * allocate space for eocExtCnuSubCarrierModuInfoList data
+ */
+ (* eocExtCnuSubCarrierModuInfoList_val_ptr_ptr ) = malloc(rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList_len* sizeof(rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList[0]));
+ if(NULL == (* eocExtCnuSubCarrierModuInfoList_val_ptr_ptr )) {
+ snmp_log(LOG_ERR,"could not allocate memory\n");
+ return MFD_ERROR;
+ }
+ }
+ (* eocExtCnuSubCarrierModuInfoList_val_ptr_len_ptr ) = rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList_len* sizeof(rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList[0]);
+ memcpy( (* eocExtCnuSubCarrierModuInfoList_val_ptr_ptr ), rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList, rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList_len* sizeof(rowreq_ctx->data.eocExtCnuSubCarrierModuInfoList[0]) );
+
+ return MFD_SUCCESS;
+} /* eocExtCnuSubCarrierModuInfoList_get */
+
+
+
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_get.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_get.h
new file mode 100644
index 0000000000..985eb12c7e
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_get.h
@@ -0,0 +1,59 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12088 $ of $
+ *
+ * $Id:$
+ *
+ * @file eocExtCnuSubCarrierModuInfoTable_data_get.h
+ *
+ * @addtogroup get
+ *
+ * Prototypes for get functions
+ *
+ * @{
+ */
+#ifndef EOCEXTCNUSUBCARRIERMODUINFOTABLE_DATA_GET_H
+#define EOCEXTCNUSUBCARRIERMODUINFOTABLE_DATA_GET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* *********************************************************************
+ * GET function declarations
+ */
+
+/* *********************************************************************
+ * GET Table declarations
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuSubCarrierModuInfoTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuSubCarrierModuInfoTable is subid 2 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.2, length: 13
+*/
+ /*
+ * indexes
+ */
+
+ int eocExtCnuSubCarrierModuInfoList_get( eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx, char **eocExtCnuSubCarrierModuInfoList_val_ptr_ptr, size_t *eocExtCnuSubCarrierModuInfoList_val_ptr_len_ptr );
+
+
+int eocExtCnuSubCarrierModuInfoTable_indexes_set_tbl_idx(eocExtCnuSubCarrierModuInfoTable_mib_index *tbl_idx, long eocExtCnuSubCarrierModuInfoCbatCardIndex_val, long eocExtCnuSubCarrierModuInfoCnuIndex_val, long eocExtCnuSubCarrierModuInfoSeq_val);
+int eocExtCnuSubCarrierModuInfoTable_indexes_set(eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx, long eocExtCnuSubCarrierModuInfoCbatCardIndex_val, long eocExtCnuSubCarrierModuInfoCnuIndex_val, long eocExtCnuSubCarrierModuInfoSeq_val);
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUSUBCARRIERMODUINFOTABLE_DATA_GET_H */
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_set.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_set.c
new file mode 100644
index 0000000000..32e33d6e2b
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_set.c
@@ -0,0 +1,24 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12077 $ of $
+ *
+ * $Id:$
+ *
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuSubCarrierModuInfoTable.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.
+ *
+ * @{
+ */
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_set.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_set.h
new file mode 100644
index 0000000000..572ffc6650
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_data_set.h
@@ -0,0 +1,27 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12077 $ of $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUSUBCARRIERMODUINFOTABLE_DATA_SET_H
+#define EOCEXTCNUSUBCARRIERMODUINFOTABLE_DATA_SET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* *********************************************************************
+ * SET function declarations
+ */
+
+/* *********************************************************************
+ * SET Table declarations
+ */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUSUBCARRIERMODUINFOTABLE_DATA_SET_H */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_enums.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_enums.h
new file mode 100644
index 0000000000..968c88eef3
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_enums.h
@@ -0,0 +1,40 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * : generic-table-enums.m2c 12526 2005-07-15 22:41:16Z rstory $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUSUBCARRIERMODUINFOTABLE_ENUMS_H
+#define EOCEXTCNUSUBCARRIERMODUINFOTABLE_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 eocExtCnuSubCarrierModuInfoTable
+ *
+ *************************************************************************
+ *************************************************************************/
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUSUBCARRIERMODUINFOTABLE_ENUMS_H */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_interface.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_interface.c
new file mode 100644
index 0000000000..bffd9dece1
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_interface.c
@@ -0,0 +1,911 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 15899 $ of $
+ *
+ * $Id:$
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * *** ***
+ * *** 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. ***
+ * *** ***
+ * *** ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuSubCarrierModuInfoTable.h"
+
+
+#include <net-snmp/agent/table_container.h>
+#include <net-snmp/library/container.h>
+
+#include "eocExtCnuSubCarrierModuInfoTable_interface.h"
+
+#include <ctype.h>
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuSubCarrierModuInfoTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuSubCarrierModuInfoTable is subid 2 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.2, length: 13
+*/
+typedef struct eocExtCnuSubCarrierModuInfoTable_interface_ctx_s {
+
+ netsnmp_container *container;
+ netsnmp_cache *cache;
+
+ eocExtCnuSubCarrierModuInfoTable_registration * user_ctx;
+
+ netsnmp_table_registration_info tbl_info;
+
+ netsnmp_baby_steps_access_methods access_multiplexer;
+
+} eocExtCnuSubCarrierModuInfoTable_interface_ctx;
+
+static eocExtCnuSubCarrierModuInfoTable_interface_ctx eocExtCnuSubCarrierModuInfoTable_if_ctx;
+
+static void _eocExtCnuSubCarrierModuInfoTable_container_init(
+ eocExtCnuSubCarrierModuInfoTable_interface_ctx *if_ctx);
+static void _eocExtCnuSubCarrierModuInfoTable_container_shutdown(
+ eocExtCnuSubCarrierModuInfoTable_interface_ctx *if_ctx);
+
+
+netsnmp_container *
+eocExtCnuSubCarrierModuInfoTable_container_get( void )
+{
+ return eocExtCnuSubCarrierModuInfoTable_if_ctx.container;
+}
+
+eocExtCnuSubCarrierModuInfoTable_registration *
+eocExtCnuSubCarrierModuInfoTable_registration_get( void )
+{
+ return eocExtCnuSubCarrierModuInfoTable_if_ctx.user_ctx;
+}
+
+eocExtCnuSubCarrierModuInfoTable_registration *
+eocExtCnuSubCarrierModuInfoTable_registration_set( eocExtCnuSubCarrierModuInfoTable_registration * newreg )
+{
+ eocExtCnuSubCarrierModuInfoTable_registration * old = eocExtCnuSubCarrierModuInfoTable_if_ctx.user_ctx;
+ eocExtCnuSubCarrierModuInfoTable_if_ctx.user_ctx = newreg;
+ return old;
+}
+
+int
+eocExtCnuSubCarrierModuInfoTable_container_size( void )
+{
+ return CONTAINER_SIZE(eocExtCnuSubCarrierModuInfoTable_if_ctx.container);
+}
+
+/*
+ * mfd multiplexer modes
+ */
+static Netsnmp_Node_Handler _mfd_eocExtCnuSubCarrierModuInfoTable_pre_request;
+static Netsnmp_Node_Handler _mfd_eocExtCnuSubCarrierModuInfoTable_post_request;
+static Netsnmp_Node_Handler _mfd_eocExtCnuSubCarrierModuInfoTable_object_lookup;
+static Netsnmp_Node_Handler _mfd_eocExtCnuSubCarrierModuInfoTable_get_values;
+/**
+ * @internal
+ * Initialize the table eocExtCnuSubCarrierModuInfoTable
+ * (Define its contents and how it's structured)
+ */
+void
+_eocExtCnuSubCarrierModuInfoTable_initialize_interface(eocExtCnuSubCarrierModuInfoTable_registration * reg_ptr, u_long flags)
+{
+ netsnmp_baby_steps_access_methods *access_multiplexer =
+ &eocExtCnuSubCarrierModuInfoTable_if_ctx.access_multiplexer;
+ netsnmp_table_registration_info *tbl_info = &eocExtCnuSubCarrierModuInfoTable_if_ctx.tbl_info;
+ netsnmp_handler_registration *reginfo;
+ netsnmp_mib_handler *handler;
+ int mfd_modes = 0;
+
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_eocExtCnuSubCarrierModuInfoTable_initialize_interface","called\n"));
+
+
+ /*************************************************
+ *
+ * save interface context for eocExtCnuSubCarrierModuInfoTable
+ */
+ /*
+ * Setting up the table's definition
+ */
+ netsnmp_table_helper_add_indexes(tbl_info,
+ ASN_INTEGER, /** index: eocExtCnuSubCarrierModuInfoCbatCardIndex */
+ ASN_INTEGER, /** index: eocExtCnuSubCarrierModuInfoCnuIndex */
+ ASN_INTEGER, /** index: eocExtCnuSubCarrierModuInfoSeq */
+ 0);
+
+ /* Define the minimum and maximum accessible columns. This
+ optimizes retrival. */
+ tbl_info->min_column = EOCEXTCNUSUBCARRIERMODUINFOTABLE_MIN_COL;
+ tbl_info->max_column = EOCEXTCNUSUBCARRIERMODUINFOTABLE_MAX_COL;
+
+ /*
+ * save users context
+ */
+ eocExtCnuSubCarrierModuInfoTable_if_ctx.user_ctx = reg_ptr;
+
+ /*
+ * call data access initialization code
+ */
+ eocExtCnuSubCarrierModuInfoTable_init_data(reg_ptr);
+
+ /*
+ * set up the container
+ */
+ _eocExtCnuSubCarrierModuInfoTable_container_init(&eocExtCnuSubCarrierModuInfoTable_if_ctx);
+ if (NULL == eocExtCnuSubCarrierModuInfoTable_if_ctx.container) {
+ snmp_log(LOG_ERR,"could not initialize container for eocExtCnuSubCarrierModuInfoTable\n");
+ return;
+ }
+
+ /*
+ * access_multiplexer: REQUIRED wrapper for get request handling
+ */
+ access_multiplexer->object_lookup = _mfd_eocExtCnuSubCarrierModuInfoTable_object_lookup;
+ access_multiplexer->get_values = _mfd_eocExtCnuSubCarrierModuInfoTable_get_values;
+
+ /*
+ * no wrappers yet
+ */
+ access_multiplexer->pre_request = _mfd_eocExtCnuSubCarrierModuInfoTable_pre_request;
+ access_multiplexer->post_request = _mfd_eocExtCnuSubCarrierModuInfoTable_post_request;
+
+
+ /*************************************************
+ *
+ * Create a registration, save our reg data, register table.
+ */
+ DEBUGMSGTL(("eocExtCnuSubCarrierModuInfoTable:init_eocExtCnuSubCarrierModuInfoTable",
+ "Registering eocExtCnuSubCarrierModuInfoTable as a mibs-for-dummies table.\n"));
+ handler = netsnmp_baby_steps_access_multiplexer_get(access_multiplexer);
+ reginfo = netsnmp_handler_registration_create("eocExtCnuSubCarrierModuInfoTable", handler,
+ eocExtCnuSubCarrierModuInfoTable_oid,
+ eocExtCnuSubCarrierModuInfoTable_oid_size,
+ HANDLER_CAN_BABY_STEP |
+ HANDLER_CAN_RONLY
+ );
+ if(NULL == reginfo) {
+ snmp_log(LOG_ERR,"error registering table eocExtCnuSubCarrierModuInfoTable\n");
+ return;
+ }
+ reginfo->my_reg_void = &eocExtCnuSubCarrierModuInfoTable_if_ctx;
+
+ /*************************************************
+ *
+ * set up baby steps handler, create it and inject it
+ */
+ if( access_multiplexer->object_lookup )
+ mfd_modes |= BABY_STEP_OBJECT_LOOKUP;
+ if( access_multiplexer->set_values )
+ mfd_modes |= BABY_STEP_SET_VALUES;
+ if( access_multiplexer->irreversible_commit )
+ mfd_modes |= BABY_STEP_IRREVERSIBLE_COMMIT;
+ if( access_multiplexer->object_syntax_checks )
+ mfd_modes |= BABY_STEP_CHECK_OBJECT;
+
+ if( access_multiplexer->pre_request )
+ mfd_modes |= BABY_STEP_PRE_REQUEST;
+ if( access_multiplexer->post_request )
+ mfd_modes |= BABY_STEP_POST_REQUEST;
+
+ if( access_multiplexer->undo_setup )
+ mfd_modes |= BABY_STEP_UNDO_SETUP;
+ if( access_multiplexer->undo_cleanup )
+ mfd_modes |= BABY_STEP_UNDO_CLEANUP;
+ if( access_multiplexer->undo_sets )
+ mfd_modes |= BABY_STEP_UNDO_SETS;
+
+ if( access_multiplexer->row_creation )
+ mfd_modes |= BABY_STEP_ROW_CREATE;
+ if( access_multiplexer->consistency_checks )
+ mfd_modes |= BABY_STEP_CHECK_CONSISTENCY;
+ if( access_multiplexer->commit )
+ mfd_modes |= BABY_STEP_COMMIT;
+ if( access_multiplexer->undo_commit )
+ mfd_modes |= BABY_STEP_UNDO_COMMIT;
+
+ handler = netsnmp_baby_steps_handler_get(mfd_modes);
+ netsnmp_inject_handler(reginfo, handler);
+
+ /*************************************************
+ *
+ * inject row_merge helper with prefix rootoid_len + 2 (entry.col)
+ */
+ handler = netsnmp_get_row_merge_handler(reginfo->rootoid_len + 2);
+ netsnmp_inject_handler(reginfo, handler);
+
+ /*************************************************
+ *
+ * inject container_table helper
+ */
+ handler =
+ netsnmp_container_table_handler_get(tbl_info,
+ eocExtCnuSubCarrierModuInfoTable_if_ctx.container,
+ TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+ netsnmp_inject_handler( reginfo, handler );
+
+ /*************************************************
+ *
+ * inject cache helper
+ */
+ if(NULL != eocExtCnuSubCarrierModuInfoTable_if_ctx.cache) {
+ handler = netsnmp_cache_handler_get(eocExtCnuSubCarrierModuInfoTable_if_ctx.cache);
+ netsnmp_inject_handler( reginfo, handler );
+ }
+
+ /*
+ * register table
+ */
+ netsnmp_register_table(reginfo, tbl_info);
+
+} /* _eocExtCnuSubCarrierModuInfoTable_initialize_interface */
+
+/**
+ * @internal
+ * Shutdown the table eocExtCnuSubCarrierModuInfoTable
+ */
+void
+_eocExtCnuSubCarrierModuInfoTable_shutdown_interface(eocExtCnuSubCarrierModuInfoTable_registration * reg_ptr)
+{
+ /*
+ * shutdown the container
+ */
+ _eocExtCnuSubCarrierModuInfoTable_container_shutdown(&eocExtCnuSubCarrierModuInfoTable_if_ctx);
+}
+
+void
+eocExtCnuSubCarrierModuInfoTable_valid_columns_set(netsnmp_column_info *vc)
+{
+ eocExtCnuSubCarrierModuInfoTable_if_ctx.tbl_info.valid_columns = vc;
+} /* eocExtCnuSubCarrierModuInfoTable_valid_columns_set */
+
+/**
+ * @internal
+ * convert the index component stored in the context to an oid
+ */
+int
+eocExtCnuSubCarrierModuInfoTable_index_to_oid(netsnmp_index *oid_idx,
+ eocExtCnuSubCarrierModuInfoTable_mib_index *mib_idx)
+{
+ int err = SNMP_ERR_NOERROR;
+
+ /*
+ * temp storage for parsing indexes
+ */
+ /*
+ * eocExtCnuSubCarrierModuInfoCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuSubCarrierModuInfoCbatCardIndex;
+ /*
+ * eocExtCnuSubCarrierModuInfoCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuSubCarrierModuInfoCnuIndex;
+ /*
+ * eocExtCnuSubCarrierModuInfoSeq(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuSubCarrierModuInfoSeq;
+
+ /*
+ * set up varbinds
+ */
+ memset( &var_eocExtCnuSubCarrierModuInfoCbatCardIndex, 0x00, sizeof(var_eocExtCnuSubCarrierModuInfoCbatCardIndex) );
+ var_eocExtCnuSubCarrierModuInfoCbatCardIndex.type = ASN_INTEGER;
+ memset( &var_eocExtCnuSubCarrierModuInfoCnuIndex, 0x00, sizeof(var_eocExtCnuSubCarrierModuInfoCnuIndex) );
+ var_eocExtCnuSubCarrierModuInfoCnuIndex.type = ASN_INTEGER;
+ memset( &var_eocExtCnuSubCarrierModuInfoSeq, 0x00, sizeof(var_eocExtCnuSubCarrierModuInfoSeq) );
+ var_eocExtCnuSubCarrierModuInfoSeq.type = ASN_INTEGER;
+
+ /*
+ * chain temp index varbinds together
+ */
+ var_eocExtCnuSubCarrierModuInfoCbatCardIndex.next_variable = &var_eocExtCnuSubCarrierModuInfoCnuIndex; var_eocExtCnuSubCarrierModuInfoCnuIndex.next_variable = &var_eocExtCnuSubCarrierModuInfoSeq; var_eocExtCnuSubCarrierModuInfoSeq.next_variable = NULL;
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_index_to_oid","called\n"));
+
+ /* eocExtCnuSubCarrierModuInfoCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h */
+ snmp_set_var_value(&var_eocExtCnuSubCarrierModuInfoCbatCardIndex, (u_char*)&mib_idx->eocExtCnuSubCarrierModuInfoCbatCardIndex,
+ sizeof(mib_idx->eocExtCnuSubCarrierModuInfoCbatCardIndex));
+
+ /* eocExtCnuSubCarrierModuInfoCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h */
+ snmp_set_var_value(&var_eocExtCnuSubCarrierModuInfoCnuIndex, (u_char*)&mib_idx->eocExtCnuSubCarrierModuInfoCnuIndex,
+ sizeof(mib_idx->eocExtCnuSubCarrierModuInfoCnuIndex));
+
+ /* eocExtCnuSubCarrierModuInfoSeq(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h */
+ snmp_set_var_value(&var_eocExtCnuSubCarrierModuInfoSeq, (u_char*)&mib_idx->eocExtCnuSubCarrierModuInfoSeq,
+ sizeof(mib_idx->eocExtCnuSubCarrierModuInfoSeq));
+
+
+ err = build_oid_noalloc(oid_idx->oids, oid_idx->len, &oid_idx->len,
+ NULL, 0, &var_eocExtCnuSubCarrierModuInfoCbatCardIndex);
+ if(err)
+ snmp_log(LOG_ERR,"error %d converting index to oid\n", err);
+
+ /*
+ * parsing may have allocated memory. free it.
+ */
+ snmp_reset_var_buffers( &var_eocExtCnuSubCarrierModuInfoCbatCardIndex );
+
+ return err;
+} /* eocExtCnuSubCarrierModuInfoTable_index_to_oid */
+
+/**
+ * extract eocExtCnuSubCarrierModuInfoTable indexes from a netsnmp_index
+ *
+ * @retval SNMP_ERR_NOERROR : no error
+ * @retval SNMP_ERR_GENERR : error
+ */
+int
+eocExtCnuSubCarrierModuInfoTable_index_from_oid(netsnmp_index *oid_idx,
+ eocExtCnuSubCarrierModuInfoTable_mib_index *mib_idx)
+{
+ int err = SNMP_ERR_NOERROR;
+
+ /*
+ * temp storage for parsing indexes
+ */
+ /*
+ * eocExtCnuSubCarrierModuInfoCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuSubCarrierModuInfoCbatCardIndex;
+ /*
+ * eocExtCnuSubCarrierModuInfoCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuSubCarrierModuInfoCnuIndex;
+ /*
+ * eocExtCnuSubCarrierModuInfoSeq(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuSubCarrierModuInfoSeq;
+
+ /*
+ * set up varbinds
+ */
+ memset( &var_eocExtCnuSubCarrierModuInfoCbatCardIndex, 0x00, sizeof(var_eocExtCnuSubCarrierModuInfoCbatCardIndex) );
+ var_eocExtCnuSubCarrierModuInfoCbatCardIndex.type = ASN_INTEGER;
+ memset( &var_eocExtCnuSubCarrierModuInfoCnuIndex, 0x00, sizeof(var_eocExtCnuSubCarrierModuInfoCnuIndex) );
+ var_eocExtCnuSubCarrierModuInfoCnuIndex.type = ASN_INTEGER;
+ memset( &var_eocExtCnuSubCarrierModuInfoSeq, 0x00, sizeof(var_eocExtCnuSubCarrierModuInfoSeq) );
+ var_eocExtCnuSubCarrierModuInfoSeq.type = ASN_INTEGER;
+
+ /*
+ * chain temp index varbinds together
+ */
+ var_eocExtCnuSubCarrierModuInfoCbatCardIndex.next_variable = &var_eocExtCnuSubCarrierModuInfoCnuIndex; var_eocExtCnuSubCarrierModuInfoCnuIndex.next_variable = &var_eocExtCnuSubCarrierModuInfoSeq; var_eocExtCnuSubCarrierModuInfoSeq.next_variable = NULL;
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_index_from_oid","called\n"));
+
+ /*
+ * parse the oid into the individual index components
+ */
+ err = parse_oid_indexes( oid_idx->oids, oid_idx->len,
+ &var_eocExtCnuSubCarrierModuInfoCbatCardIndex );
+ if (err == SNMP_ERR_NOERROR) {
+ /*
+ * copy out values
+ */
+ mib_idx->eocExtCnuSubCarrierModuInfoCbatCardIndex = *((long *)var_eocExtCnuSubCarrierModuInfoCbatCardIndex.val.string);
+ mib_idx->eocExtCnuSubCarrierModuInfoCnuIndex = *((long *)var_eocExtCnuSubCarrierModuInfoCnuIndex.val.string);
+ mib_idx->eocExtCnuSubCarrierModuInfoSeq = *((long *)var_eocExtCnuSubCarrierModuInfoSeq.val.string);
+
+
+ }
+
+ /*
+ * parsing may have allocated memory. free it.
+ */
+ snmp_reset_var_buffers( &var_eocExtCnuSubCarrierModuInfoCbatCardIndex );
+
+ return err;
+} /* eocExtCnuSubCarrierModuInfoTable_index_from_oid */
+
+
+/* *********************************************************************
+ * @internal
+ * allocate resources for a eocExtCnuSubCarrierModuInfoTable_rowreq_ctx
+ */
+eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *
+eocExtCnuSubCarrierModuInfoTable_allocate_rowreq_ctx(void *user_init_ctx)
+{
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx =
+ SNMP_MALLOC_TYPEDEF(eocExtCnuSubCarrierModuInfoTable_rowreq_ctx);
+
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_allocate_rowreq_ctx","called\n"));
+
+ if(NULL == rowreq_ctx) {
+ snmp_log(LOG_ERR,"Couldn't allocate memory for a "
+ "eocExtCnuSubCarrierModuInfoTable_rowreq_ctx.\n");
+ return NULL;
+ }
+
+ rowreq_ctx->oid_idx.oids = rowreq_ctx->oid_tmp;
+
+ rowreq_ctx->eocExtCnuSubCarrierModuInfoTable_data_list = NULL;
+
+ /*
+ * if we allocated data, call init routine
+ */
+ if (!(rowreq_ctx->rowreq_flags & MFD_ROW_DATA_FROM_USER)) {
+ if(SNMPERR_SUCCESS !=
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_init(rowreq_ctx, user_init_ctx)) {
+ eocExtCnuSubCarrierModuInfoTable_release_rowreq_ctx(rowreq_ctx);
+ rowreq_ctx = NULL;
+ }
+ }
+
+ return rowreq_ctx;
+} /* eocExtCnuSubCarrierModuInfoTable_allocate_rowreq_ctx */
+
+/*
+ * @internal
+ * release resources for a eocExtCnuSubCarrierModuInfoTable_rowreq_ctx
+ */
+void
+eocExtCnuSubCarrierModuInfoTable_release_rowreq_ctx(eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:eocExtCnuSubCarrierModuInfoTable_release_rowreq_ctx","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx_cleanup(rowreq_ctx);
+
+ /*
+ * free index oid pointer
+ */
+ if(rowreq_ctx->oid_idx.oids != rowreq_ctx->oid_tmp)
+ free(rowreq_ctx->oid_idx.oids);
+
+ SNMP_FREE(rowreq_ctx);
+} /* eocExtCnuSubCarrierModuInfoTable_release_rowreq_ctx */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_eocExtCnuSubCarrierModuInfoTable_pre_request(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_mfd_eocExtCnuSubCarrierModuInfoTable_pre_request",
+ "called\n"));
+
+ if (1 != netsnmp_row_merge_status_first(reginfo, agtreq_info)) {
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable",
+ "skipping additional pre_request\n"));
+ return SNMP_ERR_NOERROR;
+ }
+
+ rc = eocExtCnuSubCarrierModuInfoTable_pre_request(eocExtCnuSubCarrierModuInfoTable_if_ctx.user_ctx);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuSubCarrierModuInfoTable","error %d from "
+ "eocExtCnuSubCarrierModuInfoTable_pre_request\n", rc));
+ netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+ }
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuSubCarrierModuInfoTable_pre_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_eocExtCnuSubCarrierModuInfoTable_post_request(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ int rc, packet_rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_mfd_eocExtCnuSubCarrierModuInfoTable_post_request",
+ "called\n"));
+
+ /*
+ * release row context, if deleted
+ */
+ if (rowreq_ctx && (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED))
+ eocExtCnuSubCarrierModuInfoTable_release_rowreq_ctx(rowreq_ctx);
+
+ /*
+ * wait for last call before calling user
+ */
+ if (1 != netsnmp_row_merge_status_last(reginfo, agtreq_info)) {
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable",
+ "waiting for last post_request\n"));
+ return SNMP_ERR_NOERROR;
+ }
+
+ packet_rc = netsnmp_check_all_requests_error(agtreq_info->asp, 0);
+ rc = eocExtCnuSubCarrierModuInfoTable_post_request(eocExtCnuSubCarrierModuInfoTable_if_ctx.user_ctx,packet_rc);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuSubCarrierModuInfoTable","error %d from "
+ "eocExtCnuSubCarrierModuInfoTable_post_request\n", rc));
+ }
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuSubCarrierModuInfoTable_post_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_eocExtCnuSubCarrierModuInfoTable_object_lookup(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc = SNMP_ERR_NOERROR;
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_mfd_eocExtCnuSubCarrierModuInfoTable_object_lookup","called\n"));
+
+ /*
+ * get our context from mfd
+ * eocExtCnuSubCarrierModuInfoTable_interface_ctx *if_ctx =
+ * (eocExtCnuSubCarrierModuInfoTable_interface_ctx *)reginfo->my_reg_void;
+ */
+
+ if(NULL == rowreq_ctx) {
+ rc = SNMP_ERR_NOCREATION;
+ }
+
+ if (MFD_SUCCESS != rc)
+ netsnmp_request_set_error_all(requests, rc);
+ else
+ eocExtCnuSubCarrierModuInfoTable_row_prep(rowreq_ctx);
+
+ return SNMP_VALIDATE_ERR(rc);
+} /* _mfd_eocExtCnuSubCarrierModuInfoTable_object_lookup */
+
+/***********************************************************************
+ *
+ * GET processing
+ *
+ ***********************************************************************/
+/*
+ * @internal
+ * Retrieve the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_eocExtCnuSubCarrierModuInfoTable_get_column( eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx,
+ netsnmp_variable_list *var, int column )
+{
+ int rc = SNMPERR_SUCCESS;
+
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_mfd_eocExtCnuSubCarrierModuInfoTable_get_column",
+ "called for %d\n", column));
+
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ switch(column) {
+
+ /* (INDEX) eocExtCnuSubCarrierModuInfoCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h */
+ case COLUMN_EOCEXTCNUSUBCARRIERMODUINFOCBATCARDINDEX:
+ var->type = ASN_INTEGER;
+ var->val_len = sizeof(long);
+ (*var->val.integer) = rowreq_ctx->tbl_idx.eocExtCnuSubCarrierModuInfoCbatCardIndex;
+ break;
+
+ /* (INDEX) eocExtCnuSubCarrierModuInfoCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h */
+ case COLUMN_EOCEXTCNUSUBCARRIERMODUINFOCNUINDEX:
+ var->type = ASN_INTEGER;
+ var->val_len = sizeof(long);
+ (*var->val.integer) = rowreq_ctx->tbl_idx.eocExtCnuSubCarrierModuInfoCnuIndex;
+ break;
+
+ /* (INDEX) eocExtCnuSubCarrierModuInfoSeq(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/r/d/h */
+ case COLUMN_EOCEXTCNUSUBCARRIERMODUINFOSEQ:
+ var->type = ASN_INTEGER;
+ var->val_len = sizeof(long);
+ (*var->val.integer) = rowreq_ctx->tbl_idx.eocExtCnuSubCarrierModuInfoSeq;
+ break;
+
+ /* eocExtCnuSubCarrierModuInfoList(4)/OCTETSTR/ASN_OCTET_STR/char(char)//L/A/w/e/r/d/h */
+ case COLUMN_EOCEXTCNUSUBCARRIERMODUINFOLIST:
+ var->type = ASN_OCTET_STR;
+rc = eocExtCnuSubCarrierModuInfoList_get(rowreq_ctx, (char **)&var->val.string, &var->val_len );
+ break;
+
+ default:
+ if (EOCEXTCNUSUBCARRIERMODUINFOTABLE_MIN_COL <= column && column <= EOCEXTCNUSUBCARRIERMODUINFOTABLE_MAX_COL) {
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_mfd_eocExtCnuSubCarrierModuInfoTable_get_column",
+ "assume column %d is reserved\n", column));
+ rc = MFD_SKIP;
+ } else {
+ snmp_log(LOG_ERR,
+ "unknown column %d in _eocExtCnuSubCarrierModuInfoTable_get_column\n", column);
+ }
+ break;
+ }
+
+ return rc;
+} /* _eocExtCnuSubCarrierModuInfoTable_get_column */
+
+int
+_mfd_eocExtCnuSubCarrierModuInfoTable_get_values(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ netsnmp_table_request_info * tri;
+ u_char * old_string;
+ void (*dataFreeHook)(void *);
+ int rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_mfd_eocExtCnuSubCarrierModuInfoTable_get_values","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ for(;requests; requests = requests->next) {
+ /*
+ * save old pointer, so we can free it if replaced
+ */
+ old_string = requests->requestvb->val.string;
+ dataFreeHook = requests->requestvb->dataFreeHook;
+ if(NULL == requests->requestvb->val.string) {
+ requests->requestvb->val.string = requests->requestvb->buf;
+ requests->requestvb->val_len = sizeof(requests->requestvb->buf);
+ }
+ else if(requests->requestvb->buf == requests->requestvb->val.string) {
+ if(requests->requestvb->val_len != sizeof(requests->requestvb->buf))
+ requests->requestvb->val_len = sizeof(requests->requestvb->buf);
+ }
+
+ /*
+ * get column data
+ */
+ tri = netsnmp_extract_table_info(requests);
+ if(NULL == tri)
+ continue;
+
+ rc = _eocExtCnuSubCarrierModuInfoTable_get_column(rowreq_ctx, requests->requestvb, tri->colnum);
+ if(rc) {
+ if(MFD_SKIP == rc) {
+ requests->requestvb->type = SNMP_NOSUCHINSTANCE;
+ rc = SNMP_ERR_NOERROR;
+ }
+ }
+ else if (NULL == requests->requestvb->val.string) {
+ snmp_log(LOG_ERR,"NULL varbind data pointer!\n");
+ rc = SNMP_ERR_GENERR;
+ }
+ if(rc)
+ netsnmp_request_set_error(requests, SNMP_VALIDATE_ERR(rc));
+
+ /*
+ * if the buffer wasn't used previously for the old data (i.e. it
+ * was allcoated memory) and the get routine replaced the pointer,
+ * we need to free the previous pointer.
+ */
+ if(old_string && (old_string != requests->requestvb->buf) &&
+ (requests->requestvb->val.string != old_string)) {
+ if(dataFreeHook)
+ (*dataFreeHook)(old_string);
+ else
+ free(old_string);
+ }
+ } /* for results */
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuSubCarrierModuInfoTable_get_values */
+
+
+/***********************************************************************
+ *
+ * SET processing
+ *
+ ***********************************************************************/
+
+/*
+ * SET PROCESSING NOT APPLICABLE (per MIB or user setting)
+ */
+/***********************************************************************
+ *
+ * DATA ACCESS
+ *
+ ***********************************************************************/
+static void _container_free(netsnmp_container *container);
+
+/**
+ * @internal
+ */
+static int
+_cache_load(netsnmp_cache *cache, void *vmagic)
+{
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_cache_load","called\n"));
+
+ if((NULL == cache) || (NULL == cache->magic)) {
+ snmp_log(LOG_ERR, "invalid cache for eocExtCnuSubCarrierModuInfoTable_cache_load\n");
+ return -1;
+ }
+
+ /** should only be called for an invalid or expired cache */
+ netsnmp_assert((0 == cache->valid) || (1 == cache->expired));
+
+ /*
+ * call user code
+ */
+ return eocExtCnuSubCarrierModuInfoTable_container_load((netsnmp_container*)cache->magic);
+} /* _cache_load */
+
+/**
+ * @internal
+ */
+static void
+_cache_free(netsnmp_cache *cache, void *magic)
+{
+ netsnmp_container *container;
+
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_cache_free","called\n"));
+
+ if((NULL == cache) || (NULL == cache->magic)) {
+ snmp_log(LOG_ERR, "invalid cache in eocExtCnuSubCarrierModuInfoTable_cache_free\n");
+ return;
+ }
+
+ container = (netsnmp_container*)cache->magic;
+
+ _container_free(container);
+} /* _cache_free */
+
+/**
+ * @internal
+ */
+static void
+_container_item_free(eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx, void *context)
+{
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_container_item_free","called\n"));
+
+ if(NULL == rowreq_ctx)
+ return;
+
+ eocExtCnuSubCarrierModuInfoTable_release_rowreq_ctx(rowreq_ctx);
+} /* _container_item_free */
+
+/**
+ * @internal
+ */
+static void
+_container_free(netsnmp_container *container)
+{
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_container_free","called\n"));
+
+ if (NULL == container) {
+ snmp_log(LOG_ERR, "invalid container in eocExtCnuSubCarrierModuInfoTable_container_free\n");
+ return;
+ }
+
+ /*
+ * call user code
+ */
+ eocExtCnuSubCarrierModuInfoTable_container_free(container);
+
+ /*
+ * free all items. inefficient, but easy.
+ */
+ CONTAINER_CLEAR(container,
+ (netsnmp_container_obj_func *)_container_item_free,
+ NULL);
+} /* _container_free */
+
+/**
+ * @internal
+ * initialize the container with functions or wrappers
+ */
+void
+_eocExtCnuSubCarrierModuInfoTable_container_init(eocExtCnuSubCarrierModuInfoTable_interface_ctx *if_ctx)
+{
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_eocExtCnuSubCarrierModuInfoTable_container_init","called\n"));
+
+ /*
+ * cache init
+ */
+ if_ctx->cache = netsnmp_cache_create(30, /* timeout in seconds */
+ _cache_load, _cache_free,
+ eocExtCnuSubCarrierModuInfoTable_oid,
+ eocExtCnuSubCarrierModuInfoTable_oid_size);
+
+ if(NULL == if_ctx->cache) {
+ snmp_log(LOG_ERR, "error creating cache for eocExtCnuSubCarrierModuInfoTable\n");
+ return;
+ }
+
+ if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+ eocExtCnuSubCarrierModuInfoTable_container_init(&if_ctx->container, if_ctx->cache);
+ if(NULL == if_ctx->container)
+ if_ctx->container = netsnmp_container_find("eocExtCnuSubCarrierModuInfoTable:table_container");
+ if(NULL == if_ctx->container) {
+ snmp_log(LOG_ERR,"error creating container in "
+ "eocExtCnuSubCarrierModuInfoTable_container_init\n");
+ return;
+ }
+
+ if (NULL != if_ctx->cache)
+ if_ctx->cache->magic = (void*)if_ctx->container;
+} /* _eocExtCnuSubCarrierModuInfoTable_container_init */
+
+/**
+ * @internal
+ * shutdown the container with functions or wrappers
+ */
+void
+_eocExtCnuSubCarrierModuInfoTable_container_shutdown(eocExtCnuSubCarrierModuInfoTable_interface_ctx *if_ctx)
+{
+ DEBUGMSGTL(("internal:eocExtCnuSubCarrierModuInfoTable:_eocExtCnuSubCarrierModuInfoTable_container_shutdown","called\n"));
+
+ eocExtCnuSubCarrierModuInfoTable_container_shutdown(if_ctx->container);
+
+ _container_free(if_ctx->container);
+
+} /* _eocExtCnuSubCarrierModuInfoTable_container_shutdown */
+
+
+eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *
+eocExtCnuSubCarrierModuInfoTable_row_find_by_mib_index(eocExtCnuSubCarrierModuInfoTable_mib_index *mib_idx)
+{
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx;
+ oid oid_tmp[MAX_OID_LEN];
+ netsnmp_index oid_idx;
+ int rc;
+
+ /*
+ * set up storage for OID
+ */
+ oid_idx.oids = oid_tmp;
+ oid_idx.len = sizeof(oid_tmp)/sizeof(oid);
+
+ /*
+ * convert
+ */
+ rc = eocExtCnuSubCarrierModuInfoTable_index_to_oid(&oid_idx, mib_idx);
+ if (MFD_SUCCESS != rc)
+ return NULL;
+
+ rowreq_ctx = CONTAINER_FIND(eocExtCnuSubCarrierModuInfoTable_if_ctx.container, &oid_idx);
+
+ return rowreq_ctx;
+}
+
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_interface.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_interface.h
new file mode 100644
index 0000000000..7708dba386
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_interface.h
@@ -0,0 +1,84 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 15899 $ 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 EOCEXTCNUSUBCARRIERMODUINFOTABLE_INTERFACE_H
+#define EOCEXTCNUSUBCARRIERMODUINFOTABLE_INTERFACE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#include "eocExtCnuSubCarrierModuInfoTable.h"
+
+
+/* ********************************************************************
+ * Table declarations
+ */
+
+/* PUBLIC interface initialization routine */
+void _eocExtCnuSubCarrierModuInfoTable_initialize_interface(eocExtCnuSubCarrierModuInfoTable_registration * user_ctx,
+ u_long flags);
+void _eocExtCnuSubCarrierModuInfoTable_shutdown_interface(eocExtCnuSubCarrierModuInfoTable_registration * user_ctx);
+
+eocExtCnuSubCarrierModuInfoTable_registration *
+eocExtCnuSubCarrierModuInfoTable_registration_get( void );
+
+eocExtCnuSubCarrierModuInfoTable_registration *
+eocExtCnuSubCarrierModuInfoTable_registration_set( eocExtCnuSubCarrierModuInfoTable_registration * newreg );
+
+netsnmp_container *eocExtCnuSubCarrierModuInfoTable_container_get( void );
+int eocExtCnuSubCarrierModuInfoTable_container_size( void );
+
+ eocExtCnuSubCarrierModuInfoTable_rowreq_ctx * eocExtCnuSubCarrierModuInfoTable_allocate_rowreq_ctx(void *);
+void eocExtCnuSubCarrierModuInfoTable_release_rowreq_ctx(eocExtCnuSubCarrierModuInfoTable_rowreq_ctx *rowreq_ctx);
+
+int eocExtCnuSubCarrierModuInfoTable_index_to_oid(netsnmp_index *oid_idx,
+ eocExtCnuSubCarrierModuInfoTable_mib_index *mib_idx);
+int eocExtCnuSubCarrierModuInfoTable_index_from_oid(netsnmp_index *oid_idx,
+ eocExtCnuSubCarrierModuInfoTable_mib_index *mib_idx);
+
+/*
+ * access to certain internals. use with caution!
+ */
+void eocExtCnuSubCarrierModuInfoTable_valid_columns_set(netsnmp_column_info *vc);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUSUBCARRIERMODUINFOTABLE_INTERFACE_H */
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_oids.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_oids.h
new file mode 100644
index 0000000000..d7bb75a688
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuSubCarrierModuInfoTable/eocExtCnuSubCarrierModuInfoTable_oids.h
@@ -0,0 +1,37 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * : generic-table-oids.m2c 17548 2009-04-23 16:35:18Z hardaker $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUSUBCARRIERMODUINFOTABLE_OIDS_H
+#define EOCEXTCNUSUBCARRIERMODUINFOTABLE_OIDS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* column number definitions for table eocExtCnuSubCarrierModuInfoTable */
+#define EOCEXTCNUSUBCARRIERMODUINFOTABLE_OID 1,3,6,1,4,1,17409,2,4,20,1,1,2
+
+
+#define COLUMN_EOCEXTCNUSUBCARRIERMODUINFOCBATCARDINDEX 1
+
+#define COLUMN_EOCEXTCNUSUBCARRIERMODUINFOCNUINDEX 2
+
+#define COLUMN_EOCEXTCNUSUBCARRIERMODUINFOSEQ 3
+
+#define COLUMN_EOCEXTCNUSUBCARRIERMODUINFOLIST 4
+
+
+#define EOCEXTCNUSUBCARRIERMODUINFOTABLE_MIN_COL COLUMN_EOCEXTCNUSUBCARRIERMODUINFOCBATCARDINDEX
+#define EOCEXTCNUSUBCARRIERMODUINFOTABLE_MAX_COL COLUMN_EOCEXTCNUSUBCARRIERMODUINFOLIST
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUSUBCARRIERMODUINFOTABLE_OIDS_H */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable.h
new file mode 100644
index 0000000000..b3bd5d6a53
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable.h
@@ -0,0 +1,5 @@
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_interface)
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_access)
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_set)
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_get)
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable)
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/node-eocExtCnuCbatCardIndex.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/node-eocExtCnuCbatCardIndex.m2d
new file mode 100644
index 0000000000..b40b871370
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/node-eocExtCnuCbatCardIndex.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuCbatCardIndex
+##
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/node-eocExtCnuCnuIndex.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/node-eocExtCnuCnuIndex.m2d
new file mode 100644
index 0000000000..f11898bb7e
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/node-eocExtCnuCnuIndex.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuCnuIndex
+##
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/node-eocExtCnuMacLimitation.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/node-eocExtCnuMacLimitation.m2d
new file mode 100644
index 0000000000..74ae2d7e7a
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/node-eocExtCnuMacLimitation.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuMacLimitation
+##
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/table-eocExtCnuTable.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/table-eocExtCnuTable.m2d
new file mode 100644
index 0000000000..76b1f7650a
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/defaults/table-eocExtCnuTable.m2d
@@ -0,0 +1,103 @@
+## ########################################################################
+##
+## mib2c Table setting for eocExtCnuTable
+##
+## ########################################################################
+##
+## 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 = 1@
+##
+## ########################################################################
+##
+## 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 = 1@
+##
+## ########################################################################
+##
+## Include some example code?
+##
+@eval $m2c_include_examples = 0@
+##
+## ########################################################################
+##
+## 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 = 1@
+##
+## ########################################################################
+##
+## 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 = 0@
+@eval $mfd_generate_subagent = 0@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable-README-FIRST.txt b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable-README-FIRST.txt
new file mode 100644
index 0000000000..be07bd4d2f
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable-README-FIRST.txt
@@ -0,0 +1,167 @@
+************************************************************************
+eocExtCnuTable 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 eocExtCnuTable 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 : eocExtCnuTable_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 eocExtCnuTable_Makefile
+
+
+ File : eocExtCnuTable_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:
+
+ eocExtCnuTable-README-eocExtCnuTable.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 : eocExtCnuTable.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 : eocExtCnuTable_oids.h
+ Purpose : C #define definitions of the tables, columns, and OIDs
+
+ File : eocExtCnuTable_enums.h
+ Purpose : C #define definitions of the enumerated type values for
+ each column of each table that requires them.
+
+ File : eocExtCnuTable_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.
+
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable-README-eocExtCnuTable.txt b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable-README-eocExtCnuTable.txt
new file mode 100644
index 0000000000..d904f2ca9b
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable-README-eocExtCnuTable.txt
@@ -0,0 +1,579 @@
+************************************************************************
+eocExtCnuTable README
+------------------------------------------------------------------------
+ This readme file describes the code generated by mib2c (using the MIBs
+ for Dummies (MFD) configuration file). The code generated was
+ generated specifically for the following SNMP table:
+
+ eocExtCnuTable
+
+ Your code will be called when the snmp agent receives requests for
+ the eocExtCnuTable table. The agent will start by looking for the right
+ row in your existing data to operate on, if one exists.
+
+
+ Configuration Variables
+ ------------------------------------------------------------
+ Some variables used for code generation may be set to affect the code
+ generation. You may override these variables by setting them in the
+ file defaults/table-eocExtCnuTable.m2d, and then re-running mib2c.
+
+ m2c_table_settable (currently '1')
+ --------------------------------------------------------
+ This variable determines whether or not code is generated to support
+ MIB object which have an access of read-write or read-create. The
+ default is set based on whether or not the table contains writable
+ objects, but can be over-ridden.
+
+ Syntax: @eval $m2c_table_settable = 0@
+
+
+ m2c_table_dependencies (currently '0')
+ --------------------------------------------------------
+ This variable determines whether or not code is generated to support
+ checking dependencies between columns, rows or tables. The default
+ is set based on whether or not the table contains writable objects,
+ but can be over-ridden.
+
+ Syntax: @eval $m2c_table_dependencies = 0@
+
+
+ m2c_table_row_creation (currently '0')
+ --------------------------------------------------------
+ This variable determines whether or not code is generated to support
+ checking creation of new rows via SNMP. The default is set based on
+ whether or not the table contains read-create objects, but can be
+ over-ridden.
+
+ Syntax: @eval $m2c_table_row_creation = 0@
+
+
+ m2c_context_reg (currently 'netsnmp_data_list')
+ --------------------------------------------------------
+ This variable contains the structure name to typedef for the
+ eocExtCnuTable_registration.
+
+ During initilization, you will provide a pointer to a structure of
+ this type. This pointer is used as a parameter to many functions so
+ that you have access to your registration data. The default is a
+ netsnmp_data_list pointer, which will allow you to keep multiple
+ pointers tagged by a text name. If you have a new or existing structure
+ you would rather use, you can redefine this variable.
+
+
+ To avoid regenerating code, you may also change this typedef directly
+ in the eocExtCnuTable.h header.
+
+ Syntax: @eval $m2c_context_reg = "struct my_registration_context@
+
+
+ m2c_data_context (currently 'generated')
+ --------------------------------------------------------
+ This variable contains the structure name to typedef for the
+ eocExtCnuTable_data.
+
+ This typedef is used in the row request context structure for the table,
+ eocExtCnuTable_rowreq_ctx.
+
+ The typedef in the primary table context will be used for the data and
+ undo structure types. This structure should contain all the data
+ needed for all the columns in the table. The default is 'generated',
+ which will cuase a new data strcuture to be generated with data members
+ for each column.
+
+ To avoid regenerating code, you may also change this typedef directly
+ in the eocExtCnuTable.h header.
+
+ Syntax: @eval $m2c_data_context = "struct my_data_context"@
+
+
+ m2c_data_allocate (currently '0')
+ --------------------------------------------------------
+ This variable determines whether or not the data context (see above)
+ requires memory to be allocated. The default generated data structure
+ does not. If you are using a custom data context which needs to
+ allocate memory, override this value and two additional functions
+ will be generated:
+
+ eocExtCnuTable_allocate_data
+ eocExtCnuTable_release_data
+
+ Syntax: @eval $m2c_data_allocate = 1@
+
+
+ m2c_data_init (currently '1')
+ --------------------------------------------------------
+ This variable determines whether or not the data context (see above)
+ or any other items you have added to the table context requires
+ initialization. The default generated data structure does not. If you
+ are using a custom data context or have added items needing initialization
+ to the table context, override this value and two additional functions
+ will be generated:
+
+ eocExtCnuTable_rowreq_ctx_init
+ eocExtCnuTable_rowreq_ctx_cleanup
+
+ Syntax: @eval 1 = 1@
+
+
+ m2c_table_access (currently 'container-cached')
+ ------------------------------------------------------------------
+ This variable determines which data interface will be use to generate
+ code for looking up data for a given index. The default is the
+ 'container-cached' access code, which caches the data in a netsnmp-
+ container (usually a sorted array).
+
+ Available options can be determined by checking for mib2c configuration
+ files that begin with 'mfd-access-*'.
+
+ Syntax: @eval $m2c_table_access = 'container-cached'@
+
+
+ m2c_include_examples (currently '0')
+ ------------------------------------------------------------------
+ This variable determines whether or not to generate example code. The
+ default is to generate example code.
+
+ Syntax: @eval $m2c_include_examples = 0@
+
+
+ m2c_data_transient (currently '1')
+ ------------------------------------------------------------------
+ This variable determines how the generated example code deals with the
+ data during data lookup. See the table readme file for details on how
+ the current table access method interprets this value. In general,
+ a value of 0 indicates persistent data, 1 indicates semi-transient and
+ 2 indicates transient data.
+
+ Syntax: @eval $m2c_data_transient = 0@
+
+
+ Index(es) for the eocExtCnuTable table
+ ------------------------------------------------------------
+ The index(es) for the eocExtCnuTable table are:
+
+ eocExtCnuCbatCardIndex:
+ Syntax: INTEGER32
+ DataType: INTEGER32
+ ASN type: ASN_INTEGER
+ C-code type: long
+ eocExtCnuCnuIndex:
+ Syntax: INTEGER32
+ DataType: INTEGER32
+ ASN type: ASN_INTEGER
+ C-code type: long
+
+ You should know how to set all these values from your data context,
+ eocExtCnuTable_data.
+
+
+************************************************************************
+eocExtCnuTable File Overview
+------------------------------------------------------------------------
+ Several files have been generated to implement the eocExtCnuTable
+ table. We'll go through these files, one by one, explaining each and
+ letting you know which you need to edit.
+
+
+File: eocExtCnuTable_data_access.[c|h]
+------------------------------------------------------------------------
+ The eocExtCnuTable_data_access file contains the interface to your data in
+ its raw format. These functions are used to build the row cache or
+ locate the row (depending on the table access method).
+
+ Set MIB context
+ -----------------
+ TODO : Set MIB index values
+ FUNC : eocExtCnuTable_indexes_set
+ WHERE: eocExtCnuTable_data_access.c
+
+ This is a convenience function for setting the index context from
+ the native C data. Where necessary, value mapping should be done.
+
+ This function should update the table index values (found in
+ tbl_idx) for the given raw data.
+
+
+ container summary
+ ------------------------
+ The container data access code is for cases when you want to
+ store your data in the agent/sub-agent.
+
+ ... to be continued...
+
+
+ cache summary
+ ------------------------
+ The container-cached data access code is for cases when you want to
+ cache your data in the agent/sub-agent.
+
+ ... to be continued...
+
+
+
+
+File: eocExtCnuTable_enums.h
+------------------------------------------------------------------------
+ This file contains macros for mapping enumeration values when the
+ enumerated values defined by the MIB do not match the values used
+ internally.
+
+ Review this file to see if any values need to be updated.
+
+
+File: eocExtCnuTable_data_get.c
+------------------------------------------------------------------------
+ Get data for column
+ -------------------
+ TODO : retrieve column data from raw data
+ FUNC : eocExtCnuMacLimitation_get
+
+
+
+File: eocExtCnuTable_data_set.c
+------------------------------------------------------------------------
+
+ This code was generated based on the following assumptions or settings:
+
+ 1) Some of the values for this table have DEPENDENCIES on other objects.
+
+ DEPENDENCIES on other objects complicates SET request processing. When
+ one or more columns in a table depend on another object (in the same
+ table, or in another table), a DEPENDENCY exists. For example, if you
+ have a table that determine a color with three columns (red, green and
+ blue) that define the percentage of each primary color, the total for
+ the three columns must equal 100 percent. So, in addition to checking
+ that each colums has a valid value between 0 and 100, the total of
+ all three columns must equal 100.
+
+ Set $m2c_table_dependencies = 0 in defaults/table-eocExtCnuTable.m2d
+ and regenerate code if this assumption is incorrect.
+
+ 2) This table does not support ROW CREATION.
+
+ Supporting ROW CREATION allows new rows to be created via SNMP requests.
+
+
+
+ Undo setup
+ ----------
+ TODO : save data for undo
+ FUNC : eocExtCnuTable_undo_setup
+
+ This function will be called before the individual undo_setup functions are
+ called. This is where you should save any undo information which is not
+ directly related to a particular column. This function will only be called
+ once per row. After this function is called, any column which is being
+ set will have its individual node undo_setup function called.
+
+
+
+ Check value for column
+ ----------------------
+ TODO : perform additional validations on values for a set request
+ FUNC : eocExtCnuMacLimitation_check_value
+
+ The generated code will automatically validate incoming requests against
+ all the requirements specified by the syntax of the MIB. However, it is
+ often the case that additional requirements are specified in the
+ description of a MIB object. Those type of validations should be checked
+ in this function.
+
+
+ Undo setup for column
+ ---------------------
+ TODO : save the value for column
+ FUNC : eocExtCnuMacLimitation_undo_setup
+
+ After the table level undo setup function has been called, the individual
+ node undo setup functions will be called for columns which are being set.
+
+
+ Set value for column
+ --------------------
+ TODO : set the value for column
+ FUNC : eocExtCnuMacLimitation_set
+
+ After all the validations have been passed, this function will be called to
+ set the new value.
+
+
+ Undo value for column
+ ---------------------
+ TODO : undo set for column
+ FUNC : eocExtCnuMacLimitation_undo
+
+ If an error occurs after a column has been set, this function will be called
+ to undo the set and restore the previous state.
+
+
+
+ Commit changes
+ --------------
+ TODO : commit changes
+ FUNC : eocExtCnuTable_commit
+
+ After all values have been set, the commit function will be called.
+
+
+
+
+
+************************************************************************
+eocExtCnuTable Reference
+------------------------------------------------------------------------
+
+Function flow
+----------------------------------------------------
+To give you the general idea of how the functions flow works, this
+example flow is from a complete table implementation.
+
+NOTE: Depending on your configuration, some of the functions used in the
+ examples below may not have been generated for the
+ eocExtCnuTable table.
+
+ Conversely, the examples below may not include some functions that
+ were generated for the eocExtCnuTable table.
+
+To watch the flow of the eocExtCnuTable table, use the
+following debug tokens:
+
+ snmp_agent
+ helper:table:req
+ eocExtCnuTable
+ verbose:eocExtCnuTable
+ internal:eocExtCnuTable
+
+e.g.
+ snmpd -f -Le -DeocExtCnuTable,verbose:eocExtCnuTable,internal:eocExtCnuTable
+
+
+Initialization
+--------------------------------
+init_xxxTable: called xxx.c
+ initialize_table_xxxTable xxx.c
+ _xxxTable_initialize_interface xxx_interface.c
+ xxxTable_init_data xxx_data_access.c
+ _xxxTable_container_init xxx_interface.c
+ xxxTable_container_init xxx_data_access.c
+
+
+GET Request
+--------------------------------
+_cache_load xxx_interface.c
+ xxxTable_cache_load xxx_data_access.c
+ xxxTable_allocate_rowreq_ctx xxx_interface.c
+ xxxTable_allocate_data xxx_data_get.c
+ xxxTable_rowreq_ctx_init xxx_data_get.c
+ xxxTable_indexes_set xxx_data_get.c
+ xxxTable_indexes_set_tbl_idx xxx_data_get.c
+
+xxxTable_pre_request
+
+_mfd_xxxTable_object_lookup xxx_interface.c
+ xxxTable_row_prep xxx_data_access.c
+
+_mfd_xxxTable_get_values xxx_interface.c
+ _mfd_xxxTable_get_column xxx_interface.c
+ yyy_get xxx_data_get.c
+
+xxxTable_post_request
+
+
+GETNEXT Request
+--------------------------------
+_cache_load ...
+xxxTable_pre_request ...
+_mfd_xxxTable_object_lookup ...
+_mfd_xxxTable_get_values ...
+xxxTable_post_request ...
+
+
+SET Request: success
+--------------------------------
+_cache_load ...
+xxxTable_pre_request
+_mfd_xxxTable_object_lookup ...
+
+_mfd_xxxTable_check_objects xxx_interface.c
+ _xxxTable_check_column xxx_interface.c
+ yyy_check_value xxx_data_set.c
+
+_mfd_xxxTable_undo_setup xxx_interface.c
+ xxxTable_allocate_data ...
+ xxxTable_undo_setup xxx_interface.c
+ _xxxTable_undo_setup_column xxx_interface.c
+ yyy_undo_setup xxx_data_set.c
+
+_mfd_xxxTable_set_values xxx_interface.c
+ _xxxTable_set_column xxx_interface.c
+ yyy_set xxx_data_set.c
+
+_mfd_xxxTable_check_dependencies xxx_interface.c
+ xxxTable_check_dependencies xxx_data_set.c
+
+_mfd_xxxTable_commit xxx_interface.c
+ xxxTable_commit xxx_data_set.c
+
+_mfd_xxxTable_undo_cleanup xxx_interface.c
+ xxxTable_undo_cleanup xxx_data_set.c
+ xxxTable_release_data ...
+
+xxxTable_post_request ...
+
+
+SET Request: row creation
+--------------------------------
+_cache_load ...
+xxxTable_pre_request
+
+_mfd_xxxTable_object_lookup ...
+ xxxTable_index_from_oid xxx_interface.c
+ xxxTable_allocate_rowreq_ctx ...
+ ...
+ _xxxTable_check_indexes xxx_interface.c
+ yyy_check_index xxx_data_set.c
+ xxxTable_validate_index xxx_data_set.c
+
+_mfd_xxxTable_check_objects ...
+ _xxxTable_check_column ...
+ yyy_check_value ...
+ _xxxTable_check_column ...
+ yyy_check_value ...
+
+_mfd_xxxTable_undo_setup ...
+_mfd_xxxTable_set_values ...
+_mfd_xxxTable_check_dependencies ...
+_mfd_xxxTable_commit ...
+_mfd_xxxTable_undo_cleanup ...
+xxxTable_post_request ...
+
+
+SET Resuest: value error
+--------------------------------
+_cache_load ...
+xxxTable_pre_request ...
+_mfd_xxxTable_object_lookup ...
+
+_mfd_xxxTable_check_objects ...
+ _xxxTable_check_column ...
+ yyy_check_value ...
+ ERROR:"yyy value not supported"
+
+xxxTable_post_request ...
+
+
+SET Request: commit failure
+--------------------------------
+_cache_load ...
+xxxTable_pre_request ...
+_mfd_xxxTable_object_lookup ...
+_mfd_xxxTable_check_objects ...
+_mfd_xxxTable_undo_setup ...
+_mfd_xxxTable_set_values ...
+_mfd_xxxTable_check_dependencies ...
+
+_mfd_xxxTable_commit ...
+ xxxTable_commit ...
+ ERROR: bad rc -1
+
+_mfd_xxxTable_undo_commit xxx_interface.c
+ xxxTable_undo_commit xxx_data_set.c
+
+_mfd_xxxTable_undo_values xxx_interface.c
+ _xxxTable_undo_column xxx_interface.c
+ yyy_undo xxx_data_set.c
+
+_mfd_xxxTable_undo_cleanup ...
+xxxTable_post_request ...
+
+
+Row release (user initiated)
+--------------------------------
+xxxTable_release_rowreq_ctx xxx_interface.c
+ xxxTable_rowreq_ctx_cleanup xxx_data_get.c
+ xxxTable_release_data xxx_data_get.c
+
+
+
+Table / column details
+----------------------------------------------------
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuTable is subid 1 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1, length: 13
+*/
+
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEntry.eocExtCnuCbatCardIndex
+ * eocExtCnuCbatCardIndex is subid 1 of eocExtCnuEntry.
+ * Its status is Current, and its access level is NoAccess.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1.1.1
+ * Description:
+The index of the CBAT card.
+ *
+ * Attributes:
+ * accessible 0 isscalar 0 enums 0 hasdefval 0
+ * readable 0 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is INTEGER32 (based on perltype INTEGER32)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
+ *
+ *
+ *
+ * NOTE: NODE eocExtCnuCbatCardIndex IS NOT ACCESSIBLE
+ *
+ *
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEntry.eocExtCnuCnuIndex
+ * eocExtCnuCnuIndex is subid 2 of eocExtCnuEntry.
+ * Its status is Current, and its access level is NoAccess.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1.1.2
+ * Description:
+The index of the CNU.
+ *
+ * Attributes:
+ * accessible 0 isscalar 0 enums 0 hasdefval 0
+ * readable 0 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is INTEGER32 (based on perltype INTEGER32)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
+ *
+ *
+ *
+ * NOTE: NODE eocExtCnuCnuIndex IS NOT ACCESSIBLE
+ *
+ *
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEntry.eocExtCnuMacLimitation
+ * eocExtCnuMacLimitation is subid 3 of eocExtCnuEntry.
+ * Its status is Current, and its access level is ReadWrite.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1.1.3
+ * Description:
+The MAC Limitation of the CNU.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 1 hashint 0
+ * settable 1
+ *
+ * Ranges: 0 - 128;
+ *
+ * Its syntax is INTEGER32 (based on perltype INTEGER32)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
+ */
+
+
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable.c
new file mode 100644
index 0000000000..c5c4249337
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable.c
@@ -0,0 +1,218 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 14170 $ of $
+ *
+ * $Id:$
+ */
+/** \page MFD helper for eocExtCnuTable
+ *
+ * \section intro Introduction
+ * Introductory text.
+ *
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuTable.h"
+
+#include <net-snmp/agent/mib_modules.h>
+
+#include "eocExtCnuTable_interface.h"
+
+oid eocExtCnuTable_oid[] = { EOCEXTCNUTABLE_OID };
+int eocExtCnuTable_oid_size = OID_LENGTH(eocExtCnuTable_oid);
+
+ eocExtCnuTable_registration eocExtCnuTable_user_context;
+
+void initialize_table_eocExtCnuTable(void);
+void shutdown_table_eocExtCnuTable(void);
+
+
+/**
+ * Initializes the eocExtCnuTable module
+ */
+void
+init_eocExtCnuTable(void)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:init_eocExtCnuTable","called\n"));
+
+ /*
+ * TODO:300:o: Perform eocExtCnuTable one-time module initialization.
+ */
+
+ /*
+ * here we initialize all the tables we're planning on supporting
+ */
+ if (should_init("eocExtCnuTable"))
+ initialize_table_eocExtCnuTable();
+
+} /* init_eocExtCnuTable */
+
+/**
+ * Shut-down the eocExtCnuTable module (agent is exiting)
+ */
+void
+shutdown_eocExtCnuTable(void)
+{
+ if (should_init("eocExtCnuTable"))
+ shutdown_table_eocExtCnuTable();
+
+}
+
+/**
+ * Initialize the table eocExtCnuTable
+ * (Define its contents and how it's structured)
+ */
+void
+initialize_table_eocExtCnuTable(void)
+{
+ eocExtCnuTable_registration * user_context;
+ u_long flags;
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:initialize_table_eocExtCnuTable","called\n"));
+
+ /*
+ * TODO:301:o: Perform eocExtCnuTable one-time table initialization.
+ */
+
+ /*
+ * TODO:302:o: |->Initialize eocExtCnuTable 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("eocExtCnuTable", NULL, NULL);
+
+ /*
+ * No support for any flags yet, but in the future you would
+ * set any flags here.
+ */
+ flags = 0;
+
+ /*
+ * call interface initialization code
+ */
+ _eocExtCnuTable_initialize_interface(user_context, flags);
+} /* initialize_table_eocExtCnuTable */
+
+/**
+ * Shutdown the table eocExtCnuTable
+ */
+void
+shutdown_table_eocExtCnuTable(void)
+{
+ /*
+ * call interface shutdown code
+ */
+ _eocExtCnuTable_shutdown_interface(&eocExtCnuTable_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
+eocExtCnuTable_rowreq_ctx_init(eocExtCnuTable_rowreq_ctx *rowreq_ctx,
+ void *user_init_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_rowreq_ctx_init","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:210:o: |-> Perform extra eocExtCnuTable rowreq initialization. (eg DEFVALS)
+ */
+
+ return MFD_SUCCESS;
+} /* eocExtCnuTable_rowreq_ctx_init */
+
+/**
+ * extra context cleanup
+ *
+ */
+void eocExtCnuTable_rowreq_ctx_cleanup(eocExtCnuTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_rowreq_ctx_cleanup","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:211:o: |-> Perform extra eocExtCnuTable rowreq cleanup.
+ */
+} /* eocExtCnuTable_rowreq_ctx_cleanup */
+
+/**
+ * pre-request callback
+ *
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR : other error
+ */
+int
+eocExtCnuTable_pre_request(eocExtCnuTable_registration * user_context)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_pre_request","called\n"));
+
+ /*
+ * TODO:510:o: Perform eocExtCnuTable pre-request actions.
+ */
+
+ return MFD_SUCCESS;
+} /* eocExtCnuTable_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
+eocExtCnuTable_post_request(eocExtCnuTable_registration * user_context, int rc)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_post_request","called\n"));
+
+ /*
+ * TODO:511:o: Perform eocExtCnuTable post-request actions.
+ */
+
+ /*
+ * check to set if any rows were changed.
+ */
+ if (eocExtCnuTable_dirty_get()) {
+ /*
+ * check if request was successful. If so, this would be
+ * a good place to save data to its persistent store.
+ */
+ if (MFD_SUCCESS == rc) {
+ /*
+ * save changed rows, if you haven't already
+ */
+ }
+
+ eocExtCnuTable_dirty_set(0); /* clear table dirty flag */
+ }
+
+ return MFD_SUCCESS;
+} /* eocExtCnuTable_post_request */
+
+
+/** @{ */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable.h
new file mode 100644
index 0000000000..be2fd13144
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable.h
@@ -0,0 +1,198 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUTABLE_H
+#define EOCEXTCNUTABLE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** @addtogroup misc misc: Miscellaneous routines
+ *
+ * @{
+ */
+#include <net-snmp/library/asn1.h>
+
+/* other required module components */
+
+/* OID and column number definitions for eocExtCnuTable */
+#include "eocExtCnuTable_oids.h"
+
+/* enum definions */
+#include "eocExtCnuTable_enums.h"
+
+#include "EoCCommon.h"
+
+
+/* *********************************************************************
+ * function declarations
+ */
+void init_eocExtCnuTable(void);
+void shutdown_eocExtCnuTable(void);
+
+/* *********************************************************************
+ * Table declarations
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuTable is subid 1 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1, length: 13
+*/
+/* *********************************************************************
+ * 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 eocExtCnuTable registration context.
+ */
+typedef netsnmp_data_list eocExtCnuTable_registration;
+
+/**********************************************************************/
+/*
+ * TODO:110:r: |-> Review eocExtCnuTable data context structure.
+ * This structure is used to represent the data for eocExtCnuTable.
+ */
+/*
+ * This structure contains storage for all the columns defined in the
+ * eocExtCnuTable.
+ */
+typedef struct eocExtCnuTable_data_s {
+
+ /*
+ * eocExtCnuMacLimitation(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/W/e/R/d/h
+ */
+ long eocExtCnuMacLimitation;
+
+} eocExtCnuTable_data;
+
+
+/* *********************************************************************
+ * TODO:115:o: |-> Review eocExtCnuTable undo context.
+ * We're just going to use the same data structure for our
+ * undo_context. If you want to do something more efficent,
+ * define your typedef here.
+ */
+typedef eocExtCnuTable_data eocExtCnuTable_undo_data;
+
+/*
+ * TODO:120:r: |-> Review eocExtCnuTable mib index.
+ * This structure is used to represent the index for eocExtCnuTable.
+ */
+typedef struct eocExtCnuTable_mib_index_s {
+
+ /*
+ * eocExtCnuCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ long eocExtCnuCbatCardIndex;
+
+ /*
+ * eocExtCnuCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ long eocExtCnuCnuIndex;
+
+
+} eocExtCnuTable_mib_index;
+
+ /*
+ * TODO:121:r: | |-> Review eocExtCnuTable max index length.
+ * If you KNOW that your indexes will never exceed a certain
+ * length, update this macro to that length.
+*/
+#define MAX_eocExtCnuTable_IDX_LEN 2
+
+
+/* *********************************************************************
+ * TODO:130:o: |-> Review eocExtCnuTable Row request (rowreq) context.
+ * When your functions are called, you will be passed a
+ * eocExtCnuTable_rowreq_ctx pointer.
+ */
+typedef struct eocExtCnuTable_rowreq_ctx_s {
+
+ /** this must be first for container compare to work */
+ netsnmp_index oid_idx;
+ oid oid_tmp[MAX_eocExtCnuTable_IDX_LEN];
+
+ eocExtCnuTable_mib_index tbl_idx;
+
+ eocExtCnuTable_data data;
+ eocExtCnuTable_undo_data * undo;
+ unsigned int column_set_flags; /* flags for set columns */
+
+
+ /*
+ * 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 eocExtCnuTable rowreq context.
+ */
+
+ /*
+ * storage for future expansion
+ */
+ netsnmp_data_list *eocExtCnuTable_data_list;
+
+} eocExtCnuTable_rowreq_ctx;
+
+typedef struct eocExtCnuTable_ref_rowreq_ctx_s {
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx;
+} eocExtCnuTable_ref_rowreq_ctx;
+
+/* *********************************************************************
+ * function prototypes
+ */
+ int eocExtCnuTable_pre_request(eocExtCnuTable_registration * user_context);
+ int eocExtCnuTable_post_request(eocExtCnuTable_registration * user_context,
+ int rc);
+
+ int eocExtCnuTable_rowreq_ctx_init(eocExtCnuTable_rowreq_ctx *rowreq_ctx,
+ void *user_init_ctx);
+ void eocExtCnuTable_rowreq_ctx_cleanup(eocExtCnuTable_rowreq_ctx *rowreq_ctx);
+
+ int eocExtCnuTable_commit(eocExtCnuTable_rowreq_ctx * rowreq_ctx);
+
+ eocExtCnuTable_rowreq_ctx *
+ eocExtCnuTable_row_find_by_mib_index(eocExtCnuTable_mib_index *mib_idx);
+
+extern oid eocExtCnuTable_oid[];
+extern int eocExtCnuTable_oid_size;
+
+
+#include "eocExtCnuTable_interface.h"
+#include "eocExtCnuTable_data_access.h"
+#include "eocExtCnuTable_data_get.h"
+#include "eocExtCnuTable_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 /* EOCEXTCNUTABLE_H */
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_access.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_access.c
new file mode 100644
index 0000000000..07fffa02b6
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_access.c
@@ -0,0 +1,373 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 14170 $ of $
+ *
+ * $Id:$
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuTable.h"
+
+
+#include "eocExtCnuTable_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 eocExtCnuTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuTable is subid 1 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1, length: 13
+*/
+
+/**
+ * initialization for eocExtCnuTable data access
+ *
+ * This function is called during startup to allow you to
+ * allocate any resources you need for the data table.
+ *
+ * @param eocExtCnuTable_reg
+ * Pointer to eocExtCnuTable_registration
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR : unrecoverable error.
+ */
+int
+eocExtCnuTable_init_data(eocExtCnuTable_registration * eocExtCnuTable_reg)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_init_data","called\n"));
+
+ /*
+ * TODO:303:o: Initialize eocExtCnuTable data.
+ */
+
+ return MFD_SUCCESS;
+} /* eocExtCnuTable_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.
+ * @param cache A pointer to a cache structure. You can set the timeout
+ * and other cache flags using this pointer.
+ *
+ * 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.
+ *
+ * This is also the place to set up cache behavior. The default, to
+ * simply set the cache timeout, will work well with the default
+ * container. If you are using a custom container, you may want to
+ * look at the cache helper documentation to see if there are any
+ * flags you want to set.
+ *
+ * @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
+eocExtCnuTable_container_init(netsnmp_container **container_ptr_ptr,
+ netsnmp_cache *cache)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_container_init","called\n"));
+
+ if (NULL == container_ptr_ptr) {
+ snmp_log(LOG_ERR,"bad container param to eocExtCnuTable_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;
+
+ if (NULL == cache) {
+ snmp_log(LOG_ERR,"bad cache param to eocExtCnuTable_container_init\n");
+ return;
+ }
+
+ /*
+ * TODO:345:A: Set up eocExtCnuTable cache properties.
+ *
+ * Also for advanced users, you can set parameters for the
+ * cache. Do not change the magic pointer, as it is used
+ * by the MFD helper. To completely disable caching, set
+ * cache->enabled to 0.
+ */
+ cache->timeout = EOCEXTCNUTABLE_CACHE_TIMEOUT; /* seconds */
+} /* eocExtCnuTable_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 eocExtCnuTable_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
+eocExtCnuTable_container_shutdown(netsnmp_container *container_ptr)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_container_shutdown","called\n"));
+
+ if (NULL == container_ptr) {
+ snmp_log(LOG_ERR,"bad params to eocExtCnuTable_container_shutdown\n");
+ return;
+ }
+
+} /* eocExtCnuTable_container_shutdown */
+
+/**
+ * load initial data
+ *
+ * TODO:350:M: Implement eocExtCnuTable data load
+ * This function will also be called by the cache helper to load
+ * the container again (after the container free function has been
+ * called to free the previous contents).
+ *
+ * @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
+ * eocExtCnuTable_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
+eocExtCnuTable_container_load(netsnmp_container *container)
+{
+
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx;
+
+ int rc = MFD_SUCCESS;
+ libspid_eoc_maclimit_entry_t
+ maclimit_entries[LIBSPID_EOC_MACLIMIT_ITMES_MAX];
+ int maclimit_count;
+ libspid_eoc_wl_entry_t eoc_wl_entry;
+ int i = 0;
+ int count = 0;
+ int tei;
+ int ret;
+
+
+ /*
+ * temporary storage for index values
+ */
+ /*
+ * eocExtCnuCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ long eocExtCnuCbatCardIndex = 0;
+ /*
+ * eocExtCnuCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ long eocExtCnuCnuIndex;
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_container_load","called\n"));
+
+ /*
+ * TODO:351:M: |-> Load/update data in the eocExtCnuTable container.
+ * loop over your eocExtCnuTable data, allocate a rowreq context,
+ * set the index(es) [and data, optionally] and insert into
+ * the container.
+ */
+ memset (maclimit_entries, 0, sizeof (maclimit_entries));
+
+ if (LIBSPID_SUCCESS != libspid_eoc_maclimit_check ())
+ {
+ snmp_log (LOG_ERR, "errors detected in maclimitation"
+ " configuration file, cannot sync\n");
+ }
+
+ rc = libspid_eoc_maclimit_get_list (maclimit_entries, &maclimit_count);
+ if (LIBSPID_SUCCESS != rc)
+ {
+ snmp_log (LOG_ERR, "get maclimit list error\n");
+ return MFD_ERROR;
+ }
+
+ if (maclimit_count == 0)
+ rc = MFD_END_OF_DATA;
+ DEBUGMSGTL (("verbose:eocExtCnuTable:eocExtCnuTable_container_load:"
+ "maclimit_count = %d\n", maclimit_count));
+
+ for (i = 0; i < maclimit_count; i++)
+ {
+
+ memset (&eoc_wl_entry, 0, sizeof (eoc_wl_entry));
+ /* get white list entry for current MAC address */
+ ret = libspid_eoc_wl_get (maclimit_entries[i].mac_addr,
+ &eoc_wl_entry);
+
+ if (LIBSPID_SUCCESS == ret)
+ {
+ /* parse current TEI from white list entry */
+ if (1 != sscanf (eoc_wl_entry.tei, "%d", &tei))
+ {
+ eocExtCnuCnuIndex = INVALID_EOCEXTCNUCNUINDEX;
+ }
+ else
+ {
+ /* convert current TEI to slave index */
+ eocExtCnuCnuIndex = tei - 2;
+ }
+ }
+ else
+ {
+ eocExtCnuCnuIndex = INVALID_EOCEXTCNUCNUINDEX;
+ }
+
+ /*
+ * TODO:352:M: | |-> set indexes in new eocExtCnuTable rowreq context.
+ * data context will be set from the param (unless NULL,
+ * in which case a new data context will be allocated)
+ */
+ rowreq_ctx = eocExtCnuTable_allocate_rowreq_ctx(NULL);
+ if (NULL == rowreq_ctx) {
+ snmp_log(LOG_ERR, "memory allocation failed\n");
+ return MFD_RESOURCE_UNAVAILABLE;
+ }
+ if(MFD_SUCCESS != eocExtCnuTable_indexes_set(rowreq_ctx
+ , eocExtCnuCbatCardIndex
+ , eocExtCnuCnuIndex
+ )) {
+ snmp_log(LOG_ERR,"error setting index while loading "
+ "eocExtCnuTable data.\n");
+ eocExtCnuTable_release_rowreq_ctx(rowreq_ctx);
+ continue;
+ }
+
+ /*
+ * TODO:352:r: | |-> populate eocExtCnuTable data context.
+ * Populate data context here. (optionally, delay until row prep)
+ */
+ /*
+ * TRANSIENT or semi-TRANSIENT data:
+ * copy data or save any info needed to do it in row_prep.
+ */
+ /*
+ * setup/save data for eocExtCnuMacLimitation
+ * eocExtCnuMacLimitation(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/W/e/R/d/h
+ */
+ /** no mapping */
+ rowreq_ctx->data.eocExtCnuMacLimitation =
+ strtol (maclimit_entries[i].mac_limitation_num, NULL, 10);
+
+ /*
+ * insert into table container
+ */
+ CONTAINER_INSERT(container, rowreq_ctx);
+ ++count;
+ }
+
+ DEBUGMSGT(("verbose:eocExtCnuTable:eocExtCnuTable_container_load",
+ "inserted %d records\n", count));
+
+ return MFD_SUCCESS;
+} /* eocExtCnuTable_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
+eocExtCnuTable_container_free(netsnmp_container *container)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_container_free","called\n"));
+
+ /*
+ * TODO:380:M: Free eocExtCnuTable container data.
+ */
+} /* eocExtCnuTable_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
+eocExtCnuTable_row_prep( eocExtCnuTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_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;
+} /* eocExtCnuTable_row_prep */
+
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_access.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_access.h
new file mode 100644
index 0000000000..495c1a9929
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_access.h
@@ -0,0 +1,64 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUTABLE_DATA_ACCESS_H
+#define EOCEXTCNUTABLE_DATA_ACCESS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* *********************************************************************
+ * function declarations
+ */
+
+/* *********************************************************************
+ * Table declarations
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuTable is subid 1 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1, length: 13
+*/
+#define INVALID_EOCEXTCNUCNUINDEX (-2)
+
+
+ int eocExtCnuTable_init_data(eocExtCnuTable_registration * eocExtCnuTable_reg);
+
+
+ /*
+ * TODO:180:o: Review eocExtCnuTable cache timeout.
+ * The number of seconds before the cache times out
+ */
+#define EOCEXTCNUTABLE_CACHE_TIMEOUT 60
+
+void eocExtCnuTable_container_init(netsnmp_container **container_ptr_ptr,
+ netsnmp_cache *cache);
+void eocExtCnuTable_container_shutdown(netsnmp_container *container_ptr);
+
+int eocExtCnuTable_container_load(netsnmp_container *container);
+void eocExtCnuTable_container_free(netsnmp_container *container);
+
+int eocExtCnuTable_cache_load(netsnmp_container *container);
+void eocExtCnuTable_cache_free(netsnmp_container *container);
+
+ int eocExtCnuTable_row_prep( eocExtCnuTable_rowreq_ctx *rowreq_ctx);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUTABLE_DATA_ACCESS_H */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_get.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_get.c
new file mode 100644
index 0000000000..97397875d9
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_get.c
@@ -0,0 +1,166 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12088 $ of $
+ *
+ * $Id:$
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuTable.h"
+
+
+/** @defgroup data_get data_get: Routines to get data
+ *
+ * TODO:230:M: Implement eocExtCnuTable get routines.
+ * TODO:240:M: Implement eocExtCnuTable 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 eocExtCnuTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuTable is subid 1 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1, length: 13
+*/
+
+/* ---------------------------------------------------------------------
+ * TODO:200:r: Implement eocExtCnuTable data context functions.
+ */
+
+
+/**
+ * set mib index(es)
+ *
+ * @param tbl_idx mib index structure
+ * @param eocExtCnuCbatCardIndex_val
+ * @param eocExtCnuCnuIndex_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
+eocExtCnuTable_indexes_set_tbl_idx(eocExtCnuTable_mib_index *tbl_idx, long eocExtCnuCbatCardIndex_val, long eocExtCnuCnuIndex_val)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_indexes_set_tbl_idx","called\n"));
+
+ /* eocExtCnuCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ tbl_idx->eocExtCnuCbatCardIndex = eocExtCnuCbatCardIndex_val;
+
+ /* eocExtCnuCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ tbl_idx->eocExtCnuCnuIndex = eocExtCnuCnuIndex_val;
+
+
+ return MFD_SUCCESS;
+} /* eocExtCnuTable_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
+eocExtCnuTable_indexes_set(eocExtCnuTable_rowreq_ctx *rowreq_ctx, long eocExtCnuCbatCardIndex_val, long eocExtCnuCnuIndex_val)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_indexes_set","called\n"));
+
+ if(MFD_SUCCESS != eocExtCnuTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx
+ , eocExtCnuCbatCardIndex_val
+ , eocExtCnuCnuIndex_val
+ ))
+ return MFD_ERROR;
+
+ /*
+ * convert mib index to oid index
+ */
+ rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
+ if(0 != eocExtCnuTable_index_to_oid(&rowreq_ctx->oid_idx,
+ &rowreq_ctx->tbl_idx)) {
+ return MFD_ERROR;
+ }
+
+ return MFD_SUCCESS;
+} /* eocExtCnuTable_indexes_set */
+
+
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEntry.eocExtCnuMacLimitation
+ * eocExtCnuMacLimitation is subid 3 of eocExtCnuEntry.
+ * Its status is Current, and its access level is ReadWrite.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1.1.3
+ * Description:
+The MAC Limitation of the CNU.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 1 hashint 0
+ * settable 1
+ *
+ * Ranges: 0 - 128;
+ *
+ * Its syntax is INTEGER32 (based on perltype INTEGER32)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
+ */
+/**
+ * Extract the current value of the eocExtCnuMacLimitation data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param eocExtCnuMacLimitation_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
+eocExtCnuMacLimitation_get( eocExtCnuTable_rowreq_ctx *rowreq_ctx, long * eocExtCnuMacLimitation_val_ptr )
+{
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != eocExtCnuMacLimitation_val_ptr );
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuMacLimitation_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+/*
+ * TODO:231:o: |-> Extract the current value of the eocExtCnuMacLimitation data.
+ * copy (* eocExtCnuMacLimitation_val_ptr ) from rowreq_ctx->data
+ */
+ (* eocExtCnuMacLimitation_val_ptr ) = rowreq_ctx->data.eocExtCnuMacLimitation;
+
+ return MFD_SUCCESS;
+} /* eocExtCnuMacLimitation_get */
+
+
+
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_get.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_get.h
new file mode 100644
index 0000000000..cfe8e60ff8
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_get.h
@@ -0,0 +1,59 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12088 $ of $
+ *
+ * $Id:$
+ *
+ * @file eocExtCnuTable_data_get.h
+ *
+ * @addtogroup get
+ *
+ * Prototypes for get functions
+ *
+ * @{
+ */
+#ifndef EOCEXTCNUTABLE_DATA_GET_H
+#define EOCEXTCNUTABLE_DATA_GET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* *********************************************************************
+ * GET function declarations
+ */
+
+/* *********************************************************************
+ * GET Table declarations
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuTable is subid 1 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1, length: 13
+*/
+ /*
+ * indexes
+ */
+
+ int eocExtCnuMacLimitation_get( eocExtCnuTable_rowreq_ctx *rowreq_ctx, long * eocExtCnuMacLimitation_val_ptr );
+
+
+int eocExtCnuTable_indexes_set_tbl_idx(eocExtCnuTable_mib_index *tbl_idx, long eocExtCnuCbatCardIndex_val, long eocExtCnuCnuIndex_val);
+int eocExtCnuTable_indexes_set(eocExtCnuTable_rowreq_ctx *rowreq_ctx, long eocExtCnuCbatCardIndex_val, long eocExtCnuCnuIndex_val);
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUTABLE_DATA_GET_H */
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_set.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_set.c
new file mode 100644
index 0000000000..c7c03ab54d
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_set.c
@@ -0,0 +1,613 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12077 $ of $
+ *
+ * $Id:$
+ *
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuTable.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.
+ *
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuTable is subid 1 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1, length: 13
+*/
+ /*
+ * NOTE: if you update this chart, please update the versions in
+ * local/mib2c-conf.d/parent-set.m2i
+ * agent/mibgroup/helpers/baby_steps.c
+ * while you're at it.
+ */
+ /*
+ ***********************************************************************
+ * Baby Steps Flow Chart (2004.06.05) *
+ * *
+ * +--------------+ +================+ U = unconditional path *
+ * |optional state| ||required state|| S = path for success *
+ * +--------------+ +================+ E = path for error *
+ ***********************************************************************
+ *
+ * +--------------+
+ * | pre |
+ * | request |
+ * +--------------+
+ * | U
+ * +==============+
+ * +----------------|| object ||
+ * | E || lookup ||
+ * | +==============+
+ * | | S
+ * | +==============+
+ * | E || check ||
+ * |<---------------|| values ||
+ * | +==============+
+ * | | S
+ * | +==============+
+ * | +<-------|| undo ||
+ * | | E || setup ||
+ * | | +==============+
+ * | | | S
+ * | | +==============+
+ * | | || set ||-------------------------->+
+ * | | || value || E |
+ * | | +==============+ |
+ * | | | S |
+ * | | +--------------+ |
+ * | | | check |-------------------------->|
+ * | | | consistency | E |
+ * | | +--------------+ |
+ * | | | S |
+ * | | +==============+ +==============+ |
+ * | | || commit ||-------->|| undo || |
+ * | | || || E || commit || |
+ * | | +==============+ +==============+ |
+ * | | | S U |<--------+
+ * | | +--------------+ +==============+
+ * | | | irreversible | || undo ||
+ * | | | commit | || set ||
+ * | | +--------------+ +==============+
+ * | | | U U |
+ * | +-------------->|<------------------------+
+ * | +==============+
+ * | || undo ||
+ * | || cleanup ||
+ * | +==============+
+ * +---------------------->| U
+ * +--------------+
+ * | post |
+ * | request |
+ * +--------------+
+ *
+ */
+
+/**
+ * Setup up context with information needed to undo a set request.
+ *
+ * This function will be called before the individual node undo setup
+ * functions are called. If you need to do any undo setup that is not
+ * related to a specific column, you can do it here.
+ *
+ * Note that the undo context has been allocated with
+ * eocExtCnuTable_allocate_data(), but may need extra
+ * initialization similar to what you may have done in
+ * eocExtCnuTable_rowreq_ctx_init().
+ * Note that an individual node's undo_setup function will only be called
+ * if that node is being set to a new value.
+ *
+ * If there is any setup specific to a particular column (e.g. allocating
+ * memory for a string), you should do that setup in the node's undo_setup
+ * function, so it won't be done unless it is necessary.
+ *
+ * @param rowreq_ctx
+ * Pointer to the table context (eocExtCnuTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error. set will fail.
+ */
+int
+eocExtCnuTable_undo_setup( eocExtCnuTable_rowreq_ctx *rowreq_ctx)
+{
+ int rc = MFD_SUCCESS;
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_undo_setup","called\n"));
+
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != rowreq_ctx );
+
+ /*
+ * TODO:451:M: |-> Setup eocExtCnuTable undo.
+ * set up eocExtCnuTable undo information, in preparation for a set.
+ * Undo storage is in (* eocExtCnuMacLimitation_val_ptr )*
+ */
+
+ return rc;
+} /* eocExtCnuTable_undo_setup */
+
+/**
+ * Undo a set request.
+ *
+ * This function will be called before the individual node undo
+ * functions are called. If you need to do any undo that is not
+ * related to a specific column, you can do it here.
+ *
+ * Note that an individual node's undo function will only be called
+ * if that node is being set to a new value.
+ *
+ * If there is anything specific to a particular column (e.g. releasing
+ * memory for a string), you should do that setup in the node's undo
+ * function, so it won't be done unless it is necessary.
+ *
+ * @param rowreq_ctx
+ * Pointer to the table context (eocExtCnuTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error. set will fail.
+ */
+int
+eocExtCnuTable_undo( eocExtCnuTable_rowreq_ctx *rowreq_ctx)
+{
+ int rc = MFD_SUCCESS;
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_undo","called\n"));
+
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != rowreq_ctx );
+
+ /*
+ * TODO:451:M: |-> eocExtCnuTable undo.
+ * eocExtCnuTable undo information, in response to a failed set.
+ * Undo storage is in (* eocExtCnuMacLimitation_val_ptr )*
+ */
+
+ return rc;
+} /* eocExtCnuTable_undo_setup */
+
+/**
+ * Cleanup up context undo information.
+ *
+ * This function will be called after set/commit processing. If you
+ * allocated any resources in undo_setup, this is the place to release
+ * those resources.
+ *
+ * This function is called regardless of the success or failure of the set
+ * request. If you need to perform different steps for cleanup depending
+ * on success or failure, you can add a flag to the rowreq_ctx.
+ *
+ * @param rowreq_ctx
+ * Pointer to the table context (eocExtCnuTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error
+ */
+int
+eocExtCnuTable_undo_cleanup( eocExtCnuTable_rowreq_ctx *rowreq_ctx)
+{
+ int rc = MFD_SUCCESS;
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_undo_cleanup","called\n"));
+
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != rowreq_ctx );
+
+ /*
+ * TODO:452:M: |-> Cleanup eocExtCnuTable undo.
+ * Undo storage is in (* eocExtCnuMacLimitation_val_ptr )*
+ */
+
+ return rc;
+} /* eocExtCnuTable_undo_cleanup */
+
+/**
+ * commit new values.
+ *
+ * At this point, you should have done everything you can to ensure that
+ * this commit will not fail.
+ *
+ * Should you need different behavior depending on which columns were
+ * set, rowreq_ctx->column_set_flags will indicate which writeable columns were
+ * set. The definitions for the COLUMN_*_FLAG bits can be found in
+ * eocExtCnuTable_oids.h.
+ * A new row will have the MFD_ROW_CREATED bit set in rowreq_flags.
+ *
+ * @param eocExtCnuTable_rowreq_ctx
+ * Pointer to the users context.
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error
+ */
+int
+eocExtCnuTable_commit( eocExtCnuTable_rowreq_ctx *rowreq_ctx)
+{
+ int rc = MFD_SUCCESS;
+ int save_flags;
+ int tei;
+ libspid_eoc_wl_entry_t wl_entries[LIBSPID_WHITE_LIST_MAX_STA_NUM];
+ libspid_eoc_maclimit_entry_t maclimit_entry;
+ int wl_count;
+ int ret;
+ int i;
+ char mac_addr[LIBSPID_MAC_STR_LEN];
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_commit","called\n"));
+
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != rowreq_ctx );
+
+ /*
+ * save flags, then clear until we actually do something
+ */
+ save_flags = rowreq_ctx->column_set_flags;
+ rowreq_ctx->column_set_flags = 0;
+
+ /*
+ * commit eocExtCnuTable data
+ * 1) check the column's flag in save_flags to see if it was set.
+ * 2) clear the flag when you handle that column
+ * 3) set the column's flag in column_set_flags if it needs undo
+ * processing in case of a failure.
+ */
+ if (save_flags & COLUMN_EOCEXTCNUMACLIMITATION_FLAG)
+ {
+ /* clear eocExtCnuMacLimitation */
+ save_flags &= ~COLUMN_EOCEXTCNUMACLIMITATION_FLAG;
+
+ /*
+ * set flag, in case we need to undo eocExtCnuMacLimitation
+ */
+ rowreq_ctx->column_set_flags |= COLUMN_EOCEXTCNUMACLIMITATION_FLAG;
+ }
+
+ /* calculate TEI from table index */
+ tei = rowreq_ctx->tbl_idx.eocExtCnuCnuIndex + 2;
+
+ if (LIBSPID_SUCCESS != libspid_eoc_wl_check ())
+ {
+ snmp_log (LOG_ERR, "errors detected in whitelist configuration file,"
+ " cannot sync\n");
+ return MFD_ERROR;
+ }
+
+ ret = libspid_eoc_wl_get_list (wl_entries, &wl_count);
+ if (ret != LIBSPID_SUCCESS)
+ {
+ snmp_log (LOG_ERR, "libspid_eoc_wl_get_list error\n");
+ return MFD_ERROR;
+ }
+
+ for (i = 0; i < wl_count; i++)
+ {
+ if (tei == strtol (wl_entries[i].tei, NULL, 10))
+ {
+ strcpy (mac_addr, wl_entries[i].mac_addr);
+ break;
+ }
+ }
+
+ strcpy (maclimit_entry.mac_addr, mac_addr);
+ sprintf (maclimit_entry.mac_limitation_num, "%ld",
+ rowreq_ctx->data.eocExtCnuMacLimitation);
+
+ if (LIBSPID_SUCCESS != libspid_eoc_maclimit_check ())
+ {
+ snmp_log (LOG_ERR, "errors detected in maclimitation"
+ " configuration file, cannot sync\n");
+ return MFD_ERROR;
+ }
+
+ ret = libspid_eoc_maclimit_set (mac_addr, &maclimit_entry);
+ if (ret != LIBSPID_SUCCESS)
+ {
+ snmp_log (LOG_ERR, "libspid_eoc_maclimit_set error\n");
+ return MFD_ERROR;
+ }
+
+
+ /*
+ * if we successfully commited this row, set the dirty flag.
+ */
+ if (MFD_SUCCESS == rc) {
+ rowreq_ctx->rowreq_flags |= MFD_ROW_DIRTY;
+ }
+
+ if (save_flags) {
+ snmp_log(LOG_ERR, "unhandled columns (0x%x) in commit\n", save_flags);
+ return MFD_ERROR;
+ }
+
+ return rc;
+} /* eocExtCnuTable_commit */
+
+/**
+ * undo commit new values.
+ *
+ * Should you need different behavior depending on which columns were
+ * set, rowreq_ctx->column_set_flags will indicate which writeable columns were
+ * set. The definitions for the COLUMN_*_FLAG bits can be found in
+ * eocExtCnuTable_oids.h.
+ * A new row will have the MFD_ROW_CREATED bit set in rowreq_flags.
+ *
+ * @param eocExtCnuTable_rowreq_ctx
+ * Pointer to the users context.
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error
+ */
+int
+eocExtCnuTable_undo_commit( eocExtCnuTable_rowreq_ctx *rowreq_ctx)
+{
+ int rc = MFD_SUCCESS;
+
+ int tei;
+ libspid_eoc_wl_entry_t wl_entries[LIBSPID_WHITE_LIST_MAX_STA_NUM];
+ libspid_eoc_maclimit_entry_t maclimit_entry;
+ int wl_count;
+ int ret;
+ int i;
+ char mac_addr[LIBSPID_MAC_STR_LEN];
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_undo_commit","called\n"));
+
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != rowreq_ctx );
+
+ /*
+ * TODO:485:M: |-> Undo eocExtCnuTable commit.
+ * check the column's flag in rowreq_ctx->column_set_flags to see
+ * if it was set during commit, then undo it.
+ *
+ * eg: if (rowreq_ctx->column_set_flags & COLUMN__FLAG) {}
+ */
+
+ /* calculate TEI from table index */
+ tei = rowreq_ctx->tbl_idx.eocExtCnuCnuIndex + 2;
+
+ if (LIBSPID_SUCCESS != libspid_eoc_wl_check ())
+ {
+ snmp_log (LOG_ERR, "errors detected in whitelist configuration file,"
+ " cannot sync\n");
+ return MFD_ERROR;
+ }
+
+ ret = libspid_eoc_wl_get_list (wl_entries, &wl_count);
+ if (ret != LIBSPID_SUCCESS)
+ {
+ snmp_log (LOG_ERR, "libspid_eoc_wl_get_list error\n");
+ return MFD_ERROR;
+ }
+
+ for (i = 0; i < wl_count; i++)
+ {
+ if (tei == strtol (wl_entries[i].tei, NULL, 10))
+ {
+ strcpy (mac_addr, wl_entries[i].mac_addr);
+ break;
+ }
+ }
+
+ strcpy (maclimit_entry.mac_addr, mac_addr);
+ if (rowreq_ctx->column_set_flags & COLUMN_EOCEXTCNUMACLIMITATION_FLAG)
+ {
+ sprintf (maclimit_entry.mac_limitation_num, "%ld",
+ rowreq_ctx->undo->eocExtCnuMacLimitation);
+ }
+ if (LIBSPID_SUCCESS != libspid_eoc_maclimit_check ())
+ {
+ snmp_log (LOG_ERR, "errors detected in maclimitation"
+ " configuration file, cannot sync\n");
+ return MFD_ERROR;
+ }
+
+ ret = libspid_eoc_maclimit_set (mac_addr, &maclimit_entry);
+ if (ret != LIBSPID_SUCCESS)
+ {
+ snmp_log (LOG_ERR, "libspid_eoc_maclimit_set error\n");
+ DEBUGMSGTL (("eocExtCnuTable_undo_commit"
+ "libspid_config_write_line() returned error: %d\n",
+ ret));
+ return MFD_ERROR;
+ }
+ else
+ {
+ DEBUGMSGTL (("eocExtCnuTable_undo_commit",
+ "line succesfully written to conf file!\n"));
+ }
+ /*
+ * if we successfully un-commited this row, clear the dirty flag.
+ */
+ if (MFD_SUCCESS == rc)
+ {
+ rowreq_ctx->rowreq_flags &= ~MFD_ROW_DIRTY;
+ }
+
+ return rc;
+} /* eocExtCnuTable_undo_commit */
+
+/*
+ * TODO:440:M: Implement eocExtCnuTable node value checks.
+ * TODO:450:M: Implement eocExtCnuTable undo functions.
+ * TODO:460:M: Implement eocExtCnuTable set functions.
+ * TODO:480:M: Implement eocExtCnuTable commit functions.
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEntry.eocExtCnuMacLimitation
+ * eocExtCnuMacLimitation is subid 3 of eocExtCnuEntry.
+ * Its status is Current, and its access level is ReadWrite.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1.1.3
+ * Description:
+The MAC Limitation of the CNU.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 1 hashint 0
+ * settable 1
+ *
+ * Ranges: 0 - 128;
+ *
+ * Its syntax is INTEGER32 (based on perltype INTEGER32)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
+ */
+/**
+ * Check that the proposed new value is potentially valid.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param eocExtCnuMacLimitation_val
+ * A long containing the new value.
+ *
+ * @retval MFD_SUCCESS : incoming value is legal
+ * @retval MFD_NOT_VALID_NOW : incoming value is not valid now
+ * @retval MFD_NOT_VALID_EVER : incoming value is never valid
+ *
+ * This is the place to check for requirements that are not
+ * expressed in the mib syntax (for example, a requirement that
+ * is detailed in the description for an object).
+ *
+ * You should check that the requested change between the undo value and the
+ * new value is legal (ie, the transistion from one value to another
+ * is legal).
+ *
+ *@note
+ * This check is only to determine if the new value
+ * is \b potentially valid. This is the first check of many, and
+ * is one of the simplest ones.
+ *
+ *@note
+ * this is not the place to do any checks for values
+ * which depend on some other value in the mib. Those
+ * types of checks should be done in the
+ * eocExtCnuTable_check_dependencies() function.
+ *
+ * The following checks have already been done for you:
+ * The syntax is ASN_INTEGER
+ * The value is in (one of) the range set(s): 0 - 128
+ *
+ * If there a no other checks you need to do, simply return MFD_SUCCESS.
+ *
+ */
+int
+eocExtCnuMacLimitation_check_value( eocExtCnuTable_rowreq_ctx *rowreq_ctx, long eocExtCnuMacLimitation_val)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuMacLimitation_check_value","called\n"));
+
+ /** should never get a NULL pointer */
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ return MFD_SUCCESS; /* eocExtCnuMacLimitation value not illegal */
+} /* eocExtCnuMacLimitation_check_value */
+
+/**
+ * Save old value information
+ *
+ * @param rowreq_ctx
+ * Pointer to the table context (eocExtCnuTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error. set will fail.
+ *
+ * This function will be called after the table level undo setup function
+ * eocExtCnuTable_undo_setup has been called.
+ *
+ *@note
+ * this function will only be called if a new value is set for this column.
+ *
+ * If there is any setup specific to a particular column (e.g. allocating
+ * memory for a string), you should do that setup in this function, so it
+ * won't be done unless it is necessary.
+ */
+int
+eocExtCnuMacLimitation_undo_setup( eocExtCnuTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuMacLimitation_undo_setup","called\n"));
+
+ /** should never get a NULL pointer */
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:455:o: |-> Setup eocExtCnuMacLimitation undo.
+ */
+ /*
+ * copy eocExtCnuMacLimitation data
+ * set rowreq_ctx->undo->eocExtCnuMacLimitation from rowreq_ctx->data.eocExtCnuMacLimitation
+ */
+ rowreq_ctx->undo->eocExtCnuMacLimitation = rowreq_ctx->data.eocExtCnuMacLimitation;
+
+
+ return MFD_SUCCESS;
+} /* eocExtCnuMacLimitation_undo_setup */
+
+/**
+ * Set the new value.
+ *
+ * @param rowreq_ctx
+ * Pointer to the users context. You should know how to
+ * manipulate the value from this object.
+ * @param eocExtCnuMacLimitation_val
+ * A long containing the new value.
+ */
+int
+eocExtCnuMacLimitation_set( eocExtCnuTable_rowreq_ctx *rowreq_ctx, long eocExtCnuMacLimitation_val )
+{
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuMacLimitation_set","called\n"));
+
+ /** should never get a NULL pointer */
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:461:M: |-> Set eocExtCnuMacLimitation value.
+ * set eocExtCnuMacLimitation value in rowreq_ctx->data
+ */
+ rowreq_ctx->data.eocExtCnuMacLimitation = eocExtCnuMacLimitation_val;
+
+ return MFD_SUCCESS;
+} /* eocExtCnuMacLimitation_set */
+
+/**
+ * undo the previous set.
+ *
+ * @param rowreq_ctx
+ * Pointer to the users context.
+ */
+int
+eocExtCnuMacLimitation_undo( eocExtCnuTable_rowreq_ctx *rowreq_ctx)
+{
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuMacLimitation_undo","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:456:o: |-> Clean up eocExtCnuMacLimitation undo.
+ */
+ /*
+ * copy eocExtCnuMacLimitation data
+ * set rowreq_ctx->data.eocExtCnuMacLimitation from rowreq_ctx->undo->eocExtCnuMacLimitation
+ */
+ rowreq_ctx->data.eocExtCnuMacLimitation = rowreq_ctx->undo->eocExtCnuMacLimitation;
+
+
+ return MFD_SUCCESS;
+} /* eocExtCnuMacLimitation_undo */
+
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_set.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_set.h
new file mode 100644
index 0000000000..ad27dc21d9
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_data_set.h
@@ -0,0 +1,55 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12077 $ of $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUTABLE_DATA_SET_H
+#define EOCEXTCNUTABLE_DATA_SET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* *********************************************************************
+ * SET function declarations
+ */
+
+/* *********************************************************************
+ * SET Table declarations
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuTable is subid 1 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1, length: 13
+*/
+
+
+int eocExtCnuTable_undo_setup( eocExtCnuTable_rowreq_ctx *rowreq_ctx);
+int eocExtCnuTable_undo_cleanup( eocExtCnuTable_rowreq_ctx *rowreq_ctx);
+int eocExtCnuTable_undo( eocExtCnuTable_rowreq_ctx *rowreq_ctx);
+int eocExtCnuTable_commit( eocExtCnuTable_rowreq_ctx *rowreq_ctx);
+int eocExtCnuTable_undo_commit( eocExtCnuTable_rowreq_ctx *rowreq_ctx);
+
+
+int eocExtCnuMacLimitation_check_value( eocExtCnuTable_rowreq_ctx *rowreq_ctx, long eocExtCnuMacLimitation_val);
+int eocExtCnuMacLimitation_undo_setup( eocExtCnuTable_rowreq_ctx *rowreq_ctx );
+int eocExtCnuMacLimitation_set( eocExtCnuTable_rowreq_ctx *rowreq_ctx, long eocExtCnuMacLimitation_val );
+int eocExtCnuMacLimitation_undo( eocExtCnuTable_rowreq_ctx *rowreq_ctx );
+
+
+int eocExtCnuTable_check_dependencies(eocExtCnuTable_rowreq_ctx *ctx);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUTABLE_DATA_SET_H */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_enums.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_enums.h
new file mode 100644
index 0000000000..7d6082f270
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_enums.h
@@ -0,0 +1,40 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * : generic-table-enums.m2c 12526 2005-07-15 22:41:16Z rstory $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUTABLE_ENUMS_H
+#define EOCEXTCNUTABLE_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 eocExtCnuTable
+ *
+ *************************************************************************
+ *************************************************************************/
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUTABLE_ENUMS_H */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_interface.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_interface.c
new file mode 100644
index 0000000000..b8af812bd0
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_interface.c
@@ -0,0 +1,1479 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 15899 $ of $
+ *
+ * $Id:$
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * *** ***
+ * *** 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. ***
+ * *** ***
+ * *** ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuTable.h"
+
+
+#include <net-snmp/agent/table_container.h>
+#include <net-snmp/library/container.h>
+
+#include "eocExtCnuTable_interface.h"
+
+#include <ctype.h>
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuTable is subid 1 of eocExtCnuMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.1.1, length: 13
+*/
+typedef struct eocExtCnuTable_interface_ctx_s {
+
+ netsnmp_container *container;
+ netsnmp_cache *cache;
+
+ eocExtCnuTable_registration * user_ctx;
+
+ netsnmp_table_registration_info tbl_info;
+
+ netsnmp_baby_steps_access_methods access_multiplexer;
+
+ u_int table_dirty;
+
+} eocExtCnuTable_interface_ctx;
+
+static eocExtCnuTable_interface_ctx eocExtCnuTable_if_ctx;
+
+static void _eocExtCnuTable_container_init(
+ eocExtCnuTable_interface_ctx *if_ctx);
+static void _eocExtCnuTable_container_shutdown(
+ eocExtCnuTable_interface_ctx *if_ctx);
+
+
+netsnmp_container *
+eocExtCnuTable_container_get( void )
+{
+ return eocExtCnuTable_if_ctx.container;
+}
+
+eocExtCnuTable_registration *
+eocExtCnuTable_registration_get( void )
+{
+ return eocExtCnuTable_if_ctx.user_ctx;
+}
+
+eocExtCnuTable_registration *
+eocExtCnuTable_registration_set( eocExtCnuTable_registration * newreg )
+{
+ eocExtCnuTable_registration * old = eocExtCnuTable_if_ctx.user_ctx;
+ eocExtCnuTable_if_ctx.user_ctx = newreg;
+ return old;
+}
+
+int
+eocExtCnuTable_container_size( void )
+{
+ return CONTAINER_SIZE(eocExtCnuTable_if_ctx.container);
+}
+
+u_int
+eocExtCnuTable_dirty_get( void )
+{
+ return eocExtCnuTable_if_ctx.table_dirty;
+}
+
+void
+eocExtCnuTable_dirty_set( u_int status )
+{
+ DEBUGMSGTL(("eocExtCnuTable:eocExtCnuTable_dirty_set",
+ "called. was %d, now %d\n",
+ eocExtCnuTable_if_ctx.table_dirty, status));
+ eocExtCnuTable_if_ctx.table_dirty = status;
+}
+
+/*
+ * mfd multiplexer modes
+ */
+static Netsnmp_Node_Handler _mfd_eocExtCnuTable_pre_request;
+static Netsnmp_Node_Handler _mfd_eocExtCnuTable_post_request;
+static Netsnmp_Node_Handler _mfd_eocExtCnuTable_object_lookup;
+static Netsnmp_Node_Handler _mfd_eocExtCnuTable_get_values;
+static Netsnmp_Node_Handler _mfd_eocExtCnuTable_check_objects;
+static Netsnmp_Node_Handler _mfd_eocExtCnuTable_undo_setup;
+static Netsnmp_Node_Handler _mfd_eocExtCnuTable_set_values;
+static Netsnmp_Node_Handler _mfd_eocExtCnuTable_undo_cleanup;
+static Netsnmp_Node_Handler _mfd_eocExtCnuTable_undo_values;
+static Netsnmp_Node_Handler _mfd_eocExtCnuTable_commit;
+static Netsnmp_Node_Handler _mfd_eocExtCnuTable_undo_commit;
+static Netsnmp_Node_Handler _mfd_eocExtCnuTable_irreversible_commit;
+
+NETSNMP_STATIC_INLINE int _eocExtCnuTable_undo_column( eocExtCnuTable_rowreq_ctx *rowreq_ctx,
+ netsnmp_variable_list *var, int column );
+
+eocExtCnuTable_data *eocExtCnuTable_allocate_data(void);
+
+/**
+ * @internal
+ * Initialize the table eocExtCnuTable
+ * (Define its contents and how it's structured)
+ */
+void
+_eocExtCnuTable_initialize_interface(eocExtCnuTable_registration * reg_ptr, u_long flags)
+{
+ netsnmp_baby_steps_access_methods *access_multiplexer =
+ &eocExtCnuTable_if_ctx.access_multiplexer;
+ netsnmp_table_registration_info *tbl_info = &eocExtCnuTable_if_ctx.tbl_info;
+ netsnmp_handler_registration *reginfo;
+ netsnmp_mib_handler *handler;
+ int mfd_modes = 0;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_eocExtCnuTable_initialize_interface","called\n"));
+
+
+ /*************************************************
+ *
+ * save interface context for eocExtCnuTable
+ */
+ /*
+ * Setting up the table's definition
+ */
+ netsnmp_table_helper_add_indexes(tbl_info,
+ ASN_INTEGER, /** index: eocExtCnuCbatCardIndex */
+ ASN_INTEGER, /** index: eocExtCnuCnuIndex */
+ 0);
+
+ /* Define the minimum and maximum accessible columns. This
+ optimizes retrival. */
+ tbl_info->min_column = EOCEXTCNUTABLE_MIN_COL;
+ tbl_info->max_column = EOCEXTCNUTABLE_MAX_COL;
+
+ /*
+ * save users context
+ */
+ eocExtCnuTable_if_ctx.user_ctx = reg_ptr;
+
+ /*
+ * call data access initialization code
+ */
+ eocExtCnuTable_init_data(reg_ptr);
+
+ /*
+ * set up the container
+ */
+ _eocExtCnuTable_container_init(&eocExtCnuTable_if_ctx);
+ if (NULL == eocExtCnuTable_if_ctx.container) {
+ snmp_log(LOG_ERR,"could not initialize container for eocExtCnuTable\n");
+ return;
+ }
+
+ /*
+ * access_multiplexer: REQUIRED wrapper for get request handling
+ */
+ access_multiplexer->object_lookup = _mfd_eocExtCnuTable_object_lookup;
+ access_multiplexer->get_values = _mfd_eocExtCnuTable_get_values;
+
+ /*
+ * no wrappers yet
+ */
+ access_multiplexer->pre_request = _mfd_eocExtCnuTable_pre_request;
+ access_multiplexer->post_request = _mfd_eocExtCnuTable_post_request;
+
+
+ /*
+ * REQUIRED wrappers for set request handling
+ */
+ access_multiplexer->object_syntax_checks = _mfd_eocExtCnuTable_check_objects;
+ access_multiplexer->undo_setup = _mfd_eocExtCnuTable_undo_setup;
+ access_multiplexer->undo_cleanup = _mfd_eocExtCnuTable_undo_cleanup;
+ access_multiplexer->set_values = _mfd_eocExtCnuTable_set_values;
+ access_multiplexer->undo_sets = _mfd_eocExtCnuTable_undo_values;
+
+ /*
+ * no wrappers yet
+ */
+ access_multiplexer->commit = _mfd_eocExtCnuTable_commit;
+ access_multiplexer->undo_commit = _mfd_eocExtCnuTable_undo_commit;
+ access_multiplexer->irreversible_commit = _mfd_eocExtCnuTable_irreversible_commit;
+
+ /*************************************************
+ *
+ * Create a registration, save our reg data, register table.
+ */
+ DEBUGMSGTL(("eocExtCnuTable:init_eocExtCnuTable",
+ "Registering eocExtCnuTable as a mibs-for-dummies table.\n"));
+ handler = netsnmp_baby_steps_access_multiplexer_get(access_multiplexer);
+ reginfo = netsnmp_handler_registration_create("eocExtCnuTable", handler,
+ eocExtCnuTable_oid,
+ eocExtCnuTable_oid_size,
+ HANDLER_CAN_BABY_STEP |
+ HANDLER_CAN_RWRITE
+ );
+ if(NULL == reginfo) {
+ snmp_log(LOG_ERR,"error registering table eocExtCnuTable\n");
+ return;
+ }
+ reginfo->my_reg_void = &eocExtCnuTable_if_ctx;
+
+ /*************************************************
+ *
+ * set up baby steps handler, create it and inject it
+ */
+ if( access_multiplexer->object_lookup )
+ mfd_modes |= BABY_STEP_OBJECT_LOOKUP;
+ if( access_multiplexer->set_values )
+ mfd_modes |= BABY_STEP_SET_VALUES;
+ if( access_multiplexer->irreversible_commit )
+ mfd_modes |= BABY_STEP_IRREVERSIBLE_COMMIT;
+ if( access_multiplexer->object_syntax_checks )
+ mfd_modes |= BABY_STEP_CHECK_OBJECT;
+
+ if( access_multiplexer->pre_request )
+ mfd_modes |= BABY_STEP_PRE_REQUEST;
+ if( access_multiplexer->post_request )
+ mfd_modes |= BABY_STEP_POST_REQUEST;
+
+ if( access_multiplexer->undo_setup )
+ mfd_modes |= BABY_STEP_UNDO_SETUP;
+ if( access_multiplexer->undo_cleanup )
+ mfd_modes |= BABY_STEP_UNDO_CLEANUP;
+ if( access_multiplexer->undo_sets )
+ mfd_modes |= BABY_STEP_UNDO_SETS;
+
+ if( access_multiplexer->row_creation )
+ mfd_modes |= BABY_STEP_ROW_CREATE;
+ if( access_multiplexer->consistency_checks )
+ mfd_modes |= BABY_STEP_CHECK_CONSISTENCY;
+ if( access_multiplexer->commit )
+ mfd_modes |= BABY_STEP_COMMIT;
+ if( access_multiplexer->undo_commit )
+ mfd_modes |= BABY_STEP_UNDO_COMMIT;
+
+ handler = netsnmp_baby_steps_handler_get(mfd_modes);
+ netsnmp_inject_handler(reginfo, handler);
+
+ /*************************************************
+ *
+ * inject row_merge helper with prefix rootoid_len + 2 (entry.col)
+ */
+ handler = netsnmp_get_row_merge_handler(reginfo->rootoid_len + 2);
+ netsnmp_inject_handler(reginfo, handler);
+
+ /*************************************************
+ *
+ * inject container_table helper
+ */
+ handler =
+ netsnmp_container_table_handler_get(tbl_info,
+ eocExtCnuTable_if_ctx.container,
+ TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+ netsnmp_inject_handler( reginfo, handler );
+
+ /*************************************************
+ *
+ * inject cache helper
+ */
+ if(NULL != eocExtCnuTable_if_ctx.cache) {
+ handler = netsnmp_cache_handler_get(eocExtCnuTable_if_ctx.cache);
+ netsnmp_inject_handler( reginfo, handler );
+ }
+
+ /*
+ * register table
+ */
+ netsnmp_register_table(reginfo, tbl_info);
+
+} /* _eocExtCnuTable_initialize_interface */
+
+/**
+ * @internal
+ * Shutdown the table eocExtCnuTable
+ */
+void
+_eocExtCnuTable_shutdown_interface(eocExtCnuTable_registration * reg_ptr)
+{
+ /*
+ * shutdown the container
+ */
+ _eocExtCnuTable_container_shutdown(&eocExtCnuTable_if_ctx);
+}
+
+void
+eocExtCnuTable_valid_columns_set(netsnmp_column_info *vc)
+{
+ eocExtCnuTable_if_ctx.tbl_info.valid_columns = vc;
+} /* eocExtCnuTable_valid_columns_set */
+
+/**
+ * @internal
+ * convert the index component stored in the context to an oid
+ */
+int
+eocExtCnuTable_index_to_oid(netsnmp_index *oid_idx,
+ eocExtCnuTable_mib_index *mib_idx)
+{
+ int err = SNMP_ERR_NOERROR;
+
+ /*
+ * temp storage for parsing indexes
+ */
+ /*
+ * eocExtCnuCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuCbatCardIndex;
+ /*
+ * eocExtCnuCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuCnuIndex;
+
+ /*
+ * set up varbinds
+ */
+ memset( &var_eocExtCnuCbatCardIndex, 0x00, sizeof(var_eocExtCnuCbatCardIndex) );
+ var_eocExtCnuCbatCardIndex.type = ASN_INTEGER;
+ memset( &var_eocExtCnuCnuIndex, 0x00, sizeof(var_eocExtCnuCnuIndex) );
+ var_eocExtCnuCnuIndex.type = ASN_INTEGER;
+
+ /*
+ * chain temp index varbinds together
+ */
+ var_eocExtCnuCbatCardIndex.next_variable = &var_eocExtCnuCnuIndex; var_eocExtCnuCnuIndex.next_variable = NULL;
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_index_to_oid","called\n"));
+
+ /* eocExtCnuCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ snmp_set_var_value(&var_eocExtCnuCbatCardIndex, (u_char*)&mib_idx->eocExtCnuCbatCardIndex,
+ sizeof(mib_idx->eocExtCnuCbatCardIndex));
+
+ /* eocExtCnuCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ snmp_set_var_value(&var_eocExtCnuCnuIndex, (u_char*)&mib_idx->eocExtCnuCnuIndex,
+ sizeof(mib_idx->eocExtCnuCnuIndex));
+
+
+ err = build_oid_noalloc(oid_idx->oids, oid_idx->len, &oid_idx->len,
+ NULL, 0, &var_eocExtCnuCbatCardIndex);
+ if(err)
+ snmp_log(LOG_ERR,"error %d converting index to oid\n", err);
+
+ /*
+ * parsing may have allocated memory. free it.
+ */
+ snmp_reset_var_buffers( &var_eocExtCnuCbatCardIndex );
+
+ return err;
+} /* eocExtCnuTable_index_to_oid */
+
+/**
+ * extract eocExtCnuTable indexes from a netsnmp_index
+ *
+ * @retval SNMP_ERR_NOERROR : no error
+ * @retval SNMP_ERR_GENERR : error
+ */
+int
+eocExtCnuTable_index_from_oid(netsnmp_index *oid_idx,
+ eocExtCnuTable_mib_index *mib_idx)
+{
+ int err = SNMP_ERR_NOERROR;
+
+ /*
+ * temp storage for parsing indexes
+ */
+ /*
+ * eocExtCnuCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuCbatCardIndex;
+ /*
+ * eocExtCnuCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuCnuIndex;
+
+ /*
+ * set up varbinds
+ */
+ memset( &var_eocExtCnuCbatCardIndex, 0x00, sizeof(var_eocExtCnuCbatCardIndex) );
+ var_eocExtCnuCbatCardIndex.type = ASN_INTEGER;
+ memset( &var_eocExtCnuCnuIndex, 0x00, sizeof(var_eocExtCnuCnuIndex) );
+ var_eocExtCnuCnuIndex.type = ASN_INTEGER;
+
+ /*
+ * chain temp index varbinds together
+ */
+ var_eocExtCnuCbatCardIndex.next_variable = &var_eocExtCnuCnuIndex; var_eocExtCnuCnuIndex.next_variable = NULL;
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_index_from_oid","called\n"));
+
+ /*
+ * parse the oid into the individual index components
+ */
+ err = parse_oid_indexes( oid_idx->oids, oid_idx->len,
+ &var_eocExtCnuCbatCardIndex );
+ if (err == SNMP_ERR_NOERROR) {
+ /*
+ * copy out values
+ */
+ mib_idx->eocExtCnuCbatCardIndex = *((long *)var_eocExtCnuCbatCardIndex.val.string);
+ mib_idx->eocExtCnuCnuIndex = *((long *)var_eocExtCnuCnuIndex.val.string);
+
+
+ }
+
+ /*
+ * parsing may have allocated memory. free it.
+ */
+ snmp_reset_var_buffers( &var_eocExtCnuCbatCardIndex );
+
+ return err;
+} /* eocExtCnuTable_index_from_oid */
+
+
+/*
+ * eocExtCnuTable_allocate_data
+ *
+ * Purpose: create new eocExtCnuTable_data.
+ */
+eocExtCnuTable_data *
+eocExtCnuTable_allocate_data(void)
+{
+ eocExtCnuTable_data *rtn = SNMP_MALLOC_TYPEDEF(eocExtCnuTable_data);
+
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_allocate_data","called\n"));
+
+ if(NULL == rtn) {
+ snmp_log(LOG_ERR, "unable to malloc memory for new "
+ "eocExtCnuTable_data.\n");
+ }
+
+ return rtn;
+} /* eocExtCnuTable_allocate_data */
+
+/*
+ * eocExtCnuTable_release_data
+ *
+ * Purpose: release eocExtCnuTable data.
+ */
+void
+eocExtCnuTable_release_data(eocExtCnuTable_data *data)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuTable:eocExtCnuTable_release_data","called\n"));
+
+ free(data);
+} /* eocExtCnuTable_release_data */
+
+/* *********************************************************************
+ * @internal
+ * allocate resources for a eocExtCnuTable_rowreq_ctx
+ */
+eocExtCnuTable_rowreq_ctx *
+eocExtCnuTable_allocate_rowreq_ctx(void *user_init_ctx)
+{
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx =
+ SNMP_MALLOC_TYPEDEF(eocExtCnuTable_rowreq_ctx);
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:eocExtCnuTable_allocate_rowreq_ctx","called\n"));
+
+ if(NULL == rowreq_ctx) {
+ snmp_log(LOG_ERR,"Couldn't allocate memory for a "
+ "eocExtCnuTable_rowreq_ctx.\n");
+ return NULL;
+ }
+
+ rowreq_ctx->oid_idx.oids = rowreq_ctx->oid_tmp;
+
+ rowreq_ctx->eocExtCnuTable_data_list = NULL;
+
+ /*
+ * if we allocated data, call init routine
+ */
+ if (!(rowreq_ctx->rowreq_flags & MFD_ROW_DATA_FROM_USER)) {
+ if(SNMPERR_SUCCESS !=
+ eocExtCnuTable_rowreq_ctx_init(rowreq_ctx, user_init_ctx)) {
+ eocExtCnuTable_release_rowreq_ctx(rowreq_ctx);
+ rowreq_ctx = NULL;
+ }
+ }
+
+ return rowreq_ctx;
+} /* eocExtCnuTable_allocate_rowreq_ctx */
+
+/*
+ * @internal
+ * release resources for a eocExtCnuTable_rowreq_ctx
+ */
+void
+eocExtCnuTable_release_rowreq_ctx(eocExtCnuTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("internal:eocExtCnuTable:eocExtCnuTable_release_rowreq_ctx","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ eocExtCnuTable_rowreq_ctx_cleanup(rowreq_ctx);
+
+ if(rowreq_ctx->undo)
+ eocExtCnuTable_release_data(rowreq_ctx->undo);
+
+ /*
+ * free index oid pointer
+ */
+ if(rowreq_ctx->oid_idx.oids != rowreq_ctx->oid_tmp)
+ free(rowreq_ctx->oid_idx.oids);
+
+ SNMP_FREE(rowreq_ctx);
+} /* eocExtCnuTable_release_rowreq_ctx */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_eocExtCnuTable_pre_request(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_pre_request",
+ "called\n"));
+
+ if (1 != netsnmp_row_merge_status_first(reginfo, agtreq_info)) {
+ DEBUGMSGTL(("internal:eocExtCnuTable",
+ "skipping additional pre_request\n"));
+ return SNMP_ERR_NOERROR;
+ }
+
+ rc = eocExtCnuTable_pre_request(eocExtCnuTable_if_ctx.user_ctx);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuTable","error %d from "
+ "eocExtCnuTable_pre_request\n", rc));
+ netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+ }
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuTable_pre_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_eocExtCnuTable_post_request(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ int rc, packet_rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_post_request",
+ "called\n"));
+
+ /*
+ * release row context, if deleted
+ */
+ if (rowreq_ctx && (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED))
+ eocExtCnuTable_release_rowreq_ctx(rowreq_ctx);
+
+ /*
+ * wait for last call before calling user
+ */
+ if (1 != netsnmp_row_merge_status_last(reginfo, agtreq_info)) {
+ DEBUGMSGTL(("internal:eocExtCnuTable",
+ "waiting for last post_request\n"));
+ return SNMP_ERR_NOERROR;
+ }
+
+ packet_rc = netsnmp_check_all_requests_error(agtreq_info->asp, 0);
+ if ((MFD_SUCCESS != packet_rc) && eocExtCnuTable_dirty_get()) {
+ /*
+ * we shouldn't get here. the undo steps should also clear
+ * the dirty flags.
+ */
+ snmp_log(LOG_WARNING, "eocExtCnuTable dirty flag set in post_request "
+ "but status != SUCCESS.\n");
+ }
+
+ rc = eocExtCnuTable_post_request(eocExtCnuTable_if_ctx.user_ctx,packet_rc);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuTable","error %d from "
+ "eocExtCnuTable_post_request\n", rc));
+ }
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuTable_post_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_eocExtCnuTable_object_lookup(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc = SNMP_ERR_NOERROR;
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_object_lookup","called\n"));
+
+ /*
+ * get our context from mfd
+ * eocExtCnuTable_interface_ctx *if_ctx =
+ * (eocExtCnuTable_interface_ctx *)reginfo->my_reg_void;
+ */
+
+ if(NULL == rowreq_ctx) {
+ rc = SNMP_ERR_NOCREATION;
+ }
+
+ if (MFD_SUCCESS != rc)
+ netsnmp_request_set_error_all(requests, rc);
+ else
+ eocExtCnuTable_row_prep(rowreq_ctx);
+
+ return SNMP_VALIDATE_ERR(rc);
+} /* _mfd_eocExtCnuTable_object_lookup */
+
+/***********************************************************************
+ *
+ * GET processing
+ *
+ ***********************************************************************/
+/*
+ * @internal
+ * Retrieve the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_eocExtCnuTable_get_column( eocExtCnuTable_rowreq_ctx *rowreq_ctx,
+ netsnmp_variable_list *var, int column )
+{
+ int rc = SNMPERR_SUCCESS;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_get_column",
+ "called for %d\n", column));
+
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ switch(column) {
+
+ /* eocExtCnuMacLimitation(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/W/e/R/d/h */
+ case COLUMN_EOCEXTCNUMACLIMITATION:
+ var->val_len = sizeof(long);
+ var->type = ASN_INTEGER;
+rc = eocExtCnuMacLimitation_get(rowreq_ctx, (long *)var->val.string );
+ break;
+
+ default:
+ if (EOCEXTCNUTABLE_MIN_COL <= column && column <= EOCEXTCNUTABLE_MAX_COL) {
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_get_column",
+ "assume column %d is reserved\n", column));
+ rc = MFD_SKIP;
+ } else {
+ snmp_log(LOG_ERR,
+ "unknown column %d in _eocExtCnuTable_get_column\n", column);
+ }
+ break;
+ }
+
+ return rc;
+} /* _eocExtCnuTable_get_column */
+
+int
+_mfd_eocExtCnuTable_get_values(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ netsnmp_table_request_info * tri;
+ u_char * old_string;
+ void (*dataFreeHook)(void *);
+ int rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_get_values","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ for(;requests; requests = requests->next) {
+ /*
+ * save old pointer, so we can free it if replaced
+ */
+ old_string = requests->requestvb->val.string;
+ dataFreeHook = requests->requestvb->dataFreeHook;
+ if(NULL == requests->requestvb->val.string) {
+ requests->requestvb->val.string = requests->requestvb->buf;
+ requests->requestvb->val_len = sizeof(requests->requestvb->buf);
+ }
+ else if(requests->requestvb->buf == requests->requestvb->val.string) {
+ if(requests->requestvb->val_len != sizeof(requests->requestvb->buf))
+ requests->requestvb->val_len = sizeof(requests->requestvb->buf);
+ }
+
+ /*
+ * get column data
+ */
+ tri = netsnmp_extract_table_info(requests);
+ if(NULL == tri)
+ continue;
+
+ rc = _eocExtCnuTable_get_column(rowreq_ctx, requests->requestvb, tri->colnum);
+ if(rc) {
+ if(MFD_SKIP == rc) {
+ requests->requestvb->type = SNMP_NOSUCHINSTANCE;
+ rc = SNMP_ERR_NOERROR;
+ }
+ }
+ else if (NULL == requests->requestvb->val.string) {
+ snmp_log(LOG_ERR,"NULL varbind data pointer!\n");
+ rc = SNMP_ERR_GENERR;
+ }
+ if(rc)
+ netsnmp_request_set_error(requests, SNMP_VALIDATE_ERR(rc));
+
+ /*
+ * if the buffer wasn't used previously for the old data (i.e. it
+ * was allcoated memory) and the get routine replaced the pointer,
+ * we need to free the previous pointer.
+ */
+ if(old_string && (old_string != requests->requestvb->buf) &&
+ (requests->requestvb->val.string != old_string)) {
+ if(dataFreeHook)
+ (*dataFreeHook)(old_string);
+ else
+ free(old_string);
+ }
+ } /* for results */
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuTable_get_values */
+
+
+/***********************************************************************
+ *
+ * SET processing
+ *
+ ***********************************************************************/
+
+/*----------------------------------------------------------------------
+ *
+ * SET: Syntax checks
+ *
+ *---------------------------------------------------------------------*/
+/*
+ * @internal
+ * Check the syntax for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_eocExtCnuTable_check_column( eocExtCnuTable_rowreq_ctx *rowreq_ctx,
+ netsnmp_variable_list *var, int column )
+{
+ int rc = SNMPERR_SUCCESS;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_eocExtCnuTable_check_column",
+ "called for %d\n", column));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ switch(column) {
+ /* (INDEX) eocExtCnuCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ case COLUMN_EOCEXTCNUCBATCARDINDEX:
+ rc = SNMP_ERR_NOTWRITABLE; /* can not change index of active row */
+ break;
+ /* (INDEX) eocExtCnuCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ case COLUMN_EOCEXTCNUCNUINDEX:
+ rc = SNMP_ERR_NOTWRITABLE; /* can not change index of active row */
+ break;
+
+ /* eocExtCnuMacLimitation(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/W/e/R/d/h */
+ case COLUMN_EOCEXTCNUMACLIMITATION:
+ rc = netsnmp_check_vb_type_and_size( var, ASN_INTEGER,
+ sizeof( rowreq_ctx->data.eocExtCnuMacLimitation ) );
+ /* check defined range(s). */
+ if( (SNMPERR_SUCCESS == rc)
+ && ((*var->val.integer < 1) || (*var->val.integer > 128))
+ ) {
+ rc = SNMP_ERR_WRONGVALUE;
+ }
+ if(SNMPERR_SUCCESS != rc) {
+ DEBUGMSGTL(("eocExtCnuTable:_eocExtCnuTable_check_column:eocExtCnuMacLimitation",
+ "varbind validation failed (eg bad type or size)\n"));
+ }
+ else {
+ rc = eocExtCnuMacLimitation_check_value( rowreq_ctx, *((long *)var->val.string) );
+ if((MFD_SUCCESS != rc) && (MFD_NOT_VALID_EVER != rc) &&
+ (MFD_NOT_VALID_NOW != rc)) {
+ snmp_log(LOG_ERR, "bad rc %d from eocExtCnuMacLimitation_check_value\n", rc);
+ rc = SNMP_ERR_GENERR;
+ }
+ }
+ break;
+
+ default: /** We shouldn't get here */
+ rc = SNMP_ERR_GENERR;
+ snmp_log(LOG_ERR, "unknown column %d in _eocExtCnuTable_check_column\n", column);
+ }
+
+ return rc;
+} /* _eocExtCnuTable_check_column */
+
+int
+_mfd_eocExtCnuTable_check_objects(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ netsnmp_table_request_info * tri;
+ int rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_check_objects","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ for(;requests; requests = requests->next) {
+
+ /*
+ * get column number from table request info, and check that column
+ */
+ tri = netsnmp_extract_table_info(requests);
+ if(NULL == tri)
+ continue;
+
+ rc = _eocExtCnuTable_check_column(rowreq_ctx, requests->requestvb, tri->colnum);
+ if(rc) {
+ netsnmp_request_set_error(requests, SNMP_VALIDATE_ERR(rc));
+ break;
+ }
+
+ } /* for results */
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuTable_check_objects */
+
+
+/*----------------------------------------------------------------------
+ *
+ * SET: Undo setup
+ *
+ *---------------------------------------------------------------------*/
+/*
+ * @internal
+ * Set the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_eocExtCnuTable_undo_setup_column( eocExtCnuTable_rowreq_ctx *rowreq_ctx, int column )
+{
+ int rc = SNMPERR_SUCCESS;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_eocExtCnuTable_undo_setup_column",
+ "called for %d\n", column));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ switch(column) {
+
+ /* eocExtCnuMacLimitation(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/W/e/R/d/h */
+ case COLUMN_EOCEXTCNUMACLIMITATION:
+ rowreq_ctx->column_set_flags |= COLUMN_EOCEXTCNUMACLIMITATION_FLAG;
+ rc = eocExtCnuMacLimitation_undo_setup(rowreq_ctx );
+ break;
+
+ default:
+ snmp_log(LOG_ERR,"unknown column %d in _eocExtCnuTable_undo_setup_column\n", column);
+ break;
+ }
+
+ return rc;
+} /* _eocExtCnuTable_undo_setup_column */
+
+
+/**
+ * @internal
+ * undo setup
+ */
+int
+_mfd_eocExtCnuTable_undo_setup(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc;
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_undo_setup","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * allocate undo context
+ */
+ rowreq_ctx->undo = eocExtCnuTable_allocate_data();
+ if(NULL == rowreq_ctx->undo) {
+ /** msg already logged */
+ netsnmp_request_set_error_all(requests, SNMP_ERR_RESOURCEUNAVAILABLE);
+ return SNMP_ERR_NOERROR;
+ }
+
+ /*
+ * row undo setup
+ */
+ rowreq_ctx->column_set_flags = 0;
+ rc = eocExtCnuTable_undo_setup(rowreq_ctx);
+ if (MFD_SUCCESS != rc) {
+ DEBUGMSGTL(("eocExtCnuTable:mfd","error %d from "
+ "eocExtCnuTable_undo_setup\n", rc));
+ netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+ }
+ else {
+ /*
+ * column undo setup
+ */
+ netsnmp_table_request_info * tri;
+ for(;requests; requests = requests->next) {
+ /*
+ * set column data
+ */
+ tri = netsnmp_extract_table_info(requests);
+ if(NULL == tri)
+ continue;
+
+ rc = _eocExtCnuTable_undo_setup_column(rowreq_ctx, tri->colnum);
+ if(MFD_SUCCESS != rc) {
+ DEBUGMSGTL(("eocExtCnuTable:mfd","error %d from "
+ "eocExtCnuTable_undo_setup_column\n", rc));
+ netsnmp_set_request_error(agtreq_info, requests, SNMP_VALIDATE_ERR(rc));
+ }
+ } /* for results */
+ }
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuTable_undo_setup */
+
+/**
+ * @internal
+ * undo setup
+ */
+int
+_mfd_eocExtCnuTable_undo_cleanup(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ int rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_undo_cleanup","called\n"));
+
+ /*
+ * failed row create in early stages has no rowreq_ctx
+ */
+ if (NULL == rowreq_ctx)
+ return MFD_SUCCESS;
+
+ /*
+ * call user cleanup
+ */
+ rc = eocExtCnuTable_undo_cleanup(rowreq_ctx);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuTable:mfd","error %d from "
+ "eocExtCnuTable_undo_cleanup\n", rc));
+ }
+
+ /*
+ * release undo context, if needed
+ */
+ if(rowreq_ctx->undo) {
+ eocExtCnuTable_release_data(rowreq_ctx->undo);
+ rowreq_ctx->undo = NULL;
+ }
+
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuTable_undo_cleanup */
+
+/*----------------------------------------------------------------------
+ *
+ * SET: Set values
+ *
+ *---------------------------------------------------------------------*/
+/*
+ * @internal
+ * Set the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_eocExtCnuTable_set_column( eocExtCnuTable_rowreq_ctx *rowreq_ctx,
+ netsnmp_variable_list *var, int column )
+{
+ int rc = SNMPERR_SUCCESS;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_eocExtCnuTable_set_column",
+ "called for %d\n", column));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ switch(column) {
+
+ /* eocExtCnuMacLimitation(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/W/e/R/d/h */
+ case COLUMN_EOCEXTCNUMACLIMITATION:
+ rowreq_ctx->column_set_flags |= COLUMN_EOCEXTCNUMACLIMITATION_FLAG;
+ rc = eocExtCnuMacLimitation_set(rowreq_ctx, *((long *)var->val.string) );
+ break;
+
+ default:
+ snmp_log(LOG_ERR,"unknown column %d in _eocExtCnuTable_set_column\n", column);
+ rc = SNMP_ERR_GENERR;
+ break;
+ }
+
+ return rc;
+} /* _eocExtCnuTable_set_column */
+
+int
+_mfd_eocExtCnuTable_set_values(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ netsnmp_table_request_info * tri;
+ int rc = SNMP_ERR_NOERROR;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_set_values","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ rowreq_ctx->column_set_flags = 0;
+ for(;requests; requests = requests->next) {
+ /*
+ * set column data
+ */
+ tri = netsnmp_extract_table_info(requests);
+ if(NULL == tri)
+ continue;
+
+ rc = _eocExtCnuTable_set_column(rowreq_ctx,
+ requests->requestvb, tri->colnum);
+ if(MFD_SUCCESS != rc) {
+ DEBUGMSGTL(("eocExtCnuTable:mfd","error %d from "
+ "eocExtCnuTable_set_column\n", rc));
+ netsnmp_set_request_error(agtreq_info, requests, SNMP_VALIDATE_ERR(rc));
+ }
+ } /* for results */
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuTable_set_values */
+
+/*----------------------------------------------------------------------
+ *
+ * SET: commit
+ *
+ *---------------------------------------------------------------------*/
+/**
+ * @internal
+ * commit the values
+ */
+int
+_mfd_eocExtCnuTable_commit(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc;
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_commit","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ rc = eocExtCnuTable_commit(rowreq_ctx);
+ if (MFD_SUCCESS != rc) {
+ DEBUGMSGTL(("eocExtCnuTable:mfd","error %d from "
+ "eocExtCnuTable_commit\n", rc));
+ netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+ }
+
+ if (rowreq_ctx->rowreq_flags & MFD_ROW_DIRTY) {
+ /*
+ * if we successfully commited this row, set the dirty flag. Use the
+ * current value + 1 (i.e. dirty = # rows changed).
+ * this is checked in post_request...
+ */
+ eocExtCnuTable_dirty_set( eocExtCnuTable_dirty_get() + 1 ); /* set table dirty flag */
+ }
+
+ return SNMP_ERR_NOERROR;
+}
+
+int
+_mfd_eocExtCnuTable_undo_commit(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc;
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_undo_commit","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ if (rowreq_ctx->rowreq_flags & MFD_ROW_DIRTY) {
+ u_int d = eocExtCnuTable_dirty_get();
+
+ netsnmp_assert(d != 0);
+ if(d)
+ eocExtCnuTable_dirty_set( d - 1 );
+ }
+
+ rc = eocExtCnuTable_undo_commit(rowreq_ctx);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuTable:mfd","error %d from "
+ "eocExtCnuTable_undo_commit\n", rc));
+ }
+
+ if (rowreq_ctx->rowreq_flags & MFD_ROW_DIRTY) {
+ snmp_log(LOG_WARNING, "eocExtCnuTable row dirty flag still set after undo_commit\n");
+ rowreq_ctx->rowreq_flags &= ~MFD_ROW_DIRTY;
+ }
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuTable_commit */
+
+/*----------------------------------------------------------------------
+ *
+ * SET: Undo
+ *
+ *---------------------------------------------------------------------*/
+/**
+ * @internal
+ * undo the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_eocExtCnuTable_undo_column( eocExtCnuTable_rowreq_ctx *rowreq_ctx,
+ netsnmp_variable_list *var, int column )
+{
+ int rc = SNMPERR_SUCCESS;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_eocExtCnuTable_undo_column",
+ "called for %d\n", column));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ switch(column) {
+
+ /* eocExtCnuMacLimitation(3)/INTEGER32/ASN_INTEGER/long(long)//l/A/W/e/R/d/h */
+ case COLUMN_EOCEXTCNUMACLIMITATION:
+ rc = eocExtCnuMacLimitation_undo(rowreq_ctx);
+ break;
+
+ default:
+ snmp_log(LOG_ERR,"unknown column %d in _eocExtCnuTable_undo_column\n", column);
+ break;
+ }
+
+ return rc;
+} /* _eocExtCnuTable_undo_column */
+
+int
+_mfd_eocExtCnuTable_undo_values(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc;
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ netsnmp_table_request_info * tri;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_undo_values","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ rc = eocExtCnuTable_undo(rowreq_ctx);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuTable:mfd","error %d from "
+ "eocExtCnuTable_undo\n", rc));
+ }
+
+ for(;requests; requests = requests->next) {
+ /*
+ * set column data
+ */
+ tri = netsnmp_extract_table_info(requests);
+ if(NULL == tri)
+ continue;
+
+ rc = _eocExtCnuTable_undo_column(rowreq_ctx, requests->requestvb,
+ tri->colnum);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuTable:mfd","error %d from "
+ "eocExtCnuTable_undo_column\n", rc));
+ }
+ } /* for results */
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuTable_undo_values */
+
+/*----------------------------------------------------------------------
+ *
+ * SET: irreversible commit
+ *
+ *---------------------------------------------------------------------*/
+/**
+ * @internal
+ * commit irreversible actions
+ */
+int
+_mfd_eocExtCnuTable_irreversible_commit(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_mfd_eocExtCnuTable_irreversible:commit","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * check for and handle row creation/deletion
+ * and update column exist flags...
+ */
+ if (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED) {
+ if (! (rowreq_ctx->rowreq_flags & MFD_ROW_CREATED))
+ CONTAINER_REMOVE(eocExtCnuTable_if_ctx.container, rowreq_ctx);
+ }
+ else {
+ if (rowreq_ctx->column_set_flags) {
+ rowreq_ctx->column_set_flags = 0;
+ }
+ }
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuTable_irreversible_commit */
+
+/***********************************************************************
+ *
+ * DATA ACCESS
+ *
+ ***********************************************************************/
+static void _container_free(netsnmp_container *container);
+
+/**
+ * @internal
+ */
+static int
+_cache_load(netsnmp_cache *cache, void *vmagic)
+{
+ DEBUGMSGTL(("internal:eocExtCnuTable:_cache_load","called\n"));
+
+ if((NULL == cache) || (NULL == cache->magic)) {
+ snmp_log(LOG_ERR, "invalid cache for eocExtCnuTable_cache_load\n");
+ return -1;
+ }
+
+ /** should only be called for an invalid or expired cache */
+ netsnmp_assert((0 == cache->valid) || (1 == cache->expired));
+
+ /*
+ * call user code
+ */
+ return eocExtCnuTable_container_load((netsnmp_container*)cache->magic);
+} /* _cache_load */
+
+/**
+ * @internal
+ */
+static void
+_cache_free(netsnmp_cache *cache, void *magic)
+{
+ netsnmp_container *container;
+
+ DEBUGMSGTL(("internal:eocExtCnuTable:_cache_free","called\n"));
+
+ if((NULL == cache) || (NULL == cache->magic)) {
+ snmp_log(LOG_ERR, "invalid cache in eocExtCnuTable_cache_free\n");
+ return;
+ }
+
+ container = (netsnmp_container*)cache->magic;
+
+ _container_free(container);
+} /* _cache_free */
+
+/**
+ * @internal
+ */
+static void
+_container_item_free(eocExtCnuTable_rowreq_ctx *rowreq_ctx, void *context)
+{
+ DEBUGMSGTL(("internal:eocExtCnuTable:_container_item_free","called\n"));
+
+ if(NULL == rowreq_ctx)
+ return;
+
+ eocExtCnuTable_release_rowreq_ctx(rowreq_ctx);
+} /* _container_item_free */
+
+/**
+ * @internal
+ */
+static void
+_container_free(netsnmp_container *container)
+{
+ DEBUGMSGTL(("internal:eocExtCnuTable:_container_free","called\n"));
+
+ if (NULL == container) {
+ snmp_log(LOG_ERR, "invalid container in eocExtCnuTable_container_free\n");
+ return;
+ }
+
+ /*
+ * call user code
+ */
+ eocExtCnuTable_container_free(container);
+
+ /*
+ * free all items. inefficient, but easy.
+ */
+ CONTAINER_CLEAR(container,
+ (netsnmp_container_obj_func *)_container_item_free,
+ NULL);
+} /* _container_free */
+
+/**
+ * @internal
+ * initialize the container with functions or wrappers
+ */
+void
+_eocExtCnuTable_container_init(eocExtCnuTable_interface_ctx *if_ctx)
+{
+ DEBUGMSGTL(("internal:eocExtCnuTable:_eocExtCnuTable_container_init","called\n"));
+
+ /*
+ * cache init
+ */
+ if_ctx->cache = netsnmp_cache_create(30, /* timeout in seconds */
+ _cache_load, _cache_free,
+ eocExtCnuTable_oid,
+ eocExtCnuTable_oid_size);
+
+ if(NULL == if_ctx->cache) {
+ snmp_log(LOG_ERR, "error creating cache for eocExtCnuTable\n");
+ return;
+ }
+
+ if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+ eocExtCnuTable_container_init(&if_ctx->container, if_ctx->cache);
+ if(NULL == if_ctx->container)
+ if_ctx->container = netsnmp_container_find("eocExtCnuTable:table_container");
+ if(NULL == if_ctx->container) {
+ snmp_log(LOG_ERR,"error creating container in "
+ "eocExtCnuTable_container_init\n");
+ return;
+ }
+
+ if (NULL != if_ctx->cache)
+ if_ctx->cache->magic = (void*)if_ctx->container;
+} /* _eocExtCnuTable_container_init */
+
+/**
+ * @internal
+ * shutdown the container with functions or wrappers
+ */
+void
+_eocExtCnuTable_container_shutdown(eocExtCnuTable_interface_ctx *if_ctx)
+{
+ DEBUGMSGTL(("internal:eocExtCnuTable:_eocExtCnuTable_container_shutdown","called\n"));
+
+ eocExtCnuTable_container_shutdown(if_ctx->container);
+
+ _container_free(if_ctx->container);
+
+} /* _eocExtCnuTable_container_shutdown */
+
+
+eocExtCnuTable_rowreq_ctx *
+eocExtCnuTable_row_find_by_mib_index(eocExtCnuTable_mib_index *mib_idx)
+{
+ eocExtCnuTable_rowreq_ctx *rowreq_ctx;
+ oid oid_tmp[MAX_OID_LEN];
+ netsnmp_index oid_idx;
+ int rc;
+
+ /*
+ * set up storage for OID
+ */
+ oid_idx.oids = oid_tmp;
+ oid_idx.len = sizeof(oid_tmp)/sizeof(oid);
+
+ /*
+ * convert
+ */
+ rc = eocExtCnuTable_index_to_oid(&oid_idx, mib_idx);
+ if (MFD_SUCCESS != rc)
+ return NULL;
+
+ rowreq_ctx = CONTAINER_FIND(eocExtCnuTable_if_ctx.container, &oid_idx);
+
+ return rowreq_ctx;
+}
+
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_interface.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_interface.h
new file mode 100644
index 0000000000..acb851cd11
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_interface.h
@@ -0,0 +1,87 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 15899 $ 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 EOCEXTCNUTABLE_INTERFACE_H
+#define EOCEXTCNUTABLE_INTERFACE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#include "eocExtCnuTable.h"
+
+
+/* ********************************************************************
+ * Table declarations
+ */
+
+/* PUBLIC interface initialization routine */
+void _eocExtCnuTable_initialize_interface(eocExtCnuTable_registration * user_ctx,
+ u_long flags);
+void _eocExtCnuTable_shutdown_interface(eocExtCnuTable_registration * user_ctx);
+
+eocExtCnuTable_registration *
+eocExtCnuTable_registration_get( void );
+
+eocExtCnuTable_registration *
+eocExtCnuTable_registration_set( eocExtCnuTable_registration * newreg );
+
+netsnmp_container *eocExtCnuTable_container_get( void );
+int eocExtCnuTable_container_size( void );
+
+u_int eocExtCnuTable_dirty_get( void );
+void eocExtCnuTable_dirty_set( u_int status );
+
+ eocExtCnuTable_rowreq_ctx * eocExtCnuTable_allocate_rowreq_ctx(void *);
+void eocExtCnuTable_release_rowreq_ctx(eocExtCnuTable_rowreq_ctx *rowreq_ctx);
+
+int eocExtCnuTable_index_to_oid(netsnmp_index *oid_idx,
+ eocExtCnuTable_mib_index *mib_idx);
+int eocExtCnuTable_index_from_oid(netsnmp_index *oid_idx,
+ eocExtCnuTable_mib_index *mib_idx);
+
+/*
+ * access to certain internals. use with caution!
+ */
+void eocExtCnuTable_valid_columns_set(netsnmp_column_info *vc);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUTABLE_INTERFACE_H */
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_oids.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_oids.h
new file mode 100644
index 0000000000..0a3c08ee02
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuMgmtObjects/eocExtCnuTable/eocExtCnuTable_oids.h
@@ -0,0 +1,41 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * : generic-table-oids.m2c 17548 2009-04-23 16:35:18Z hardaker $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUTABLE_OIDS_H
+#define EOCEXTCNUTABLE_OIDS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* column number definitions for table eocExtCnuTable */
+#define EOCEXTCNUTABLE_OID 1,3,6,1,4,1,17409,2,4,20,1,1,1
+
+
+#define COLUMN_EOCEXTCNUCBATCARDINDEX 1
+
+#define COLUMN_EOCEXTCNUCNUINDEX 2
+
+#define COLUMN_EOCEXTCNUMACLIMITATION 3
+#define COLUMN_EOCEXTCNUMACLIMITATION_FLAG (0x1 << 0)
+
+
+#define EOCEXTCNUTABLE_MIN_COL COLUMN_EOCEXTCNUMACLIMITATION
+#define EOCEXTCNUTABLE_MAX_COL COLUMN_EOCEXTCNUMACLIMITATION
+
+
+ /*
+ * TODO:405:r: Review EOCEXTCNUTABLE_SETTABLE_COLS macro.
+ * OR together all the writable cols.
+ */
+#define EOCEXTCNUTABLE_SETTABLE_COLS (COLUMN_EOCEXTCNUMACLIMITATION_FLAG)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUTABLE_OIDS_H */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects.h
new file mode 100644
index 0000000000..82647c849d
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects.h
@@ -0,0 +1 @@
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable)
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable.h
new file mode 100644
index 0000000000..1107589af2
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable.h
@@ -0,0 +1,5 @@
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_interface)
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_access)
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_set)
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_get)
+config_require(mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable)
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortActualDuplex.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortActualDuplex.m2d
new file mode 100644
index 0000000000..3dc01e9128
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortActualDuplex.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuEtherPortActualDuplex
+##
+## 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 = 0@
+##
+########################################################################
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortActualSpeed.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortActualSpeed.m2d
new file mode 100644
index 0000000000..4659fd6d91
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortActualSpeed.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuEtherPortActualSpeed
+##
+## 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 = 0@
+##
+########################################################################
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortCbatCardIndex.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortCbatCardIndex.m2d
new file mode 100644
index 0000000000..71737ed61e
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortCbatCardIndex.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuEtherPortCbatCardIndex
+##
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortCnuIndex.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortCnuIndex.m2d
new file mode 100644
index 0000000000..b429a1c097
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortCnuIndex.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuEtherPortCnuIndex
+##
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortCnuPortIndex.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortCnuPortIndex.m2d
new file mode 100644
index 0000000000..80268e129a
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortCnuPortIndex.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuEtherPortCnuPortIndex
+##
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortConfAutoNeg.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortConfAutoNeg.m2d
new file mode 100644
index 0000000000..09ed656a54
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortConfAutoNeg.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuEtherPortConfAutoNeg
+##
+## 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 = 0@
+##
+########################################################################
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortConfDuplex.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortConfDuplex.m2d
new file mode 100644
index 0000000000..b198a4d501
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortConfDuplex.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuEtherPortConfDuplex
+##
+## 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 = 0@
+##
+########################################################################
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortConfSpeed.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortConfSpeed.m2d
new file mode 100644
index 0000000000..f7538a71f4
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/node-eocExtCnuEtherPortConfSpeed.m2d
@@ -0,0 +1,35 @@
+########################################################################
+##
+## mib2c node setting for eocExtCnuEtherPortConfSpeed
+##
+## 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 = 0@
+##
+########################################################################
+## 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@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/table-eocExtCnuEtherPortTable.m2d b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/table-eocExtCnuEtherPortTable.m2d
new file mode 100644
index 0000000000..321b29ffc2
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/defaults/table-eocExtCnuEtherPortTable.m2d
@@ -0,0 +1,103 @@
+## ########################################################################
+##
+## mib2c Table setting for eocExtCnuEtherPortTable
+##
+## ########################################################################
+##
+## 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 = 1@
+##
+## ########################################################################
+##
+## 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 = 1@
+##
+## ########################################################################
+##
+## Include some example code?
+##
+@eval $m2c_include_examples = 0@
+##
+## ########################################################################
+##
+## 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 = 1@
+##
+## ########################################################################
+##
+## 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 = 0@
+@eval $mfd_generate_subagent = 0@
+##
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable-README-FIRST.txt b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable-README-FIRST.txt
new file mode 100644
index 0000000000..4601c87935
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable-README-FIRST.txt
@@ -0,0 +1,167 @@
+************************************************************************
+eocExtCnuEtherPortTable 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 eocExtCnuEtherPortTable 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 : eocExtCnuEtherPortTable_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 eocExtCnuEtherPortTable_Makefile
+
+
+ File : eocExtCnuEtherPortTable_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:
+
+ eocExtCnuEtherPortTable-README-eocExtCnuEtherPortTable.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 : eocExtCnuEtherPortTable.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 : eocExtCnuEtherPortTable_oids.h
+ Purpose : C #define definitions of the tables, columns, and OIDs
+
+ File : eocExtCnuEtherPortTable_enums.h
+ Purpose : C #define definitions of the enumerated type values for
+ each column of each table that requires them.
+
+ File : eocExtCnuEtherPortTable_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.
+
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable-README-eocExtCnuEtherPortTable.txt b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable-README-eocExtCnuEtherPortTable.txt
new file mode 100644
index 0000000000..ba6846c6e9
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable-README-eocExtCnuEtherPortTable.txt
@@ -0,0 +1,775 @@
+************************************************************************
+eocExtCnuEtherPortTable README
+------------------------------------------------------------------------
+ This readme file describes the code generated by mib2c (using the MIBs
+ for Dummies (MFD) configuration file). The code generated was
+ generated specifically for the following SNMP table:
+
+ eocExtCnuEtherPortTable
+
+ Your code will be called when the snmp agent receives requests for
+ the eocExtCnuEtherPortTable table. The agent will start by looking for the right
+ row in your existing data to operate on, if one exists.
+
+
+ Configuration Variables
+ ------------------------------------------------------------
+ Some variables used for code generation may be set to affect the code
+ generation. You may override these variables by setting them in the
+ file defaults/table-eocExtCnuEtherPortTable.m2d, and then re-running mib2c.
+
+ m2c_table_settable (currently '1')
+ --------------------------------------------------------
+ This variable determines whether or not code is generated to support
+ MIB object which have an access of read-write or read-create. The
+ default is set based on whether or not the table contains writable
+ objects, but can be over-ridden.
+
+ Syntax: @eval $m2c_table_settable = 0@
+
+
+ m2c_table_dependencies (currently '0')
+ --------------------------------------------------------
+ This variable determines whether or not code is generated to support
+ checking dependencies between columns, rows or tables. The default
+ is set based on whether or not the table contains writable objects,
+ but can be over-ridden.
+
+ Syntax: @eval $m2c_table_dependencies = 0@
+
+
+ m2c_table_row_creation (currently '0')
+ --------------------------------------------------------
+ This variable determines whether or not code is generated to support
+ checking creation of new rows via SNMP. The default is set based on
+ whether or not the table contains read-create objects, but can be
+ over-ridden.
+
+ Syntax: @eval $m2c_table_row_creation = 0@
+
+
+ m2c_context_reg (currently 'netsnmp_data_list')
+ --------------------------------------------------------
+ This variable contains the structure name to typedef for the
+ eocExtCnuEtherPortTable_registration.
+
+ During initilization, you will provide a pointer to a structure of
+ this type. This pointer is used as a parameter to many functions so
+ that you have access to your registration data. The default is a
+ netsnmp_data_list pointer, which will allow you to keep multiple
+ pointers tagged by a text name. If you have a new or existing structure
+ you would rather use, you can redefine this variable.
+
+
+ To avoid regenerating code, you may also change this typedef directly
+ in the eocExtCnuEtherPortTable.h header.
+
+ Syntax: @eval $m2c_context_reg = "struct my_registration_context@
+
+
+ m2c_data_context (currently 'generated')
+ --------------------------------------------------------
+ This variable contains the structure name to typedef for the
+ eocExtCnuEtherPortTable_data.
+
+ This typedef is used in the row request context structure for the table,
+ eocExtCnuEtherPortTable_rowreq_ctx.
+
+ The typedef in the primary table context will be used for the data and
+ undo structure types. This structure should contain all the data
+ needed for all the columns in the table. The default is 'generated',
+ which will cuase a new data strcuture to be generated with data members
+ for each column.
+
+ To avoid regenerating code, you may also change this typedef directly
+ in the eocExtCnuEtherPortTable.h header.
+
+ Syntax: @eval $m2c_data_context = "struct my_data_context"@
+
+
+ m2c_data_allocate (currently '0')
+ --------------------------------------------------------
+ This variable determines whether or not the data context (see above)
+ requires memory to be allocated. The default generated data structure
+ does not. If you are using a custom data context which needs to
+ allocate memory, override this value and two additional functions
+ will be generated:
+
+ eocExtCnuEtherPortTable_allocate_data
+ eocExtCnuEtherPortTable_release_data
+
+ Syntax: @eval $m2c_data_allocate = 1@
+
+
+ m2c_data_init (currently '1')
+ --------------------------------------------------------
+ This variable determines whether or not the data context (see above)
+ or any other items you have added to the table context requires
+ initialization. The default generated data structure does not. If you
+ are using a custom data context or have added items needing initialization
+ to the table context, override this value and two additional functions
+ will be generated:
+
+ eocExtCnuEtherPortTable_rowreq_ctx_init
+ eocExtCnuEtherPortTable_rowreq_ctx_cleanup
+
+ Syntax: @eval 1 = 1@
+
+
+ m2c_table_access (currently 'container-cached')
+ ------------------------------------------------------------------
+ This variable determines which data interface will be use to generate
+ code for looking up data for a given index. The default is the
+ 'container-cached' access code, which caches the data in a netsnmp-
+ container (usually a sorted array).
+
+ Available options can be determined by checking for mib2c configuration
+ files that begin with 'mfd-access-*'.
+
+ Syntax: @eval $m2c_table_access = 'container-cached'@
+
+
+ m2c_include_examples (currently '0')
+ ------------------------------------------------------------------
+ This variable determines whether or not to generate example code. The
+ default is to generate example code.
+
+ Syntax: @eval $m2c_include_examples = 0@
+
+
+ m2c_data_transient (currently '1')
+ ------------------------------------------------------------------
+ This variable determines how the generated example code deals with the
+ data during data lookup. See the table readme file for details on how
+ the current table access method interprets this value. In general,
+ a value of 0 indicates persistent data, 1 indicates semi-transient and
+ 2 indicates transient data.
+
+ Syntax: @eval $m2c_data_transient = 0@
+
+
+ Index(es) for the eocExtCnuEtherPortTable table
+ ------------------------------------------------------------
+ The index(es) for the eocExtCnuEtherPortTable table are:
+
+ eocExtCnuEtherPortCbatCardIndex:
+ Syntax: INTEGER32
+ DataType: INTEGER32
+ ASN type: ASN_INTEGER
+ C-code type: long
+ eocExtCnuEtherPortCnuIndex:
+ Syntax: INTEGER32
+ DataType: INTEGER32
+ ASN type: ASN_INTEGER
+ C-code type: long
+ eocExtCnuEtherPortCnuPortIndex:
+ Syntax: INTEGER32
+ DataType: INTEGER32
+ ASN type: ASN_INTEGER
+ C-code type: long
+
+ You should know how to set all these values from your data context,
+ eocExtCnuEtherPortTable_data.
+
+
+************************************************************************
+eocExtCnuEtherPortTable File Overview
+------------------------------------------------------------------------
+ Several files have been generated to implement the eocExtCnuEtherPortTable
+ table. We'll go through these files, one by one, explaining each and
+ letting you know which you need to edit.
+
+
+File: eocExtCnuEtherPortTable_data_access.[c|h]
+------------------------------------------------------------------------
+ The eocExtCnuEtherPortTable_data_access file contains the interface to your data in
+ its raw format. These functions are used to build the row cache or
+ locate the row (depending on the table access method).
+
+ Set MIB context
+ -----------------
+ TODO : Set MIB index values
+ FUNC : eocExtCnuEtherPortTable_indexes_set
+ WHERE: eocExtCnuEtherPortTable_data_access.c
+
+ This is a convenience function for setting the index context from
+ the native C data. Where necessary, value mapping should be done.
+
+ This function should update the table index values (found in
+ tbl_idx) for the given raw data.
+
+
+ container summary
+ ------------------------
+ The container data access code is for cases when you want to
+ store your data in the agent/sub-agent.
+
+ ... to be continued...
+
+
+ cache summary
+ ------------------------
+ The container-cached data access code is for cases when you want to
+ cache your data in the agent/sub-agent.
+
+ ... to be continued...
+
+
+
+
+File: eocExtCnuEtherPortTable_enums.h
+------------------------------------------------------------------------
+ This file contains macros for mapping enumeration values when the
+ enumerated values defined by the MIB do not match the values used
+ internally.
+
+ Review this file to see if any values need to be updated.
+
+
+File: eocExtCnuEtherPortTable_data_get.c
+------------------------------------------------------------------------
+ Get data for column
+ -------------------
+ TODO : retrieve column data from raw data
+ FUNC : eocExtCnuEtherPortConfAutoNeg_get
+
+ Get data for column
+ -------------------
+ TODO : retrieve column data from raw data
+ FUNC : eocExtCnuEtherPortConfSpeed_get
+
+ Get data for column
+ -------------------
+ TODO : retrieve column data from raw data
+ FUNC : eocExtCnuEtherPortActualSpeed_get
+
+ Get data for column
+ -------------------
+ TODO : retrieve column data from raw data
+ FUNC : eocExtCnuEtherPortConfDuplex_get
+
+ Get data for column
+ -------------------
+ TODO : retrieve column data from raw data
+ FUNC : eocExtCnuEtherPortActualDuplex_get
+
+
+
+File: eocExtCnuEtherPortTable_data_set.c
+------------------------------------------------------------------------
+
+ This code was generated based on the following assumptions or settings:
+
+ 1) Some of the values for this table have DEPENDENCIES on other objects.
+
+ DEPENDENCIES on other objects complicates SET request processing. When
+ one or more columns in a table depend on another object (in the same
+ table, or in another table), a DEPENDENCY exists. For example, if you
+ have a table that determine a color with three columns (red, green and
+ blue) that define the percentage of each primary color, the total for
+ the three columns must equal 100 percent. So, in addition to checking
+ that each colums has a valid value between 0 and 100, the total of
+ all three columns must equal 100.
+
+ Set $m2c_table_dependencies = 0 in defaults/table-eocExtCnuEtherPortTable.m2d
+ and regenerate code if this assumption is incorrect.
+
+ 2) This table does not support ROW CREATION.
+
+ Supporting ROW CREATION allows new rows to be created via SNMP requests.
+
+
+
+ Undo setup
+ ----------
+ TODO : save data for undo
+ FUNC : eocExtCnuEtherPortTable_undo_setup
+
+ This function will be called before the individual undo_setup functions are
+ called. This is where you should save any undo information which is not
+ directly related to a particular column. This function will only be called
+ once per row. After this function is called, any column which is being
+ set will have its individual node undo_setup function called.
+
+
+
+ Check value for column
+ ----------------------
+ TODO : perform additional validations on values for a set request
+ FUNC : eocExtCnuEtherPortConfAutoNeg_check_value
+
+ The generated code will automatically validate incoming requests against
+ all the requirements specified by the syntax of the MIB. However, it is
+ often the case that additional requirements are specified in the
+ description of a MIB object. Those type of validations should be checked
+ in this function.
+
+
+ Undo setup for column
+ ---------------------
+ TODO : save the value for column
+ FUNC : eocExtCnuEtherPortConfAutoNeg_undo_setup
+
+ After the table level undo setup function has been called, the individual
+ node undo setup functions will be called for columns which are being set.
+
+
+ Set value for column
+ --------------------
+ TODO : set the value for column
+ FUNC : eocExtCnuEtherPortConfAutoNeg_set
+
+ After all the validations have been passed, this function will be called to
+ set the new value.
+
+
+ Undo value for column
+ ---------------------
+ TODO : undo set for column
+ FUNC : eocExtCnuEtherPortConfAutoNeg_undo
+
+ If an error occurs after a column has been set, this function will be called
+ to undo the set and restore the previous state.
+
+ Check value for column
+ ----------------------
+ TODO : perform additional validations on values for a set request
+ FUNC : eocExtCnuEtherPortConfSpeed_check_value
+
+ The generated code will automatically validate incoming requests against
+ all the requirements specified by the syntax of the MIB. However, it is
+ often the case that additional requirements are specified in the
+ description of a MIB object. Those type of validations should be checked
+ in this function.
+
+
+ Undo setup for column
+ ---------------------
+ TODO : save the value for column
+ FUNC : eocExtCnuEtherPortConfSpeed_undo_setup
+
+ After the table level undo setup function has been called, the individual
+ node undo setup functions will be called for columns which are being set.
+
+
+ Set value for column
+ --------------------
+ TODO : set the value for column
+ FUNC : eocExtCnuEtherPortConfSpeed_set
+
+ After all the validations have been passed, this function will be called to
+ set the new value.
+
+
+ Undo value for column
+ ---------------------
+ TODO : undo set for column
+ FUNC : eocExtCnuEtherPortConfSpeed_undo
+
+ If an error occurs after a column has been set, this function will be called
+ to undo the set and restore the previous state.
+
+ Check value for column
+ ----------------------
+ TODO : perform additional validations on values for a set request
+ FUNC : eocExtCnuEtherPortConfDuplex_check_value
+
+ The generated code will automatically validate incoming requests against
+ all the requirements specified by the syntax of the MIB. However, it is
+ often the case that additional requirements are specified in the
+ description of a MIB object. Those type of validations should be checked
+ in this function.
+
+
+ Undo setup for column
+ ---------------------
+ TODO : save the value for column
+ FUNC : eocExtCnuEtherPortConfDuplex_undo_setup
+
+ After the table level undo setup function has been called, the individual
+ node undo setup functions will be called for columns which are being set.
+
+
+ Set value for column
+ --------------------
+ TODO : set the value for column
+ FUNC : eocExtCnuEtherPortConfDuplex_set
+
+ After all the validations have been passed, this function will be called to
+ set the new value.
+
+
+ Undo value for column
+ ---------------------
+ TODO : undo set for column
+ FUNC : eocExtCnuEtherPortConfDuplex_undo
+
+ If an error occurs after a column has been set, this function will be called
+ to undo the set and restore the previous state.
+
+
+
+ Commit changes
+ --------------
+ TODO : commit changes
+ FUNC : eocExtCnuEtherPortTable_commit
+
+ After all values have been set, the commit function will be called.
+
+
+
+
+
+************************************************************************
+eocExtCnuEtherPortTable Reference
+------------------------------------------------------------------------
+
+Function flow
+----------------------------------------------------
+To give you the general idea of how the functions flow works, this
+example flow is from a complete table implementation.
+
+NOTE: Depending on your configuration, some of the functions used in the
+ examples below may not have been generated for the
+ eocExtCnuEtherPortTable table.
+
+ Conversely, the examples below may not include some functions that
+ were generated for the eocExtCnuEtherPortTable table.
+
+To watch the flow of the eocExtCnuEtherPortTable table, use the
+following debug tokens:
+
+ snmp_agent
+ helper:table:req
+ eocExtCnuEtherPortTable
+ verbose:eocExtCnuEtherPortTable
+ internal:eocExtCnuEtherPortTable
+
+e.g.
+ snmpd -f -Le -DeocExtCnuEtherPortTable,verbose:eocExtCnuEtherPortTable,internal:eocExtCnuEtherPortTable
+
+
+Initialization
+--------------------------------
+init_xxxTable: called xxx.c
+ initialize_table_xxxTable xxx.c
+ _xxxTable_initialize_interface xxx_interface.c
+ xxxTable_init_data xxx_data_access.c
+ _xxxTable_container_init xxx_interface.c
+ xxxTable_container_init xxx_data_access.c
+
+
+GET Request
+--------------------------------
+_cache_load xxx_interface.c
+ xxxTable_cache_load xxx_data_access.c
+ xxxTable_allocate_rowreq_ctx xxx_interface.c
+ xxxTable_allocate_data xxx_data_get.c
+ xxxTable_rowreq_ctx_init xxx_data_get.c
+ xxxTable_indexes_set xxx_data_get.c
+ xxxTable_indexes_set_tbl_idx xxx_data_get.c
+
+xxxTable_pre_request
+
+_mfd_xxxTable_object_lookup xxx_interface.c
+ xxxTable_row_prep xxx_data_access.c
+
+_mfd_xxxTable_get_values xxx_interface.c
+ _mfd_xxxTable_get_column xxx_interface.c
+ yyy_get xxx_data_get.c
+
+xxxTable_post_request
+
+
+GETNEXT Request
+--------------------------------
+_cache_load ...
+xxxTable_pre_request ...
+_mfd_xxxTable_object_lookup ...
+_mfd_xxxTable_get_values ...
+xxxTable_post_request ...
+
+
+SET Request: success
+--------------------------------
+_cache_load ...
+xxxTable_pre_request
+_mfd_xxxTable_object_lookup ...
+
+_mfd_xxxTable_check_objects xxx_interface.c
+ _xxxTable_check_column xxx_interface.c
+ yyy_check_value xxx_data_set.c
+
+_mfd_xxxTable_undo_setup xxx_interface.c
+ xxxTable_allocate_data ...
+ xxxTable_undo_setup xxx_interface.c
+ _xxxTable_undo_setup_column xxx_interface.c
+ yyy_undo_setup xxx_data_set.c
+
+_mfd_xxxTable_set_values xxx_interface.c
+ _xxxTable_set_column xxx_interface.c
+ yyy_set xxx_data_set.c
+
+_mfd_xxxTable_check_dependencies xxx_interface.c
+ xxxTable_check_dependencies xxx_data_set.c
+
+_mfd_xxxTable_commit xxx_interface.c
+ xxxTable_commit xxx_data_set.c
+
+_mfd_xxxTable_undo_cleanup xxx_interface.c
+ xxxTable_undo_cleanup xxx_data_set.c
+ xxxTable_release_data ...
+
+xxxTable_post_request ...
+
+
+SET Request: row creation
+--------------------------------
+_cache_load ...
+xxxTable_pre_request
+
+_mfd_xxxTable_object_lookup ...
+ xxxTable_index_from_oid xxx_interface.c
+ xxxTable_allocate_rowreq_ctx ...
+ ...
+ _xxxTable_check_indexes xxx_interface.c
+ yyy_check_index xxx_data_set.c
+ xxxTable_validate_index xxx_data_set.c
+
+_mfd_xxxTable_check_objects ...
+ _xxxTable_check_column ...
+ yyy_check_value ...
+ _xxxTable_check_column ...
+ yyy_check_value ...
+
+_mfd_xxxTable_undo_setup ...
+_mfd_xxxTable_set_values ...
+_mfd_xxxTable_check_dependencies ...
+_mfd_xxxTable_commit ...
+_mfd_xxxTable_undo_cleanup ...
+xxxTable_post_request ...
+
+
+SET Resuest: value error
+--------------------------------
+_cache_load ...
+xxxTable_pre_request ...
+_mfd_xxxTable_object_lookup ...
+
+_mfd_xxxTable_check_objects ...
+ _xxxTable_check_column ...
+ yyy_check_value ...
+ ERROR:"yyy value not supported"
+
+xxxTable_post_request ...
+
+
+SET Request: commit failure
+--------------------------------
+_cache_load ...
+xxxTable_pre_request ...
+_mfd_xxxTable_object_lookup ...
+_mfd_xxxTable_check_objects ...
+_mfd_xxxTable_undo_setup ...
+_mfd_xxxTable_set_values ...
+_mfd_xxxTable_check_dependencies ...
+
+_mfd_xxxTable_commit ...
+ xxxTable_commit ...
+ ERROR: bad rc -1
+
+_mfd_xxxTable_undo_commit xxx_interface.c
+ xxxTable_undo_commit xxx_data_set.c
+
+_mfd_xxxTable_undo_values xxx_interface.c
+ _xxxTable_undo_column xxx_interface.c
+ yyy_undo xxx_data_set.c
+
+_mfd_xxxTable_undo_cleanup ...
+xxxTable_post_request ...
+
+
+Row release (user initiated)
+--------------------------------
+xxxTable_release_rowreq_ctx xxx_interface.c
+ xxxTable_rowreq_ctx_cleanup xxx_data_get.c
+ xxxTable_release_data xxx_data_get.c
+
+
+
+Table / column details
+----------------------------------------------------
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuEtherPortTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortTable is subid 1 of eocExtCnuPortMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1, length: 13
+*/
+
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortCbatCardIndex
+ * eocExtCnuEtherPortCbatCardIndex is subid 1 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is NoAccess.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.1
+ * Description:
+The index of the CBAT card.
+ *
+ * Attributes:
+ * accessible 0 isscalar 0 enums 0 hasdefval 0
+ * readable 0 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is INTEGER32 (based on perltype INTEGER32)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
+ *
+ *
+ *
+ * NOTE: NODE eocExtCnuEtherPortCbatCardIndex IS NOT ACCESSIBLE
+ *
+ *
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortCnuIndex
+ * eocExtCnuEtherPortCnuIndex is subid 2 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is NoAccess.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.2
+ * Description:
+The index of the CNU.
+ *
+ * Attributes:
+ * accessible 0 isscalar 0 enums 0 hasdefval 0
+ * readable 0 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is INTEGER32 (based on perltype INTEGER32)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
+ *
+ *
+ *
+ * NOTE: NODE eocExtCnuEtherPortCnuIndex IS NOT ACCESSIBLE
+ *
+ *
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortCnuPortIndex
+ * eocExtCnuEtherPortCnuPortIndex is subid 3 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is NoAccess.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.3
+ * Description:
+The index of the CNU port.
+ *
+ * Attributes:
+ * accessible 0 isscalar 0 enums 0 hasdefval 0
+ * readable 0 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is INTEGER32 (based on perltype INTEGER32)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
+ *
+ *
+ *
+ * NOTE: NODE eocExtCnuEtherPortCnuPortIndex IS NOT ACCESSIBLE
+ *
+ *
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortConfAutoNeg
+ * eocExtCnuEtherPortConfAutoNeg is subid 4 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadWrite.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.4
+ * Description:
+neg status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 1
+ *
+ * Enum range: 2/8. Values: enabled(1), disabled(2)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortConfSpeed
+ * eocExtCnuEtherPortConfSpeed is subid 5 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadWrite.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.5
+ * Description:
+Speed status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 1
+ *
+ * Enum range: 3/8. Values: speed10M(1), speed100M(2), speed1000M(3)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortActualSpeed
+ * eocExtCnuEtherPortActualSpeed is subid 6 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.6
+ * Description:
+Actual speed status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ * Enum range: 3/8. Values: speed10M(1), speed100M(2), speed1000M(3)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortConfDuplex
+ * eocExtCnuEtherPortConfDuplex is subid 7 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadWrite.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.7
+ * Description:
+Duplex status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 1
+ *
+ * Enum range: 2/8. Values: half(1), full(2)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortActualDuplex
+ * eocExtCnuEtherPortActualDuplex is subid 8 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.8
+ * Description:
+Actual duplex status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ * Enum range: 2/8. Values: half(1), full(2)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+
+
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable.c
new file mode 100644
index 0000000000..c6752036f9
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable.c
@@ -0,0 +1,218 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 14170 $ of $
+ *
+ * $Id:$
+ */
+/** \page MFD helper for eocExtCnuEtherPortTable
+ *
+ * \section intro Introduction
+ * Introductory text.
+ *
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuEtherPortTable.h"
+
+#include <net-snmp/agent/mib_modules.h>
+
+#include "eocExtCnuEtherPortTable_interface.h"
+
+oid eocExtCnuEtherPortTable_oid[] = { EOCEXTCNUETHERPORTTABLE_OID };
+int eocExtCnuEtherPortTable_oid_size = OID_LENGTH(eocExtCnuEtherPortTable_oid);
+
+ eocExtCnuEtherPortTable_registration eocExtCnuEtherPortTable_user_context;
+
+void initialize_table_eocExtCnuEtherPortTable(void);
+void shutdown_table_eocExtCnuEtherPortTable(void);
+
+
+/**
+ * Initializes the eocExtCnuEtherPortTable module
+ */
+void
+init_eocExtCnuEtherPortTable(void)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:init_eocExtCnuEtherPortTable","called\n"));
+
+ /*
+ * TODO:300:o: Perform eocExtCnuEtherPortTable one-time module initialization.
+ */
+
+ /*
+ * here we initialize all the tables we're planning on supporting
+ */
+ if (should_init("eocExtCnuEtherPortTable"))
+ initialize_table_eocExtCnuEtherPortTable();
+
+} /* init_eocExtCnuEtherPortTable */
+
+/**
+ * Shut-down the eocExtCnuEtherPortTable module (agent is exiting)
+ */
+void
+shutdown_eocExtCnuEtherPortTable(void)
+{
+ if (should_init("eocExtCnuEtherPortTable"))
+ shutdown_table_eocExtCnuEtherPortTable();
+
+}
+
+/**
+ * Initialize the table eocExtCnuEtherPortTable
+ * (Define its contents and how it's structured)
+ */
+void
+initialize_table_eocExtCnuEtherPortTable(void)
+{
+ eocExtCnuEtherPortTable_registration * user_context;
+ u_long flags;
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:initialize_table_eocExtCnuEtherPortTable","called\n"));
+
+ /*
+ * TODO:301:o: Perform eocExtCnuEtherPortTable one-time table initialization.
+ */
+
+ /*
+ * TODO:302:o: |->Initialize eocExtCnuEtherPortTable 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("eocExtCnuEtherPortTable", NULL, NULL);
+
+ /*
+ * No support for any flags yet, but in the future you would
+ * set any flags here.
+ */
+ flags = 0;
+
+ /*
+ * call interface initialization code
+ */
+ _eocExtCnuEtherPortTable_initialize_interface(user_context, flags);
+} /* initialize_table_eocExtCnuEtherPortTable */
+
+/**
+ * Shutdown the table eocExtCnuEtherPortTable
+ */
+void
+shutdown_table_eocExtCnuEtherPortTable(void)
+{
+ /*
+ * call interface shutdown code
+ */
+ _eocExtCnuEtherPortTable_shutdown_interface(&eocExtCnuEtherPortTable_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
+eocExtCnuEtherPortTable_rowreq_ctx_init(eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx,
+ void *user_init_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_rowreq_ctx_init","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:210:o: |-> Perform extra eocExtCnuEtherPortTable rowreq initialization. (eg DEFVALS)
+ */
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortTable_rowreq_ctx_init */
+
+/**
+ * extra context cleanup
+ *
+ */
+void eocExtCnuEtherPortTable_rowreq_ctx_cleanup(eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_rowreq_ctx_cleanup","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:211:o: |-> Perform extra eocExtCnuEtherPortTable rowreq cleanup.
+ */
+} /* eocExtCnuEtherPortTable_rowreq_ctx_cleanup */
+
+/**
+ * pre-request callback
+ *
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR : other error
+ */
+int
+eocExtCnuEtherPortTable_pre_request(eocExtCnuEtherPortTable_registration * user_context)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_pre_request","called\n"));
+
+ /*
+ * TODO:510:o: Perform eocExtCnuEtherPortTable pre-request actions.
+ */
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortTable_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
+eocExtCnuEtherPortTable_post_request(eocExtCnuEtherPortTable_registration * user_context, int rc)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_post_request","called\n"));
+
+ /*
+ * TODO:511:o: Perform eocExtCnuEtherPortTable post-request actions.
+ */
+
+ /*
+ * check to set if any rows were changed.
+ */
+ if (eocExtCnuEtherPortTable_dirty_get()) {
+ /*
+ * check if request was successful. If so, this would be
+ * a good place to save data to its persistent store.
+ */
+ if (MFD_SUCCESS == rc) {
+ /*
+ * save changed rows, if you haven't already
+ */
+ }
+
+ eocExtCnuEtherPortTable_dirty_set(0); /* clear table dirty flag */
+ }
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortTable_post_request */
+
+
+/** @{ */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable.h
new file mode 100644
index 0000000000..7624771bf5
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable.h
@@ -0,0 +1,224 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUETHERPORTTABLE_H
+#define EOCEXTCNUETHERPORTTABLE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** @addtogroup misc misc: Miscellaneous routines
+ *
+ * @{
+ */
+#include <net-snmp/library/asn1.h>
+
+ /* *INDENT-ON* */
+
+/* OID and column number definitions for eocExtCnuEtherPortTable */
+#include "eocExtCnuEtherPortTable_oids.h"
+
+/* enum definions */
+#include "eocExtCnuEtherPortTable_enums.h"
+
+/* include common header */
+#include "EoCCommon.h"
+/* *********************************************************************
+ * function declarations
+ */
+void init_eocExtCnuEtherPortTable(void);
+void shutdown_eocExtCnuEtherPortTable(void);
+
+/* *********************************************************************
+ * Table declarations
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuEtherPortTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortTable is subid 1 of eocExtCnuPortMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1, length: 13
+*/
+/* *********************************************************************
+ * 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 eocExtCnuEtherPortTable registration context.
+ */
+typedef netsnmp_data_list eocExtCnuEtherPortTable_registration;
+
+/**********************************************************************/
+/*
+ * TODO:110:r: |-> Review eocExtCnuEtherPortTable data context structure.
+ * This structure is used to represent the data for eocExtCnuEtherPortTable.
+ */
+/*
+ * This structure contains storage for all the columns defined in the
+ * eocExtCnuEtherPortTable.
+ */
+typedef struct eocExtCnuEtherPortTable_data_s {
+ /* added to generated code: MAC address
+ of current port (in string format) */
+ char eocExtCnuEtherPortMACAddress[LIBSPID_MAC_STR_LEN];
+ /*
+ * eocExtCnuEtherPortConfAutoNeg(4)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h
+ */
+ u_long eocExtCnuEtherPortConfAutoNeg;
+
+ /*
+ * eocExtCnuEtherPortConfSpeed(5)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h
+ */
+ u_long eocExtCnuEtherPortConfSpeed;
+
+ /*
+ * eocExtCnuEtherPortActualSpeed(6)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h
+ */
+ u_long eocExtCnuEtherPortActualSpeed;
+
+ /*
+ * eocExtCnuEtherPortConfDuplex(7)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h
+ */
+ u_long eocExtCnuEtherPortConfDuplex;
+
+ /*
+ * eocExtCnuEtherPortActualDuplex(8)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h
+ */
+ u_long eocExtCnuEtherPortActualDuplex;
+
+} eocExtCnuEtherPortTable_data;
+
+
+/* *********************************************************************
+ * TODO:115:o: |-> Review eocExtCnuEtherPortTable undo context.
+ * We're just going to use the same data structure for our
+ * undo_context. If you want to do something more efficent,
+ * define your typedef here.
+ */
+typedef eocExtCnuEtherPortTable_data eocExtCnuEtherPortTable_undo_data;
+
+/*
+ * TODO:120:r: |-> Review eocExtCnuEtherPortTable mib index.
+ * This structure is used to represent the index for eocExtCnuEtherPortTable.
+ */
+typedef struct eocExtCnuEtherPortTable_mib_index_s {
+
+ /*
+ * eocExtCnuEtherPortCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ long eocExtCnuEtherPortCbatCardIndex;
+
+ /*
+ * eocExtCnuEtherPortCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ long eocExtCnuEtherPortCnuIndex;
+
+ /*
+ * eocExtCnuEtherPortCnuPortIndex(3)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ long eocExtCnuEtherPortCnuPortIndex;
+
+
+} eocExtCnuEtherPortTable_mib_index;
+
+ /*
+ * TODO:121:r: | |-> Review eocExtCnuEtherPortTable max index length.
+ * If you KNOW that your indexes will never exceed a certain
+ * length, update this macro to that length.
+*/
+#define MAX_eocExtCnuEtherPortTable_IDX_LEN 3
+
+
+/* *********************************************************************
+ * TODO:130:o: |-> Review eocExtCnuEtherPortTable Row request (rowreq) context.
+ * When your functions are called, you will be passed a
+ * eocExtCnuEtherPortTable_rowreq_ctx pointer.
+ */
+typedef struct eocExtCnuEtherPortTable_rowreq_ctx_s {
+
+ /** this must be first for container compare to work */
+ netsnmp_index oid_idx;
+ oid oid_tmp[MAX_eocExtCnuEtherPortTable_IDX_LEN];
+
+ eocExtCnuEtherPortTable_mib_index tbl_idx;
+
+ eocExtCnuEtherPortTable_data data;
+ eocExtCnuEtherPortTable_undo_data * undo;
+ unsigned int column_set_flags; /* flags for set columns */
+
+
+ /*
+ * 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 eocExtCnuEtherPortTable rowreq context.
+ */
+
+ /*
+ * storage for future expansion
+ */
+ netsnmp_data_list *eocExtCnuEtherPortTable_data_list;
+
+} eocExtCnuEtherPortTable_rowreq_ctx;
+
+typedef struct eocExtCnuEtherPortTable_ref_rowreq_ctx_s {
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx;
+} eocExtCnuEtherPortTable_ref_rowreq_ctx;
+
+/* *********************************************************************
+ * function prototypes
+ */
+ int eocExtCnuEtherPortTable_pre_request(eocExtCnuEtherPortTable_registration * user_context);
+ int eocExtCnuEtherPortTable_post_request(eocExtCnuEtherPortTable_registration * user_context,
+ int rc);
+
+ int eocExtCnuEtherPortTable_rowreq_ctx_init(eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx,
+ void *user_init_ctx);
+ void eocExtCnuEtherPortTable_rowreq_ctx_cleanup(eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx);
+
+ int eocExtCnuEtherPortTable_commit(eocExtCnuEtherPortTable_rowreq_ctx * rowreq_ctx);
+
+ eocExtCnuEtherPortTable_rowreq_ctx *
+ eocExtCnuEtherPortTable_row_find_by_mib_index(eocExtCnuEtherPortTable_mib_index *mib_idx);
+
+extern oid eocExtCnuEtherPortTable_oid[];
+extern int eocExtCnuEtherPortTable_oid_size;
+
+
+#include "eocExtCnuEtherPortTable_interface.h"
+#include "eocExtCnuEtherPortTable_data_access.h"
+#include "eocExtCnuEtherPortTable_data_get.h"
+#include "eocExtCnuEtherPortTable_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 /* EOCEXTCNUETHERPORTTABLE_H */
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_access.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_access.c
new file mode 100644
index 0000000000..7a29a5bd3c
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_access.c
@@ -0,0 +1,440 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 14170 $ of $
+ *
+ * $Id:$
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuEtherPortTable.h"
+
+
+#include "eocExtCnuEtherPortTable_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 eocExtCnuEtherPortTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortTable is subid 1 of eocExtCnuPortMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1, length: 13
+*/
+
+/**
+ * initialization for eocExtCnuEtherPortTable data access
+ *
+ * This function is called during startup to allow you to
+ * allocate any resources you need for the data table.
+ *
+ * @param eocExtCnuEtherPortTable_reg
+ * Pointer to eocExtCnuEtherPortTable_registration
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR : unrecoverable error.
+ */
+int
+eocExtCnuEtherPortTable_init_data(eocExtCnuEtherPortTable_registration * eocExtCnuEtherPortTable_reg)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_init_data","called\n"));
+
+ /*
+ * TODO:303:o: Initialize eocExtCnuEtherPortTable data.
+ */
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortTable_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.
+ * @param cache A pointer to a cache structure. You can set the timeout
+ * and other cache flags using this pointer.
+ *
+ * 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.
+ *
+ * This is also the place to set up cache behavior. The default, to
+ * simply set the cache timeout, will work well with the default
+ * container. If you are using a custom container, you may want to
+ * look at the cache helper documentation to see if there are any
+ * flags you want to set.
+ *
+ * @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
+eocExtCnuEtherPortTable_container_init(netsnmp_container **container_ptr_ptr,
+ netsnmp_cache *cache)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_container_init","called\n"));
+
+ if (NULL == container_ptr_ptr) {
+ snmp_log(LOG_ERR,"bad container param to eocExtCnuEtherPortTable_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;
+
+ if (NULL == cache) {
+ snmp_log(LOG_ERR,"bad cache param to eocExtCnuEtherPortTable_container_init\n");
+ return;
+ }
+
+ /*
+ * TODO:345:A: Set up eocExtCnuEtherPortTable cache properties.
+ *
+ * Also for advanced users, you can set parameters for the
+ * cache. Do not change the magic pointer, as it is used
+ * by the MFD helper. To completely disable caching, set
+ * cache->enabled to 0.
+ */
+ cache->timeout = EOCEXTCNUETHERPORTTABLE_CACHE_TIMEOUT; /* seconds */
+} /* eocExtCnuEtherPortTable_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 eocExtCnuEtherPortTable_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
+eocExtCnuEtherPortTable_container_shutdown(netsnmp_container *container_ptr)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_container_shutdown","called\n"));
+
+ if (NULL == container_ptr) {
+ snmp_log(LOG_ERR,"bad params to eocExtCnuEtherPortTable_container_shutdown\n");
+ return;
+ }
+
+} /* eocExtCnuEtherPortTable_container_shutdown */
+
+/**
+ * load initial data
+ *
+ * TODO:350:M: Implement eocExtCnuEtherPortTable data load
+ * This function will also be called by the cache helper to load
+ * the container again (after the container free function has been
+ * called to free the previous contents).
+ *
+ * @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
+ * eocExtCnuEtherPortTable_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
+eocExtCnuEtherPortTable_container_load(netsnmp_container *container)
+{
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx;
+ size_t count = 0;
+ int rc = MFD_SUCCESS;
+
+ /*
+ * temporary storage for index values
+ */
+ /*
+ * eocExtCnuEtherPortCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ long eocExtCnuEtherPortCbatCardIndex = 0;
+ /*
+ * eocExtCnuEtherPortCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ long eocExtCnuEtherPortCnuIndex;
+ /*
+ * eocExtCnuEtherPortCnuPortIndex(3)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ long eocExtCnuEtherPortCnuPortIndex;
+
+
+ int i, j;
+ int port_count;
+
+ /* declarations for calls to libspid */
+ char mac_str[LIBSPID_MAC_STR_LEN];
+ char *index_str;
+ libspid_eoc_wl_entry_t eoc_wl_entry;
+ int tei;
+ int ret;
+
+ /* port entries read from config file */
+ libspid_eoc_ethernet_port_entry_t port_entries[LIBSPID_PORT_TOTAL_MAX];
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_container_load","called\n"));
+
+ /*
+ * TODO:351:M: |-> Load/update data in the eocExtCnuEtherPortTable container.
+ * loop over your eocExtCnuEtherPortTable data, allocate a rowreq context,
+ * set the index(es) [and data, optionally] and insert into
+ * the container.
+ */
+ memset (port_entries, 0x0, sizeof (port_entries));
+
+ if (LIBSPID_SUCCESS != libspid_eoc_ethernet_port_check ())
+ {
+ snmp_log (LOG_ERR, "errors detected in ethernet port table"
+ " configuration file, cannot get\n");
+ }
+
+ /* get current contents of port config file */
+ if (LIBSPID_SUCCESS != libspid_eoc_ethernet_port_get_list (port_entries,
+ &port_count))
+ {
+ snmp_log (LOG_ERR, "port config file not read correctly\n");
+ return MFD_ERROR;
+ }
+
+ if (0 == port_count)
+ {
+ rc = MFD_END_OF_DATA;
+ }
+
+ for (i = 0; i < port_count; i++)
+ {
+
+ /* parse port index from port entry */
+ if (1 != sscanf (port_entries[i].port_index, "%d",
+ &eocExtCnuEtherPortCnuPortIndex))
+ {
+ snmp_log (LOG_ERR,
+ "parsing failed, setting port index to invalid\n");
+ eocExtCnuEtherPortCnuPortIndex = INVALID_EOCETHERNETCNUPORTINDEX;
+ }
+
+ /* copy MAC address from port entry to avoid
+ * being corrupted by call to read_line in wl_get */
+ strncpy (mac_str, port_entries[i].mac_addr, LIBSPID_MAC_STR_LEN);
+
+ memset (&eoc_wl_entry, 0x0, sizeof (eoc_wl_entry));
+
+ /* get white list entry for current MAC address */
+ ret = libspid_eoc_wl_get (mac_str, &eoc_wl_entry);
+
+ if (LIBSPID_SUCCESS == ret)
+ {
+ /* parse current TEI from white list entry */
+ if (1 != sscanf (eoc_wl_entry.tei, "%d", &tei))
+ {
+ snmp_log (LOG_ERR, "error parsing TEI from white list entry,"
+ " setting CNUIndex value to invalid\n");
+ eocExtCnuEtherPortCnuIndex =
+ INVALID_EOCETHERNETCNUPORTCNUINDEX;
+ }
+ else
+ {
+ /* convert current TEI to slave index */
+ eocExtCnuEtherPortCnuIndex = tei - 2;
+ }
+ }
+ else
+ {
+ snmp_log (LOG_ERR, "PortTable_container_load: ",
+ "cannot find White list entry with current MAC,"
+ " setting CNUIndex value to invalid\n");
+ eocExtCnuEtherPortCnuIndex = INVALID_EOCETHERNETCNUPORTCNUINDEX;
+ }
+
+ /*
+ * TODO:352:M: | |-> set indexes in new eocExtCnuEtherPortTable rowreq context.
+ * data context will be set from the param (unless NULL,
+ * in which case a new data context will be allocated)
+ */
+ rowreq_ctx = eocExtCnuEtherPortTable_allocate_rowreq_ctx(NULL);
+ if (NULL == rowreq_ctx) {
+ snmp_log(LOG_ERR, "memory allocation failed\n");
+ return MFD_RESOURCE_UNAVAILABLE;
+ }
+ if(MFD_SUCCESS != eocExtCnuEtherPortTable_indexes_set(rowreq_ctx
+ , eocExtCnuEtherPortCbatCardIndex
+ , eocExtCnuEtherPortCnuIndex
+ , eocExtCnuEtherPortCnuPortIndex
+ )) {
+ snmp_log(LOG_ERR,"error setting index while loading "
+ "eocExtCnuEtherPortTable data.\n");
+ eocExtCnuEtherPortTable_release_rowreq_ctx(rowreq_ctx);
+ continue;
+ }
+
+ /* copy slave MAC address to row request context */
+ strcpy (rowreq_ctx->data.eocExtCnuEtherPortMACAddress,
+ port_entries[i].mac_addr);
+ /*
+ * TODO:352:r: | |-> populate eocExtCnuEtherPortTable data context.
+ * Populate data context here. (optionally, delay until row prep)
+ */
+ /*
+ * TRANSIENT or semi-TRANSIENT data:
+ * copy data or save any info needed to do it in row_prep.
+ */
+ /*
+ * setup/save data for eocExtCnuEtherPortConfAutoNeg
+ * eocExtCnuEtherPortConfAutoNeg(4)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h
+ */
+ /** no mapping */
+ if (strtol (port_entries[i].auto_neg, NULL, 10) == 1)
+ rowreq_ctx->data.eocExtCnuEtherPortConfAutoNeg =
+ EOCEXTCNUETHERPORTCONFAUTONEG_ENABLED;
+ else
+ rowreq_ctx->data.eocExtCnuEtherPortConfAutoNeg =
+ EOCEXTCNUETHERPORTCONFAUTONEG_DISABLED;
+
+
+ /*
+ * setup/save data for eocExtCnuEtherPortConfSpeed
+ * eocExtCnuEtherPortConfSpeed(5)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h
+ */
+ /** no mapping */
+ rowreq_ctx->data.eocExtCnuEtherPortConfSpeed =
+ (u_long) strtol (port_entries[i].speed, NULL, 10);
+
+ /*
+ * setup/save data for eocExtCnuEtherPortActualSpeed
+ * eocExtCnuEtherPortActualSpeed(6)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h
+ */
+ /** no mapping */
+ rowreq_ctx->data.eocExtCnuEtherPortActualSpeed =
+ (u_long) strtol (port_entries[i].speed, NULL, 10);
+
+ /*
+ * setup/save data for eocExtCnuEtherPortConfDuplex
+ * eocExtCnuEtherPortConfDuplex(7)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h
+ */
+ /** no mapping */
+ rowreq_ctx->data.eocExtCnuEtherPortConfDuplex =
+ (u_long) strtol (port_entries[i].duplex, NULL, 10);
+
+ /*
+ * setup/save data for eocExtCnuEtherPortActualDuplex
+ * eocExtCnuEtherPortActualDuplex(8)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h
+ */
+ /** no mapping */
+ rowreq_ctx->data.eocExtCnuEtherPortActualDuplex =
+ (u_long) strtol (port_entries[i].duplex, NULL, 10);
+
+ /*
+ * insert into table container
+ */
+ CONTAINER_INSERT(container, rowreq_ctx);
+ ++count;
+ }
+
+ DEBUGMSGT(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_container_load"
+ "inserted %d records\n", count));
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortTable_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
+eocExtCnuEtherPortTable_container_free(netsnmp_container *container)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_container_free","called\n"));
+
+ /*
+ * TODO:380:M: Free eocExtCnuEtherPortTable container data.
+ */
+} /* eocExtCnuEtherPortTable_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
+eocExtCnuEtherPortTable_row_prep( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_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;
+} /* eocExtCnuEtherPortTable_row_prep */
+
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_access.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_access.h
new file mode 100644
index 0000000000..93b9decd77
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_access.h
@@ -0,0 +1,69 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUETHERPORTTABLE_DATA_ACCESS_H
+#define EOCEXTCNUETHERPORTTABLE_DATA_ACCESS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* definitions for invalid input value markers */
+#define INVALID_EOCETHERNETCNUPORTCNUINDEX (-2)
+#define INVALID_EOCETHERNETCNUPORTINDEX (-2)
+#define INVALID_EOCETHERNETAUTONEG (-1)
+#define INVALID_EOCETHERNETSPEED (-1)
+#define INVALID_EOCETHERNETDUPLEX (-1)
+
+/* *********************************************************************
+ * function declarations
+ */
+
+/* *********************************************************************
+ * Table declarations
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuEtherPortTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortTable is subid 1 of eocExtCnuPortMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1, length: 13
+*/
+
+
+ int eocExtCnuEtherPortTable_init_data(eocExtCnuEtherPortTable_registration * eocExtCnuEtherPortTable_reg);
+
+
+ /*
+ * TODO:180:o: Review eocExtCnuEtherPortTable cache timeout.
+ * The number of seconds before the cache times out
+ */
+#define EOCEXTCNUETHERPORTTABLE_CACHE_TIMEOUT 60
+
+void eocExtCnuEtherPortTable_container_init(netsnmp_container **container_ptr_ptr,
+ netsnmp_cache *cache);
+void eocExtCnuEtherPortTable_container_shutdown(netsnmp_container *container_ptr);
+
+int eocExtCnuEtherPortTable_container_load(netsnmp_container *container);
+void eocExtCnuEtherPortTable_container_free(netsnmp_container *container);
+
+int eocExtCnuEtherPortTable_cache_load(netsnmp_container *container);
+void eocExtCnuEtherPortTable_cache_free(netsnmp_container *container);
+
+ int eocExtCnuEtherPortTable_row_prep( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUETHERPORTTABLE_DATA_ACCESS_H */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_get.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_get.c
new file mode 100644
index 0000000000..67a0432e45
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_get.c
@@ -0,0 +1,379 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12088 $ of $
+ *
+ * $Id:$
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuEtherPortTable.h"
+
+
+/** @defgroup data_get data_get: Routines to get data
+ *
+ * TODO:230:M: Implement eocExtCnuEtherPortTable get routines.
+ * TODO:240:M: Implement eocExtCnuEtherPortTable 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 eocExtCnuEtherPortTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortTable is subid 1 of eocExtCnuPortMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1, length: 13
+*/
+
+/* ---------------------------------------------------------------------
+ * TODO:200:r: Implement eocExtCnuEtherPortTable data context functions.
+ */
+
+
+/**
+ * set mib index(es)
+ *
+ * @param tbl_idx mib index structure
+ * @param eocExtCnuEtherPortCbatCardIndex_val
+ * @param eocExtCnuEtherPortCnuIndex_val
+ * @param eocExtCnuEtherPortCnuPortIndex_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
+eocExtCnuEtherPortTable_indexes_set_tbl_idx(eocExtCnuEtherPortTable_mib_index *tbl_idx, long eocExtCnuEtherPortCbatCardIndex_val, long eocExtCnuEtherPortCnuIndex_val, long eocExtCnuEtherPortCnuPortIndex_val)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_indexes_set_tbl_idx","called\n"));
+
+ /* eocExtCnuEtherPortCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ tbl_idx->eocExtCnuEtherPortCbatCardIndex = eocExtCnuEtherPortCbatCardIndex_val;
+
+ /* eocExtCnuEtherPortCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ tbl_idx->eocExtCnuEtherPortCnuIndex = eocExtCnuEtherPortCnuIndex_val;
+
+ /* eocExtCnuEtherPortCnuPortIndex(3)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ tbl_idx->eocExtCnuEtherPortCnuPortIndex = eocExtCnuEtherPortCnuPortIndex_val;
+
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortTable_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
+eocExtCnuEtherPortTable_indexes_set(eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, long eocExtCnuEtherPortCbatCardIndex_val, long eocExtCnuEtherPortCnuIndex_val, long eocExtCnuEtherPortCnuPortIndex_val)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_indexes_set","called\n"));
+
+ if(MFD_SUCCESS != eocExtCnuEtherPortTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx
+ , eocExtCnuEtherPortCbatCardIndex_val
+ , eocExtCnuEtherPortCnuIndex_val
+ , eocExtCnuEtherPortCnuPortIndex_val
+ ))
+ return MFD_ERROR;
+
+ /*
+ * convert mib index to oid index
+ */
+ rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
+ if(0 != eocExtCnuEtherPortTable_index_to_oid(&rowreq_ctx->oid_idx,
+ &rowreq_ctx->tbl_idx)) {
+ return MFD_ERROR;
+ }
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortTable_indexes_set */
+
+
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortConfAutoNeg
+ * eocExtCnuEtherPortConfAutoNeg is subid 4 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadWrite.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.4
+ * Description:
+neg status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 1
+ *
+ * Enum range: 2/8. Values: enabled(1), disabled(2)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Extract the current value of the eocExtCnuEtherPortConfAutoNeg data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param eocExtCnuEtherPortConfAutoNeg_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
+eocExtCnuEtherPortConfAutoNeg_get( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long * eocExtCnuEtherPortConfAutoNeg_val_ptr )
+{
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != eocExtCnuEtherPortConfAutoNeg_val_ptr );
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfAutoNeg_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+/*
+ * TODO:231:o: |-> Extract the current value of the eocExtCnuEtherPortConfAutoNeg data.
+ * copy (* eocExtCnuEtherPortConfAutoNeg_val_ptr ) from rowreq_ctx->data
+ */
+ (* eocExtCnuEtherPortConfAutoNeg_val_ptr ) = rowreq_ctx->data.eocExtCnuEtherPortConfAutoNeg;
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortConfAutoNeg_get */
+
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortConfSpeed
+ * eocExtCnuEtherPortConfSpeed is subid 5 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadWrite.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.5
+ * Description:
+Speed status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 1
+ *
+ * Enum range: 3/8. Values: speed10M(1), speed100M(2), speed1000M(3)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Extract the current value of the eocExtCnuEtherPortConfSpeed data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param eocExtCnuEtherPortConfSpeed_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
+eocExtCnuEtherPortConfSpeed_get( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long * eocExtCnuEtherPortConfSpeed_val_ptr )
+{
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != eocExtCnuEtherPortConfSpeed_val_ptr );
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfSpeed_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+/*
+ * TODO:231:o: |-> Extract the current value of the eocExtCnuEtherPortConfSpeed data.
+ * copy (* eocExtCnuEtherPortConfSpeed_val_ptr ) from rowreq_ctx->data
+ */
+ (* eocExtCnuEtherPortConfSpeed_val_ptr ) = rowreq_ctx->data.eocExtCnuEtherPortConfSpeed;
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortConfSpeed_get */
+
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortActualSpeed
+ * eocExtCnuEtherPortActualSpeed is subid 6 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.6
+ * Description:
+Actual speed status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ * Enum range: 3/8. Values: speed10M(1), speed100M(2), speed1000M(3)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Extract the current value of the eocExtCnuEtherPortActualSpeed data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param eocExtCnuEtherPortActualSpeed_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
+eocExtCnuEtherPortActualSpeed_get( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long * eocExtCnuEtherPortActualSpeed_val_ptr )
+{
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != eocExtCnuEtherPortActualSpeed_val_ptr );
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortActualSpeed_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+/*
+ * TODO:231:o: |-> Extract the current value of the eocExtCnuEtherPortActualSpeed data.
+ * copy (* eocExtCnuEtherPortActualSpeed_val_ptr ) from rowreq_ctx->data
+ */
+ (* eocExtCnuEtherPortActualSpeed_val_ptr ) = rowreq_ctx->data.eocExtCnuEtherPortActualSpeed;
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortActualSpeed_get */
+
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortConfDuplex
+ * eocExtCnuEtherPortConfDuplex is subid 7 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadWrite.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.7
+ * Description:
+Duplex status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 1
+ *
+ * Enum range: 2/8. Values: half(1), full(2)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Extract the current value of the eocExtCnuEtherPortConfDuplex data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param eocExtCnuEtherPortConfDuplex_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
+eocExtCnuEtherPortConfDuplex_get( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long * eocExtCnuEtherPortConfDuplex_val_ptr )
+{
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != eocExtCnuEtherPortConfDuplex_val_ptr );
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfDuplex_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+/*
+ * TODO:231:o: |-> Extract the current value of the eocExtCnuEtherPortConfDuplex data.
+ * copy (* eocExtCnuEtherPortConfDuplex_val_ptr ) from rowreq_ctx->data
+ */
+ (* eocExtCnuEtherPortConfDuplex_val_ptr ) = rowreq_ctx->data.eocExtCnuEtherPortConfDuplex;
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortConfDuplex_get */
+
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortActualDuplex
+ * eocExtCnuEtherPortActualDuplex is subid 8 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.8
+ * Description:
+Actual duplex status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ * Enum range: 2/8. Values: half(1), full(2)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Extract the current value of the eocExtCnuEtherPortActualDuplex data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param eocExtCnuEtherPortActualDuplex_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
+eocExtCnuEtherPortActualDuplex_get( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long * eocExtCnuEtherPortActualDuplex_val_ptr )
+{
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != eocExtCnuEtherPortActualDuplex_val_ptr );
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortActualDuplex_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+/*
+ * TODO:231:o: |-> Extract the current value of the eocExtCnuEtherPortActualDuplex data.
+ * copy (* eocExtCnuEtherPortActualDuplex_val_ptr ) from rowreq_ctx->data
+ */
+ (* eocExtCnuEtherPortActualDuplex_val_ptr ) = rowreq_ctx->data.eocExtCnuEtherPortActualDuplex;
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortActualDuplex_get */
+
+
+
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_get.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_get.h
new file mode 100644
index 0000000000..51bbf96e83
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_get.h
@@ -0,0 +1,63 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12088 $ of $
+ *
+ * $Id:$
+ *
+ * @file eocExtCnuEtherPortTable_data_get.h
+ *
+ * @addtogroup get
+ *
+ * Prototypes for get functions
+ *
+ * @{
+ */
+#ifndef EOCEXTCNUETHERPORTTABLE_DATA_GET_H
+#define EOCEXTCNUETHERPORTTABLE_DATA_GET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* *********************************************************************
+ * GET function declarations
+ */
+
+/* *********************************************************************
+ * GET Table declarations
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuEtherPortTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortTable is subid 1 of eocExtCnuPortMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1, length: 13
+*/
+ /*
+ * indexes
+ */
+
+ int eocExtCnuEtherPortConfAutoNeg_get( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long * eocExtCnuEtherPortConfAutoNeg_val_ptr );
+ int eocExtCnuEtherPortConfSpeed_get( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long * eocExtCnuEtherPortConfSpeed_val_ptr );
+ int eocExtCnuEtherPortActualSpeed_get( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long * eocExtCnuEtherPortActualSpeed_val_ptr );
+ int eocExtCnuEtherPortConfDuplex_get( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long * eocExtCnuEtherPortConfDuplex_val_ptr );
+ int eocExtCnuEtherPortActualDuplex_get( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long * eocExtCnuEtherPortActualDuplex_val_ptr );
+
+
+int eocExtCnuEtherPortTable_indexes_set_tbl_idx(eocExtCnuEtherPortTable_mib_index *tbl_idx, long eocExtCnuEtherPortCbatCardIndex_val, long eocExtCnuEtherPortCnuIndex_val, long eocExtCnuEtherPortCnuPortIndex_val);
+int eocExtCnuEtherPortTable_indexes_set(eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, long eocExtCnuEtherPortCbatCardIndex_val, long eocExtCnuEtherPortCnuIndex_val, long eocExtCnuEtherPortCnuPortIndex_val);
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUETHERPORTTABLE_DATA_GET_H */
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_set.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_set.c
new file mode 100644
index 0000000000..f2ced589b1
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_set.c
@@ -0,0 +1,1021 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12077 $ of $
+ *
+ * $Id:$
+ *
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuEtherPortTable.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.
+ *
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuEtherPortTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortTable is subid 1 of eocExtCnuPortMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1, length: 13
+*/
+ /*
+ * NOTE: if you update this chart, please update the versions in
+ * local/mib2c-conf.d/parent-set.m2i
+ * agent/mibgroup/helpers/baby_steps.c
+ * while you're at it.
+ */
+ /*
+ ***********************************************************************
+ * Baby Steps Flow Chart (2004.06.05) *
+ * *
+ * +--------------+ +================+ U = unconditional path *
+ * |optional state| ||required state|| S = path for success *
+ * +--------------+ +================+ E = path for error *
+ ***********************************************************************
+ *
+ * +--------------+
+ * | pre |
+ * | request |
+ * +--------------+
+ * | U
+ * +==============+
+ * +----------------|| object ||
+ * | E || lookup ||
+ * | +==============+
+ * | | S
+ * | +==============+
+ * | E || check ||
+ * |<---------------|| values ||
+ * | +==============+
+ * | | S
+ * | +==============+
+ * | +<-------|| undo ||
+ * | | E || setup ||
+ * | | +==============+
+ * | | | S
+ * | | +==============+
+ * | | || set ||-------------------------->+
+ * | | || value || E |
+ * | | +==============+ |
+ * | | | S |
+ * | | +--------------+ |
+ * | | | check |-------------------------->|
+ * | | | consistency | E |
+ * | | +--------------+ |
+ * | | | S |
+ * | | +==============+ +==============+ |
+ * | | || commit ||-------->|| undo || |
+ * | | || || E || commit || |
+ * | | +==============+ +==============+ |
+ * | | | S U |<--------+
+ * | | +--------------+ +==============+
+ * | | | irreversible | || undo ||
+ * | | | commit | || set ||
+ * | | +--------------+ +==============+
+ * | | | U U |
+ * | +-------------->|<------------------------+
+ * | +==============+
+ * | || undo ||
+ * | || cleanup ||
+ * | +==============+
+ * +---------------------->| U
+ * +--------------+
+ * | post |
+ * | request |
+ * +--------------+
+ *
+ */
+
+/**
+ * Setup up context with information needed to undo a set request.
+ *
+ * This function will be called before the individual node undo setup
+ * functions are called. If you need to do any undo setup that is not
+ * related to a specific column, you can do it here.
+ *
+ * Note that the undo context has been allocated with
+ * eocExtCnuEtherPortTable_allocate_data(), but may need extra
+ * initialization similar to what you may have done in
+ * eocExtCnuEtherPortTable_rowreq_ctx_init().
+ * Note that an individual node's undo_setup function will only be called
+ * if that node is being set to a new value.
+ *
+ * If there is any setup specific to a particular column (e.g. allocating
+ * memory for a string), you should do that setup in the node's undo_setup
+ * function, so it won't be done unless it is necessary.
+ *
+ * @param rowreq_ctx
+ * Pointer to the table context (eocExtCnuEtherPortTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error. set will fail.
+ */
+int
+eocExtCnuEtherPortTable_undo_setup( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+ int rc = MFD_SUCCESS;
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_undo_setup","called\n"));
+
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != rowreq_ctx );
+
+ /*
+ * TODO:451:M: |-> Setup eocExtCnuEtherPortTable undo.
+ * set up eocExtCnuEtherPortTable undo information, in preparation for a set.
+ * Undo storage is in (* eocExtCnuEtherPortActualDuplex_val_ptr )*
+ */
+
+ return rc;
+} /* eocExtCnuEtherPortTable_undo_setup */
+
+/**
+ * Undo a set request.
+ *
+ * This function will be called before the individual node undo
+ * functions are called. If you need to do any undo that is not
+ * related to a specific column, you can do it here.
+ *
+ * Note that an individual node's undo function will only be called
+ * if that node is being set to a new value.
+ *
+ * If there is anything specific to a particular column (e.g. releasing
+ * memory for a string), you should do that setup in the node's undo
+ * function, so it won't be done unless it is necessary.
+ *
+ * @param rowreq_ctx
+ * Pointer to the table context (eocExtCnuEtherPortTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error. set will fail.
+ */
+int
+eocExtCnuEtherPortTable_undo( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+ int rc = MFD_SUCCESS;
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_undo","called\n"));
+
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != rowreq_ctx );
+
+ /*
+ * TODO:451:M: |-> eocExtCnuEtherPortTable undo.
+ * eocExtCnuEtherPortTable undo information, in response to a failed set.
+ * Undo storage is in (* eocExtCnuEtherPortActualDuplex_val_ptr )*
+ */
+
+ return rc;
+} /* eocExtCnuEtherPortTable_undo_setup */
+
+/**
+ * Cleanup up context undo information.
+ *
+ * This function will be called after set/commit processing. If you
+ * allocated any resources in undo_setup, this is the place to release
+ * those resources.
+ *
+ * This function is called regardless of the success or failure of the set
+ * request. If you need to perform different steps for cleanup depending
+ * on success or failure, you can add a flag to the rowreq_ctx.
+ *
+ * @param rowreq_ctx
+ * Pointer to the table context (eocExtCnuEtherPortTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error
+ */
+int
+eocExtCnuEtherPortTable_undo_cleanup( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+ int rc = MFD_SUCCESS;
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_undo_cleanup","called\n"));
+
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != rowreq_ctx );
+
+ /*
+ * TODO:452:M: |-> Cleanup eocExtCnuEtherPortTable undo.
+ * Undo storage is in (* eocExtCnuEtherPortActualDuplex_val_ptr )*
+ */
+
+ return rc;
+} /* eocExtCnuEtherPortTable_undo_cleanup */
+
+/**
+ * commit new values.
+ *
+ * At this point, you should have done everything you can to ensure that
+ * this commit will not fail.
+ *
+ * Should you need different behavior depending on which columns were
+ * set, rowreq_ctx->column_set_flags will indicate which writeable columns were
+ * set. The definitions for the COLUMN_*_FLAG bits can be found in
+ * eocExtCnuEtherPortTable_oids.h.
+ * A new row will have the MFD_ROW_CREATED bit set in rowreq_flags.
+ *
+ * @param eocExtCnuEtherPortTable_rowreq_ctx
+ * Pointer to the users context.
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error
+ */
+int
+eocExtCnuEtherPortTable_commit( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+ int rc = MFD_SUCCESS;
+ int save_flags;
+
+ int ret;
+
+ libspid_eoc_ethernet_port_entry_t port_entry;
+ char port_key[LIBSPID_LINE_MAX_LEN];
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_commit","called\n"));
+
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != rowreq_ctx );
+
+ /* check if current MAC address is valid */
+ netsnmp_assert (NULL != rowreq_ctx->data.eocExtCnuEtherPortMACAddress);
+
+ /* initialize port entry */
+ memset (&port_entry, 0, sizeof (port_entry));
+ /*
+ * save flags, then clear until we actually do something
+ */
+ save_flags = rowreq_ctx->column_set_flags;
+ rowreq_ctx->column_set_flags = 0;
+
+ /*
+ * commit eocExtCnuEtherPortTable data
+ * 1) check the column's flag in save_flags to see if it was set.
+ * 2) clear the flag when you handle that column
+ * 3) set the column's flag in column_set_flags if it needs undo
+ * processing in case of a failure.
+ */
+ /*
+ * did anything change?
+ */
+ if (0 == save_flags)
+ {
+ DEBUGMSGTL (("meocExtCnuEtherPortTable:"
+ "eocExtCnuEtherPortTable_commit no change\n",
+ "called\n"));
+ return MFD_SUCCESS;
+ }
+
+ if (save_flags & COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG_FLAG)
+ {
+ /* clear eocExtCnuEtherPortConfAutoNeg */
+ save_flags &= ~COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG_FLAG;
+ /*
+ * TODO:482:o: |-> commit column eocExtCnuEtherPortConfAutoNeg.
+ */
+ rowreq_ctx->column_set_flags |=
+ COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG_FLAG;
+ }
+
+ if (save_flags & COLUMN_EOCEXTCNUETHERPORTCONFSPEED_FLAG)
+ {
+ /* clear eocExtCnuEtherPortConfSpeed */
+ save_flags &= ~COLUMN_EOCEXTCNUETHERPORTCONFSPEED_FLAG;
+ /*
+ * TODO:482:o: |-> commit column eocExtCnuEtherPortConfSpeed.
+ */
+ rowreq_ctx->column_set_flags |=
+ COLUMN_EOCEXTCNUETHERPORTCONFSPEED_FLAG;
+ }
+
+ if (save_flags & COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX_FLAG)
+ {
+ /* clear eocExtCnuEtherPortConfDuplex */
+ save_flags &= ~COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX_FLAG;
+ /*
+ * TODO:482:o: |-> commit column eocExtCnuEtherPortConfDuplex.
+ */
+ /*
+ * set flag, in case we need to undo eocExtCnuEtherPortConfDuplex
+ */
+ rowreq_ctx->column_set_flags |=
+ COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX_FLAG;
+ }
+ /* convert port index to string */
+ sprintf (port_key, "%ld",
+ rowreq_ctx->tbl_idx.eocExtCnuEtherPortCnuPortIndex);
+
+ /* read existing line from configuration file */
+ ret = libspid_eoc_ethernet_port_get (
+ rowreq_ctx->data.eocExtCnuEtherPortMACAddress,
+ port_key, &port_entry);
+ if (LIBSPID_SUCCESS != ret)
+ {
+ snmp_log (LOG_ERR, "libspid_eoc_ethernet_port_get error\n");
+ return MFD_ERROR;
+ }
+
+ if (rowreq_ctx->column_set_flags &
+ COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG_FLAG)
+ {
+ /* copy auto neg to ethernet port entry */
+ if (rowreq_ctx->data.eocExtCnuEtherPortConfAutoNeg ==
+ EOCEXTCNUETHERPORTCONFAUTONEG_ENABLED)
+ strcpy (port_entry.auto_neg, "1");
+ else if (rowreq_ctx->data.eocExtCnuEtherPortConfAutoNeg ==
+ EOCEXTCNUETHERPORTCONFAUTONEG_DISABLED)
+ strcpy (port_entry.auto_neg, "0");
+ }
+
+ if (rowreq_ctx->column_set_flags &
+ COLUMN_EOCEXTCNUETHERPORTCONFSPEED_FLAG)
+ {
+ /* copy speed to ethernet port entry */
+ sprintf (port_entry.speed, "%lu",
+ rowreq_ctx->data.eocExtCnuEtherPortConfSpeed);
+ }
+
+ if (rowreq_ctx->column_set_flags &
+ COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX_FLAG)
+ {
+ /* copy duplex to ethernet port entry */
+ sprintf (port_entry.duplex, "%ld",
+ rowreq_ctx->data.eocExtCnuEtherPortConfDuplex);
+ }
+
+ if (LIBSPID_SUCCESS != libspid_eoc_ethernet_port_check ())
+ {
+ snmp_log (LOG_ERR, "errors detected in ethernet port table"
+ " configuration file, cannot commit\n");
+ return MFD_ERROR;
+ }
+
+ /* write modified line to configuration file */
+ ret = libspid_eoc_ethernet_port_set (
+ rowreq_ctx->data.eocExtCnuEtherPortMACAddress,
+ port_key, &port_entry);
+ if (LIBSPID_SUCCESS != ret)
+ {
+ snmp_log (LOG_ERR, "libspid_eoc_ethernet_port_set error\n");
+ return MFD_ERROR;
+ }
+ else
+ {
+ DEBUGMSGTL (("modEoCCNUPortTable_commit",
+ "line succesfully written to conf file!\n"));
+ }
+
+ /*
+ * if we successfully commited this row, set the dirty flag.
+ */
+ if (MFD_SUCCESS == rc)
+ {
+ rowreq_ctx->rowreq_flags |= MFD_ROW_DIRTY;
+ }
+
+ if (save_flags)
+ {
+ snmp_log (LOG_ERR, "unhandled columns (0x%x) in commit\n",
+ save_flags);
+ return MFD_ERROR;
+ }
+
+ return rc;
+} /* eocExtCnuEtherPortTable_commit */
+
+/**
+ * undo commit new values.
+ *
+ * Should you need different behavior depending on which columns were
+ * set, rowreq_ctx->column_set_flags will indicate which writeable columns were
+ * set. The definitions for the COLUMN_*_FLAG bits can be found in
+ * eocExtCnuEtherPortTable_oids.h.
+ * A new row will have the MFD_ROW_CREATED bit set in rowreq_flags.
+ *
+ * @param eocExtCnuEtherPortTable_rowreq_ctx
+ * Pointer to the users context.
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error
+ */
+int
+eocExtCnuEtherPortTable_undo_commit( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+ int rc = MFD_SUCCESS;
+
+ int ret;
+
+ libspid_eoc_ethernet_port_entry_t port_entry;
+ char port_key[LIBSPID_LINE_MAX_LEN];
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_undo_commit","called\n"));
+
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != rowreq_ctx );
+
+ /* initialize port entry */
+ memset (&port_entry, 0, sizeof (port_entry));
+ /*
+ * TODO:485:M: |-> Undo eocExtCnuEtherPortTable commit.
+ * check the column's flag in rowreq_ctx->column_set_flags to see
+ * if it was set during commit, then undo it.
+ *
+ * eg: if (rowreq_ctx->column_set_flags & COLUMN__FLAG) {}
+ */
+ /* convert port index to string */
+
+ sprintf (port_key, "%ld",
+ rowreq_ctx->tbl_idx.eocExtCnuEtherPortCnuPortIndex);
+
+
+ /* read existing line from configuration file */
+ ret = libspid_eoc_ethernet_port_get (
+ rowreq_ctx->data.eocExtCnuEtherPortMACAddress,
+ port_key, &port_entry);
+ if (LIBSPID_SUCCESS != ret)
+ {
+ snmp_log (LOG_ERR, "libspid_eoc_ethernet_port_get error\n");
+ return MFD_ERROR;
+ }
+
+ if (rowreq_ctx->column_set_flags &
+ COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG_FLAG)
+ {
+ /* copy auto neg to ethernet port entry */
+ if (rowreq_ctx->undo->eocExtCnuEtherPortConfAutoNeg ==
+ EOCEXTCNUETHERPORTCONFAUTONEG_ENABLED)
+ strcpy (port_entry.auto_neg, "1");
+ else if (rowreq_ctx->undo->eocExtCnuEtherPortConfAutoNeg ==
+ EOCEXTCNUETHERPORTCONFAUTONEG_DISABLED)
+ strcpy (port_entry.auto_neg, "0");
+ }
+
+ if (rowreq_ctx->column_set_flags &
+ COLUMN_EOCEXTCNUETHERPORTCONFSPEED_FLAG)
+ {
+ /* copy speed to ethernet port entry */
+ sprintf (port_entry.speed, "%lu",
+ rowreq_ctx->undo->eocExtCnuEtherPortConfSpeed);
+ }
+
+ if (rowreq_ctx->column_set_flags &
+ COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX_FLAG)
+ {
+ /* copy duplex to ethernet port entry */
+ sprintf (port_entry.duplex, "%ld",
+ rowreq_ctx->undo->eocExtCnuEtherPortConfDuplex);
+ }
+
+ if (LIBSPID_SUCCESS != libspid_eoc_ethernet_port_check ())
+ {
+ snmp_log (LOG_ERR, "errors detected in ethernet port table"
+ " configuration file, cannot commit\n");
+ return MFD_ERROR;
+ }
+
+ /* write modified line to configuration file */
+ ret = libspid_eoc_ethernet_port_set (
+ rowreq_ctx->data.eocExtCnuEtherPortMACAddress,
+ port_key, &port_entry);
+ if (LIBSPID_SUCCESS != ret)
+ {
+ snmp_log (LOG_ERR, "libspid_config_write_line_error\n");
+ DEBUGMSGTL (("eocExtCnuEtherPortTable:"
+ "eocExtCnuEtherPortTable_undo_commit",
+ "libspid_config_write_line() returned error: %d\n",
+ ret));
+ return MFD_ERROR;
+ }
+ else
+ {
+ DEBUGMSGTL (("eocExtEtherPortCCNUPortTable_undo_commit",
+ "line succesfully written to conf file!\n"));
+ }
+
+ /*
+ * if we successfully un-commited this row, clear the dirty flag.
+ */
+ if (MFD_SUCCESS == rc)
+ {
+ rowreq_ctx->rowreq_flags &= ~MFD_ROW_DIRTY;
+ }
+
+ return rc;
+} /* eocExtCnuEtherPortTable_undo_commit */
+
+/*
+ * TODO:440:M: Implement eocExtCnuEtherPortTable node value checks.
+ * TODO:450:M: Implement eocExtCnuEtherPortTable undo functions.
+ * TODO:460:M: Implement eocExtCnuEtherPortTable set functions.
+ * TODO:480:M: Implement eocExtCnuEtherPortTable commit functions.
+ */
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortConfAutoNeg
+ * eocExtCnuEtherPortConfAutoNeg is subid 4 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadWrite.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.4
+ * Description:
+neg status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 1
+ *
+ * Enum range: 2/8. Values: enabled(1), disabled(2)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Check that the proposed new value is potentially valid.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param eocExtCnuEtherPortConfAutoNeg_val
+ * A long containing the new value.
+ *
+ * @retval MFD_SUCCESS : incoming value is legal
+ * @retval MFD_NOT_VALID_NOW : incoming value is not valid now
+ * @retval MFD_NOT_VALID_EVER : incoming value is never valid
+ *
+ * This is the place to check for requirements that are not
+ * expressed in the mib syntax (for example, a requirement that
+ * is detailed in the description for an object).
+ *
+ * You should check that the requested change between the undo value and the
+ * new value is legal (ie, the transistion from one value to another
+ * is legal).
+ *
+ *@note
+ * This check is only to determine if the new value
+ * is \b potentially valid. This is the first check of many, and
+ * is one of the simplest ones.
+ *
+ *@note
+ * this is not the place to do any checks for values
+ * which depend on some other value in the mib. Those
+ * types of checks should be done in the
+ * eocExtCnuEtherPortTable_check_dependencies() function.
+ *
+ * The following checks have already been done for you:
+ * The syntax is ASN_INTEGER
+ * The value is one of enabled(1), disabled(2)
+ *
+ * If there a no other checks you need to do, simply return MFD_SUCCESS.
+ *
+ */
+int
+eocExtCnuEtherPortConfAutoNeg_check_value( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortConfAutoNeg_val)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfAutoNeg_check_value","called\n"));
+
+ /** should never get a NULL pointer */
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:441:o: |-> Check for valid eocExtCnuEtherPortConfAutoNeg value.
+ */
+
+ return MFD_SUCCESS; /* eocExtCnuEtherPortConfAutoNeg value not illegal */
+} /* eocExtCnuEtherPortConfAutoNeg_check_value */
+
+/**
+ * Save old value information
+ *
+ * @param rowreq_ctx
+ * Pointer to the table context (eocExtCnuEtherPortTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error. set will fail.
+ *
+ * This function will be called after the table level undo setup function
+ * eocExtCnuEtherPortTable_undo_setup has been called.
+ *
+ *@note
+ * this function will only be called if a new value is set for this column.
+ *
+ * If there is any setup specific to a particular column (e.g. allocating
+ * memory for a string), you should do that setup in this function, so it
+ * won't be done unless it is necessary.
+ */
+int
+eocExtCnuEtherPortConfAutoNeg_undo_setup( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfAutoNeg_undo_setup","called\n"));
+
+ /** should never get a NULL pointer */
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:455:o: |-> Setup eocExtCnuEtherPortConfAutoNeg undo.
+ */
+ /*
+ * copy eocExtCnuEtherPortConfAutoNeg data
+ * set rowreq_ctx->undo->eocExtCnuEtherPortConfAutoNeg from rowreq_ctx->data.eocExtCnuEtherPortConfAutoNeg
+ */
+ rowreq_ctx->undo->eocExtCnuEtherPortConfAutoNeg = rowreq_ctx->data.eocExtCnuEtherPortConfAutoNeg;
+
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortConfAutoNeg_undo_setup */
+
+/**
+ * Set the new value.
+ *
+ * @param rowreq_ctx
+ * Pointer to the users context. You should know how to
+ * manipulate the value from this object.
+ * @param eocExtCnuEtherPortConfAutoNeg_val
+ * A long containing the new value.
+ */
+int
+eocExtCnuEtherPortConfAutoNeg_set( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortConfAutoNeg_val )
+{
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfAutoNeg_set","called\n"));
+
+ /** should never get a NULL pointer */
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:461:M: |-> Set eocExtCnuEtherPortConfAutoNeg value.
+ * set eocExtCnuEtherPortConfAutoNeg value in rowreq_ctx->data
+ */
+ rowreq_ctx->data.eocExtCnuEtherPortConfAutoNeg = eocExtCnuEtherPortConfAutoNeg_val;
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortConfAutoNeg_set */
+
+/**
+ * undo the previous set.
+ *
+ * @param rowreq_ctx
+ * Pointer to the users context.
+ */
+int
+eocExtCnuEtherPortConfAutoNeg_undo( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfAutoNeg_undo","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:456:o: |-> Clean up eocExtCnuEtherPortConfAutoNeg undo.
+ */
+ /*
+ * copy eocExtCnuEtherPortConfAutoNeg data
+ * set rowreq_ctx->data.eocExtCnuEtherPortConfAutoNeg from rowreq_ctx->undo->eocExtCnuEtherPortConfAutoNeg
+ */
+ rowreq_ctx->data.eocExtCnuEtherPortConfAutoNeg = rowreq_ctx->undo->eocExtCnuEtherPortConfAutoNeg;
+
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortConfAutoNeg_undo */
+
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortConfSpeed
+ * eocExtCnuEtherPortConfSpeed is subid 5 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadWrite.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.5
+ * Description:
+Speed status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 1
+ *
+ * Enum range: 3/8. Values: speed10M(1), speed100M(2), speed1000M(3)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Check that the proposed new value is potentially valid.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param eocExtCnuEtherPortConfSpeed_val
+ * A long containing the new value.
+ *
+ * @retval MFD_SUCCESS : incoming value is legal
+ * @retval MFD_NOT_VALID_NOW : incoming value is not valid now
+ * @retval MFD_NOT_VALID_EVER : incoming value is never valid
+ *
+ * This is the place to check for requirements that are not
+ * expressed in the mib syntax (for example, a requirement that
+ * is detailed in the description for an object).
+ *
+ * You should check that the requested change between the undo value and the
+ * new value is legal (ie, the transistion from one value to another
+ * is legal).
+ *
+ *@note
+ * This check is only to determine if the new value
+ * is \b potentially valid. This is the first check of many, and
+ * is one of the simplest ones.
+ *
+ *@note
+ * this is not the place to do any checks for values
+ * which depend on some other value in the mib. Those
+ * types of checks should be done in the
+ * eocExtCnuEtherPortTable_check_dependencies() function.
+ *
+ * The following checks have already been done for you:
+ * The syntax is ASN_INTEGER
+ * The value is one of speed10M(1), speed100M(2), speed1000M(3)
+ *
+ * If there a no other checks you need to do, simply return MFD_SUCCESS.
+ *
+ */
+int
+eocExtCnuEtherPortConfSpeed_check_value( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortConfSpeed_val)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfSpeed_check_value","called\n"));
+
+ /** should never get a NULL pointer */
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:441:o: |-> Check for valid eocExtCnuEtherPortConfSpeed value.
+ */
+
+ return MFD_SUCCESS; /* eocExtCnuEtherPortConfSpeed value not illegal */
+} /* eocExtCnuEtherPortConfSpeed_check_value */
+
+/**
+ * Save old value information
+ *
+ * @param rowreq_ctx
+ * Pointer to the table context (eocExtCnuEtherPortTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error. set will fail.
+ *
+ * This function will be called after the table level undo setup function
+ * eocExtCnuEtherPortTable_undo_setup has been called.
+ *
+ *@note
+ * this function will only be called if a new value is set for this column.
+ *
+ * If there is any setup specific to a particular column (e.g. allocating
+ * memory for a string), you should do that setup in this function, so it
+ * won't be done unless it is necessary.
+ */
+int
+eocExtCnuEtherPortConfSpeed_undo_setup( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfSpeed_undo_setup","called\n"));
+
+ /** should never get a NULL pointer */
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:455:o: |-> Setup eocExtCnuEtherPortConfSpeed undo.
+ */
+ /*
+ * copy eocExtCnuEtherPortConfSpeed data
+ * set rowreq_ctx->undo->eocExtCnuEtherPortConfSpeed from rowreq_ctx->data.eocExtCnuEtherPortConfSpeed
+ */
+ rowreq_ctx->undo->eocExtCnuEtherPortConfSpeed = rowreq_ctx->data.eocExtCnuEtherPortConfSpeed;
+
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortConfSpeed_undo_setup */
+
+/**
+ * Set the new value.
+ *
+ * @param rowreq_ctx
+ * Pointer to the users context. You should know how to
+ * manipulate the value from this object.
+ * @param eocExtCnuEtherPortConfSpeed_val
+ * A long containing the new value.
+ */
+int
+eocExtCnuEtherPortConfSpeed_set( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortConfSpeed_val )
+{
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfSpeed_set","called\n"));
+
+ /** should never get a NULL pointer */
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:461:M: |-> Set eocExtCnuEtherPortConfSpeed value.
+ * set eocExtCnuEtherPortConfSpeed value in rowreq_ctx->data
+ */
+ rowreq_ctx->data.eocExtCnuEtherPortConfSpeed = eocExtCnuEtherPortConfSpeed_val;
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortConfSpeed_set */
+
+/**
+ * undo the previous set.
+ *
+ * @param rowreq_ctx
+ * Pointer to the users context.
+ */
+int
+eocExtCnuEtherPortConfSpeed_undo( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfSpeed_undo","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:456:o: |-> Clean up eocExtCnuEtherPortConfSpeed undo.
+ */
+ /*
+ * copy eocExtCnuEtherPortConfSpeed data
+ * set rowreq_ctx->data.eocExtCnuEtherPortConfSpeed from rowreq_ctx->undo->eocExtCnuEtherPortConfSpeed
+ */
+ rowreq_ctx->data.eocExtCnuEtherPortConfSpeed = rowreq_ctx->undo->eocExtCnuEtherPortConfSpeed;
+
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortConfSpeed_undo */
+
+/*---------------------------------------------------------------------
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortEntry.eocExtCnuEtherPortConfDuplex
+ * eocExtCnuEtherPortConfDuplex is subid 7 of eocExtCnuEtherPortEntry.
+ * Its status is Current, and its access level is ReadWrite.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1.1.7
+ * Description:
+Duplex status.
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 1
+ *
+ * Enum range: 2/8. Values: half(1), full(2)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Check that the proposed new value is potentially valid.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param eocExtCnuEtherPortConfDuplex_val
+ * A long containing the new value.
+ *
+ * @retval MFD_SUCCESS : incoming value is legal
+ * @retval MFD_NOT_VALID_NOW : incoming value is not valid now
+ * @retval MFD_NOT_VALID_EVER : incoming value is never valid
+ *
+ * This is the place to check for requirements that are not
+ * expressed in the mib syntax (for example, a requirement that
+ * is detailed in the description for an object).
+ *
+ * You should check that the requested change between the undo value and the
+ * new value is legal (ie, the transistion from one value to another
+ * is legal).
+ *
+ *@note
+ * This check is only to determine if the new value
+ * is \b potentially valid. This is the first check of many, and
+ * is one of the simplest ones.
+ *
+ *@note
+ * this is not the place to do any checks for values
+ * which depend on some other value in the mib. Those
+ * types of checks should be done in the
+ * eocExtCnuEtherPortTable_check_dependencies() function.
+ *
+ * The following checks have already been done for you:
+ * The syntax is ASN_INTEGER
+ * The value is one of half(1), full(2)
+ *
+ * If there a no other checks you need to do, simply return MFD_SUCCESS.
+ *
+ */
+int
+eocExtCnuEtherPortConfDuplex_check_value( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortConfDuplex_val)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfDuplex_check_value","called\n"));
+
+ /** should never get a NULL pointer */
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:441:o: |-> Check for valid eocExtCnuEtherPortConfDuplex value.
+ */
+
+ return MFD_SUCCESS; /* eocExtCnuEtherPortConfDuplex value not illegal */
+} /* eocExtCnuEtherPortConfDuplex_check_value */
+
+/**
+ * Save old value information
+ *
+ * @param rowreq_ctx
+ * Pointer to the table context (eocExtCnuEtherPortTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR : error. set will fail.
+ *
+ * This function will be called after the table level undo setup function
+ * eocExtCnuEtherPortTable_undo_setup has been called.
+ *
+ *@note
+ * this function will only be called if a new value is set for this column.
+ *
+ * If there is any setup specific to a particular column (e.g. allocating
+ * memory for a string), you should do that setup in this function, so it
+ * won't be done unless it is necessary.
+ */
+int
+eocExtCnuEtherPortConfDuplex_undo_setup( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfDuplex_undo_setup","called\n"));
+
+ /** should never get a NULL pointer */
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:455:o: |-> Setup eocExtCnuEtherPortConfDuplex undo.
+ */
+ /*
+ * copy eocExtCnuEtherPortConfDuplex data
+ * set rowreq_ctx->undo->eocExtCnuEtherPortConfDuplex from rowreq_ctx->data.eocExtCnuEtherPortConfDuplex
+ */
+ rowreq_ctx->undo->eocExtCnuEtherPortConfDuplex = rowreq_ctx->data.eocExtCnuEtherPortConfDuplex;
+
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortConfDuplex_undo_setup */
+
+/**
+ * Set the new value.
+ *
+ * @param rowreq_ctx
+ * Pointer to the users context. You should know how to
+ * manipulate the value from this object.
+ * @param eocExtCnuEtherPortConfDuplex_val
+ * A long containing the new value.
+ */
+int
+eocExtCnuEtherPortConfDuplex_set( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortConfDuplex_val )
+{
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfDuplex_set","called\n"));
+
+ /** should never get a NULL pointer */
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:461:M: |-> Set eocExtCnuEtherPortConfDuplex value.
+ * set eocExtCnuEtherPortConfDuplex value in rowreq_ctx->data
+ */
+ rowreq_ctx->data.eocExtCnuEtherPortConfDuplex = eocExtCnuEtherPortConfDuplex_val;
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortConfDuplex_set */
+
+/**
+ * undo the previous set.
+ *
+ * @param rowreq_ctx
+ * Pointer to the users context.
+ */
+int
+eocExtCnuEtherPortConfDuplex_undo( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortConfDuplex_undo","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * TODO:456:o: |-> Clean up eocExtCnuEtherPortConfDuplex undo.
+ */
+ /*
+ * copy eocExtCnuEtherPortConfDuplex data
+ * set rowreq_ctx->data.eocExtCnuEtherPortConfDuplex from rowreq_ctx->undo->eocExtCnuEtherPortConfDuplex
+ */
+ rowreq_ctx->data.eocExtCnuEtherPortConfDuplex = rowreq_ctx->undo->eocExtCnuEtherPortConfDuplex;
+
+
+ return MFD_SUCCESS;
+} /* eocExtCnuEtherPortConfDuplex_undo */
+
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_set.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_set.h
new file mode 100644
index 0000000000..8bf8ee63f7
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_data_set.h
@@ -0,0 +1,75 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12077 $ of $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUETHERPORTTABLE_DATA_SET_H
+#define EOCEXTCNUETHERPORTTABLE_DATA_SET_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* *********************************************************************
+ * SET function declarations
+ */
+
+/* *********************************************************************
+ * SET Table declarations
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuEtherPortTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortTable is subid 1 of eocExtCnuPortMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1, length: 13
+*/
+
+
+int eocExtCnuEtherPortTable_undo_setup( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx);
+int eocExtCnuEtherPortTable_undo_cleanup( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx);
+int eocExtCnuEtherPortTable_undo( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx);
+int eocExtCnuEtherPortTable_commit( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx);
+int eocExtCnuEtherPortTable_undo_commit( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx);
+
+
+int eocExtCnuEtherPortConfAutoNeg_check_value( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortConfAutoNeg_val);
+int eocExtCnuEtherPortConfAutoNeg_undo_setup( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx );
+int eocExtCnuEtherPortConfAutoNeg_set( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortConfAutoNeg_val );
+int eocExtCnuEtherPortConfAutoNeg_undo( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx );
+
+int eocExtCnuEtherPortConfSpeed_check_value( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortConfSpeed_val);
+int eocExtCnuEtherPortConfSpeed_undo_setup( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx );
+int eocExtCnuEtherPortConfSpeed_set( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortConfSpeed_val );
+int eocExtCnuEtherPortConfSpeed_undo( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx );
+
+int eocExtCnuEtherPortActualSpeed_check_value( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortActualSpeed_val);
+int eocExtCnuEtherPortActualSpeed_undo_setup( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx );
+int eocExtCnuEtherPortActualSpeed_set( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortActualSpeed_val );
+int eocExtCnuEtherPortActualSpeed_undo( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx );
+
+int eocExtCnuEtherPortConfDuplex_check_value( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortConfDuplex_val);
+int eocExtCnuEtherPortConfDuplex_undo_setup( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx );
+int eocExtCnuEtherPortConfDuplex_set( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortConfDuplex_val );
+int eocExtCnuEtherPortConfDuplex_undo( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx );
+
+int eocExtCnuEtherPortActualDuplex_check_value( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortActualDuplex_val);
+int eocExtCnuEtherPortActualDuplex_undo_setup( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx );
+int eocExtCnuEtherPortActualDuplex_set( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, u_long eocExtCnuEtherPortActualDuplex_val );
+int eocExtCnuEtherPortActualDuplex_undo( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx );
+
+
+int eocExtCnuEtherPortTable_check_dependencies(eocExtCnuEtherPortTable_rowreq_ctx *ctx);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUETHERPORTTABLE_DATA_SET_H */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_enums.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_enums.h
new file mode 100644
index 0000000000..dde5b4d466
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_enums.h
@@ -0,0 +1,122 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * : generic-table-enums.m2c 12526 2005-07-15 22:41:16Z rstory $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUETHERPORTTABLE_ENUMS_H
+#define EOCEXTCNUETHERPORTTABLE_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 eocExtCnuEtherPortTable
+ *
+ *************************************************************************
+ *************************************************************************/
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * eocExtCnuEtherPortConfAutoNeg (INTEGER / ASN_INTEGER)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#ifndef EOCEXTCNUETHERPORTCONFAUTONEG_ENUMS
+#define EOCEXTCNUETHERPORTCONFAUTONEG_ENUMS
+
+#define EOCEXTCNUETHERPORTCONFAUTONEG_ENABLED 1
+#define EOCEXTCNUETHERPORTCONFAUTONEG_DISABLED 2
+
+#endif /* EOCEXTCNUETHERPORTCONFAUTONEG_ENUMS */
+
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * eocExtCnuEtherPortConfSpeed (INTEGER / ASN_INTEGER)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#ifndef EOCEXTCNUETHERPORTCONFSPEED_ENUMS
+#define EOCEXTCNUETHERPORTCONFSPEED_ENUMS
+
+#define EOCEXTCNUETHERPORTCONFSPEED_SPEED10M 1
+#define EOCEXTCNUETHERPORTCONFSPEED_SPEED100M 2
+#define EOCEXTCNUETHERPORTCONFSPEED_SPEED1000M 3
+
+#endif /* EOCEXTCNUETHERPORTCONFSPEED_ENUMS */
+
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * eocExtCnuEtherPortActualSpeed (INTEGER / ASN_INTEGER)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#ifndef EOCEXTCNUETHERPORTACTUALSPEED_ENUMS
+#define EOCEXTCNUETHERPORTACTUALSPEED_ENUMS
+
+#define EOCEXTCNUETHERPORTACTUALSPEED_SPEED10M 1
+#define EOCEXTCNUETHERPORTACTUALSPEED_SPEED100M 2
+#define EOCEXTCNUETHERPORTACTUALSPEED_SPEED1000M 3
+
+#endif /* EOCEXTCNUETHERPORTACTUALSPEED_ENUMS */
+
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * eocExtCnuEtherPortConfDuplex (INTEGER / ASN_INTEGER)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#ifndef EOCEXTCNUETHERPORTCONFDUPLEX_ENUMS
+#define EOCEXTCNUETHERPORTCONFDUPLEX_ENUMS
+
+#define EOCEXTCNUETHERPORTCONFDUPLEX_HALF 1
+#define EOCEXTCNUETHERPORTCONFDUPLEX_FULL 2
+
+#endif /* EOCEXTCNUETHERPORTCONFDUPLEX_ENUMS */
+
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * eocExtCnuEtherPortActualDuplex (INTEGER / ASN_INTEGER)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#ifndef EOCEXTCNUETHERPORTACTUALDUPLEX_ENUMS
+#define EOCEXTCNUETHERPORTACTUALDUPLEX_ENUMS
+
+#define EOCEXTCNUETHERPORTACTUALDUPLEX_HALF 1
+#define EOCEXTCNUETHERPORTACTUALDUPLEX_FULL 2
+
+#endif /* EOCEXTCNUETHERPORTACTUALDUPLEX_ENUMS */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUETHERPORTTABLE_ENUMS_H */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_interface.c b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_interface.c
new file mode 100644
index 0000000000..e219ab3560
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_interface.c
@@ -0,0 +1,1625 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 15899 $ of $
+ *
+ * $Id:$
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * *** ***
+ * *** 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. ***
+ * *** ***
+ * *** ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "eocExtCnuEtherPortTable.h"
+
+
+#include <net-snmp/agent/table_container.h>
+#include <net-snmp/library/container.h>
+
+#include "eocExtCnuEtherPortTable_interface.h"
+
+#include <ctype.h>
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table eocExtCnuEtherPortTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * NSCRTV-EPONEOC-MOD-EOC-MIB::eocExtCnuEtherPortTable is subid 1 of eocExtCnuPortMgmtObjects.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.17409.2.4.20.1.2.1, length: 13
+*/
+typedef struct eocExtCnuEtherPortTable_interface_ctx_s {
+
+ netsnmp_container *container;
+ netsnmp_cache *cache;
+
+ eocExtCnuEtherPortTable_registration * user_ctx;
+
+ netsnmp_table_registration_info tbl_info;
+
+ netsnmp_baby_steps_access_methods access_multiplexer;
+
+ u_int table_dirty;
+
+} eocExtCnuEtherPortTable_interface_ctx;
+
+static eocExtCnuEtherPortTable_interface_ctx eocExtCnuEtherPortTable_if_ctx;
+
+static void _eocExtCnuEtherPortTable_container_init(
+ eocExtCnuEtherPortTable_interface_ctx *if_ctx);
+static void _eocExtCnuEtherPortTable_container_shutdown(
+ eocExtCnuEtherPortTable_interface_ctx *if_ctx);
+
+
+netsnmp_container *
+eocExtCnuEtherPortTable_container_get( void )
+{
+ return eocExtCnuEtherPortTable_if_ctx.container;
+}
+
+eocExtCnuEtherPortTable_registration *
+eocExtCnuEtherPortTable_registration_get( void )
+{
+ return eocExtCnuEtherPortTable_if_ctx.user_ctx;
+}
+
+eocExtCnuEtherPortTable_registration *
+eocExtCnuEtherPortTable_registration_set( eocExtCnuEtherPortTable_registration * newreg )
+{
+ eocExtCnuEtherPortTable_registration * old = eocExtCnuEtherPortTable_if_ctx.user_ctx;
+ eocExtCnuEtherPortTable_if_ctx.user_ctx = newreg;
+ return old;
+}
+
+int
+eocExtCnuEtherPortTable_container_size( void )
+{
+ return CONTAINER_SIZE(eocExtCnuEtherPortTable_if_ctx.container);
+}
+
+u_int
+eocExtCnuEtherPortTable_dirty_get( void )
+{
+ return eocExtCnuEtherPortTable_if_ctx.table_dirty;
+}
+
+void
+eocExtCnuEtherPortTable_dirty_set( u_int status )
+{
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_dirty_set",
+ "called. was %d, now %d\n",
+ eocExtCnuEtherPortTable_if_ctx.table_dirty, status));
+ eocExtCnuEtherPortTable_if_ctx.table_dirty = status;
+}
+
+/*
+ * mfd multiplexer modes
+ */
+static Netsnmp_Node_Handler _mfd_eocExtCnuEtherPortTable_pre_request;
+static Netsnmp_Node_Handler _mfd_eocExtCnuEtherPortTable_post_request;
+static Netsnmp_Node_Handler _mfd_eocExtCnuEtherPortTable_object_lookup;
+static Netsnmp_Node_Handler _mfd_eocExtCnuEtherPortTable_get_values;
+static Netsnmp_Node_Handler _mfd_eocExtCnuEtherPortTable_check_objects;
+static Netsnmp_Node_Handler _mfd_eocExtCnuEtherPortTable_undo_setup;
+static Netsnmp_Node_Handler _mfd_eocExtCnuEtherPortTable_set_values;
+static Netsnmp_Node_Handler _mfd_eocExtCnuEtherPortTable_undo_cleanup;
+static Netsnmp_Node_Handler _mfd_eocExtCnuEtherPortTable_undo_values;
+static Netsnmp_Node_Handler _mfd_eocExtCnuEtherPortTable_commit;
+static Netsnmp_Node_Handler _mfd_eocExtCnuEtherPortTable_undo_commit;
+static Netsnmp_Node_Handler _mfd_eocExtCnuEtherPortTable_irreversible_commit;
+
+NETSNMP_STATIC_INLINE int _eocExtCnuEtherPortTable_undo_column( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx,
+ netsnmp_variable_list *var, int column );
+
+eocExtCnuEtherPortTable_data *eocExtCnuEtherPortTable_allocate_data(void);
+
+/**
+ * @internal
+ * Initialize the table eocExtCnuEtherPortTable
+ * (Define its contents and how it's structured)
+ */
+void
+_eocExtCnuEtherPortTable_initialize_interface(eocExtCnuEtherPortTable_registration * reg_ptr, u_long flags)
+{
+ netsnmp_baby_steps_access_methods *access_multiplexer =
+ &eocExtCnuEtherPortTable_if_ctx.access_multiplexer;
+ netsnmp_table_registration_info *tbl_info = &eocExtCnuEtherPortTable_if_ctx.tbl_info;
+ netsnmp_handler_registration *reginfo;
+ netsnmp_mib_handler *handler;
+ int mfd_modes = 0;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_eocExtCnuEtherPortTable_initialize_interface","called\n"));
+
+
+ /*************************************************
+ *
+ * save interface context for eocExtCnuEtherPortTable
+ */
+ /*
+ * Setting up the table's definition
+ */
+ netsnmp_table_helper_add_indexes(tbl_info,
+ ASN_INTEGER, /** index: eocExtCnuEtherPortCbatCardIndex */
+ ASN_INTEGER, /** index: eocExtCnuEtherPortCnuIndex */
+ ASN_INTEGER, /** index: eocExtCnuEtherPortCnuPortIndex */
+ 0);
+
+ /* Define the minimum and maximum accessible columns. This
+ optimizes retrival. */
+ tbl_info->min_column = EOCEXTCNUETHERPORTTABLE_MIN_COL;
+ tbl_info->max_column = EOCEXTCNUETHERPORTTABLE_MAX_COL;
+
+ /*
+ * save users context
+ */
+ eocExtCnuEtherPortTable_if_ctx.user_ctx = reg_ptr;
+
+ /*
+ * call data access initialization code
+ */
+ eocExtCnuEtherPortTable_init_data(reg_ptr);
+
+ /*
+ * set up the container
+ */
+ _eocExtCnuEtherPortTable_container_init(&eocExtCnuEtherPortTable_if_ctx);
+ if (NULL == eocExtCnuEtherPortTable_if_ctx.container) {
+ snmp_log(LOG_ERR,"could not initialize container for eocExtCnuEtherPortTable\n");
+ return;
+ }
+
+ /*
+ * access_multiplexer: REQUIRED wrapper for get request handling
+ */
+ access_multiplexer->object_lookup = _mfd_eocExtCnuEtherPortTable_object_lookup;
+ access_multiplexer->get_values = _mfd_eocExtCnuEtherPortTable_get_values;
+
+ /*
+ * no wrappers yet
+ */
+ access_multiplexer->pre_request = _mfd_eocExtCnuEtherPortTable_pre_request;
+ access_multiplexer->post_request = _mfd_eocExtCnuEtherPortTable_post_request;
+
+
+ /*
+ * REQUIRED wrappers for set request handling
+ */
+ access_multiplexer->object_syntax_checks = _mfd_eocExtCnuEtherPortTable_check_objects;
+ access_multiplexer->undo_setup = _mfd_eocExtCnuEtherPortTable_undo_setup;
+ access_multiplexer->undo_cleanup = _mfd_eocExtCnuEtherPortTable_undo_cleanup;
+ access_multiplexer->set_values = _mfd_eocExtCnuEtherPortTable_set_values;
+ access_multiplexer->undo_sets = _mfd_eocExtCnuEtherPortTable_undo_values;
+
+ /*
+ * no wrappers yet
+ */
+ access_multiplexer->commit = _mfd_eocExtCnuEtherPortTable_commit;
+ access_multiplexer->undo_commit = _mfd_eocExtCnuEtherPortTable_undo_commit;
+ access_multiplexer->irreversible_commit = _mfd_eocExtCnuEtherPortTable_irreversible_commit;
+
+ /*************************************************
+ *
+ * Create a registration, save our reg data, register table.
+ */
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:init_eocExtCnuEtherPortTable",
+ "Registering eocExtCnuEtherPortTable as a mibs-for-dummies table.\n"));
+ handler = netsnmp_baby_steps_access_multiplexer_get(access_multiplexer);
+ reginfo = netsnmp_handler_registration_create("eocExtCnuEtherPortTable", handler,
+ eocExtCnuEtherPortTable_oid,
+ eocExtCnuEtherPortTable_oid_size,
+ HANDLER_CAN_BABY_STEP |
+ HANDLER_CAN_RWRITE
+ );
+ if(NULL == reginfo) {
+ snmp_log(LOG_ERR,"error registering table eocExtCnuEtherPortTable\n");
+ return;
+ }
+ reginfo->my_reg_void = &eocExtCnuEtherPortTable_if_ctx;
+
+ /*************************************************
+ *
+ * set up baby steps handler, create it and inject it
+ */
+ if( access_multiplexer->object_lookup )
+ mfd_modes |= BABY_STEP_OBJECT_LOOKUP;
+ if( access_multiplexer->set_values )
+ mfd_modes |= BABY_STEP_SET_VALUES;
+ if( access_multiplexer->irreversible_commit )
+ mfd_modes |= BABY_STEP_IRREVERSIBLE_COMMIT;
+ if( access_multiplexer->object_syntax_checks )
+ mfd_modes |= BABY_STEP_CHECK_OBJECT;
+
+ if( access_multiplexer->pre_request )
+ mfd_modes |= BABY_STEP_PRE_REQUEST;
+ if( access_multiplexer->post_request )
+ mfd_modes |= BABY_STEP_POST_REQUEST;
+
+ if( access_multiplexer->undo_setup )
+ mfd_modes |= BABY_STEP_UNDO_SETUP;
+ if( access_multiplexer->undo_cleanup )
+ mfd_modes |= BABY_STEP_UNDO_CLEANUP;
+ if( access_multiplexer->undo_sets )
+ mfd_modes |= BABY_STEP_UNDO_SETS;
+
+ if( access_multiplexer->row_creation )
+ mfd_modes |= BABY_STEP_ROW_CREATE;
+ if( access_multiplexer->consistency_checks )
+ mfd_modes |= BABY_STEP_CHECK_CONSISTENCY;
+ if( access_multiplexer->commit )
+ mfd_modes |= BABY_STEP_COMMIT;
+ if( access_multiplexer->undo_commit )
+ mfd_modes |= BABY_STEP_UNDO_COMMIT;
+
+ handler = netsnmp_baby_steps_handler_get(mfd_modes);
+ netsnmp_inject_handler(reginfo, handler);
+
+ /*************************************************
+ *
+ * inject row_merge helper with prefix rootoid_len + 2 (entry.col)
+ */
+ handler = netsnmp_get_row_merge_handler(reginfo->rootoid_len + 2);
+ netsnmp_inject_handler(reginfo, handler);
+
+ /*************************************************
+ *
+ * inject container_table helper
+ */
+ handler =
+ netsnmp_container_table_handler_get(tbl_info,
+ eocExtCnuEtherPortTable_if_ctx.container,
+ TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+ netsnmp_inject_handler( reginfo, handler );
+
+ /*************************************************
+ *
+ * inject cache helper
+ */
+ if(NULL != eocExtCnuEtherPortTable_if_ctx.cache) {
+ handler = netsnmp_cache_handler_get(eocExtCnuEtherPortTable_if_ctx.cache);
+ netsnmp_inject_handler( reginfo, handler );
+ }
+
+ /*
+ * register table
+ */
+ netsnmp_register_table(reginfo, tbl_info);
+
+} /* _eocExtCnuEtherPortTable_initialize_interface */
+
+/**
+ * @internal
+ * Shutdown the table eocExtCnuEtherPortTable
+ */
+void
+_eocExtCnuEtherPortTable_shutdown_interface(eocExtCnuEtherPortTable_registration * reg_ptr)
+{
+ /*
+ * shutdown the container
+ */
+ _eocExtCnuEtherPortTable_container_shutdown(&eocExtCnuEtherPortTable_if_ctx);
+}
+
+void
+eocExtCnuEtherPortTable_valid_columns_set(netsnmp_column_info *vc)
+{
+ eocExtCnuEtherPortTable_if_ctx.tbl_info.valid_columns = vc;
+} /* eocExtCnuEtherPortTable_valid_columns_set */
+
+/**
+ * @internal
+ * convert the index component stored in the context to an oid
+ */
+int
+eocExtCnuEtherPortTable_index_to_oid(netsnmp_index *oid_idx,
+ eocExtCnuEtherPortTable_mib_index *mib_idx)
+{
+ int err = SNMP_ERR_NOERROR;
+
+ /*
+ * temp storage for parsing indexes
+ */
+ /*
+ * eocExtCnuEtherPortCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuEtherPortCbatCardIndex;
+ /*
+ * eocExtCnuEtherPortCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuEtherPortCnuIndex;
+ /*
+ * eocExtCnuEtherPortCnuPortIndex(3)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuEtherPortCnuPortIndex;
+
+ /*
+ * set up varbinds
+ */
+ memset( &var_eocExtCnuEtherPortCbatCardIndex, 0x00, sizeof(var_eocExtCnuEtherPortCbatCardIndex) );
+ var_eocExtCnuEtherPortCbatCardIndex.type = ASN_INTEGER;
+ memset( &var_eocExtCnuEtherPortCnuIndex, 0x00, sizeof(var_eocExtCnuEtherPortCnuIndex) );
+ var_eocExtCnuEtherPortCnuIndex.type = ASN_INTEGER;
+ memset( &var_eocExtCnuEtherPortCnuPortIndex, 0x00, sizeof(var_eocExtCnuEtherPortCnuPortIndex) );
+ var_eocExtCnuEtherPortCnuPortIndex.type = ASN_INTEGER;
+
+ /*
+ * chain temp index varbinds together
+ */
+ var_eocExtCnuEtherPortCbatCardIndex.next_variable = &var_eocExtCnuEtherPortCnuIndex; var_eocExtCnuEtherPortCnuIndex.next_variable = &var_eocExtCnuEtherPortCnuPortIndex; var_eocExtCnuEtherPortCnuPortIndex.next_variable = NULL;
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_index_to_oid","called\n"));
+
+ /* eocExtCnuEtherPortCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ snmp_set_var_value(&var_eocExtCnuEtherPortCbatCardIndex, (u_char*)&mib_idx->eocExtCnuEtherPortCbatCardIndex,
+ sizeof(mib_idx->eocExtCnuEtherPortCbatCardIndex));
+
+ /* eocExtCnuEtherPortCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ snmp_set_var_value(&var_eocExtCnuEtherPortCnuIndex, (u_char*)&mib_idx->eocExtCnuEtherPortCnuIndex,
+ sizeof(mib_idx->eocExtCnuEtherPortCnuIndex));
+
+ /* eocExtCnuEtherPortCnuPortIndex(3)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ snmp_set_var_value(&var_eocExtCnuEtherPortCnuPortIndex, (u_char*)&mib_idx->eocExtCnuEtherPortCnuPortIndex,
+ sizeof(mib_idx->eocExtCnuEtherPortCnuPortIndex));
+
+
+ err = build_oid_noalloc(oid_idx->oids, oid_idx->len, &oid_idx->len,
+ NULL, 0, &var_eocExtCnuEtherPortCbatCardIndex);
+ if(err)
+ snmp_log(LOG_ERR,"error %d converting index to oid\n", err);
+
+ /*
+ * parsing may have allocated memory. free it.
+ */
+ snmp_reset_var_buffers( &var_eocExtCnuEtherPortCbatCardIndex );
+
+ return err;
+} /* eocExtCnuEtherPortTable_index_to_oid */
+
+/**
+ * extract eocExtCnuEtherPortTable indexes from a netsnmp_index
+ *
+ * @retval SNMP_ERR_NOERROR : no error
+ * @retval SNMP_ERR_GENERR : error
+ */
+int
+eocExtCnuEtherPortTable_index_from_oid(netsnmp_index *oid_idx,
+ eocExtCnuEtherPortTable_mib_index *mib_idx)
+{
+ int err = SNMP_ERR_NOERROR;
+
+ /*
+ * temp storage for parsing indexes
+ */
+ /*
+ * eocExtCnuEtherPortCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuEtherPortCbatCardIndex;
+ /*
+ * eocExtCnuEtherPortCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuEtherPortCnuIndex;
+ /*
+ * eocExtCnuEtherPortCnuPortIndex(3)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h
+ */
+ netsnmp_variable_list var_eocExtCnuEtherPortCnuPortIndex;
+
+ /*
+ * set up varbinds
+ */
+ memset( &var_eocExtCnuEtherPortCbatCardIndex, 0x00, sizeof(var_eocExtCnuEtherPortCbatCardIndex) );
+ var_eocExtCnuEtherPortCbatCardIndex.type = ASN_INTEGER;
+ memset( &var_eocExtCnuEtherPortCnuIndex, 0x00, sizeof(var_eocExtCnuEtherPortCnuIndex) );
+ var_eocExtCnuEtherPortCnuIndex.type = ASN_INTEGER;
+ memset( &var_eocExtCnuEtherPortCnuPortIndex, 0x00, sizeof(var_eocExtCnuEtherPortCnuPortIndex) );
+ var_eocExtCnuEtherPortCnuPortIndex.type = ASN_INTEGER;
+
+ /*
+ * chain temp index varbinds together
+ */
+ var_eocExtCnuEtherPortCbatCardIndex.next_variable = &var_eocExtCnuEtherPortCnuIndex; var_eocExtCnuEtherPortCnuIndex.next_variable = &var_eocExtCnuEtherPortCnuPortIndex; var_eocExtCnuEtherPortCnuPortIndex.next_variable = NULL;
+
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_index_from_oid","called\n"));
+
+ /*
+ * parse the oid into the individual index components
+ */
+ err = parse_oid_indexes( oid_idx->oids, oid_idx->len,
+ &var_eocExtCnuEtherPortCbatCardIndex );
+ if (err == SNMP_ERR_NOERROR) {
+ /*
+ * copy out values
+ */
+ mib_idx->eocExtCnuEtherPortCbatCardIndex = *((long *)var_eocExtCnuEtherPortCbatCardIndex.val.string);
+ mib_idx->eocExtCnuEtherPortCnuIndex = *((long *)var_eocExtCnuEtherPortCnuIndex.val.string);
+ mib_idx->eocExtCnuEtherPortCnuPortIndex = *((long *)var_eocExtCnuEtherPortCnuPortIndex.val.string);
+
+
+ }
+
+ /*
+ * parsing may have allocated memory. free it.
+ */
+ snmp_reset_var_buffers( &var_eocExtCnuEtherPortCbatCardIndex );
+
+ return err;
+} /* eocExtCnuEtherPortTable_index_from_oid */
+
+
+/*
+ * eocExtCnuEtherPortTable_allocate_data
+ *
+ * Purpose: create new eocExtCnuEtherPortTable_data.
+ */
+eocExtCnuEtherPortTable_data *
+eocExtCnuEtherPortTable_allocate_data(void)
+{
+ eocExtCnuEtherPortTable_data *rtn = SNMP_MALLOC_TYPEDEF(eocExtCnuEtherPortTable_data);
+
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_allocate_data","called\n"));
+
+ if(NULL == rtn) {
+ snmp_log(LOG_ERR, "unable to malloc memory for new "
+ "eocExtCnuEtherPortTable_data.\n");
+ }
+
+ return rtn;
+} /* eocExtCnuEtherPortTable_allocate_data */
+
+/*
+ * eocExtCnuEtherPortTable_release_data
+ *
+ * Purpose: release eocExtCnuEtherPortTable data.
+ */
+void
+eocExtCnuEtherPortTable_release_data(eocExtCnuEtherPortTable_data *data)
+{
+ DEBUGMSGTL(("verbose:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_release_data","called\n"));
+
+ free(data);
+} /* eocExtCnuEtherPortTable_release_data */
+
+/* *********************************************************************
+ * @internal
+ * allocate resources for a eocExtCnuEtherPortTable_rowreq_ctx
+ */
+eocExtCnuEtherPortTable_rowreq_ctx *
+eocExtCnuEtherPortTable_allocate_rowreq_ctx(void *user_init_ctx)
+{
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx =
+ SNMP_MALLOC_TYPEDEF(eocExtCnuEtherPortTable_rowreq_ctx);
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_allocate_rowreq_ctx","called\n"));
+
+ if(NULL == rowreq_ctx) {
+ snmp_log(LOG_ERR,"Couldn't allocate memory for a "
+ "eocExtCnuEtherPortTable_rowreq_ctx.\n");
+ return NULL;
+ }
+
+ rowreq_ctx->oid_idx.oids = rowreq_ctx->oid_tmp;
+
+ rowreq_ctx->eocExtCnuEtherPortTable_data_list = NULL;
+
+ /*
+ * if we allocated data, call init routine
+ */
+ if (!(rowreq_ctx->rowreq_flags & MFD_ROW_DATA_FROM_USER)) {
+ if(SNMPERR_SUCCESS !=
+ eocExtCnuEtherPortTable_rowreq_ctx_init(rowreq_ctx, user_init_ctx)) {
+ eocExtCnuEtherPortTable_release_rowreq_ctx(rowreq_ctx);
+ rowreq_ctx = NULL;
+ }
+ }
+
+ return rowreq_ctx;
+} /* eocExtCnuEtherPortTable_allocate_rowreq_ctx */
+
+/*
+ * @internal
+ * release resources for a eocExtCnuEtherPortTable_rowreq_ctx
+ */
+void
+eocExtCnuEtherPortTable_release_rowreq_ctx(eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx)
+{
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:eocExtCnuEtherPortTable_release_rowreq_ctx","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ eocExtCnuEtherPortTable_rowreq_ctx_cleanup(rowreq_ctx);
+
+ if(rowreq_ctx->undo)
+ eocExtCnuEtherPortTable_release_data(rowreq_ctx->undo);
+
+ /*
+ * free index oid pointer
+ */
+ if(rowreq_ctx->oid_idx.oids != rowreq_ctx->oid_tmp)
+ free(rowreq_ctx->oid_idx.oids);
+
+ SNMP_FREE(rowreq_ctx);
+} /* eocExtCnuEtherPortTable_release_rowreq_ctx */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_eocExtCnuEtherPortTable_pre_request(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_pre_request",
+ "called\n"));
+
+ if (1 != netsnmp_row_merge_status_first(reginfo, agtreq_info)) {
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable",
+ "skipping additional pre_request\n"));
+ return SNMP_ERR_NOERROR;
+ }
+
+ rc = eocExtCnuEtherPortTable_pre_request(eocExtCnuEtherPortTable_if_ctx.user_ctx);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuEtherPortTable","error %d from "
+ "eocExtCnuEtherPortTable_pre_request\n", rc));
+ netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+ }
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuEtherPortTable_pre_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_eocExtCnuEtherPortTable_post_request(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ int rc, packet_rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_post_request",
+ "called\n"));
+
+ /*
+ * release row context, if deleted
+ */
+ if (rowreq_ctx && (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED))
+ eocExtCnuEtherPortTable_release_rowreq_ctx(rowreq_ctx);
+
+ /*
+ * wait for last call before calling user
+ */
+ if (1 != netsnmp_row_merge_status_last(reginfo, agtreq_info)) {
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable",
+ "waiting for last post_request\n"));
+ return SNMP_ERR_NOERROR;
+ }
+
+ packet_rc = netsnmp_check_all_requests_error(agtreq_info->asp, 0);
+ if ((MFD_SUCCESS != packet_rc) && eocExtCnuEtherPortTable_dirty_get()) {
+ /*
+ * we shouldn't get here. the undo steps should also clear
+ * the dirty flags.
+ */
+ snmp_log(LOG_WARNING, "eocExtCnuEtherPortTable dirty flag set in post_request "
+ "but status != SUCCESS.\n");
+ }
+
+ rc = eocExtCnuEtherPortTable_post_request(eocExtCnuEtherPortTable_if_ctx.user_ctx,packet_rc);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuEtherPortTable","error %d from "
+ "eocExtCnuEtherPortTable_post_request\n", rc));
+ }
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuEtherPortTable_post_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_eocExtCnuEtherPortTable_object_lookup(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc = SNMP_ERR_NOERROR;
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_object_lookup","called\n"));
+
+ /*
+ * get our context from mfd
+ * eocExtCnuEtherPortTable_interface_ctx *if_ctx =
+ * (eocExtCnuEtherPortTable_interface_ctx *)reginfo->my_reg_void;
+ */
+
+ if(NULL == rowreq_ctx) {
+ rc = SNMP_ERR_NOCREATION;
+ }
+
+ if (MFD_SUCCESS != rc)
+ netsnmp_request_set_error_all(requests, rc);
+ else
+ eocExtCnuEtherPortTable_row_prep(rowreq_ctx);
+
+ return SNMP_VALIDATE_ERR(rc);
+} /* _mfd_eocExtCnuEtherPortTable_object_lookup */
+
+/***********************************************************************
+ *
+ * GET processing
+ *
+ ***********************************************************************/
+/*
+ * @internal
+ * Retrieve the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_eocExtCnuEtherPortTable_get_column( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx,
+ netsnmp_variable_list *var, int column )
+{
+ int rc = SNMPERR_SUCCESS;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_get_column",
+ "called for %d\n", column));
+
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ switch(column) {
+
+ /* eocExtCnuEtherPortConfAutoNeg(4)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG:
+ var->val_len = sizeof(u_long);
+ var->type = ASN_INTEGER;
+rc = eocExtCnuEtherPortConfAutoNeg_get(rowreq_ctx, (u_long *)var->val.string );
+ break;
+
+ /* eocExtCnuEtherPortConfSpeed(5)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFSPEED:
+ var->val_len = sizeof(u_long);
+ var->type = ASN_INTEGER;
+rc = eocExtCnuEtherPortConfSpeed_get(rowreq_ctx, (u_long *)var->val.string );
+ break;
+
+ /* eocExtCnuEtherPortActualSpeed(6)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTACTUALSPEED:
+ var->val_len = sizeof(u_long);
+ var->type = ASN_INTEGER;
+rc = eocExtCnuEtherPortActualSpeed_get(rowreq_ctx, (u_long *)var->val.string );
+ break;
+
+ /* eocExtCnuEtherPortConfDuplex(7)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX:
+ var->val_len = sizeof(u_long);
+ var->type = ASN_INTEGER;
+rc = eocExtCnuEtherPortConfDuplex_get(rowreq_ctx, (u_long *)var->val.string );
+ break;
+
+ /* eocExtCnuEtherPortActualDuplex(8)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTACTUALDUPLEX:
+ var->val_len = sizeof(u_long);
+ var->type = ASN_INTEGER;
+rc = eocExtCnuEtherPortActualDuplex_get(rowreq_ctx, (u_long *)var->val.string );
+ break;
+
+ default:
+ if (EOCEXTCNUETHERPORTTABLE_MIN_COL <= column && column <= EOCEXTCNUETHERPORTTABLE_MAX_COL) {
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_get_column",
+ "assume column %d is reserved\n", column));
+ rc = MFD_SKIP;
+ } else {
+ snmp_log(LOG_ERR,
+ "unknown column %d in _eocExtCnuEtherPortTable_get_column\n", column);
+ }
+ break;
+ }
+
+ return rc;
+} /* _eocExtCnuEtherPortTable_get_column */
+
+int
+_mfd_eocExtCnuEtherPortTable_get_values(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ netsnmp_table_request_info * tri;
+ u_char * old_string;
+ void (*dataFreeHook)(void *);
+ int rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_get_values","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ for(;requests; requests = requests->next) {
+ /*
+ * save old pointer, so we can free it if replaced
+ */
+ old_string = requests->requestvb->val.string;
+ dataFreeHook = requests->requestvb->dataFreeHook;
+ if(NULL == requests->requestvb->val.string) {
+ requests->requestvb->val.string = requests->requestvb->buf;
+ requests->requestvb->val_len = sizeof(requests->requestvb->buf);
+ }
+ else if(requests->requestvb->buf == requests->requestvb->val.string) {
+ if(requests->requestvb->val_len != sizeof(requests->requestvb->buf))
+ requests->requestvb->val_len = sizeof(requests->requestvb->buf);
+ }
+
+ /*
+ * get column data
+ */
+ tri = netsnmp_extract_table_info(requests);
+ if(NULL == tri)
+ continue;
+
+ rc = _eocExtCnuEtherPortTable_get_column(rowreq_ctx, requests->requestvb, tri->colnum);
+ if(rc) {
+ if(MFD_SKIP == rc) {
+ requests->requestvb->type = SNMP_NOSUCHINSTANCE;
+ rc = SNMP_ERR_NOERROR;
+ }
+ }
+ else if (NULL == requests->requestvb->val.string) {
+ snmp_log(LOG_ERR,"NULL varbind data pointer!\n");
+ rc = SNMP_ERR_GENERR;
+ }
+ if(rc)
+ netsnmp_request_set_error(requests, SNMP_VALIDATE_ERR(rc));
+
+ /*
+ * if the buffer wasn't used previously for the old data (i.e. it
+ * was allcoated memory) and the get routine replaced the pointer,
+ * we need to free the previous pointer.
+ */
+ if(old_string && (old_string != requests->requestvb->buf) &&
+ (requests->requestvb->val.string != old_string)) {
+ if(dataFreeHook)
+ (*dataFreeHook)(old_string);
+ else
+ free(old_string);
+ }
+ } /* for results */
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuEtherPortTable_get_values */
+
+
+/***********************************************************************
+ *
+ * SET processing
+ *
+ ***********************************************************************/
+
+/*----------------------------------------------------------------------
+ *
+ * SET: Syntax checks
+ *
+ *---------------------------------------------------------------------*/
+/*
+ * @internal
+ * Check the syntax for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_eocExtCnuEtherPortTable_check_column( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx,
+ netsnmp_variable_list *var, int column )
+{
+ int rc = SNMPERR_SUCCESS;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_eocExtCnuEtherPortTable_check_column",
+ "called for %d\n", column));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ switch(column) {
+ /* (INDEX) eocExtCnuEtherPortCbatCardIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCBATCARDINDEX:
+ rc = SNMP_ERR_NOTWRITABLE; /* can not change index of active row */
+ break;
+ /* (INDEX) eocExtCnuEtherPortCnuIndex(2)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCNUINDEX:
+ rc = SNMP_ERR_NOTWRITABLE; /* can not change index of active row */
+ break;
+ /* (INDEX) eocExtCnuEtherPortCnuPortIndex(3)/INTEGER32/ASN_INTEGER/long(long)//l/a/w/e/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCNUPORTINDEX:
+ rc = SNMP_ERR_NOTWRITABLE; /* can not change index of active row */
+ break;
+
+ /* eocExtCnuEtherPortConfAutoNeg(4)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG:
+ rc = netsnmp_check_vb_type_and_size( var, ASN_INTEGER,
+ sizeof( rowreq_ctx->data.eocExtCnuEtherPortConfAutoNeg ) );
+ /* check that the value is one of defined enums */
+ if( (SNMPERR_SUCCESS == rc)
+ && ( *var->val.integer != EOCEXTCNUETHERPORTCONFAUTONEG_ENABLED )
+ && ( *var->val.integer != EOCEXTCNUETHERPORTCONFAUTONEG_DISABLED )
+ ) {
+ rc = SNMP_ERR_WRONGVALUE;
+ }
+ if(SNMPERR_SUCCESS != rc) {
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:_eocExtCnuEtherPortTable_check_column:eocExtCnuEtherPortConfAutoNeg",
+ "varbind validation failed (eg bad type or size)\n"));
+ }
+ else {
+ rc = eocExtCnuEtherPortConfAutoNeg_check_value( rowreq_ctx, *((u_long *)var->val.string) );
+ if((MFD_SUCCESS != rc) && (MFD_NOT_VALID_EVER != rc) &&
+ (MFD_NOT_VALID_NOW != rc)) {
+ snmp_log(LOG_ERR, "bad rc %d from eocExtCnuEtherPortConfAutoNeg_check_value\n", rc);
+ rc = SNMP_ERR_GENERR;
+ }
+ }
+ break;
+
+ /* eocExtCnuEtherPortConfSpeed(5)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFSPEED:
+ rc = netsnmp_check_vb_type_and_size( var, ASN_INTEGER,
+ sizeof( rowreq_ctx->data.eocExtCnuEtherPortConfSpeed ) );
+ /* check that the value is one of defined enums */
+ if( (SNMPERR_SUCCESS == rc)
+ && ( *var->val.integer != EOCEXTCNUETHERPORTCONFSPEED_SPEED10M )
+ && ( *var->val.integer != EOCEXTCNUETHERPORTCONFSPEED_SPEED100M )
+ && ( *var->val.integer != EOCEXTCNUETHERPORTCONFSPEED_SPEED1000M )
+ ) {
+ rc = SNMP_ERR_WRONGVALUE;
+ }
+ if(SNMPERR_SUCCESS != rc) {
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:_eocExtCnuEtherPortTable_check_column:eocExtCnuEtherPortConfSpeed",
+ "varbind validation failed (eg bad type or size)\n"));
+ }
+ else {
+ rc = eocExtCnuEtherPortConfSpeed_check_value( rowreq_ctx, *((u_long *)var->val.string) );
+ if((MFD_SUCCESS != rc) && (MFD_NOT_VALID_EVER != rc) &&
+ (MFD_NOT_VALID_NOW != rc)) {
+ snmp_log(LOG_ERR, "bad rc %d from eocExtCnuEtherPortConfSpeed_check_value\n", rc);
+ rc = SNMP_ERR_GENERR;
+ }
+ }
+ break;
+
+ /* eocExtCnuEtherPortActualSpeed(6)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTACTUALSPEED:
+ rc = SNMP_ERR_NOTWRITABLE;
+ break;
+
+ /* eocExtCnuEtherPortConfDuplex(7)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX:
+ rc = netsnmp_check_vb_type_and_size( var, ASN_INTEGER,
+ sizeof( rowreq_ctx->data.eocExtCnuEtherPortConfDuplex ) );
+ /* check that the value is one of defined enums */
+ if( (SNMPERR_SUCCESS == rc)
+ && ( *var->val.integer != EOCEXTCNUETHERPORTCONFDUPLEX_HALF )
+ && ( *var->val.integer != EOCEXTCNUETHERPORTCONFDUPLEX_FULL )
+ ) {
+ rc = SNMP_ERR_WRONGVALUE;
+ }
+ if(SNMPERR_SUCCESS != rc) {
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:_eocExtCnuEtherPortTable_check_column:eocExtCnuEtherPortConfDuplex",
+ "varbind validation failed (eg bad type or size)\n"));
+ }
+ else {
+ rc = eocExtCnuEtherPortConfDuplex_check_value( rowreq_ctx, *((u_long *)var->val.string) );
+ if((MFD_SUCCESS != rc) && (MFD_NOT_VALID_EVER != rc) &&
+ (MFD_NOT_VALID_NOW != rc)) {
+ snmp_log(LOG_ERR, "bad rc %d from eocExtCnuEtherPortConfDuplex_check_value\n", rc);
+ rc = SNMP_ERR_GENERR;
+ }
+ }
+ break;
+
+ /* eocExtCnuEtherPortActualDuplex(8)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTACTUALDUPLEX:
+ rc = SNMP_ERR_NOTWRITABLE;
+ break;
+
+ default: /** We shouldn't get here */
+ rc = SNMP_ERR_GENERR;
+ snmp_log(LOG_ERR, "unknown column %d in _eocExtCnuEtherPortTable_check_column\n", column);
+ }
+
+ return rc;
+} /* _eocExtCnuEtherPortTable_check_column */
+
+int
+_mfd_eocExtCnuEtherPortTable_check_objects(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ netsnmp_table_request_info * tri;
+ int rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_check_objects","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ for(;requests; requests = requests->next) {
+
+ /*
+ * get column number from table request info, and check that column
+ */
+ tri = netsnmp_extract_table_info(requests);
+ if(NULL == tri)
+ continue;
+
+ rc = _eocExtCnuEtherPortTable_check_column(rowreq_ctx, requests->requestvb, tri->colnum);
+ if(rc) {
+ netsnmp_request_set_error(requests, SNMP_VALIDATE_ERR(rc));
+ break;
+ }
+
+ } /* for results */
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuEtherPortTable_check_objects */
+
+
+/*----------------------------------------------------------------------
+ *
+ * SET: Undo setup
+ *
+ *---------------------------------------------------------------------*/
+/*
+ * @internal
+ * Set the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_eocExtCnuEtherPortTable_undo_setup_column( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, int column )
+{
+ int rc = SNMPERR_SUCCESS;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_eocExtCnuEtherPortTable_undo_setup_column",
+ "called for %d\n", column));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ switch(column) {
+
+ /* eocExtCnuEtherPortConfAutoNeg(4)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG:
+ rowreq_ctx->column_set_flags |= COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG_FLAG;
+ rc = eocExtCnuEtherPortConfAutoNeg_undo_setup(rowreq_ctx );
+ break;
+
+ /* eocExtCnuEtherPortConfSpeed(5)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFSPEED:
+ rowreq_ctx->column_set_flags |= COLUMN_EOCEXTCNUETHERPORTCONFSPEED_FLAG;
+ rc = eocExtCnuEtherPortConfSpeed_undo_setup(rowreq_ctx );
+ break;
+
+ /* eocExtCnuEtherPortConfDuplex(7)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX:
+ rowreq_ctx->column_set_flags |= COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX_FLAG;
+ rc = eocExtCnuEtherPortConfDuplex_undo_setup(rowreq_ctx );
+ break;
+
+ default:
+ snmp_log(LOG_ERR,"unknown column %d in _eocExtCnuEtherPortTable_undo_setup_column\n", column);
+ break;
+ }
+
+ return rc;
+} /* _eocExtCnuEtherPortTable_undo_setup_column */
+
+
+/**
+ * @internal
+ * undo setup
+ */
+int
+_mfd_eocExtCnuEtherPortTable_undo_setup(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc;
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_undo_setup","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * allocate undo context
+ */
+ rowreq_ctx->undo = eocExtCnuEtherPortTable_allocate_data();
+ if(NULL == rowreq_ctx->undo) {
+ /** msg already logged */
+ netsnmp_request_set_error_all(requests, SNMP_ERR_RESOURCEUNAVAILABLE);
+ return SNMP_ERR_NOERROR;
+ }
+
+ /*
+ * row undo setup
+ */
+ rowreq_ctx->column_set_flags = 0;
+ rc = eocExtCnuEtherPortTable_undo_setup(rowreq_ctx);
+ if (MFD_SUCCESS != rc) {
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:mfd","error %d from "
+ "eocExtCnuEtherPortTable_undo_setup\n", rc));
+ netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+ }
+ else {
+ /*
+ * column undo setup
+ */
+ netsnmp_table_request_info * tri;
+ for(;requests; requests = requests->next) {
+ /*
+ * set column data
+ */
+ tri = netsnmp_extract_table_info(requests);
+ if(NULL == tri)
+ continue;
+
+ rc = _eocExtCnuEtherPortTable_undo_setup_column(rowreq_ctx, tri->colnum);
+ if(MFD_SUCCESS != rc) {
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:mfd","error %d from "
+ "eocExtCnuEtherPortTable_undo_setup_column\n", rc));
+ netsnmp_set_request_error(agtreq_info, requests, SNMP_VALIDATE_ERR(rc));
+ }
+ } /* for results */
+ }
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuEtherPortTable_undo_setup */
+
+/**
+ * @internal
+ * undo setup
+ */
+int
+_mfd_eocExtCnuEtherPortTable_undo_cleanup(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ int rc;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_undo_cleanup","called\n"));
+
+ /*
+ * failed row create in early stages has no rowreq_ctx
+ */
+ if (NULL == rowreq_ctx)
+ return MFD_SUCCESS;
+
+ /*
+ * call user cleanup
+ */
+ rc = eocExtCnuEtherPortTable_undo_cleanup(rowreq_ctx);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:mfd","error %d from "
+ "eocExtCnuEtherPortTable_undo_cleanup\n", rc));
+ }
+
+ /*
+ * release undo context, if needed
+ */
+ if(rowreq_ctx->undo) {
+ eocExtCnuEtherPortTable_release_data(rowreq_ctx->undo);
+ rowreq_ctx->undo = NULL;
+ }
+
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuEtherPortTable_undo_cleanup */
+
+/*----------------------------------------------------------------------
+ *
+ * SET: Set values
+ *
+ *---------------------------------------------------------------------*/
+/*
+ * @internal
+ * Set the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_eocExtCnuEtherPortTable_set_column( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx,
+ netsnmp_variable_list *var, int column )
+{
+ int rc = SNMPERR_SUCCESS;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_eocExtCnuEtherPortTable_set_column",
+ "called for %d\n", column));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ switch(column) {
+
+ /* eocExtCnuEtherPortConfAutoNeg(4)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG:
+ rowreq_ctx->column_set_flags |= COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG_FLAG;
+ rc = eocExtCnuEtherPortConfAutoNeg_set(rowreq_ctx, *((u_long *)var->val.string) );
+ break;
+
+ /* eocExtCnuEtherPortConfSpeed(5)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFSPEED:
+ rowreq_ctx->column_set_flags |= COLUMN_EOCEXTCNUETHERPORTCONFSPEED_FLAG;
+ rc = eocExtCnuEtherPortConfSpeed_set(rowreq_ctx, *((u_long *)var->val.string) );
+ break;
+
+ /* eocExtCnuEtherPortConfDuplex(7)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX:
+ rowreq_ctx->column_set_flags |= COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX_FLAG;
+ rc = eocExtCnuEtherPortConfDuplex_set(rowreq_ctx, *((u_long *)var->val.string) );
+ break;
+
+ default:
+ snmp_log(LOG_ERR,"unknown column %d in _eocExtCnuEtherPortTable_set_column\n", column);
+ rc = SNMP_ERR_GENERR;
+ break;
+ }
+
+ return rc;
+} /* _eocExtCnuEtherPortTable_set_column */
+
+int
+_mfd_eocExtCnuEtherPortTable_set_values(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ netsnmp_table_request_info * tri;
+ int rc = SNMP_ERR_NOERROR;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_set_values","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ rowreq_ctx->column_set_flags = 0;
+ for(;requests; requests = requests->next) {
+ /*
+ * set column data
+ */
+ tri = netsnmp_extract_table_info(requests);
+ if(NULL == tri)
+ continue;
+
+ rc = _eocExtCnuEtherPortTable_set_column(rowreq_ctx,
+ requests->requestvb, tri->colnum);
+ if(MFD_SUCCESS != rc) {
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:mfd","error %d from "
+ "eocExtCnuEtherPortTable_set_column\n", rc));
+ netsnmp_set_request_error(agtreq_info, requests, SNMP_VALIDATE_ERR(rc));
+ }
+ } /* for results */
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuEtherPortTable_set_values */
+
+/*----------------------------------------------------------------------
+ *
+ * SET: commit
+ *
+ *---------------------------------------------------------------------*/
+/**
+ * @internal
+ * commit the values
+ */
+int
+_mfd_eocExtCnuEtherPortTable_commit(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc;
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_commit","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ rc = eocExtCnuEtherPortTable_commit(rowreq_ctx);
+ if (MFD_SUCCESS != rc) {
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:mfd","error %d from "
+ "eocExtCnuEtherPortTable_commit\n", rc));
+ netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+ }
+
+ if (rowreq_ctx->rowreq_flags & MFD_ROW_DIRTY) {
+ /*
+ * if we successfully commited this row, set the dirty flag. Use the
+ * current value + 1 (i.e. dirty = # rows changed).
+ * this is checked in post_request...
+ */
+ eocExtCnuEtherPortTable_dirty_set( eocExtCnuEtherPortTable_dirty_get() + 1 ); /* set table dirty flag */
+ }
+
+ return SNMP_ERR_NOERROR;
+}
+
+int
+_mfd_eocExtCnuEtherPortTable_undo_commit(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc;
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_undo_commit","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ if (rowreq_ctx->rowreq_flags & MFD_ROW_DIRTY) {
+ u_int d = eocExtCnuEtherPortTable_dirty_get();
+
+ netsnmp_assert(d != 0);
+ if(d)
+ eocExtCnuEtherPortTable_dirty_set( d - 1 );
+ }
+
+ rc = eocExtCnuEtherPortTable_undo_commit(rowreq_ctx);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:mfd","error %d from "
+ "eocExtCnuEtherPortTable_undo_commit\n", rc));
+ }
+
+ if (rowreq_ctx->rowreq_flags & MFD_ROW_DIRTY) {
+ snmp_log(LOG_WARNING, "eocExtCnuEtherPortTable row dirty flag still set after undo_commit\n");
+ rowreq_ctx->rowreq_flags &= ~MFD_ROW_DIRTY;
+ }
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuEtherPortTable_commit */
+
+/*----------------------------------------------------------------------
+ *
+ * SET: Undo
+ *
+ *---------------------------------------------------------------------*/
+/**
+ * @internal
+ * undo the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_eocExtCnuEtherPortTable_undo_column( eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx,
+ netsnmp_variable_list *var, int column )
+{
+ int rc = SNMPERR_SUCCESS;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_eocExtCnuEtherPortTable_undo_column",
+ "called for %d\n", column));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ switch(column) {
+
+ /* eocExtCnuEtherPortConfAutoNeg(4)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG:
+ rc = eocExtCnuEtherPortConfAutoNeg_undo(rowreq_ctx);
+ break;
+
+ /* eocExtCnuEtherPortConfSpeed(5)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFSPEED:
+ rc = eocExtCnuEtherPortConfSpeed_undo(rowreq_ctx);
+ break;
+
+ /* eocExtCnuEtherPortConfDuplex(7)/INTEGER/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h */
+ case COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX:
+ rc = eocExtCnuEtherPortConfDuplex_undo(rowreq_ctx);
+ break;
+
+ default:
+ snmp_log(LOG_ERR,"unknown column %d in _eocExtCnuEtherPortTable_undo_column\n", column);
+ break;
+ }
+
+ return rc;
+} /* _eocExtCnuEtherPortTable_undo_column */
+
+int
+_mfd_eocExtCnuEtherPortTable_undo_values(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ int rc;
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+ netsnmp_table_request_info * tri;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_undo_values","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ rc = eocExtCnuEtherPortTable_undo(rowreq_ctx);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:mfd","error %d from "
+ "eocExtCnuEtherPortTable_undo\n", rc));
+ }
+
+ for(;requests; requests = requests->next) {
+ /*
+ * set column data
+ */
+ tri = netsnmp_extract_table_info(requests);
+ if(NULL == tri)
+ continue;
+
+ rc = _eocExtCnuEtherPortTable_undo_column(rowreq_ctx, requests->requestvb,
+ tri->colnum);
+ if (MFD_SUCCESS != rc) {
+ /*
+ * nothing we can do about it but log it
+ */
+ DEBUGMSGTL(("eocExtCnuEtherPortTable:mfd","error %d from "
+ "eocExtCnuEtherPortTable_undo_column\n", rc));
+ }
+ } /* for results */
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuEtherPortTable_undo_values */
+
+/*----------------------------------------------------------------------
+ *
+ * SET: irreversible commit
+ *
+ *---------------------------------------------------------------------*/
+/**
+ * @internal
+ * commit irreversible actions
+ */
+int
+_mfd_eocExtCnuEtherPortTable_irreversible_commit(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *agtreq_info,
+ netsnmp_request_info *requests)
+{
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx =
+ netsnmp_container_table_row_extract(requests);
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_mfd_eocExtCnuEtherPortTable_irreversible:commit","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ /*
+ * check for and handle row creation/deletion
+ * and update column exist flags...
+ */
+ if (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED) {
+ if (! (rowreq_ctx->rowreq_flags & MFD_ROW_CREATED))
+ CONTAINER_REMOVE(eocExtCnuEtherPortTable_if_ctx.container, rowreq_ctx);
+ }
+ else {
+ if (rowreq_ctx->column_set_flags) {
+ rowreq_ctx->column_set_flags = 0;
+ }
+ }
+
+ return SNMP_ERR_NOERROR;
+} /* _mfd_eocExtCnuEtherPortTable_irreversible_commit */
+
+/***********************************************************************
+ *
+ * DATA ACCESS
+ *
+ ***********************************************************************/
+static void _container_free(netsnmp_container *container);
+
+/**
+ * @internal
+ */
+static int
+_cache_load(netsnmp_cache *cache, void *vmagic)
+{
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_cache_load","called\n"));
+
+ if((NULL == cache) || (NULL == cache->magic)) {
+ snmp_log(LOG_ERR, "invalid cache for eocExtCnuEtherPortTable_cache_load\n");
+ return -1;
+ }
+
+ /** should only be called for an invalid or expired cache */
+ netsnmp_assert((0 == cache->valid) || (1 == cache->expired));
+
+ /*
+ * call user code
+ */
+ return eocExtCnuEtherPortTable_container_load((netsnmp_container*)cache->magic);
+} /* _cache_load */
+
+/**
+ * @internal
+ */
+static void
+_cache_free(netsnmp_cache *cache, void *magic)
+{
+ netsnmp_container *container;
+
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_cache_free","called\n"));
+
+ if((NULL == cache) || (NULL == cache->magic)) {
+ snmp_log(LOG_ERR, "invalid cache in eocExtCnuEtherPortTable_cache_free\n");
+ return;
+ }
+
+ container = (netsnmp_container*)cache->magic;
+
+ _container_free(container);
+} /* _cache_free */
+
+/**
+ * @internal
+ */
+static void
+_container_item_free(eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx, void *context)
+{
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_container_item_free","called\n"));
+
+ if(NULL == rowreq_ctx)
+ return;
+
+ eocExtCnuEtherPortTable_release_rowreq_ctx(rowreq_ctx);
+} /* _container_item_free */
+
+/**
+ * @internal
+ */
+static void
+_container_free(netsnmp_container *container)
+{
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_container_free","called\n"));
+
+ if (NULL == container) {
+ snmp_log(LOG_ERR, "invalid container in eocExtCnuEtherPortTable_container_free\n");
+ return;
+ }
+
+ /*
+ * call user code
+ */
+ eocExtCnuEtherPortTable_container_free(container);
+
+ /*
+ * free all items. inefficient, but easy.
+ */
+ CONTAINER_CLEAR(container,
+ (netsnmp_container_obj_func *)_container_item_free,
+ NULL);
+} /* _container_free */
+
+/**
+ * @internal
+ * initialize the container with functions or wrappers
+ */
+void
+_eocExtCnuEtherPortTable_container_init(eocExtCnuEtherPortTable_interface_ctx *if_ctx)
+{
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_eocExtCnuEtherPortTable_container_init","called\n"));
+
+ /*
+ * cache init
+ */
+ if_ctx->cache = netsnmp_cache_create(30, /* timeout in seconds */
+ _cache_load, _cache_free,
+ eocExtCnuEtherPortTable_oid,
+ eocExtCnuEtherPortTable_oid_size);
+
+ if(NULL == if_ctx->cache) {
+ snmp_log(LOG_ERR, "error creating cache for eocExtCnuEtherPortTable\n");
+ return;
+ }
+
+ if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+ eocExtCnuEtherPortTable_container_init(&if_ctx->container, if_ctx->cache);
+ if(NULL == if_ctx->container)
+ if_ctx->container = netsnmp_container_find("eocExtCnuEtherPortTable:table_container");
+ if(NULL == if_ctx->container) {
+ snmp_log(LOG_ERR,"error creating container in "
+ "eocExtCnuEtherPortTable_container_init\n");
+ return;
+ }
+
+ if (NULL != if_ctx->cache)
+ if_ctx->cache->magic = (void*)if_ctx->container;
+} /* _eocExtCnuEtherPortTable_container_init */
+
+/**
+ * @internal
+ * shutdown the container with functions or wrappers
+ */
+void
+_eocExtCnuEtherPortTable_container_shutdown(eocExtCnuEtherPortTable_interface_ctx *if_ctx)
+{
+ DEBUGMSGTL(("internal:eocExtCnuEtherPortTable:_eocExtCnuEtherPortTable_container_shutdown","called\n"));
+
+ eocExtCnuEtherPortTable_container_shutdown(if_ctx->container);
+
+ _container_free(if_ctx->container);
+
+} /* _eocExtCnuEtherPortTable_container_shutdown */
+
+
+eocExtCnuEtherPortTable_rowreq_ctx *
+eocExtCnuEtherPortTable_row_find_by_mib_index(eocExtCnuEtherPortTable_mib_index *mib_idx)
+{
+ eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx;
+ oid oid_tmp[MAX_OID_LEN];
+ netsnmp_index oid_idx;
+ int rc;
+
+ /*
+ * set up storage for OID
+ */
+ oid_idx.oids = oid_tmp;
+ oid_idx.len = sizeof(oid_tmp)/sizeof(oid);
+
+ /*
+ * convert
+ */
+ rc = eocExtCnuEtherPortTable_index_to_oid(&oid_idx, mib_idx);
+ if (MFD_SUCCESS != rc)
+ return NULL;
+
+ rowreq_ctx = CONTAINER_FIND(eocExtCnuEtherPortTable_if_ctx.container, &oid_idx);
+
+ return rowreq_ctx;
+}
+
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_interface.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_interface.h
new file mode 100644
index 0000000000..08edcb8c53
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_interface.h
@@ -0,0 +1,87 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 15899 $ 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 EOCEXTCNUETHERPORTTABLE_INTERFACE_H
+#define EOCEXTCNUETHERPORTTABLE_INTERFACE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#include "eocExtCnuEtherPortTable.h"
+
+
+/* ********************************************************************
+ * Table declarations
+ */
+
+/* PUBLIC interface initialization routine */
+void _eocExtCnuEtherPortTable_initialize_interface(eocExtCnuEtherPortTable_registration * user_ctx,
+ u_long flags);
+void _eocExtCnuEtherPortTable_shutdown_interface(eocExtCnuEtherPortTable_registration * user_ctx);
+
+eocExtCnuEtherPortTable_registration *
+eocExtCnuEtherPortTable_registration_get( void );
+
+eocExtCnuEtherPortTable_registration *
+eocExtCnuEtherPortTable_registration_set( eocExtCnuEtherPortTable_registration * newreg );
+
+netsnmp_container *eocExtCnuEtherPortTable_container_get( void );
+int eocExtCnuEtherPortTable_container_size( void );
+
+u_int eocExtCnuEtherPortTable_dirty_get( void );
+void eocExtCnuEtherPortTable_dirty_set( u_int status );
+
+ eocExtCnuEtherPortTable_rowreq_ctx * eocExtCnuEtherPortTable_allocate_rowreq_ctx(void *);
+void eocExtCnuEtherPortTable_release_rowreq_ctx(eocExtCnuEtherPortTable_rowreq_ctx *rowreq_ctx);
+
+int eocExtCnuEtherPortTable_index_to_oid(netsnmp_index *oid_idx,
+ eocExtCnuEtherPortTable_mib_index *mib_idx);
+int eocExtCnuEtherPortTable_index_from_oid(netsnmp_index *oid_idx,
+ eocExtCnuEtherPortTable_mib_index *mib_idx);
+
+/*
+ * access to certain internals. use with caution!
+ */
+void eocExtCnuEtherPortTable_valid_columns_set(netsnmp_column_info *vc);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUETHERPORTTABLE_INTERFACE_H */
+/** @} */
diff --git a/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_oids.h b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_oids.h
new file mode 100644
index 0000000000..b6143998ed
--- /dev/null
+++ b/cleopatre/application/spidnetsnmp/agent/mibgroup/mstar-eoc-mib/eocExtObjects/eocExtCnuObjects/eocExtCnuPortMgmtObjects/eocExtCnuEtherPortTable/eocExtCnuEtherPortTable_oids.h
@@ -0,0 +1,53 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * : generic-table-oids.m2c 17548 2009-04-23 16:35:18Z hardaker $
+ *
+ * $Id:$
+ */
+#ifndef EOCEXTCNUETHERPORTTABLE_OIDS_H
+#define EOCEXTCNUETHERPORTTABLE_OIDS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* column number definitions for table eocExtCnuEtherPortTable */
+#define EOCEXTCNUETHERPORTTABLE_OID 1,3,6,1,4,1,17409,2,4,20,1,2,1
+
+
+#define COLUMN_EOCEXTCNUETHERPORTCBATCARDINDEX 1
+
+#define COLUMN_EOCEXTCNUETHERPORTCNUINDEX 2
+
+#define COLUMN_EOCEXTCNUETHERPORTCNUPORTINDEX 3
+
+#define COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG 4
+#define COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG_FLAG (0x1 << 0)
+
+#define COLUMN_EOCEXTCNUETHERPORTCONFSPEED 5
+#define COLUMN_EOCEXTCNUETHERPORTCONFSPEED_FLAG (0x1 << 1)
+
+#define COLUMN_EOCEXTCNUETHERPORTACTUALSPEED 6
+
+#define COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX 7
+#define COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX_FLAG (0x1 << 2)
+
+#define COLUMN_EOCEXTCNUETHERPORTACTUALDUPLEX 8
+
+
+#define EOCEXTCNUETHERPORTTABLE_MIN_COL COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG
+#define EOCEXTCNUETHERPORTTABLE_MAX_COL COLUMN_EOCEXTCNUETHERPORTACTUALDUPLEX
+
+
+ /*
+ * TODO:405:r: Review EOCEXTCNUETHERPORTTABLE_SETTABLE_COLS macro.
+ * OR together all the writable cols.
+ */
+#define EOCEXTCNUETHERPORTTABLE_SETTABLE_COLS (COLUMN_EOCEXTCNUETHERPORTCONFAUTONEG_FLAG | COLUMN_EOCEXTCNUETHERPORTCONFSPEED_FLAG | COLUMN_EOCEXTCNUETHERPORTCONFDUPLEX_FLAG)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EOCEXTCNUETHERPORTTABLE_OIDS_H */