[BACK]Return to snmp.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / snmp

Annotation of src/usr.bin/snmp/snmp.h, Revision 1.1

1.1     ! martijn     1: /*     $OpenBSD$       */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 2019 Martijn van Duren <martijn@openbsd.org>
        !             5:  * Copyright (c) 2007, 2008, 2012 Reyk Floeter <reyk@openbsd.org>
        !             6:  *
        !             7:  * Permission to use, copy, modify, and distribute this software for any
        !             8:  * purpose with or without fee is hereby granted, provided that the above
        !             9:  * copyright notice and this permission notice appear in all copies.
        !            10:  *
        !            11:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            12:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            13:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            14:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            15:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            16:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            17:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            18:  */
        !            19:
        !            20: #ifndef SNMPD_SNMP_H
        !            21: #define SNMPD_SNMP_H
        !            22:
        !            23: #include <sys/types.h>
        !            24: #include <sys/queue.h>
        !            25: #include <endian.h>
        !            26:
        !            27: #include <time.h>
        !            28:
        !            29: #define READ_BUF_SIZE 65535
        !            30:
        !            31: #define SNMP_MAX_OID_STRLEN    128     /* max size of the OID _string_ */
        !            32:
        !            33: /*
        !            34:  * SNMP BER types
        !            35:  */
        !            36:
        !            37: enum snmp_version {
        !            38:        SNMP_V1                 = 0,
        !            39:        SNMP_V2C                = 1,    /* SNMPv2c */
        !            40:        SNMP_V3                 = 3
        !            41: };
        !            42:
        !            43: enum snmp_context {
        !            44:        SNMP_C_GETREQ           = 0,
        !            45:        SNMP_C_GETNEXTREQ       = 1,
        !            46:        SNMP_C_GETRESP          = 2,
        !            47:        SNMP_C_SETREQ           = 3,
        !            48:        SNMP_C_TRAP             = 4,
        !            49:
        !            50:        /* SNMPv2 */
        !            51:        SNMP_C_GETBULKREQ       = 5,
        !            52:        SNMP_C_INFORMREQ        = 6,
        !            53:        SNMP_C_TRAPV2           = 7,
        !            54:        SNMP_C_REPORT           = 8
        !            55: };
        !            56:
        !            57: enum snmp_application {
        !            58:        SNMP_T_IPADDR           = 0,
        !            59:        SNMP_T_COUNTER32        = 1,
        !            60:        SNMP_T_GAUGE32          = 2,
        !            61:        SNMP_T_UNSIGNED32       = 2,
        !            62:        SNMP_T_TIMETICKS        = 3,
        !            63:        SNMP_T_OPAQUE           = 4,
        !            64:        SNMP_T_NSAPADDR         = 5,
        !            65:        SNMP_T_COUNTER64        = 6,
        !            66:        SNMP_T_UINTEGER32       = 7
        !            67: };
        !            68:
        !            69: enum snmp_generic_trap {
        !            70:        SNMP_TRAP_COLDSTART     = 0,
        !            71:        SNMP_TRAP_WARMSTART     = 1,
        !            72:        SNMP_TRAP_LINKDOWN      = 2,
        !            73:        SNMP_TRAP_LINKUP        = 3,
        !            74:        SNMP_TRAP_AUTHFAILURE   = 4,
        !            75:        SNMP_TRAP_EGPNEIGHLOSS  = 5,
        !            76:        SNMP_TRAP_ENTERPRISE    = 6
        !            77: };
        !            78:
        !            79: enum snmp_error {
        !            80:        SNMP_ERROR_NONE         = 0,
        !            81:        SNMP_ERROR_TOOBIG       = 1,
        !            82:        SNMP_ERROR_NOSUCHNAME   = 2,
        !            83:        SNMP_ERROR_BADVALUE     = 3,
        !            84:        SNMP_ERROR_READONLY     = 4,
        !            85:        SNMP_ERROR_GENERR       = 5,
        !            86:
        !            87:        /* SNMPv2 */
        !            88:        SNMP_ERROR_NOACCESS     = 6,
        !            89:        SNMP_ERROR_WRONGTYPE    = 7,
        !            90:        SNMP_ERROR_WRONGLENGTH  = 8,
        !            91:        SNMP_ERROR_WRONGENC     = 9,
        !            92:        SNMP_ERROR_WRONGVALUE   = 10,
        !            93:        SNMP_ERROR_NOCREATION   = 11,
        !            94:        SNMP_ERROR_INCONVALUE   = 12,
        !            95:        SNMP_ERROR_RESUNAVAIL   = 13, /* EGAIN */
        !            96:        SNMP_ERROR_COMMITFAILED = 14,
        !            97:        SNMP_ERROR_UNDOFAILED   = 15,
        !            98:        SNMP_ERROR_AUTHERROR    = 16,
        !            99:        SNMP_ERROR_NOTWRITABLE  = 17,
        !           100:        SNMP_ERROR_INCONNAME    = 18
        !           101: };
        !           102:
        !           103: enum snmp_security_model {
        !           104:        SNMP_SEC_ANY            = 0,
        !           105:        SNMP_SEC_SNMPv1         = 1,
        !           106:        SNMP_SEC_SNMPv2c        = 2,
        !           107:        SNMP_SEC_USM            = 3,
        !           108:        SNMP_SEC_TSM            = 4
        !           109: };
        !           110:
        !           111: struct snmp_agent {
        !           112:        int fd;
        !           113:        enum snmp_version version;
        !           114:        char *community;
        !           115:        int timeout;
        !           116:        int retries;
        !           117: };
        !           118:
        !           119: #define SNMP_MSGFLAG_AUTH      0x01
        !           120: #define SNMP_MSGFLAG_PRIV      0x02
        !           121: #define SNMP_MSGFLAG_SECMASK   (SNMP_MSGFLAG_AUTH | SNMP_MSGFLAG_PRIV)
        !           122: #define SNMP_MSGFLAG_REPORT    0x04
        !           123:
        !           124: #define SNMP_MAX_TIMEWINDOW    150     /* RFC3414 */
        !           125:
        !           126: struct snmp_agent *snmp_connect_v12(int, enum snmp_version, const char *);
        !           127: void snmp_free_agent(struct snmp_agent *);
        !           128: struct ber_element *
        !           129:     snmp_get(struct snmp_agent *agent, struct ber_oid *oid, size_t len);
        !           130: struct ber_element *snmp_getnext(struct snmp_agent *, struct ber_oid *, size_t);
        !           131: struct ber_element *
        !           132:     snmp_getbulk(struct snmp_agent *, struct ber_oid *, size_t, int, int);
        !           133: int snmp_trap(struct snmp_agent *, struct timespec *, struct ber_oid *,
        !           134:     struct ber_element *);
        !           135:
        !           136: #endif /* SNMPD_SNMP_H */