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