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 /daemon | |
parent | 1e735c038c86294df2ecfbd6a39abcfab4b3e8c3 (diff) |
Basic get/walk support.
Diffstat (limited to 'daemon')
-rw-r--r-- | daemon/snmp-help.c | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/daemon/snmp-help.c b/daemon/snmp-help.c deleted file mode 100644 index 31f8dc6..0000000 --- a/daemon/snmp-help.c +++ /dev/null @@ -1,168 +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> - * - */ - -#include "usuals.h" -#include <errno.h> -#include <syslog.h> - -#include <bsnmp/asn1.h> -#include <bsnmp/snmp.h> - -#include "rrdbotd.h" - -/* Whether we print warnings when loading MIBs or not */ -extern int g_mib_warnings; -extern const char* g_mib_directory; - -static int -parse_mixed_mib(const char* mib, struct asn_oid* oid) -{ - mib_node n; - int ret = 0; - unsigned int sub; - char* next; - char* t; - char* copy; - char* src; - - memset(oid, 0, sizeof(*oid)); - - copy = strdup(mib); - if(!copy) - { - errno = ENOMEM; - return -1; - } - - for(src = copy; src && *src; src = next) - { - next = strchr(src, '.'); - if(next) - { - *next = 0; - next++; - } - - sub = strtoul(src, &t, 10); - - /* An invalid number, try getting a named MIB */ - if(*t || sub < 0) - { - /* Only initializes first time around */ - rb_mib_init(g_mib_directory, g_mib_warnings); - - /* - * If we haven't parsed anything yet, try a symbolic - * search for root - */ - - if(oid->len == 0) - { - n = rb_mib_lookup(src); - if(n) - { - /* That took care of it */ - rb_mib_oid(n, oid); - continue; - } - } - - /* Try a by name search for sub item */ - n = rb_mib_node(oid); - if(n == NULL) - sub = -1; - else - sub = rb_mib_subid(n, src); - } - - /* Make sure this is a valid part */ - if(sub < 0 || (oid->len == 0 && sub < 1) || sub >= ASN_MAXID) - ret = -1; - - /* Too many parts */ - if(oid->len > ASN_MAXOIDLEN) - ret = -1; - - if(ret < 0) - break; - - oid->subs[oid->len] = sub; - oid->len++; - } - - free(copy); - return ret; -} - -int -rb_snmp_parse_mib(const char* mib, struct snmp_value* value) -{ - int ret; - mib_node n; - - value->syntax = SNMP_SYNTAX_NULL; - memset(&(value->v), 0, sizeof(value->v)); - - /* An initial dot */ - if(*mib == '.') - mib++; - - /* - * First try parsing a numeric OID. This will fall - * back to mixed mode MIB's if necassary. Allows us - * to avoid loading all the MIB files when not - * necessary - */ - - ret = parse_mixed_mib(mib, &(value->var)); - - /* Next try a symolic search */ - if(ret == -1) - { - rb_mib_init(g_mib_directory, g_mib_warnings); - - n = rb_mib_lookup(mib); - if(n == NULL) - return -1; - - rb_mib_oid(n, &(value->var)); - return 0; - } - - return ret; -} |