xref: /openbsd-src/usr.sbin/snmpd/snmp.h (revision d13be5d47e4149db2549a9828e244d59dbc43f15)
1 /*	$OpenBSD: snmp.h,v 1.8 2009/11/26 17:32:47 reyk Exp $	*/
2 
3 /*
4  * Copyright (c) 2007, 2008 Reyk Floeter <reyk@vantronix.net>
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef SNMP_HEADER
20 #define SNMP_HEADER
21 
22 /*
23  * SNMP IMSG interface
24  */
25 
26 #define SNMP_MAX_OID_LEN	128	/* max size of the OID _string_ */
27 #define SNMP_SOCKET		"/var/run/snmpd.sock"
28 
29 enum snmp_type {
30 	SNMP_IPADDR		= 0,
31 	SNMP_COUNTER32		= 1,
32 	SNMP_GAUGE32		= 2,
33 	SNMP_UNSIGNED32		= 2,
34 	SNMP_TIMETICKS		= 3,
35 	SNMP_OPAQUE		= 4,
36 	SNMP_NSAPADDR		= 5,
37 	SNMP_COUNTER64		= 6,
38 	SNMP_UINTEGER32		= 7,
39 
40 	SNMP_INTEGER32		= 100,
41 	SNMP_BITSTRING		= 101,
42 	SNMP_OCTETSTRING	= 102,
43 	SNMP_NULL		= 103,
44 	SNMP_OBJECT		= 104
45 };
46 
47 enum snmp_imsg_ctl {
48 	IMSG_SNMP_TRAP		= 1000,	/* something that works everywhere */
49 	IMSG_SNMP_ELEMENT,
50 	IMSG_SNMP_END,
51 	IMSG_SNMP_LOCK			/* enable restricted mode */
52 };
53 
54 struct snmp_imsg_hdr {
55 	u_int32_t	 imsg_type;
56 	u_int16_t	 imsg_len;
57 	u_int16_t	 imsg_flags;
58 	u_int32_t	 imsg_peerid;
59 	u_int32_t	 imsg_pid;
60 };
61 
62 struct snmp_imsg {
63 	char		 snmp_oid[SNMP_MAX_OID_LEN];
64 	u_int8_t	 snmp_type;
65 	u_int16_t	 snmp_len;
66 };
67 
68 /*
69  * SNMP BER types
70  */
71 
72 enum snmp_version {
73 	SNMP_V1			= 0,
74 	SNMP_V2			= 1,	/* SNMPv2c */
75 	SNMP_V3			= 3
76 };
77 
78 enum snmp_context {
79 	SNMP_C_GETREQ		= 0,
80 	SNMP_C_GETNEXTREQ	= 1,
81 	SNMP_C_GETRESP		= 2,
82 	SNMP_C_SETREQ		= 3,
83 	SNMP_C_TRAP		= 4,
84 
85 	/* SNMPv2 */
86 	SNMP_C_GETBULKREQ	= 5,
87 	SNMP_C_INFORMREQ	= 6,
88 	SNMP_C_TRAPV2		= 7,
89 	SNMP_C_REPORT		= 8
90 };
91 
92 enum snmp_application {
93 	SNMP_T_IPADDR		= 0,
94 	SNMP_T_COUNTER32	= 1,
95 	SNMP_T_GAUGE32		= 2,
96 	SNMP_T_UNSIGNED32	= 2,
97 	SNMP_T_TIMETICKS	= 3,
98 	SNMP_T_OPAQUE		= 4,
99 	SNMP_T_NSAPADDR		= 5,
100 	SNMP_T_COUNTER64	= 6,
101 	SNMP_T_UINTEGER32	= 7
102 };
103 
104 enum snmp_generic_trap {
105 	SNMP_TRAP_COLDSTART	= 0,
106 	SNMP_TRAP_WARMSTART	= 1,
107 	SNMP_TRAP_LINKDOWN	= 2,
108 	SNMP_TRAP_LINKUP	= 3,
109 	SNMP_TRAP_AUTHFAILURE	= 4,
110 	SNMP_TRAP_EGPNEIGHLOSS	= 5,
111 	SNMP_TRAP_ENTERPRISE	= 6
112 };
113 
114 enum snmp_error {
115 	SNMP_ERROR_NONE		= 0,
116 	SNMP_ERROR_TOOBIG	= 1,
117 	SNMP_ERROR_NOSUCHNAME	= 2,
118 	SNMP_ERROR_BADVALUE	= 3,
119 	SNMP_ERROR_READONLY	= 4,
120 	SNMP_ERROR_GENERR	= 5,
121 
122 	/* SNMPv2 */
123 	SNMP_ERROR_NOACCESS	= 6,
124 	SNMP_ERROR_WRONGTYPE	= 7,
125 	SNMP_ERROR_WRONGLENGTH	= 8,
126 	SNMP_ERROR_WRONGENC	= 9,
127 	SNMP_ERROR_WRONGVALUE	= 10,
128 	SNMP_ERROR_NOCREATION	= 11,
129 	SNMP_ERROR_INCONVALUE	= 12,
130 	SNMP_ERROR_RESUNAVAIL	= 13, /* EGAIN */
131 	SNMP_ERROR_COMMITFAILED	= 14,
132 	SNMP_ERROR_UNDOFAILED	= 15,
133 	SNMP_ERROR_AUTHERROR	= 16,
134 	SNMP_ERROR_NOTWRITABLE	= 17,
135 	SNMP_ERROR_INCONNAME	= 18
136 };
137 
138 #endif /* SNMP_HEADER */
139