hpux.c
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:3k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. /*
  2.  * HP specific stuff that OpenView recognizes 
  3.  */
  4. #include <net-snmp/net-snmp-config.h>
  5. #include <signal.h>
  6. #if HAVE_MACHINE_PARAM_H
  7. #include <machine/param.h>
  8. #endif
  9. #if HAVE_SYS_VMMETER_H
  10. #include <sys/vmmeter.h>
  11. #endif
  12. #if HAVE_STRING_H
  13. #include <string.h>
  14. #endif
  15. #include <net-snmp/net-snmp-includes.h>
  16. #include <net-snmp/agent/net-snmp-agent-includes.h>
  17. #include "hpux.h"
  18. #include "mibdefs.h"
  19. void
  20. int_hpux(void)
  21. {
  22.     /*
  23.      * define the structure we're going to ask the agent to register our
  24.      * information at 
  25.      */
  26.     struct variable2 hp_variables[] = {
  27.         {HPCONF, ASN_INTEGER, RWRITE, var_hp, 1, {HPCONF}},
  28.         {HPRECONFIG, ASN_INTEGER, RWRITE, var_hp, 1, {HPRECONFIG}},
  29.         {HPFLAG, ASN_INTEGER, RWRITE, var_hp, 1, {HPFLAG}},
  30.         {HPLOGMASK, ASN_INTEGER, RWRITE, var_hp, 1, {ERRORFLAG}},
  31.         {HPSTATUS, ASN_INTEGER, RWRITE, var_hp, 1, {ERRORMSG}}
  32.     };
  33.     struct variable2 hptrap_variables[] = {
  34.         {HPTRAP, ASN_IPADDRESS, RWRITE, var_hp, 1, {HPTRAP}},
  35.     };
  36.     /*
  37.      * Define the OID pointer to the top of the mib tree that we're
  38.      * registering underneath 
  39.      */
  40.     oid             hp_variables_oid[] =
  41.         { 1, 3, 6, 1, 4, 1, 11, 2, 13, 1, 2, 1 };
  42.     oid             hptrap_variables_oid[] =
  43.         { 1, 3, 6, 1, 4, 1, 11, 2, 13, 2 };
  44.     /*
  45.      * register ourselves with the agent to handle our mib tree 
  46.      */
  47.     REGISTER_MIB("ucd-snmp/hpux:hp", hp_variables, variable2,
  48.                  hp_variables_oid);
  49.     REGISTER_MIB("ucd-snmp/hpux:hptrap", hptrap_variables, variable2,
  50.                  hptrap_variables_oid);
  51. }
  52. #ifdef RESERVED_FOR_FUTURE_USE
  53. int
  54. writeHP(int action,
  55.         u_char * var_val,
  56.         u_char var_val_type,
  57.         int var_val_len, u_char * statP, oid * name, int name_len)
  58. {
  59.     DODEBUG("Gotto:  writeHPn");
  60.     return SNMP_ERR_NOERROR;
  61. }
  62. #endif
  63. unsigned char  *
  64. var_hp(struct variable *vp,
  65.        oid * name,
  66.        size_t * length,
  67.        int exact, size_t * var_len, WriteMethod ** write_method)
  68. {
  69.     oid             newname[MAX_OID_LEN];
  70.     int             result;
  71.     static long     long_ret;
  72.     memcpy((char *) newname, (char *) vp->name,
  73.            (int) vp->namelen * sizeof(oid));
  74.     newname[*length] = 0;
  75.     result =
  76.         snmp_oid_compare(name, *length, newname, (int) vp->namelen + 1);
  77.     if ((exact && (result != 0)) || (!exact && (result >= 0)))
  78.         return NULL;
  79.     memcpy((char *) name, (char *) newname,
  80.            ((int) vp->namelen + 1) * sizeof(oid));
  81.     *length = *length + 1;
  82.     *var_len = sizeof(long);    /* default length */
  83.     switch (vp->magic) {
  84.     case HPFLAG:
  85.     case HPCONF:
  86.     case HPSTATUS:
  87.     case HPRECONFIG:
  88.         long_ret = 1;
  89.         return (u_char *) & long_ret;   /* remove trap */
  90.     case HPLOGMASK:
  91.         long_ret = 3;
  92.         return (u_char *) & long_ret;
  93.     case HPTRAP:
  94.         newname[*length - 1] = 128;
  95.         newname[*length] = 120;
  96.         newname[*length + 1] = 57;
  97.         newname[*length + 2] = 92;
  98.         *length = *length + 3;
  99.         memcpy((char *) name, (char *) newname, *length * sizeof(oid));
  100.         long_ret = ((((((128 << 8) + 120) << 8) + 57) << 8) + 92);
  101.         return (u_char *) & long_ret;
  102.     }
  103.     return NULL;
  104. }