]> git.ipfire.org Git - thirdparty/squid.git/blob - include/snmp_vars.h
3.1 Cleanups pt 1: Add testheaders.sh script
[thirdparty/squid.git] / include / snmp_vars.h
1 #ifndef SQUID_SNMP_VARS_H
2 #define SQUID_SNMP_VARS_H
3
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_vars.h,v 1.14 2007/12/14 23:11:44 amosjeffries Exp $
29 *
30 **********************************************************************/
31
32 #include "asn1.h"
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38 struct variable_list {
39 struct variable_list *next_variable; /* NULL for last variable */
40 oid *name; /* Object identifier of variable */
41 int name_length; /* number of subid's in name */
42 u_char type; /* ASN type of variable */
43 union { /* value of variable */
44 int *integer;
45 u_char *string;
46 oid *objid;
47 } val;
48 int val_len;
49 };
50
51 struct variable_list *snmp_var_new(oid *, int);
52 struct variable_list *snmp_var_new_integer(oid *, int, int, unsigned char);
53 struct variable_list *snmp_var_clone(struct variable_list *);
54 void snmp_var_free(struct variable_list *);
55
56 u_char *snmp_var_EncodeVarBind(u_char *, int *, struct variable_list *, int);
57 u_char *snmp_var_DecodeVarBind(u_char *, int *, struct variable_list **, int);
58
59 #define MAX_NAME_LEN 64 /* number of subid's in a objid */
60
61 /* RFC 1902: Structure of Management Information for SNMPv2
62 *
63 * Defined Types
64 */
65 #define SMI_INTEGER ASN_INTEGER
66 #define SMI_STRING ASN_OCTET_STR
67 #define SMI_OBJID ASN_OBJECT_ID
68 #define SMI_NULLOBJ ASN_NULL
69 #define SMI_IPADDRESS (ASN_APPLICATION | 0) /* OCTET STRING, net byte order */
70 #define SMI_COUNTER32 (ASN_APPLICATION | 1) /* INTEGER */
71 #define SMI_GAUGE32 (ASN_APPLICATION | 2) /* INTEGER */
72 #define SMI_UNSIGNED32 SMI_GAUGE32
73 #define SMI_TIMETICKS (ASN_APPLICATION | 3) /* INTEGER */
74 #define SMI_OPAQUE (ASN_APPLICATION | 4) /* OCTET STRING */
75 #define SMI_COUNTER64 (ASN_APPLICATION | 6) /* INTEGER */
76
77
78 /* constants for enums for the MIB nodes
79 * cachePeerAddressType (InetAddressType / ASN_INTEGER)
80 * cacheClientAddressType (InetAddressType / ASN_INTEGER)
81 * Defined Types
82 */
83
84 #ifndef INETADDRESSTYPE_ENUMS
85 #define INETADDRESSTYPE_ENUMS
86
87 #define INETADDRESSTYPE_UNKNOWN 0
88 #define INETADDRESSTYPE_IPV4 1
89 #define INETADDRESSTYPE_IPV6 2
90 #define INETADDRESSTYPE_IPV4Z 3
91 #define INETADDRESSTYPE_IPV6Z 4
92 #define INETADDRESSTYPE_DNS 16
93
94 #endif /* INETADDRESSTYPE_ENUMS */
95
96
97 /*
98 * RFC 1905: Protocol Operations for SNMPv2
99 *
100 * Variable binding.
101 *
102 * VarBind ::=
103 * SEQUENCE {
104 * name ObjectName
105 * CHOICE {
106 * value ObjectSyntax
107 * unSpecified NULL
108 * noSuchObject[0] NULL
109 * noSuchInstance[1] NULL
110 * endOfMibView[2] NULL
111 * }
112 * }
113 */
114 #define SMI_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x0) /* noSuchObject[0] */
115 #define SMI_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x1) /* noSuchInstance[1] */
116 #define SMI_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x2) /* endOfMibView[2] */
117 typedef struct variable variable;
118 typedef struct variable_list variable_list;
119
120 #ifdef __cplusplus
121 }
122 #endif
123
124 #endif /* SQUID_SNMP_VARS_H */