diff options
author | Stef Walter <stef@memberwebs.com> | 2006-04-05 03:12:56 +0000 |
---|---|---|
committer | Stef Walter <stef@memberwebs.com> | 2006-04-05 03:12:56 +0000 |
commit | 5268cec90ff428e2588103b6873b4e06e2cc5506 (patch) | |
tree | 8156f6cebd4bad4f5ffd0c4677ea0a28a65bf680 /mib | |
parent | 1e735c038c86294df2ecfbd6a39abcfab4b3e8c3 (diff) |
Basic get/walk support.
Diffstat (limited to 'mib')
-rw-r--r-- | mib/parse-compat.inc.c | 241 |
1 files changed, 0 insertions, 241 deletions
diff --git a/mib/parse-compat.inc.c b/mib/parse-compat.inc.c deleted file mode 100644 index 8f8fc0d..0000000 --- a/mib/parse-compat.inc.c +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 2005, Nate Nielsen - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * * Redistributions in binary form must reproduce the - * above copyright notice, this list of conditions and - * the following disclaimer in the documentation and/or - * other materials provided with the distribution. - * * The names of contributors to this software may not be - * used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * - * CONTRIBUTORS - * Nate Nielsen <nielsen@memberwebs.com> - * - */ - -/* - * This file is not compiled on it's own. It's included into parse.c - * and provides compatibility definitions for making it work without - * the rest of net-snmp - */ - -#include "usuals.h" -#include "rrdbotd.h" - -static int with_warnings = 0; -static int initialized = 0; - -/* ----------------------------------------------------------------------------- - * DEFINITIONS - */ - -#define FALSE 0 -#define TRUE 1 - -/* No need to implement these */ -#define DEBUGMSGTL(x) -#define set_function(tp) - -/* Just return the tree head */ -#define get_tree_head() \ - (tree_head) - -#define snmp_get_do_debugging() (0) - -typedef u_long oid; - -#define NETSNMP_DS_LIBRARY_ID 0 -#define NETSNMP_DS_LIB_MIB_WARNINGS 1 -#define NETSNMP_DS_LIB_MIB_REPLACE 2 -#define NETSNMP_DS_LIB_SAVE_MIB_DESCRS 3 -#define NETSNMP_DS_LIB_MIB_ERRORS 4 -#define NETSNMP_DS_LIB_MIB_PARSE_LABEL 5 -#define NETSNMP_DS_LIB_MIB_COMMENT_TERM 6 - -#define netsnmp_ds_get_boolean(d, v) \ - netsnmp_ds_get_int(d, v) - -static int -netsnmp_ds_get_int(int dummy, int var) -{ - switch(var) - { - case NETSNMP_DS_LIB_MIB_WARNINGS: - return with_warnings; - case NETSNMP_DS_LIB_MIB_REPLACE: - return 0; - case NETSNMP_DS_LIB_SAVE_MIB_DESCRS: - return 0; - case NETSNMP_DS_LIB_MIB_PARSE_LABEL: - return 1; - case NETSNMP_DS_LIB_MIB_COMMENT_TERM: - return 0; - default: - return 0; - } -} - -#define netsnmp_ds_set_int(a, b, c) -#define netsnmp_ds_set_boolean(a, b, c) -#define netsnmp_ds_toggle_boolean(a, b) - -static void -snmp_log(int level, const char* msg, ...) -{ - va_list ap; - - if(level >= LOG_WARNING && !with_warnings) - return; - - va_start(ap, msg); - rb_vmessage(level, 0, msg, ap); - va_end(ap); -} - -/* Only used to open files */ -static void -snmp_log_perror(const char* file) -{ - rb_message(LOG_ERR, "couldn't open file: %s", file); -} - -#define SNMP_FREE(s) do { if (s) { free((void *)s); s=NULL; } } while(0) - -/* ----------------------------------------------------------------------------- - * RRDBOT GLUE CODE - */ - -static void -clear_tree_flags(struct tree *tp) -{ - for( ; tp; tp = tp->next_peer) - { - tp->reported = 0; - if(tp->child_list) - clear_tree_flags(tp->child_list); - } -} - -void -rb_mib_init(const char* dir, int warnings) -{ - if(initialized) - return; - - with_warnings = warnings; - - init_mib_internals(); - add_mibdir(dir); - read_all_mibs(); - - rb_messagex(LOG_DEBUG, "loaded all MIB files"); - initialized = 1; -} - -mib_node -rb_mib_lookup(const char* match) -{ - extern struct tree *tree_head; - struct tree* mib; - - ASSERT(initialized); - - clear_tree_flags(tree_head); - mib = find_best_tree_node(match, NULL, NULL); - return (mib_node)mib; -} - -int -rb_mib_subid(mib_node n, const char* name) -{ - struct tree *parent = (struct tree*)n; - struct tree *tp = NULL; - - ASSERT(initialized); - - for(tp = parent->child_list; tp; tp = tp->next_peer) - { - if(strcasecmp(name, tp->label) == 0) - return tp->subid; - } - - return -1; -} - -void -rb_mib_oid(mib_node n, struct asn_oid* oid) -{ - struct tree* mib = (struct tree*)n; - struct tree *tp = NULL; - int len; - - ASSERT(mib); - - /* Figure out where to start */ - len = 0; - for(tp = mib; tp; tp = tp->parent) - len++; - - oid->len = len; - for(tp = mib; tp; tp = tp->parent) - oid->subs[--len] = tp->subid; -} - -mib_node -rb_mib_node(struct asn_oid* oid) -{ - extern struct tree *tree_head; - struct tree *tp = NULL; - asn_subid_t subid; - int i; - - ASSERT(initialized); - - for(i = 0, tp = tree_head; tp && i < oid->len; - i++, tp = tp ? tp->child_list : NULL) - { - subid = oid->subs[i]; - - while(tp && tp->subid != subid) - tp = tp->next_peer; - - /* Did we find a match? */ - if(tp && i == oid->len - 1) - break; - } - - return tp; -} - -void -rb_mib_uninit() -{ - if(initialized) { - unload_all_mibs(); - rb_messagex(LOG_DEBUG, "unloaded all MIB files"); - } - initialized = 0; -} |