xref: /openbsd/usr.sbin/snmpd/snmp.h (revision 73471bf0)
1 /*	$OpenBSD: snmp.h,v 1.18 2021/10/21 14:33:13 martijn Exp $	*/
2 
3 /*
4  * Copyright (c) 2007, 2008, 2012 Reyk Floeter <reyk@openbsd.org>
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 SNMPD_SNMP_H
20 #define SNMPD_SNMP_H
21 
22 #include <sys/types.h>
23 #include <endian.h>
24 
25 /*
26  * SNMP IMSG interface
27  */
28 
29 #define SNMP_MAX_OID_STRLEN	128	/* max size of the OID _string_ */
30 
31 enum snmp_type {
32 	SNMP_IPADDR		= 0,
33 	SNMP_COUNTER32		= 1,
34 	SNMP_GAUGE32		= 2,
35 	SNMP_UNSIGNED32		= 2,
36 	SNMP_TIMETICKS		= 3,
37 	SNMP_OPAQUE		= 4,
38 	SNMP_NSAPADDR		= 5,
39 	SNMP_COUNTER64		= 6,
40 	SNMP_UINTEGER32		= 7,
41 
42 	SNMP_INTEGER32		= 100,
43 	SNMP_BITSTRING		= 101,
44 	SNMP_OCTETSTRING	= 102,
45 	SNMP_NULL		= 103,
46 	SNMP_OBJECT		= 104
47 };
48 
49 enum snmp_imsg_ctl {
50 	IMSG_SNMP_DUMMY		= 1000,	/* something that works everywhere */
51 	IMSG_SNMP_ELEMENT,
52 	IMSG_SNMP_END,
53 	IMSG_SNMP_LOCK,			/* enable restricted mode */
54 };
55 
56 struct snmp_imsg_hdr {
57 	u_int32_t	 imsg_type;
58 	u_int16_t	 imsg_len;
59 	u_int16_t	 imsg_flags;
60 	u_int32_t	 imsg_peerid;
61 	u_int32_t	 imsg_pid;
62 };
63 
64 struct snmp_imsg {
65 	char		 snmp_oid[SNMP_MAX_OID_STRLEN];
66 	u_int8_t	 snmp_type;
67 	u_int16_t	 snmp_len;
68 };
69 
70 /*
71  * SNMP BER types
72  */
73 
74 enum snmp_version {
75 	SNMP_V1			= 0,
76 	SNMP_V2			= 1,	/* SNMPv2c */
77 	SNMP_V3			= 3
78 };
79 
80 enum snmp_pdutype {
81 	SNMP_C_GETREQ		= 0,
82 	SNMP_C_GETNEXTREQ	= 1,
83 	SNMP_C_RESPONSE		= 2,
84 	SNMP_C_SETREQ		= 3,
85 	SNMP_C_TRAP		= 4,
86 
87 	/* SNMPv2 */
88 	SNMP_C_GETBULKREQ	= 5,
89 	SNMP_C_INFORMREQ	= 6,
90 	SNMP_C_TRAPV2		= 7,
91 	SNMP_C_REPORT		= 8
92 };
93 
94 enum snmp_application {
95 	SNMP_T_IPADDR		= 0,
96 	SNMP_T_COUNTER32	= 1,
97 	SNMP_T_GAUGE32		= 2,
98 	SNMP_T_UNSIGNED32	= 2,
99 	SNMP_T_TIMETICKS	= 3,
100 	SNMP_T_OPAQUE		= 4,
101 	SNMP_T_NSAPADDR		= 5,
102 	SNMP_T_COUNTER64	= 6,
103 	SNMP_T_UINTEGER32	= 7
104 };
105 
106 enum snmp_generic_trap {
107 	SNMP_TRAP_COLDSTART	= 0,
108 	SNMP_TRAP_WARMSTART	= 1,
109 	SNMP_TRAP_LINKDOWN	= 2,
110 	SNMP_TRAP_LINKUP	= 3,
111 	SNMP_TRAP_AUTHFAILURE	= 4,
112 	SNMP_TRAP_EGPNEIGHLOSS	= 5,
113 	SNMP_TRAP_ENTERPRISE	= 6
114 };
115 
116 enum snmp_error {
117 	SNMP_ERROR_NONE		= 0,
118 	SNMP_ERROR_TOOBIG	= 1,
119 	SNMP_ERROR_NOSUCHNAME	= 2,
120 	SNMP_ERROR_BADVALUE	= 3,
121 	SNMP_ERROR_READONLY	= 4,
122 	SNMP_ERROR_GENERR	= 5,
123 
124 	/* SNMPv2 */
125 	SNMP_ERROR_NOACCESS	= 6,
126 	SNMP_ERROR_WRONGTYPE	= 7,
127 	SNMP_ERROR_WRONGLENGTH	= 8,
128 	SNMP_ERROR_WRONGENC	= 9,
129 	SNMP_ERROR_WRONGVALUE	= 10,
130 	SNMP_ERROR_NOCREATION	= 11,
131 	SNMP_ERROR_INCONVALUE	= 12,
132 	SNMP_ERROR_RESUNAVAIL	= 13, /* EGAIN */
133 	SNMP_ERROR_COMMITFAILED	= 14,
134 	SNMP_ERROR_UNDOFAILED	= 15,
135 	SNMP_ERROR_AUTHERROR	= 16,
136 	SNMP_ERROR_NOTWRITABLE	= 17,
137 	SNMP_ERROR_INCONNAME	= 18
138 };
139 
140 enum snmp_security_model {
141 	SNMP_SEC_ANY = 0,
142 	SNMP_SEC_SNMPv1 = 1,
143 	SNMP_SEC_SNMPv2c = 2,
144 	SNMP_SEC_USM = 3,
145 	SNMP_SEC_TSM = 4
146 };
147 
148 #define SNMP_MSGFLAG_AUTH	0x01
149 #define SNMP_MSGFLAG_PRIV	0x02
150 #define SNMP_MSGFLAG_SECMASK	(SNMP_MSGFLAG_AUTH | SNMP_MSGFLAG_PRIV)
151 #define SNMP_MSGFLAG_REPORT	0x04
152 
153 #define SNMP_MAX_TIMEWINDOW	150	/* RFC3414 */
154 
155 #endif /* SNMPD_SNMP_H */
156