Annotation of 43BSDReno/contrib/isode-beta/snmp/mib.c, revision 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.