File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / lib / smux.h
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Nov 2 10:09:10 2016 UTC (7 years, 11 months ago) by misho
Branches: quagga, MAIN
CVS tags: v1_0_20160315, HEAD
quagga 1.0.20160315

    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: #include <net-snmp/agent/net-snmp-agent-includes.h>
   26: #include <net-snmp/agent/snmp_vars.h>
   27: 
   28: #include "thread.h"
   29: 
   30: /* Structures here are mostly compatible with UCD SNMP 4.1.1 */
   31: #define MATCH_FAILED     (-1)
   32: #define MATCH_SUCCEEDED  0
   33: 
   34: /* SYNTAX TruthValue from SNMPv2-TC. */
   35: #define SNMP_TRUE  1
   36: #define SNMP_FALSE 2
   37: 
   38: /* SYNTAX RowStatus from SNMPv2-TC. */
   39: #define SNMP_VALID  1
   40: #define SNMP_INVALID 2
   41: 
   42: #define IN_ADDR_SIZE sizeof(struct in_addr)
   43: 
   44: #undef REGISTER_MIB
   45: #define REGISTER_MIB(descr, var, vartype, theoid)		\
   46:     smux_register_mib(descr, (struct variable *)var, sizeof(struct vartype), \
   47:     sizeof(var)/sizeof(struct vartype),			\
   48:     theoid, sizeof(theoid)/sizeof(oid))
   49: 
   50: struct trap_object
   51: {
   52:   int namelen; /* Negative if the object is not indexed */
   53:   oid name[MAX_OID_LEN];
   54: };
   55: 
   56: /* Declare SMUX return value. */
   57: #define SNMP_LOCAL_VARIABLES \
   58:   static long snmp_int_val __attribute__ ((unused)); \
   59:   static struct in_addr snmp_in_addr_val __attribute__ ((unused));
   60: 
   61: #define SNMP_INTEGER(V) \
   62:   ( \
   63:     *var_len = sizeof (snmp_int_val), \
   64:     snmp_int_val = V, \
   65:     (u_char *) &snmp_int_val \
   66:   )
   67: 
   68: #define SNMP_IPADDRESS(V) \
   69:   ( \
   70:     *var_len = sizeof (struct in_addr), \
   71:     snmp_in_addr_val = V, \
   72:     (u_char *) &snmp_in_addr_val \
   73:   )
   74: 
   75: extern void smux_init (struct thread_master *tm);
   76: extern void smux_register_mib(const char *, struct variable *, 
   77:                               size_t, int, oid [], size_t);
   78: extern int smux_header_generic (struct variable *, oid [], size_t *, 
   79:                                 int, size_t *, WriteMethod **);
   80: extern int smux_header_table (struct variable *, oid *, size_t *, 
   81: 			      int, size_t *, WriteMethod **);
   82: 
   83: /* For traps, three OID are provided:
   84: 
   85:  1. The enterprise OID to use (the last argument will be appended to
   86:     it to form the SNMP trap OID)
   87: 
   88:  2. The base OID for objects to be sent in traps.
   89: 
   90:  3. The index OID for objects to be sent in traps. This index is used
   91:     to designate a particular instance of a column.
   92: 
   93:  The provided trap object contains the bindings to be sent with the
   94:  trap. The base OID will be prefixed to the provided OID and, if the
   95:  length is positive, the requested OID is assumed to be a columnar
   96:  object and the index OID will be appended.
   97: 
   98:  The two first arguments are the MIB registry used to locate the trap
   99:  objects.
  100: 
  101:  The use of the arguments may differ depending on the implementation
  102:  used.
  103: */
  104: extern int smux_trap (struct variable *, size_t,
  105: 		      const oid *, size_t,
  106: 		      const oid *, size_t,
  107: 		      const oid *, size_t,
  108: 		      const struct trap_object *, size_t,
  109: 		      u_char);
  110: 
  111: extern int oid_compare (const oid *, int, const oid *, int);
  112: extern void oid2in_addr (oid [], int, struct in_addr *);
  113: extern void *oid_copy (void *, const void *, size_t);
  114: extern void oid_copy_addr (oid [], struct in_addr *, int);
  115: 
  116: #endif /* _ZEBRA_SNMP_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>