-----Messaggio originale-----
Da: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
conto di Dave Shield
Inviato: venerdì 10 novembre 2006 0.25
A: Enzo Arlati
Cc: [email protected]
Oggetto: Re: help about this warning : Wrong Type (should be INTEGER):
""
On 09/11/06, Enzo Arlati <[EMAIL PROTECTED]> wrote:
> The snmpwalk issue on my subagent give me some warning when queries string
> under the node .1.3.6.1.4.1.17377.35.10.1
> .1.3.6.1.4.1.17377.35.10.1.1.8.1 = Wrong Type (should be INTEGER): ""
> .1.3.6.1.4.1.17377.35.10.1.1.8.2 = Wrong Type (should be INTEGER): ""
What's the MIB definition of this particular object?
What does the code that registers and implements this object look like?
Dave
I'm trying to use a trick like this:
I need more tables crTableDevices of the same types so I 'm trying to call
several
times the initializa_table routine as show belowe:
void
init_aesys_crTableDevices(void)
{
DEBUGMSGTL(("aesys", "[init_aesys_crTableDevices] ----- START ----- \n"));
aesys_initialize_table_crTableDevices( 0 );
aesys_initialize_table_crTableDevices( 1 );
DEBUGMSGTL(("aesys", "[init_aesys_crTableDevices] ----- END ----- \n"));
}
Inside the aesys_initialize_table_crTableDevices i changed the oid of the table
accordingly to value of the passed args so I will have
.1.3.6.1.4.1.17377.35.10.1.
.1.3.6.1.4.1.17377.35.10.2.
.1.3.6.1.4.1.17377.35.10.ecc....
This work for values greater than 1, while .1.3.6.1.4.1.17377.35.10.1...
seems to expects only integer values
.1.3.6.1.4.1.17377.35.10.1.1.8.2 = Wrong Type (should be INTEGER): STRING: "G"
.1.3.6.1.4.1.17377.35.10.1.1.8.3 = Wrong Type (should be INTEGER): STRING: "H"
Belowe I put the whole MIB and code used.
I hope in your help.
regards, Enzo
AESYS-MIB DEFINITIONS ::=BEGIN
--
--
-- Author : Enzo Arlati
-- Last update: 02.11.2006
--
--
-- File name : AESYS-MIB.txt
-- full path: /net-snmp/mibs/AESYS-MIB.txt &
/usr/local/share/snmp/mibs/AESYS-MIB.txt
-- ASN.1 Description file *
-- Version 1.0 *
--
-- Description :Define the aesys MIB SR1
--
IMPORTS
enterprises FROM SNMPv2-SMI,
MODULE-IDENTITY FROM SNMPv2-SMI
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF;
-- aesys OBJECT IDENTIFIER ::={enterprises 17377 }
aesys MODULE-IDENTITY
LAST-UPDATED "0911060000Z" -- 09 nov 2006
ORGANIZATION "AESYS"
CONTACT-INFO "
Author: Enzo Arlati
email: [EMAIL PROTECTED]
"
DESCRIPTION "MIB for PMV aesys spa for aesys "
::={enterprises 17377 }
--groups in aesys
cmv OBJECT IDENTIFIER ::={aesys 35 }
--
-- CMV subsystem
--
crNumber OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The number of running process."
::={cmv 1 }
crVersion OBJECT-TYPE
--SYNTAX DisplayString(SIZE (0..79))
SYNTAX OCTET STRING
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The software version of the linux o.s."
::={cmv 2 }
crStartime OBJECT-TYPE
SYNTAX TimeTicks
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The time since the cr01 was last started up."
::={cmv 3 }
crDiskusage OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The disk space percentage used on linux-box."
::={cmv 4 }
crActive OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"A toggle to start or stop the subsystem (shutdown/restart all bcm
processes)."
::={cmv 5 }
-- ----------------------------
-- Tabella dei processi bcm
-- ----------------------------
crProcTable OBJECT-TYPE
SYNTAX SEQUENCE OF crProcEntry
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Tabella dei processi bcm"
INDEX { crIndexProcess }
::={cmv 6 }
crProcEntry OBJECT-TYPE
SYNTAX crProcEntry
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Record con i parametri di un processo."
::={crProcTable 1 }
crProcEntry ::=
SEQUENCE {
crIndexProcess INTEGER,
stato INTEGER,
nome OCTET STRING
}
crIndexProcess OBJECT-TYPE
SYNTAX INTEGER
ACCESS not-accessible
STATUS current
DESCRIPTION
"Indice del processo."
::= { crProcEntry 1 }
stato OBJECT-TYPE
SYNTAX INTEGER {
lvlNull(0),
lvlOk(1),
lvlDegrado(2),
lvlSpento(3)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Livello di servizio del singolo device/displaty
( valori ammessi 1-Funzionante,2-degrado,3-Spento ) "
::={crProcEntry 2 }
nome OBJECT-TYPE
--SYNTAX DisplayString (SIZE (0..199))
SYNTAX OCTET STRING
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Testo descrittivo del processo "
::={crProcEntry 3 }
--
-- ----------------------------------
-- ----------------------------------
--
crTipoPMV OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..4))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Tipologia PMV ( es 430, 431 )."
::={cmv 7 }
crSottoTipoPMV OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..1))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Sottotipo Tipologia PMV ( es *, 1,2... )."
::={cmv 8 }
crStatus OBJECT-TYPE
SYNTAX INTEGER {
lvlNull(0),
lvlOk(1),
lvlDegraded(2),
lvlOff(3),
lvlMaintenance(4)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Livello di servizio del PMV "
::={cmv 9 }
-- -----------------------------
-- Tabella dei device/display
-- -----------------------------
crTableDevices OBJECT-TYPE
SYNTAX SEQUENCE OF crEntryDevice
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Tabella dei device/display"
INDEX { crIndexDevices }
::={cmv 10 }
crEntryDevice OBJECT-TYPE
SYNTAX crEntryDevice
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Record con i parametri connessi ad uno specifico device/display"
::={crTableDevices 1 }
crEntryDevice ::=
SEQUENCE {
crIndexDevices INTEGER,
crIndex INTEGER,
crType INTEGER,
crStatus INTEGER,
crDescr OCTET STRING
}
crIndexDevices OBJECT-TYPE
SYNTAX INTEGER
ACCESS not-accessible
STATUS current
DESCRIPTION
"Indice del device."
::= { crEntryDevice 1 }
crIndex OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The number of device of a specified type ( ex Pitto1 = 0, Pitto2 = 1 )."
::={crEntryDevice 2 }
crType OBJECT-TYPE
SYNTAX INTEGER {
devAlfanumerico(44),
devPittogramma(45),
devCentralina(46),
devFrecciaCroce(47)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Type del dispositivo ( 44=alfa, 45=pitto, 46=centralina, 47=frecciaCroce ) "
::={crEntryDevice 3 }
crStatus OBJECT-TYPE
SYNTAX INTEGER {
lvlNull(0),
lvlOk(1),
lvlDegraded(2),
lvlOff(3),
lvlMaintenance(4)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Livello di servizio del singolo device/displaty ( valori ammessi
1-ok,2-degrado,3-Off,4-manutenzione ) "
::={crEntryDevice 4 }
crDescr OBJECT-TYPE
SYNTAX OCTET STRING
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Testo descrittivo del dispositivo "
::={crEntryDevice 5 }
crStatoVisualizzazione OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Indica lo stato della visualizzazione ( T=testo impostato, B=blank voluto,
A=blank per accensione, P=blank per assenza polling )."
::={crEntryDevice 6 }
crStatoFlag OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Flag di stato del display definito nel comando RPO."
::={crEntryDevice 7 }
crMessaggioVisualizzato OBJECT-TYPE
SYNTAX OCTET STRING
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Messaggio completo visualizzato dal display "
::={crEntryDevice 8 }
crFirmwareDisplay OBJECT-TYPE
SYNTAX OCTET STRING
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Revisione del firmware installato sul display "
::={crEntryDevice 9 }
crIndexPanel OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Il numero di cartello(panel) a cui appartiene il display ( valori ammessi da
0 a 9 )."
::={crEntryDevice 10 }
-- --------------------------------------------------------
-- --------------------------------------------------------
-- TRAPs pmv aesys
-- --------------------------------------------------------
-- --------------------------------------------------------
trapPmv OBJECT IDENTIFIER ::={aesys 36 }
-- --------------------------------------------------------
-- avvio/spegnimento sistema
-- --------------------------------------------------------
A0 NOTIFICATION-TYPE
-- STATUS current
OBJECTS { crActive }
DESCRIPTION "Restart del sistema pmv"
::= { trapPmv 1701 }
A1 NOTIFICATION-TYPE
STATUS current
OBJECTS { crActive }
DESCRIPTION "Caduta del sistema pmv"
::= { trapPmv 1702 }
-- --------------------------------------------------------
-- soglie file system
-- --------------------------------------------------------
A2 NOTIFICATION-TYPE
STATUS current
OBJECTS { crDiskusage }
DESCRIPTION "Superamento della prima soglia di occupazione del
file-system"
::= { trapPmv 1703 }
A3 NOTIFICATION-TYPE
STATUS current
OBJECTS { crDiskusage }
DESCRIPTION "Superamento della seconda soglia di occupazione del
file-system
(Inviato ogni 5 minuti fino a quando persiste la
condizione di errore)"
::= { trapPmv 1704 }
-- --------------------------------------------------------
-- variazioni livello servizio generale ( da valutare )
-- --------------------------------------------------------
A4 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del PMV che diventa efficente "
::= { trapPmv 1705 }
A5 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del PMV che va in degrado "
::= { trapPmv 1706 }
A6 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del PMV che va in avaria "
::= { trapPmv 1707 }
-- --------------------------------------------------------
-- variazioni livello servizio cartello 0
-- --------------------------------------------------------
LS04 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del Cartello che diventa efficente "
::= { trapPmv 1710 }
LS05 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del Cartello che va in degrado "
::= { trapPmv 1711 }
LS06 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del Cartello che va in avaria "
::= { trapPmv 1712 }
-- --------------------------------------------------------
-- variazioni livello servizio cartello 1
-- --------------------------------------------------------
LS14 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del Cartello che diventa efficente "
::= { trapPmv 1713 }
LS15 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del Cartello che va in degrado "
::= { trapPmv 1714 }
LS16 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del Cartello che va in avaria "
::= { trapPmv 1715 }
-- --------------------------------------------------------
-- variazioni livello servizio cartello 2
-- --------------------------------------------------------
LS24 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del Cartello che diventa efficente "
::= { trapPmv 1716 }
LS25 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del Cartello che va in degrado "
::= { trapPmv 1717 }
LS26 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del Cartello che va in avaria "
::= { trapPmv 1718 }
-- --------------------------------------------------------
-- variazioni livello servizio cartello 9
-- --------------------------------------------------------
LS94 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del Cartello che diventa efficente "
::= { trapPmv 1737 }
LS95 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del Cartello che va in degrado "
::= { trapPmv 1738 }
LS96 NOTIFICATION-TYPE
STATUS current
OBJECTS { crStatus }
DESCRIPTION "Variazione di stato del Cartello che va in avaria "
::= { trapPmv 1739 }
END
======================================================
/* ===============================================
FILE: aesys_crTableDevices.c
=============================================== */
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "aesys_crTableDevices.h"
netsnmp_table_data_set *aesys_table_set_devices_devices;
netsnmp_table_row * rows[TABLEDEVICE_NUMROWS];
/**************************************************************************
Initializes the crTableDevices module
**************************************************************************/
void
init_aesys_crTableDevices(void)
{
DEBUGMSGTL(("aesys", "[init_aesys_crTableDevices] ----- START ----- \n"));
aesys_initialize_table_crTableDevices( 0 );
aesys_initialize_table_crTableDevices( 1 );
aesys_initialize_table_crTableDevices( 2 );
DEBUGMSGTL(("aesys", "[init_aesys_crTableDevices] ----- END ----- \n"));
}
/**************************************************************************
Initialize the crTableDevices table by defining its contents and how it's
structured
*************************************************************************/
void
aesys_initialize_table_crTableDevices( int idPanel )
{
static oid crTableDevices_oid[] = { ENTERPRISE_MIB_AESYS, 35, 10, 1 };
size_t crTableDevices_oid_len = OID_LENGTH(crTableDevices_oid);
char stmp[200], sOid[200], descr[200], msgvis[512], rev_fw[64];
int idx, ivar, ilvl, stato_vis, stato_flag;
char table_name[100];
netsnmp_handler_registration * reginfo = 0;
crTableDevices_oid[POS_ENTERPRISE_ID] = ent_oid;
aesys_OidToChar( crTableDevices_oid, OID_LENGTH(crTableDevices_oid), sOid
);
DEBUGMSGTL(("aesys", "[initialize_table_crTableDevices] EnterpriseOid = %d
(cmv_oid=%s) idPanel=%d \n", ent_oid, sOid, idPanel ));
crTableDevices_oid[POS_ENTERPRISE_ID+3] = idPanel+1;
aesys_OidToChar( crTableDevices_oid, OID_LENGTH(crTableDevices_oid), sOid
);
DEBUGMSGTL(("aesys", "[initialize_table_crTableDevices] EnterpriseOid = %d
(cmv_oid=%s)\n", ent_oid, sOid ));
//***************************************************
// * create the table structure itself
//***************************************************
sprintf( table_name, "crTableDevices_%d", idPanel );
aesys_table_set_devices_devices = netsnmp_create_table_data_set( table_name
);
if( aesys_table_set_devices_devices == 0 )
{
DEBUGMSGTL(("aesys", "[initialize_table_crTableDevices] FAILED
netsnmp_create_table_data_set( %s ) \n", table_name ));
return;
}
//***************************************************
// * comment this out or delete if you don't support creation of new rows
//***************************************************
aesys_table_set_devices_devices->allow_creation = 1;
//***************************************************
// Adding indexes
//***************************************************
DEBUGMSGTL(("aesys", "[initialize_table_crTableDevices] adding indexes to
table %s \n", table_name ));
//netsnmp_aesys_table_set_devices_devices_add_indexes(aesys_table_set_devices_devices,
ASN_OCTET_STR);
netsnmp_table_dataset_add_index(aesys_table_set_devices_devices,
ASN_INTEGER );
DEBUGMSGTL(("aesys", "[initialize_table_crTableDevices] adding column types
to table %s \n", table_name ));
netsnmp_table_set_multi_add_default_row(aesys_table_set_devices_devices,
//COLUMN_INDEXDEVICES, ASN_INTEGER,
0, NULL, 0,
COLUMN_INDEX, ASN_INTEGER,
0, NULL, 0,
COLUMN_TYPE, ASN_INTEGER,
0, NULL, 0,
COLUMN_STATUS, ASN_INTEGER,
0, NULL, 0,
COLUMN_DESCR, ASN_OCTET_STR,
0, NULL, 0,
COLUMN_STATO_VIS, ASN_INTEGER,
0, NULL, 0,
COLUMN_STATO_FLAG, ASN_INTEGER,
0, NULL, 0,
COLUMN_MSG_VIS, ASN_OCTET_STR,
0, NULL, 0,
COLUMN_REV_FW, ASN_OCTET_STR,
0, NULL, 0,
COLUMN_IDX_PANEL, ASN_INTEGER,
0, NULL, 0,
0);
//***************************************************
// * registering the table with the master agent
// * note: if you don't need a subhandler to deal with any aspects
// * of the request, change crTableDevices_handler to "NULL"
//***************************************************
reginfo = netsnmp_create_handler_registration
( table_name,
aesys_crTableDevices_handler,
crTableDevices_oid,
crTableDevices_oid_len,
HANDLER_CAN_RWRITE);
if( reginfo == 0 )
{
DEBUGMSGTL(("aesys", "[initialize_table_crTableDevices] FAILED
netsnmp_create_handler_registration( %s ) \n", table_name ));
return;
}
// -----------------------------------------------------------------------
netsnmp_register_table_data_set( reginfo, aesys_table_set_devices_devices,
NULL);
// -----------------------------------------------------------------------
ilvl = 0;
strcpy( msgvis, " " );
strcpy( rev_fw, " **** " );
strcpy( descr, "??Alfanumerico" );
aesys_UpdateRowTableDevice( DEVICE_ALFA1, idPanel, 0, CODICE_ALFA,
ilvl, stato_vis, stato_flag, msgvis, rev_fw, descr );
strcpy( descr, "??Pittogramma" );
aesys_UpdateRowTableDevice( DEVICE_PITTO1, idPanel, 0, CODICE_PITTO,
ilvl, stato_vis, stato_flag, msgvis, rev_fw, descr );
aesys_UpdateRowTableDevice( DEVICE_PITTO2, idPanel, 1, CODICE_PITTO,
ilvl, stato_vis, stato_flag, msgvis, rev_fw, descr );
strcpy( descr, "??Centralina" );
aesys_UpdateRowTableDevice( DEVICE_CENTRALINA, idPanel, 0,
CODICE_CENTRALINA, ilvl, stato_vis, stato_flag, msgvis, rev_fw, descr );
aesys_UpdateRowTableDevice( DEVICE_FRECCIACROCE, idPanel, 0,
CODICE_FRECCIACROCE, ilvl, stato_vis, stato_flag, msgvis, rev_fw, descr );
// -----------------------------------------------------------------------
// DEBUGMSGTL(("aesys", "[initialize_table_crTableDevices]
netsnmp_register_auto_data_table\n"));
// netsnmp_register_auto_data_table( aesys_table_set_devices_devices, NULL
);
// -----------------------------------------------------------------------
}
/*************************************************************
*************************************************************/
void aesys_UpdateRowTableDevice( int idx, int idPanel, int id_dev, int cod_dev,
int ilvl,
int stato_vis, int stato_flag,
char * msg_vis,
char * rev_fw,
char * sdescr )
{
//if( rows[idx] ) netsnmp_table_data_delete_row( rows[idx] );
DEBUGMSGTL(("aesys", "[UpdateRowTableDevice] indexes = %d name = %s \n",
idx, sdescr ));
rows[idx] = netsnmp_create_table_data_row();
//DEBUGMSGTL(("aesys", "netsnmp_table_row_add_index\n" ));
netsnmp_table_row_add_index( rows[idx], ASN_INTEGER, &idx, sizeof(idx));
// netsnmp_set_row_column( netsnmp_table_row *row, unsigned int column, int
type, const char *value, size_t value_len)
netsnmp_set_row_column( rows[idx], COLUMN_INDEX, ASN_INTEGER, (const
char * ) &id_dev, sizeof(id_dev));
netsnmp_set_row_column( rows[idx], COLUMN_TYPE, ASN_INTEGER, (const
char * ) &cod_dev, sizeof(cod_dev));
netsnmp_set_row_column( rows[idx], COLUMN_STATUS, ASN_INTEGER, (const
char * ) &ilvl, sizeof(ilvl));
netsnmp_set_row_column( rows[idx], COLUMN_DESCR, ASN_OCTET_STR,(const
char * ) sdescr, strlen(sdescr));
netsnmp_set_row_column( rows[idx], COLUMN_STATO_VIS, ASN_INTEGER, (const
char * ) &stato_vis, sizeof(stato_vis));
netsnmp_set_row_column( rows[idx], COLUMN_STATO_FLAG, ASN_INTEGER, (const
char * ) &stato_flag, sizeof(stato_flag));
netsnmp_set_row_column( rows[idx], COLUMN_MSG_VIS, ASN_OCTET_STR,(const
char * ) msg_vis, strlen(msg_vis));
netsnmp_set_row_column( rows[idx], COLUMN_REV_FW, ASN_OCTET_STR,(const
char * ) msg_vis, strlen(rev_fw));
netsnmp_set_row_column( rows[idx], COLUMN_IDX_PANEL, ASN_INTEGER, (const
char * ) &idPanel, sizeof(idPanel));
netsnmp_table_dataset_add_row( aesys_table_set_devices_devices, rows[idx] );
} // ______ void UpdateRowTableDevice( )
/****************************************************************
handles requests for the crTableDevices table, if anything else needs to be
done
****************************************************************/
int
aesys_crTableDevices_handler(netsnmp_mib_handler *handler,
netsnmp_handler_registration *reginfo,
netsnmp_agent_request_info *reqinfo,
netsnmp_request_info *requests)
{
netsnmp_variable_list *var;
netsnmp_table_request_info * table_info;
char fcrString[4096];
char * pString;
char stmp[4096];
char buff[4096];
char sOid[200];
char sOidReq[200];
int irow, icol, ilvl, fcrInteger, len_tmp;
char fcrChar;
StructStatoCartello * pssc = 0;
int idPanel = 0;
pString = fcrString;
var = requests->requestvb;
table_info = netsnmp_extract_table_info( requests );
aesys_OidToChar( var->name, var->name_length, sOid );
aesys_OidToChar( table_info->index_oid, table_info->index_oid_len, sOidReq
);
irow = var->name[ var->name_length-1];
icol = table_info->colnum;
// DEBUGMSGTL(("aesys", "[aesys_crTableDevices_handler] (row=%d ,col=%d)
[sOid=%s] [sOidReq=%s]\n", irow, icol, sOid, sOidReq ));
idPanel = var->name[POS_ENTERPRISE_ID+3];
idPanel--;
//DEBUGMSGTL(("aesys", "[aesys_crTableDevices_handler] idPanel=%d
[%s]\n", idPanel, sOid ));
// -----------------------------------------------------------------
if( ! stato_impianto )
{
DEBUGMSGTL(("aesys", "[aesys_crTableDevices_handler] *** ERRORE *** (
stato_impianto == NULL ) \n" ));
return SNMP_ERR_GENERR;
}
// -----------------------------------------------------------------
pssc = & stato_impianto->cartelli[idPanel];
if( ! pssc )
{
DEBUGMSGTL(("aesys", "[aesys_crTableDevices_handler] *** ERRORE *** (
pssc == NULL ) \n" ));
return SNMP_ERR_GENERR;
}
// -----------------------------------------------------------------
switch (reqinfo->mode)
{
case MODE_GET:
// DEBUGMSGTL(("aesys", "MODE_GET (row=%d ,col=%d) (%s) \n", irow,
icol, sOid ));
if ( var->type == ASN_OCTET_STR )
{
switch( icol )
{
// -------------------------------------------------------
case COLUMN_DESCR:
{
switch( irow )
{
case DEVICE_ALFA1:
sprintf( fcrString, "%s",
pssc->dy_alfa.nome_display );
break;
case DEVICE_PITTO1:
sprintf( fcrString, "%s",
pssc->dy_pitto1.nome_display );
break;
case DEVICE_PITTO2:
sprintf( fcrString, "%s",
pssc->dy_pitto2.nome_display );
break;
case DEVICE_CENTRALINA:
sprintf( fcrString, "%s", "Centralina" );
break;
case DEVICE_FRECCIACROCE:
sprintf( fcrString, "%s",
pssc->dy_frecciacroce.nome_display );
break;
}
pString = strcat( pString, " " );
snmp_set_var_typed_value( var, ASN_OCTET_STR,
(u_char *) pString,
strlen(pString) - 1 );
break;
}
// -------------------------------------------------------
case COLUMN_MSG_VIS:
{
switch( irow )
{
case DEVICE_ALFA1:
DEBUGMSGTL(("aesys", "MODE_GET-DEVICE_ALFA1
idPanel=%d [msg=%s] \n", idPanel, pssc->dy_alfa.last_valid_msg_displayed ));
len_tmp = strlen(
pssc->dy_alfa.last_valid_msg_displayed );
aesys_string_to_hex(
pssc->dy_alfa.last_valid_msg_displayed, len_tmp, buff );
sprintf( fcrString, "%s", buff );
DEBUGMSGTL(("aesys", "MODE_GET-DEVICE_ALFA1
[msg=%s] \n\n", fcrString ));
break;
case DEVICE_PITTO1:
sprintf( fcrString, "%s",
pssc->dy_pitto1.codice_pitto_visualizzato );
break;
case DEVICE_PITTO2:
sprintf( fcrString, "%s",
pssc->dy_pitto2.codice_pitto_visualizzato );
break;
case DEVICE_CENTRALINA:
sprintf( fcrString, "%s", " " );
break;
case DEVICE_FRECCIACROCE:
sprintf( fcrString, "%s",
pssc->dy_frecciacroce.codice_pitto_visualizzato );
//fcrInteger =
pssc->dy_frecciacroce.codice_pitto_visualizzato;
break;
}
pString = strcat( pString, " " );
snmp_set_var_typed_value( var, ASN_OCTET_STR,
(u_char *) pString,
strlen(pString) - 1 );
break;
}
// -------------------------------------------------------
case COLUMN_REV_FW:
{
switch( irow )
{
case DEVICE_ALFA1:
sprintf( fcrString, "%s",
pssc->dy_alfa.revisione_fw );
break;
case DEVICE_PITTO1:
sprintf( fcrString, "%s",
pssc->dy_pitto1.revisione_fw );
break;
case DEVICE_PITTO2:
sprintf( fcrString, "%s",
pssc->dy_pitto2.revisione_fw );
break;
case DEVICE_CENTRALINA:
sprintf( buff, "%s %s", REVISIONE,
ULTIMO_AGGIORNAMENTO );
sprintf( fcrString, "%s", buff );
break;
case DEVICE_FRECCIACROCE:
sprintf( fcrString, "%s",
pssc->dy_frecciacroce.revisione_fw );
break;
}
pString = strcat( pString, " " );
snmp_set_var_typed_value( var, ASN_OCTET_STR,
(u_char *) pString,
strlen(pString) - 1 );
break;
}
// -------------------------------------------------------
}
}
else
if ( var->type == ASN_INTEGER )
{
//DEBUGMSGTL(("aesys", "[aesys] MODE_GET ASN_INTEGER \n" ));
switch( icol )
{
// -------------------------------------------------------
case COLUMN_INDEX:
{
switch( irow )
{
case DEVICE_ALFA1:
fcrInteger = 0;
break;
case DEVICE_PITTO1:
fcrInteger = 0;
break;
case DEVICE_PITTO2:
fcrInteger = 1;
break;
case DEVICE_CENTRALINA:
fcrInteger = 0;
break;
case DEVICE_FRECCIACROCE:
fcrInteger = 0;
break;
}
snmp_set_var_typed_value( var, ASN_INTEGER,
(u_char *) &fcrInteger,
sizeof(fcrInteger));
break;
}
// -------------------------------------------------------
case COLUMN_TYPE:
{
switch( irow )
{
case DEVICE_ALFA1:
fcrInteger = CODICE_ALFA;
break;
case DEVICE_PITTO1:
fcrInteger = CODICE_PITTO;
break;
case DEVICE_PITTO2:
fcrInteger = CODICE_PITTO;
break;
case DEVICE_CENTRALINA:
fcrInteger = CODICE_CENTRALINA;
break;
case DEVICE_FRECCIACROCE:
fcrInteger = CODICE_FRECCIACROCE;
break;
}
snmp_set_var_typed_value( var, ASN_INTEGER,
(u_char *) &fcrInteger,
sizeof(fcrInteger));
break;
}
// -------------------------------------------------------
case COLUMN_STATUS:
{
switch( irow )
{
case DEVICE_ALFA1:
fcrInteger = pssc->dy_alfa.livello_servizio;
break;
case DEVICE_PITTO1:
fcrInteger = pssc->dy_pitto1.livello_servizio;
break;
case DEVICE_PITTO2:
fcrInteger = pssc->dy_pitto2.livello_servizio;
break;
case DEVICE_CENTRALINA:
fcrInteger = 1;
break;
case DEVICE_FRECCIACROCE:
fcrInteger =
pssc->dy_frecciacroce.livello_servizio;
break;
}
snmp_set_var_typed_value( var, ASN_INTEGER,
(u_char *) &fcrInteger,
sizeof(fcrInteger));
break;
}
// -------------------------------------------------------
case COLUMN_STATO_VIS:
{
switch( irow )
{
case DEVICE_ALFA1:
fcrInteger = pssc->dy_alfa.displayStateVis_;
break;
case DEVICE_PITTO1:
fcrInteger = pssc->dy_pitto1.displayStateVis_;
break;
case DEVICE_PITTO2:
fcrInteger = pssc->dy_pitto2.displayStateVis_;
break;
case DEVICE_CENTRALINA:
fcrInteger = 0;
break;
case DEVICE_FRECCIACROCE:
fcrInteger =
pssc->dy_frecciacroce.displayStateVis_;
break;
}
snmp_set_var_typed_value( var, ASN_INTEGER,
(u_char *) &fcrInteger,
sizeof(fcrInteger));
break;
}
// -------------------------------------------------------
case COLUMN_STATO_FLAG:
{
switch( irow )
{
case DEVICE_ALFA1:
fcrInteger = pssc->dy_alfa.stato_RPO;
break;
case DEVICE_PITTO1:
fcrInteger = pssc->dy_pitto1.stato_RPO;
break;
case DEVICE_PITTO2:
fcrInteger = pssc->dy_pitto2.stato_RPO;
break;
case DEVICE_CENTRALINA:
fcrInteger = 0;
break;
case DEVICE_FRECCIACROCE:
fcrInteger = pssc->dy_frecciacroce.stato_RPO;
break;
}
snmp_set_var_typed_value( var, ASN_INTEGER,
(u_char *) &fcrInteger,
sizeof(fcrInteger));
break;
}
// -------------------------------------------------------
} // end ... switch( icol )
}
else
DEBUGMSGTL(("aesys", "[aesys] MODE_GET requests->requestvb->type
(%d) unhandled \n",
(int)var->type ));
//DEBUGMSGTL(("aesys", "[aesys] MODE_GET: %s\n", fcrString ));
break;
case MODE_GETNEXT:
DEBUGMSGTL(("aesys", "[aesys] MODE_GETNEXT \n" ));
break;
case MODE_SET_ACTION:
DEBUGMSGTL(("aesys", "[aesys] MODE_SET_ACTION \n" ));
break;
case MODE_SET_RESERVE1:
DEBUGMSGTL(("aesys", "[aesys] MODE_SET_RESERVE1 \n" ));
// if ( requests->requestvb->type != ASN_OCTET_STR )
//{
//netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE );
//return;
//}
break;
case MODE_SET_RESERVE2:
DEBUGMSGTL(("aesys", "[aesys] MODE_SET_RESERVE2 \n" ));
break;
case MODE_SET_UNDO:
DEBUGMSGTL(("aesys", "[aesys] MODE_SET_UNDO \n" ));
break;
case MODE_SET_COMMIT:
DEBUGMSGTL(("aesys", "[aesys] MODE_SET_COMMIT \n" ));
break;
case MODE_SET_FREE:
DEBUGMSGTL(("aesys", "[aesys] MODE_SET_FREE \n" ));
break;
default:
DEBUGMSGTL(("aesys", "[aesys] *** DEFAULT *** ( reqinfo->mode = %d
)\n", (int)reqinfo->mode ));
return SNMP_ERR_GENERR;
}
return SNMP_ERR_NOERROR;
} // ___________ int crTableDevices_handler(netsnmp_mib_handler *handler,... )
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users