Annotation of 43BSDReno/contrib/isode-beta/snmp/mib.c, revision 1.1.1.1

1.1       root        1: /* mib.c - MIB realization */
                      2: 
                      3: #ifndef        lint
                      4: static char *rcsid = "$Header: /f/osi/snmp/RCS/mib.c,v 7.5 90/07/09 14:48:50 mrose Exp $";
                      5: #endif
                      6: 
                      7: /* 
                      8:  * $Header: /f/osi/snmp/RCS/mib.c,v 7.5 90/07/09 14:48:50 mrose Exp $
                      9:  *
                     10:  * Contributed by NYSERNet Inc.  This work was partially supported by the
                     11:  * U.S. Defense Advanced Research Projects Agency and the Rome Air Development
                     12:  * Center of the U.S. Air Force Systems Command under contract number
                     13:  * F30602-88-C-0016.
                     14:  *
                     15:  *
                     16:  * $Log:       mib.c,v $
                     17:  * Revision 7.5  90/07/09  14:48:50  mrose
                     18:  * sync
                     19:  * 
                     20:  * Revision 7.4  90/05/13  16:18:11  mrose
                     21:  * views
                     22:  * 
                     23:  * Revision 7.3  90/02/27  18:49:45  mrose
                     24:  * unix stuff
                     25:  * 
                     26:  * Revision 7.2  90/02/17  10:38:19  mrose
                     27:  * smux
                     28:  * 
                     29:  * Revision 7.1  90/01/11  18:34:14  mrose
                     30:  * real-sync
                     31:  * 
                     32:  * Revision 7.0  89/11/23  22:23:12  mrose
                     33:  * Release 6.0
                     34:  * 
                     35:  */
                     36: 
                     37: /*
                     38:  *                               NOTICE
                     39:  *
                     40:  *    Acquisition, use, and distribution of this module and related
                     41:  *    materials are subject to the restrictions of a license agreement.
                     42:  *    Consult the Preface in the User's Manual for the full terms of
                     43:  *    this agreement.
                     44:  *
                     45:  */
                     46: 
                     47: 
                     48: #include <stdio.h>
                     49: #include "mib.h"
                     50: #ifdef BSD42
                     51: #include <sys/file.h>
                     52: #endif
                     53: #ifdef SYS5
                     54: #include <fcntl.h>
                     55: #endif
                     56: 
                     57: /*    DATA */
                     58: 
                     59: static int     kd;
                     60: 
                     61: 
                     62: struct nlist nl[] = {
                     63:     { "_arptab" },
                     64:     { "_arptab_size" },
                     65:     { "_boottime" },
                     66:     { "_icmpstat" },
                     67:     { "_ifnet" },
                     68:     { "_ipforwarding" },
                     69:     { "_ipstat" },
                     70:     { "_rthashsize" },
                     71:     { "_rthost" },
                     72:     { "_rtnet" },
                     73:     { "_tcb" },
                     74:     { "_tcpstat" },
                     75:     { "_udb" },
                     76:     { "_udpstat" },
                     77:     { "_rtstat" },
                     78: #ifdef BSD44
                     79:     { "_radix_node_head" },
                     80:     { "_iso_systype" },
                     81:     { "_clnp_stat" },
                     82:     { "_esis_stat" },
                     83: #endif
                     84: 
                     85:     NULL
                     86: };
                     87: 
                     88: /*  */
                     89: 
                     90: readmib () {
                     91:     register struct nlist *nz;
                     92: 
                     93:     if (nlist ("/vmunix", nl) == NOTOK)
                     94:        adios ("/vmunix", "unable to nlist");
                     95:     for (nz = nl; nz -> n_name; nz++)
                     96:        if (nz -> n_value == 0)
                     97:            advise (LLOG_EXCEPTIONS, NULLCP, "\"%s\" not in /vmunix (warning)",
                     98:                    nz -> n_name);
                     99: 
                    100:     if ((kd = open ("/dev/kmem", O_RDONLY)) == NOTOK)
                    101:        adios ("/vmunix", "unable to read");
                    102: 
                    103:     init_system ();        /* Internet-standard MIB */
                    104:     init_interfaces ();
                    105:     init_ip ();
                    106:     init_icmp ();
                    107:     init_tcp ();
                    108:     init_udp ();
                    109: 
                    110:     init_clnp ();          /* experimental CLNP group */
                    111: }
                    112: 
                    113: /*  */
                    114: 
                    115: checkmib () {
                    116:     register OT            ot;
                    117: 
                    118:     for (ot = text2obj ("ccitt"); ot; ot = ot -> ot_next)
                    119:        if (ot -> ot_status == OT_MANDATORY
                    120:                && ot -> ot_getfnx == o_generic
                    121:                && ot -> ot_info == NULL)
                    122:            advise (LLOG_EXCEPTIONS, NULLCP,
                    123:                    "variable \"%s.0\" has no value (warning)", ot -> ot_text);
                    124: }
                    125: 
                    126: /*  */
                    127: 
                    128: set_variable (name, newvalue)
                    129: char   *name,
                    130:        *newvalue;
                    131: {
                    132:     caddr_t  value;
                    133:     register OT            ot = text2obj (name);
                    134:     register OS            os;
                    135: 
                    136:     if (ot == NULLOT) {
                    137:        advise (LLOG_EXCEPTIONS, NULLCP, "unknown object \"%s\"", name);
                    138:        return;
                    139:     }
                    140:     if (ot -> ot_getfnx == NULLIFP) {
                    141:        advise (LLOG_EXCEPTIONS, NULLCP, "no getfnx for object \"%s\"",
                    142:                ot -> ot_text);
                    143:        return;
                    144:     }
                    145:     if (ot -> ot_getfnx != o_generic) {
                    146:        advise (LLOG_EXCEPTIONS, NULLCP,
                    147:                "non-generic getfnx for object \"%s\"", ot -> ot_text);
                    148:        return;
                    149:     }
                    150:     if ((os = ot -> ot_syntax) == NULLOS) {
                    151:        advise (LLOG_EXCEPTIONS, NULLCP, "no syntax defined for object \"%s\"",
                    152:                ot -> ot_text);
                    153:        return;
                    154:     }
                    155:     if ((*os -> os_parse) (&value, newvalue) == NOTOK) {
                    156:        advise (LLOG_EXCEPTIONS, NULLCP,
                    157:                "invalid value for variable \"%s.0\": \"%s\"", 
                    158:                ot -> ot_text, newvalue);
                    159:        return;
                    160:     }
                    161:     if (ot -> ot_info) {
                    162:        (*os -> os_free) (ot -> ot_info);
                    163:        ot -> ot_info = NULL;
                    164:     }
                    165:     ot -> ot_info = value;
                    166: }
                    167: 
                    168: /*  */
                    169: 
                    170: int    getkmem (n, buffer, cc)
                    171: struct nlist *n;
                    172: caddr_t        buffer;
                    173: int    cc;
                    174: {
                    175:     if (n -> n_value == 0) {
                    176:        advise (LLOG_EXCEPTIONS, NULLCP, "\"%s\" not in /vmunix", n -> n_name);
                    177:        return NOTOK;
                    178:     }
                    179:     if (lseek (kd, (long) n -> n_value, L_SET) == NOTOK) {
                    180:        advise (LLOG_EXCEPTIONS, "failed", "lseek of 0x%x for \"%s\" in kmem",
                    181:                (long) n -> n_value, n -> n_name);
                    182:        return NOTOK;
                    183:     }
                    184:     if (read (kd, buffer, cc) != cc) {
                    185:        advise (LLOG_EXCEPTIONS, "failed", "read of \"%s\" from kmem",
                    186:                n -> n_name);
                    187:        return NOTOK;
                    188:     }
                    189: 
                    190:     return OK;
                    191: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.