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