finally in sync with archive
[bcm963xx.git] / userapps / opensource / net-snmp / agent / auto_nlist.c
diff --git a/userapps/opensource/net-snmp/agent/auto_nlist.c b/userapps/opensource/net-snmp/agent/auto_nlist.c
deleted file mode 100755 (executable)
index 7a7a8e0..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-#include <net-snmp/net-snmp-config.h>
-
-#ifdef CAN_USE_NLIST
-#if HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
-#if HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <stdio.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <netinet/in.h>
-#ifdef HAVE_NLIST_H
-#include <nlist.h>
-#endif
-#if HAVE_KVM_H
-#include <kvm.h>
-#endif
-
-#if HAVE_DMALLOC_H
-#include <dmalloc.h>
-#endif
-
-#include <net-snmp/agent/auto_nlist.h>
-#include "autonlist.h"
-#include "kernel.h"
-
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/ds_agent.h>
-
-struct autonlist *nlists = 0;
-static void     init_nlist(struct nlist *);
-
-long
-auto_nlist_value(const char *string)
-{
-    struct autonlist **ptr, *it = 0;
-    int             cmp;
-
-    if (string == 0)
-        return 0;
-
-    ptr = &nlists;
-    while (*ptr != 0 && it == 0) {
-        cmp = strcmp((*ptr)->symbol, string);
-        if (cmp == 0)
-            it = *ptr;
-        else if (cmp < 0) {
-            ptr = &((*ptr)->left);
-        } else {
-            ptr = &((*ptr)->right);
-        }
-    }
-    if (*ptr == 0) {
-        *ptr = (struct autonlist *) malloc(sizeof(struct autonlist));
-        it = *ptr;
-        it->left = 0;
-        it->right = 0;
-        it->symbol = (char *) malloc(strlen(string) + 1);
-        strcpy(it->symbol, string);
-        /*
-         * allocate an extra byte for inclusion of a preceding '_' later 
-         */
-        it->nl[0].n_name = (char *) malloc(strlen(string) + 2);
-#ifdef aix4
-        strcpy(it->nl[0].n_name, string);
-#else
-        sprintf(it->nl[0].n_name, "_%s", string);
-#endif
-        it->nl[1].n_name = 0;
-        init_nlist(it->nl);
-#ifndef aix4
-        if (it->nl[0].n_type == 0) {
-            strcpy(it->nl[0].n_name, string);
-            init_nlist(it->nl);
-        }
-#endif
-        if (it->nl[0].n_type == 0) {
-            if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
-                                       NETSNMP_DS_AGENT_NO_ROOT_ACCESS)) {
-                snmp_log(LOG_ERR, "nlist err: neither %s nor _%s found.\n",
-                         string, string);
-           }
-            return (-1);
-        } else {
-            DEBUGMSGTL(("auto_nlist", "nlist:  found symbol %s at %x.\n",
-                        it->symbol, it->nl[0].n_value));
-            return (it->nl[0].n_value);
-        }
-    } else
-        return (it->nl[0].n_value);
-}
-
-int
-auto_nlist(const char *string, char *var, int size)
-{
-    long            result;
-    int             ret;
-    result = auto_nlist_value(string);
-    if (result != -1) {
-        if (var != NULL) {
-            ret = klookup(result, var, size);
-            if (!ret)
-                snmp_log(LOG_ERR,
-                         "auto_nlist failed on %s at location %lx\n",
-                         string, result);
-            return ret;
-        } else
-            return 1;
-    }
-    return 0;
-}
-
-static void
-init_nlist(struct nlist nl[])
-{
-#ifdef CAN_USE_NLIST
-    int             ret;
-#if HAVE_KVM_OPENFILES
-    kvm_t          *kernel;
-    char            kvm_errbuf[4096];
-
-    if ((kernel = kvm_openfiles(KERNEL_LOC, NULL, NULL, O_RDONLY, kvm_errbuf))
-       == NULL) {
-        if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
-                                  NETSNMP_DS_AGENT_NO_ROOT_ACCESS)) {
-            return;
-       } else {
-            snmp_log_perror("kvm_openfiles");
-            snmp_log(LOG_ERR, "kvm_openfiles: %s\n", kvm_errbuf);
-            exit(1);
-        }
-    }
-    if ((ret = kvm_nlist(kernel, nl)) == -1) {
-        if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
-                                  NETSNMP_DS_AGENT_NO_ROOT_ACCESS)) {
-            return;
-       } else {
-            snmp_log_perror("kvm_nlist");
-            exit(1);
-        }
-    }
-    kvm_close(kernel);
-#else                           /* ! HAVE_KVM_OPENFILES */
-#if defined(aix4) && defined(HAVE_KNLIST)
-    if (knlist(nl, 1, sizeof(struct nlist)) == -1) {
-        DEBUGMSGTL(("auto_nlist", "knlist failed on symbol:  %s\n",
-                    nl[0].n_name));
-        if (errno == EFAULT) {
-            nl[0].n_type = 0;
-            nl[0].n_value = 0;
-        } else {
-            snmp_log_perror("knlist");
-            if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
-                                      NETSNMP_DS_AGENT_NO_ROOT_ACCESS)) {
-                return;
-           } else {
-                exit(1);
-           }
-        }
-    }
-#else
-    if ((ret = nlist(KERNEL_LOC, nl)) == -1) {
-        if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
-                                  NETSNMP_DS_AGENT_NO_ROOT_ACCESS)) {
-            return;
-       } else {
-            snmp_log_perror("nlist");
-            exit(1);
-        }
-    }
-#endif                          /*aix4 */
-#endif                          /* ! HAVE_KVM_OPENFILES */
-    for (ret = 0; nl[ret].n_name != NULL; ret++) {
-#ifdef aix4
-        if (nl[ret].n_type == 0 && nl[ret].n_value != 0)
-            nl[ret].n_type = 1;
-#endif
-        if (nl[ret].n_type == 0) {
-            if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
-                                       NETSNMP_DS_AGENT_NO_ROOT_ACCESS)) {
-                DEBUGMSGTL(("auto_nlist", "nlist err:  %s not found\n",
-                            nl[ret].n_name));
-           }
-        } else {
-            DEBUGMSGTL(("auto_nlist", "nlist: %s 0x%X\n", nl[ret].n_name,
-                        (unsigned int) nl[ret].n_value));
-        }
-    }
-#endif                          /* CAN_USE_NLIST */
-}
-
-int
-KNLookup(struct nlist nl[], int nl_which, char *buf, int s)
-{
-    struct nlist   *nlp = &nl[nl_which];
-
-    if (nlp->n_value == 0) {
-        snmp_log(LOG_ERR, "Accessing non-nlisted variable: %s\n",
-                 nlp->n_name);
-        nlp->n_value = -1;      /* only one error message ... */
-        return 0;
-    }
-    if (nlp->n_value == -1)
-        return 0;
-
-    return klookup(nlp->n_value, buf, s);
-}
-
-#ifdef TESTING
-void
-auto_nlist_print_tree(int indent, struct autonlist *ptr)
-{
-    char            buf[1024];
-    if (indent == -2) {
-        snmp_log(LOG_ERR, "nlist tree:\n");
-        auto_nlist_print_tree(12, nlists);
-    } else {
-        if (ptr == 0)
-            return;
-        sprintf(buf, "%%%ds\n", indent);
-        /*
-         * DEBUGMSGTL(("auto_nlist", "buf: %s\n",buf)); 
-         */
-        DEBUGMSGTL(("auto_nlist", buf, ptr->symbol));
-        auto_nlist_print_tree(indent + 2, ptr->left);
-        auto_nlist_print_tree(indent + 2, ptr->right);
-    }
-}
-#endif
-#else                           /* !CAN_USE_NLIST */
-int
-auto_nlist_noop(void)
-{
-    return 0;
-}
-#endif                          /* CAN_USE_NLIST */