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