diff options
Diffstat (limited to 'agent/mibgroup/ucd-snmp/hpux.c')
-rw-r--r-- | agent/mibgroup/ucd-snmp/hpux.c | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/agent/mibgroup/ucd-snmp/hpux.c b/agent/mibgroup/ucd-snmp/hpux.c new file mode 100644 index 0000000..9c5f9f9 --- /dev/null +++ b/agent/mibgroup/ucd-snmp/hpux.c @@ -0,0 +1,125 @@ +/* + * 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; +} |