xref: /openbsd-src/usr.sbin/snmpd/snmp.h (revision 2b0358df1d88d06ef4139321dd05bd5e05d91eaf)
1 /*	$OpenBSD: snmp.h,v 1.7 2008/02/07 11:33:26 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_int16_t	 imsg_type;
56 	u_int16_t	 imsg_len;
57 	u_int32_t	 imsg_peerid;
58 	pid_t		 imsg_pid;
59 };
60 
61 struct snmp_imsg {
62 	char		 snmp_oid[SNMP_MAX_OID_LEN];
63 	u_int8_t	 snmp_type;
64 	u_int16_t	 snmp_len;
65 };
66 
67 /*
68  * SNMP BER types
69  */
70 
71 enum snmp_version {
72 	SNMP_V1			= 0,
73 	SNMP_V2			= 1,	/* SNMPv2c */
74 	SNMP_V3			= 3
75 };
76 
77 enum snmp_context {
78 	SNMP_C_GETREQ		= 0,
79 	SNMP_C_GETNEXTREQ	= 1,
80 	SNMP_C_GETRESP		= 2,
81 	SNMP_C_SETREQ		= 3,
82 	SNMP_C_TRAP		= 4,
83 
84 	/* SNMPv2 */
85 	SNMP_C_GETBULKREQ	= 5,
86 	SNMP_C_INFORMREQ	= 6,
87 	SNMP_C_TRAPV2		= 7,
88 	SNMP_C_REPORT		= 8
89 };
90 
91 enum snmp_application {
92 	SNMP_T_IPADDR		= 0,
93 	SNMP_T_COUNTER32	= 1,
94 	SNMP_T_GAUGE32		= 2,
95 	SNMP_T_UNSIGNED32	= 2,
96 	SNMP_T_TIMETICKS	= 3,
97 	SNMP_T_OPAQUE		= 4,
98 	SNMP_T_NSAPADDR		= 5,
99 	SNMP_T_COUNTER64	= 6,
100 	SNMP_T_UINTEGER32	= 7
101 };
102 
103 enum snmp_generic_trap {
104 	SNMP_TRAP_COLDSTART	= 0,
105 	SNMP_TRAP_WARMSTART	= 1,
106 	SNMP_TRAP_LINKDOWN	= 2,
107 	SNMP_TRAP_LINKUP	= 3,
108 	SNMP_TRAP_AUTHFAILURE	= 4,
109 	SNMP_TRAP_EGPNEIGHLOSS	= 5,
110 	SNMP_TRAP_ENTERPRISE	= 6
111 };
112 
113 enum snmp_error {
114 	SNMP_ERROR_NONE		= 0,
115 	SNMP_ERROR_TOOBIG	= 1,
116 	SNMP_ERROR_NOSUCHNAME	= 2,
117 	SNMP_ERROR_BADVALUE	= 3,
118 	SNMP_ERROR_READONLY	= 4,
119 	SNMP_ERROR_GENERR	= 5,
120 
121 	/* SNMPv2 */
122 	SNMP_ERROR_NOACCESS	= 6,
123 	SNMP_ERROR_WRONGTYPE	= 7,
124 	SNMP_ERROR_WRONGLENGTH	= 8,
125 	SNMP_ERROR_WRONGENC	= 9,
126 	SNMP_ERROR_WRONGVALUE	= 10,
127 	SNMP_ERROR_NOCREATION	= 11,
128 	SNMP_ERROR_INCONVALUE	= 12,
129 	SNMP_ERROR_RESUNAVAIL	= 13, /* EGAIN */
130 	SNMP_ERROR_COMMITFAILED	= 14,
131 	SNMP_ERROR_UNDOFAILED	= 15,
132 	SNMP_ERROR_AUTHERROR	= 16,
133 	SNMP_ERROR_NOTWRITABLE	= 17,
134 	SNMP_ERROR_INCONNAME	= 18
135 };
136 
137 #endif /* SNMP_HEADER */
138