snmp_pdu.h
上传用户:liugui
上传日期:2007-01-04
资源大小:822k
文件大小:4k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. /* -*- c++ -*- */
  2. #ifndef _SNMP_PDU_H_
  3. #define _SNMP_PDU_H_
  4. /**********************************************************************
  5.  *
  6.  *           Copyright 1997 by Carnegie Mellon University
  7.  * 
  8.  *                       All Rights Reserved
  9.  * 
  10.  * Permission to use, copy, modify, and distribute this software and its
  11.  * documentation for any purpose and without fee is hereby granted,
  12.  * provided that the above copyright notice appear in all copies and that
  13.  * both that copyright notice and this permission notice appear in
  14.  * supporting documentation, and that the name of CMU not be
  15.  * used in advertising or publicity pertaining to distribution of the
  16.  * software without specific, written prior permission.
  17.  * 
  18.  * CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  19.  * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  20.  * CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  21.  * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  22.  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  23.  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  24.  * SOFTWARE.
  25.  * 
  26.  * Author: Ryan Troll <ryan+@andrew.cmu.edu>
  27.  * 
  28.  * $Id: snmp_pdu.h,v 1.2 1998/04/04 01:43:49 kostas Exp $
  29.  * 
  30.  **********************************************************************/
  31. typedef struct sockaddr_in ipaddr;
  32. /* An SNMP PDU */
  33. struct snmp_pdu {
  34.     int command; /* Type of this PDU */
  35.     ipaddr address; /* Address of peer */
  36.     int reqid; /* Integer32: Request id */
  37.     int errstat; /* INTEGER:   Error status */
  38.     int errindex; /* INTEGER:   Error index */
  39.     /* SNMPv2 Bulk Request */
  40.     int non_repeaters; /* INTEGER: */
  41.     int max_repetitions; /* INTEGER: */
  42.     struct variable_list *variables; /* Variable Bindings */
  43.     /* Trap information */
  44.     oid *enterprise; /* System OID */
  45.     int enterprise_length;
  46.     ipaddr agent_addr; /* address of object generating trap */
  47.     int trap_type; /* generic trap type */
  48.     int specific_type; /* specific type */
  49.     u_int time; /* Uptime */
  50. };
  51. #ifdef __cplusplus
  52. extern "C" {
  53. #endif
  54.     struct snmp_pdu *snmp_pdu_create(int);
  55.     struct snmp_pdu *snmp_pdu_clone(struct snmp_pdu *);
  56.     struct snmp_pdu *snmp_pdu_fix(struct snmp_pdu *, int);
  57.     struct snmp_pdu *snmp_fix_pdu(struct snmp_pdu *, int);
  58.     void snmp_free_pdu(struct snmp_pdu *);
  59.     void snmp_pdu_free(struct snmp_pdu *);
  60.     u_char *snmp_pdu_encode(u_char *, int *, struct snmp_pdu *);
  61.     u_char *snmp_pdu_decode(u_char *, int *, struct snmp_pdu *);
  62.     char *snmp_pdu_type(struct snmp_pdu *);
  63.     /* Add a NULL Variable to a PDU */
  64.     void snmp_add_null_var(struct snmp_pdu *, oid *, int);
  65. #ifdef __cplusplus
  66. }
  67. #endif /*
  68.  * * RFC 1905: Protocol Operations for SNMPv2
  69.  * *
  70.  * * RFC 1157: A Simple Network Management Protocol (SNMP)
  71.  * *
  72.  * * PDU Types
  73.  */
  74. #define SNMP_PDU_GET     (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x0)
  75. #define SNMP_PDU_GETNEXT    (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x1)
  76. #define SNMP_PDU_RESPONSE   (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x2)
  77. #define SNMP_PDU_SET        (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x3)
  78. #define TRP_REQ_MSG     (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x4) /*Obsolete */
  79. #define SNMP_PDU_GETBULK    (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x5)
  80. #define SNMP_PDU_INFORM     (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x6)
  81. #define SNMP_PDU_V2TRAP     (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x7)
  82. #define SNMP_PDU_REPORT     (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x8)
  83. #define MAX_BINDINGS 2147483647 /* PDU Defaults */
  84. #define SNMP_DEFAULT_ERRSTAT     -1
  85. #define SNMP_DEFAULT_ERRINDEX     -1
  86. #define SNMP_DEFAULT_ADDRESS     0
  87. #define SNMP_DEFAULT_REQID     0 /*
  88.  * * RFC 1907: Management Information Base for SNMPv2
  89.  * *
  90.  * * RFC 1157: A Simple Network Management Protocol (SNMP)
  91.  * *
  92.  * * Trap Types
  93.  */
  94. #define SNMP_TRAP_COLDSTART             (0x0)
  95. #define SNMP_TRAP_WARMSTART             (0x1)
  96. #define SNMP_TRAP_LINKDOWN              (0x2)
  97. #define SNMP_TRAP_LINKUP                (0x3)
  98. #define SNMP_TRAP_AUTHENTICATIONFAILURE (0x4)
  99. #define SNMP_TRAP_EGPNEIGHBORLOSS       (0x5)
  100. #define SNMP_TRAP_ENTERPRISESPECIFIC    (0x6)
  101. #endif /* _SNMP_PDU_H_ */