net-snmp/agent/mibgroup/ucd-snmp/hpux.c

126 lines
3.3 KiB
C

/*
* HP specific stuff that OpenView recognizes
*/
#include <net-snmp/net-snmp-config.h>
#include <signal.h>
#if HAVE_MACHINE_PARAM_H
#include <machine/param.h>
#endif
#if HAVE_SYS_VMMETER_H
#include <sys/vmmeter.h>
#endif
#if HAVE_STRING_H
#include <string.h>
#endif
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "hpux.h"
#include "mibdefs.h"
void
int_hpux(void)
{
/*
* define the structure we're going to ask the agent to register our
* information at
*/
struct variable2 hp_variables[] = {
{HPCONF, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
var_hp, 1, {HPCONF}},
{HPRECONFIG, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
var_hp, 1, {HPRECONFIG}},
{HPFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
var_hp, 1, {HPFLAG}},
{HPLOGMASK, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
var_hp, 1, {ERRORFLAG}},
{HPSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
var_hp, 1, {ERRORMSG}}
};
struct variable2 hptrap_variables[] = {
{HPTRAP, ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
var_hp, 1, {HPTRAP}},
};
/*
* Define the OID pointer to the top of the mib tree that we're
* registering underneath
*/
oid hp_variables_oid[] =
{ 1, 3, 6, 1, 4, 1, 11, 2, 13, 1, 2, 1 };
oid hptrap_variables_oid[] =
{ 1, 3, 6, 1, 4, 1, 11, 2, 13, 2 };
/*
* register ourselves with the agent to handle our mib tree
*/
REGISTER_MIB("ucd-snmp/hpux:hp", hp_variables, variable2,
hp_variables_oid);
REGISTER_MIB("ucd-snmp/hpux:hptrap", hptrap_variables, variable2,
hptrap_variables_oid);
}
#ifdef RESERVED_FOR_FUTURE_USE
int
writeHP(int action,
u_char * var_val,
u_char var_val_type,
int var_val_len, u_char * statP, oid * name, int name_len)
{
DODEBUG("Gotto: writeHP\n");
return SNMP_ERR_NOERROR;
}
#endif
unsigned char *
var_hp(struct variable *vp,
oid * name,
size_t * length,
int exact, size_t * var_len, WriteMethod ** write_method)
{
oid newname[MAX_OID_LEN];
int result;
static long long_ret;
memcpy((char *) newname, (char *) vp->name,
(int) vp->namelen * sizeof(oid));
newname[*length] = 0;
result =
snmp_oid_compare(name, *length, newname, (int) vp->namelen + 1);
if ((exact && (result != 0)) || (!exact && (result >= 0)))
return NULL;
memcpy((char *) name, (char *) newname,
((int) vp->namelen + 1) * sizeof(oid));
*length = *length + 1;
*var_len = sizeof(long); /* default length */
switch (vp->magic) {
case HPFLAG:
case HPCONF:
case HPSTATUS:
case HPRECONFIG:
long_ret = 1;
return (u_char *) & long_ret; /* remove trap */
case HPLOGMASK:
long_ret = 3;
return (u_char *) & long_ret;
case HPTRAP:
newname[*length - 1] = 128;
newname[*length] = 120;
newname[*length + 1] = 57;
newname[*length + 2] = 92;
*length = *length + 3;
memcpy((char *) name, (char *) newname, *length * sizeof(oid));
long_ret = ((((((128 << 8) + 120) << 8) + 57) << 8) + 92);
return (u_char *) & long_ret;
}
return NULL;
}