Annotation of embedaddon/quagga/lib/smux.h, revision 1.1
1.1 ! misho 1: /* SNMP support
! 2: * Copyright (C) 1999 Kunihiro Ishiguro <kunihiro@zebra.org>
! 3: *
! 4: * This file is part of GNU Zebra.
! 5: *
! 6: * GNU Zebra is free software; you can redistribute it and/or modify it
! 7: * under the terms of the GNU General Public License as published by the
! 8: * Free Software Foundation; either version 2, or (at your option) any
! 9: * later version.
! 10: *
! 11: * GNU Zebra is distributed in the hope that it will be useful, but
! 12: * WITHOUT ANY WARRANTY; without even the implied warranty of
! 13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
! 14: * General Public License for more details.
! 15: *
! 16: * You should have received a copy of the GNU General Public License
! 17: * along with GNU Zebra; see the file COPYING. If not, write to the Free
! 18: * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! 19: * 02111-1307, USA.
! 20: */
! 21:
! 22: #ifndef _ZEBRA_SNMP_H
! 23: #define _ZEBRA_SNMP_H
! 24:
! 25: #define SMUX_PORT_DEFAULT 199
! 26:
! 27: #define SMUXMAXPKTSIZE 1500
! 28: #define SMUXMAXSTRLEN 256
! 29:
! 30: #define SMUX_OPEN (ASN_APPLICATION | ASN_CONSTRUCTOR | 0)
! 31: #define SMUX_CLOSE (ASN_APPLICATION | ASN_PRIMITIVE | 1)
! 32: #define SMUX_RREQ (ASN_APPLICATION | ASN_CONSTRUCTOR | 2)
! 33: #define SMUX_RRSP (ASN_APPLICATION | ASN_PRIMITIVE | 3)
! 34: #define SMUX_SOUT (ASN_APPLICATION | ASN_PRIMITIVE | 4)
! 35:
! 36: #define SMUX_GET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0)
! 37: #define SMUX_GETNEXT (ASN_CONTEXT | ASN_CONSTRUCTOR | 1)
! 38: #define SMUX_GETRSP (ASN_CONTEXT | ASN_CONSTRUCTOR | 2)
! 39: #define SMUX_SET (ASN_CONTEXT | ASN_CONSTRUCTOR | 3)
! 40: #define SMUX_TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 4)
! 41:
! 42: #define SMUX_MAX_FAILURE 3
! 43:
! 44: /* Structures here are mostly compatible with UCD SNMP 4.1.1 */
! 45: #define MATCH_FAILED (-1)
! 46: #define MATCH_SUCCEEDED 0
! 47:
! 48: /* SYNTAX TruthValue from SNMPv2-TC. */
! 49: #define SNMP_TRUE 1
! 50: #define SNMP_FALSE 2
! 51:
! 52: /* SYNTAX RowStatus from SNMPv2-TC. */
! 53: #define SNMP_VALID 1
! 54: #define SNMP_INVALID 2
! 55:
! 56: #define IN_ADDR_SIZE sizeof(struct in_addr)
! 57:
! 58: struct variable;
! 59:
! 60: #define REGISTER_MIB(descr, var, vartype, theoid) \
! 61: smux_register_mib(descr, (struct variable *)var, sizeof(struct vartype), \
! 62: sizeof(var)/sizeof(struct vartype), \
! 63: theoid, sizeof(theoid)/sizeof(oid))
! 64:
! 65: typedef int (WriteMethod)(int action,
! 66: u_char *var_val,
! 67: u_char var_val_type,
! 68: size_t var_val_len,
! 69: u_char *statP,
! 70: oid *name,
! 71: size_t length,
! 72: struct variable *v);
! 73:
! 74: typedef u_char *(FindVarMethod)(struct variable *v,
! 75: oid *name,
! 76: size_t *length,
! 77: int exact,
! 78: size_t *var_len,
! 79: WriteMethod **write_method);
! 80:
! 81: /* SNMP variable */
! 82: struct variable
! 83: {
! 84: /* Index of the MIB.*/
! 85: u_char magic;
! 86:
! 87: /* Type of variable. */
! 88: char type;
! 89:
! 90: /* Access control list. */
! 91: u_short acl;
! 92:
! 93: /* Callback function. */
! 94: FindVarMethod *findVar;
! 95:
! 96: /* Suffix of the MIB. */
! 97: int namelen;
! 98: oid name[MAX_OID_LEN];
! 99: };
! 100:
! 101: /* SNMP tree. */
! 102: struct subtree
! 103: {
! 104: /* Tree's oid. */
! 105: oid name[MAX_OID_LEN];
! 106: u_char name_len;
! 107:
! 108: /* List of the variables. */
! 109: struct variable *variables;
! 110:
! 111: /* Length of the variables list. */
! 112: int variables_num;
! 113:
! 114: /* Width of the variables list. */
! 115: int variables_width;
! 116:
! 117: /* Registered flag. */
! 118: int registered;
! 119: };
! 120:
! 121: struct trap_object
! 122: {
! 123: FindVarMethod *findVar;
! 124: int namelen;
! 125: oid name[MAX_OID_LEN];
! 126: };
! 127:
! 128: /* Declare SMUX return value. */
! 129: #define SNMP_LOCAL_VARIABLES \
! 130: static long snmp_int_val; \
! 131: static struct in_addr snmp_in_addr_val;
! 132:
! 133: #define SNMP_INTEGER(V) \
! 134: ( \
! 135: *var_len = sizeof (snmp_int_val), \
! 136: snmp_int_val = V, \
! 137: (u_char *) &snmp_int_val \
! 138: )
! 139:
! 140: #define SNMP_IPADDRESS(V) \
! 141: ( \
! 142: *var_len = sizeof (struct in_addr), \
! 143: snmp_in_addr_val = V, \
! 144: (u_char *) &snmp_in_addr_val \
! 145: )
! 146:
! 147: extern void smux_init (struct thread_master *tm);
! 148: extern void smux_start (void);
! 149: extern void smux_register_mib(const char *, struct variable *,
! 150: size_t, int, oid [], size_t);
! 151: extern int smux_header_generic (struct variable *, oid [], size_t *,
! 152: int, size_t *, WriteMethod **);
! 153: extern int smux_trap (const oid *, size_t, const oid *, size_t,
! 154: const struct trap_object *,
! 155: size_t, unsigned int, u_char);
! 156: extern int oid_compare (oid *, int, oid *, int);
! 157: extern void oid2in_addr (oid [], int, struct in_addr *);
! 158: extern void *oid_copy (void *, const void *, size_t);
! 159: extern void oid_copy_addr (oid [], struct in_addr *, int);
! 160:
! 161: #endif /* _ZEBRA_SNMP_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>