Annotation of 43BSDReno/contrib/isode-beta/snmp/icmp.c, revision 1.1

1.1     ! root        1: /* icmp.c - MIB realization of the ICMP group */
        !             2: 
        !             3: #ifndef        lint
        !             4: static char *rcsid = "$Header: /f/osi/snmp/RCS/icmp.c,v 7.1 90/02/17 10:38:06 mrose Exp $";
        !             5: #endif
        !             6: 
        !             7: /* 
        !             8:  * $Header: /f/osi/snmp/RCS/icmp.c,v 7.1 90/02/17 10:38:06 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:       icmp.c,v $
        !            17:  * Revision 7.1  90/02/17  10:38:06  mrose
        !            18:  * smux
        !            19:  * 
        !            20:  * Revision 7.0  89/11/23  22:23:02  mrose
        !            21:  * Release 6.0
        !            22:  * 
        !            23:  */
        !            24: 
        !            25: /*
        !            26:  *                               NOTICE
        !            27:  *
        !            28:  *    Acquisition, use, and distribution of this module and related
        !            29:  *    materials are subject to the restrictions of a license agreement.
        !            30:  *    Consult the Preface in the User's Manual for the full terms of
        !            31:  *    this agreement.
        !            32:  *
        !            33:  */
        !            34: 
        !            35: 
        !            36: #include <stdio.h>
        !            37: #include "mib.h"
        !            38: 
        !            39: #include "internet.h"
        !            40: #ifdef BSD44
        !            41: #include <machine/machparam.h>
        !            42: #endif
        !            43: #include <netinet/in_systm.h>
        !            44: #include <netinet/ip.h>
        !            45: #include <netinet/ip_icmp.h>
        !            46: #include <netinet/icmp_var.h>
        !            47: 
        !            48: /*  */
        !            49: 
        !            50: static struct icmpstat icmpstat;
        !            51: 
        !            52: /*  */
        !            53: 
        !            54: #define        icmpInMsgs      0
        !            55: #define        icmpInErrors    1
        !            56: #define        icmpInDestUnreachs 2
        !            57: #define        icmpInTimeExcds 3
        !            58: #define        icmpInParmProbs 4
        !            59: #define        icmpInSrcQuenchs 5
        !            60: #define        icmpInRedirects 6
        !            61: #define        icmpInEchos     7
        !            62: #define        icmpInEchoReps  8
        !            63: #define        icmpInTimestamps 9
        !            64: #define        icmpInTimestampReps 10
        !            65: #define        icmpInAddrMasks 11
        !            66: #define        icmpInAddrMaskReps 12
        !            67: #define        icmpOutMsgs     13
        !            68: #define        icmpOutErrors   14
        !            69: #define        icmpOutDestUnreachs 15
        !            70: #define        icmpOutTimeExcds 16
        !            71: #define        icmpOutParmProbs 17
        !            72: #define        icmpOutSrcQuenchs 18
        !            73: #define        icmpOutRedirects 19
        !            74: #define        icmpOutEchos    20
        !            75: #define        icmpOutEchoReps 21
        !            76: #define        icmpOutTimestamps 22
        !            77: #define        icmpOutTimestampReps 23
        !            78: #define        icmpOutAddrMasks 24
        !            79: #define        icmpOutAddrMaskReps 25
        !            80: 
        !            81: 
        !            82: static int  o_icmp (oi, v, offset)
        !            83: OI     oi;
        !            84: register struct type_SNMP_VarBind *v;
        !            85: int    offset;
        !            86: {
        !            87:     int            ifvar;
        !            88:     register struct icmpstat *icps = &icmpstat;
        !            89:     register OID    oid = oi -> oi_name;
        !            90:     register OT            ot = oi -> oi_type;
        !            91:     static   int lastq = -1;
        !            92: 
        !            93:     ifvar = (int) ot -> ot_info;
        !            94:     switch (offset) {
        !            95:        case type_SNMP_PDUs_get__request:
        !            96:            if (oid -> oid_nelem != ot -> ot_name -> oid_nelem + 1
        !            97:                    || oid -> oid_elements[oid -> oid_nelem - 1] != 0)
        !            98:                return int_SNMP_error__status_noSuchName;
        !            99:            break;
        !           100: 
        !           101:        case type_SNMP_PDUs_get__next__request:
        !           102:            if (oid -> oid_nelem == ot -> ot_name -> oid_nelem) {
        !           103:                OID     new;
        !           104: 
        !           105:                if ((new = oid_extend (oid, 1)) == NULLOID)
        !           106:                    return int_SNMP_error__status_genErr;
        !           107:                new -> oid_elements[new -> oid_nelem - 1] = 0;
        !           108: 
        !           109:                if (v -> name)
        !           110:                    free_SNMP_ObjectName (v -> name);
        !           111:                v -> name = new;
        !           112:            }
        !           113:            else
        !           114:                return NOTOK;
        !           115:            break;
        !           116: 
        !           117:        default:
        !           118:            return int_SNMP_error__status_genErr;
        !           119:     }
        !           120: 
        !           121:     if (quantum != lastq) {
        !           122:        lastq = quantum;
        !           123: 
        !           124:        if (getkmem (nl + N_ICMPSTAT, (caddr_t) icps, sizeof *icps) == NOTOK)
        !           125:            return int_SNMP_error__status_genErr;
        !           126:     }
        !           127: 
        !           128:     switch (ifvar) {
        !           129:        case icmpInMsgs:
        !           130:            return o_integer (oi, v, icps -> icps_checksum
        !           131:                                   + icps -> icps_badlen
        !           132:                                   + icps -> icps_inhist[ICMP_ECHOREPLY]
        !           133:                                   + icps -> icps_inhist[ICMP_UNREACH]
        !           134:                                   + icps -> icps_inhist[ICMP_SOURCEQUENCH]
        !           135:                                   + icps -> icps_inhist[ICMP_REDIRECT]
        !           136:                                   + icps -> icps_inhist[ICMP_ECHO]
        !           137:                                   + icps -> icps_inhist[ICMP_TIMXCEED]
        !           138:                                   + icps -> icps_inhist[ICMP_PARAMPROB]
        !           139:                                   + icps -> icps_inhist[ICMP_TSTAMP]
        !           140:                                   + icps -> icps_inhist[ICMP_TSTAMPREPLY]
        !           141:                                   + icps -> icps_inhist[ICMP_MASKREQ]
        !           142:                                   + icps -> icps_inhist[ICMP_MASKREPLY]);
        !           143: 
        !           144:        case icmpInErrors:
        !           145:            return o_integer (oi, v, icps -> icps_badcode
        !           146:                                   + icps -> icps_checksum
        !           147:                                   + icps -> icps_badlen);
        !           148: 
        !           149:        case icmpInDestUnreachs:
        !           150:            return o_integer (oi, v, icps -> icps_inhist[ICMP_UNREACH]);
        !           151: 
        !           152:        case icmpInTimeExcds:
        !           153:            return o_integer (oi, v, icps -> icps_inhist[ICMP_TIMXCEED]);
        !           154: 
        !           155:        case icmpInParmProbs:
        !           156:            return o_integer (oi, v, icps -> icps_inhist[ICMP_PARAMPROB]);
        !           157: 
        !           158:        case icmpInSrcQuenchs:
        !           159:            return o_integer (oi, v, icps -> icps_inhist[ICMP_SOURCEQUENCH]);
        !           160: 
        !           161:        case icmpInRedirects:
        !           162:            return o_integer (oi, v, icps -> icps_inhist[ICMP_REDIRECT]);
        !           163: 
        !           164:        case icmpInEchos:
        !           165:            return o_integer (oi, v, icps -> icps_inhist[ICMP_ECHO]);
        !           166: 
        !           167:        case icmpInEchoReps:
        !           168:            return o_integer (oi, v, icps -> icps_inhist[ICMP_ECHOREPLY]);
        !           169: 
        !           170:        case icmpInTimestamps:
        !           171:            return o_integer (oi, v, icps -> icps_inhist[ICMP_TSTAMP]);
        !           172: 
        !           173:        case icmpInTimestampReps:
        !           174:            return o_integer (oi, v, icps -> icps_inhist[ICMP_TSTAMPREPLY]);
        !           175: 
        !           176:        case icmpInAddrMasks:
        !           177:            return o_integer (oi, v, icps -> icps_inhist[ICMP_MASKREQ]);
        !           178: 
        !           179:        case icmpInAddrMaskReps:
        !           180:            return o_integer (oi, v, icps -> icps_inhist[ICMP_MASKREPLY]);
        !           181: 
        !           182:        case icmpOutMsgs:
        !           183:            return o_integer (oi, v, icps -> icps_error + icps -> icps_reflect);
        !           184: 
        !           185:        case icmpOutErrors:
        !           186:            return o_integer (oi, v, icps -> icps_error);
        !           187: 
        !           188:        case icmpOutDestUnreachs:
        !           189:            return o_integer (oi, v, icps -> icps_outhist[ICMP_UNREACH]);
        !           190: 
        !           191:        case icmpOutTimeExcds:
        !           192:            return o_integer (oi, v, icps -> icps_outhist[ICMP_TIMXCEED]);
        !           193: 
        !           194:        case icmpOutParmProbs:
        !           195:            return o_integer (oi, v, icps -> icps_outhist[ICMP_PARAMPROB]);
        !           196: 
        !           197:        case icmpOutSrcQuenchs:
        !           198:            return o_integer (oi, v, icps -> icps_outhist[ICMP_SOURCEQUENCH]);
        !           199: 
        !           200:        case icmpOutRedirects:
        !           201:            return o_integer (oi, v, icps -> icps_outhist[ICMP_REDIRECT]);
        !           202: 
        !           203:        case icmpOutEchos:
        !           204:            return o_integer (oi, v, icps -> icps_outhist[ICMP_ECHO]);
        !           205: 
        !           206:        case icmpOutEchoReps:
        !           207:            return o_integer (oi, v, icps -> icps_outhist[ICMP_ECHOREPLY]);
        !           208: 
        !           209:        case icmpOutTimestamps:
        !           210:            return o_integer (oi, v, icps -> icps_outhist[ICMP_TSTAMP]);
        !           211: 
        !           212:        case icmpOutTimestampReps:
        !           213:            return o_integer (oi, v, icps -> icps_outhist[ICMP_TSTAMPREPLY]);
        !           214: 
        !           215:        case icmpOutAddrMasks:
        !           216:            return o_integer (oi, v, icps -> icps_outhist[ICMP_MASKREQ]);
        !           217: 
        !           218:        case icmpOutAddrMaskReps:
        !           219:            return o_integer (oi, v, icps -> icps_outhist[ICMP_MASKREPLY]);
        !           220: 
        !           221:        default:
        !           222:            return int_SNMP_error__status_noSuchName;
        !           223:     }
        !           224: }
        !           225: 
        !           226: /*  */
        !           227: 
        !           228: init_icmp () {
        !           229:     register OT            ot;
        !           230: 
        !           231:     if (ot = text2obj ("icmpInMsgs"))
        !           232:        ot -> ot_getfnx = o_icmp,
        !           233:        ot -> ot_info = (caddr_t) icmpInMsgs;
        !           234:     if (ot = text2obj ("icmpInErrors"))
        !           235:        ot -> ot_getfnx = o_icmp,
        !           236:        ot -> ot_info = (caddr_t) icmpInErrors;
        !           237:     if (ot = text2obj ("icmpInDestUnreachs"))
        !           238:        ot -> ot_getfnx = o_icmp,
        !           239:        ot -> ot_info = (caddr_t) icmpInDestUnreachs;
        !           240:     if (ot = text2obj ("icmpInTimeExcds"))
        !           241:        ot -> ot_getfnx = o_icmp,
        !           242:        ot -> ot_info = (caddr_t) icmpInTimeExcds;
        !           243:     if (ot = text2obj ("icmpInParmProbs"))
        !           244:        ot -> ot_getfnx = o_icmp,
        !           245:        ot -> ot_info = (caddr_t) icmpInParmProbs;
        !           246:     if (ot = text2obj ("icmpInSrcQuenchs"))
        !           247:        ot -> ot_getfnx = o_icmp,
        !           248:        ot -> ot_info = (caddr_t) icmpInSrcQuenchs;
        !           249:     if (ot = text2obj ("icmpInRedirects"))
        !           250:        ot -> ot_getfnx = o_icmp,
        !           251:        ot -> ot_info = (caddr_t) icmpInRedirects;
        !           252:     if (ot = text2obj ("icmpInEchos"))
        !           253:        ot -> ot_getfnx = o_icmp,
        !           254:        ot -> ot_info = (caddr_t) icmpInEchos;
        !           255:     if (ot = text2obj ("icmpInEchoReps"))
        !           256:        ot -> ot_getfnx = o_icmp,
        !           257:        ot -> ot_info = (caddr_t) icmpInEchoReps;
        !           258:     if (ot = text2obj ("icmpInTimestamps"))
        !           259:        ot -> ot_getfnx = o_icmp,
        !           260:        ot -> ot_info = (caddr_t) icmpInTimestamps;
        !           261:     if (ot = text2obj ("icmpInTimestampReps"))
        !           262:        ot -> ot_getfnx = o_icmp,
        !           263:        ot -> ot_info = (caddr_t) icmpInTimestampReps;
        !           264:     if (ot = text2obj ("icmpInAddrMasks"))
        !           265:        ot -> ot_getfnx = o_icmp,
        !           266:        ot -> ot_info = (caddr_t) icmpInAddrMasks;
        !           267:     if (ot = text2obj ("icmpInAddrMaskReps"))
        !           268:        ot -> ot_getfnx = o_icmp,
        !           269:        ot -> ot_info = (caddr_t) icmpInAddrMaskReps;
        !           270:     if (ot = text2obj ("icmpOutMsgs"))
        !           271:        ot -> ot_getfnx = o_icmp,
        !           272:        ot -> ot_info = (caddr_t) icmpOutMsgs;
        !           273:     if (ot = text2obj ("icmpOutErrors"))
        !           274:        ot -> ot_getfnx = o_icmp,
        !           275:        ot -> ot_info = (caddr_t) icmpOutErrors;
        !           276:     if (ot = text2obj ("icmpOutDestUnreachs"))
        !           277:        ot -> ot_getfnx = o_icmp,
        !           278:        ot -> ot_info = (caddr_t) icmpOutDestUnreachs;
        !           279:     if (ot = text2obj ("icmpOutTimeExcds"))
        !           280:        ot -> ot_getfnx = o_icmp,
        !           281:        ot -> ot_info = (caddr_t) icmpOutTimeExcds;
        !           282:     if (ot = text2obj ("icmpOutParmProbs"))
        !           283:        ot -> ot_getfnx = o_icmp,
        !           284:        ot -> ot_info = (caddr_t) icmpOutParmProbs;
        !           285:     if (ot = text2obj ("icmpOutSrcQuenchs"))
        !           286:        ot -> ot_getfnx = o_icmp,
        !           287:        ot -> ot_info = (caddr_t) icmpOutSrcQuenchs;
        !           288:     if (ot = text2obj ("icmpOutRedirects"))
        !           289:        ot -> ot_getfnx = o_icmp,
        !           290:        ot -> ot_info = (caddr_t) icmpOutRedirects;
        !           291:     if (ot = text2obj ("icmpOutEchos"))
        !           292:        ot -> ot_getfnx = o_icmp,
        !           293:        ot -> ot_info = (caddr_t) icmpOutEchos;
        !           294:     if (ot = text2obj ("icmpOutEchoReps"))
        !           295:        ot -> ot_getfnx = o_icmp,
        !           296:        ot -> ot_info = (caddr_t) icmpOutEchoReps;
        !           297:     if (ot = text2obj ("icmpOutTimestamps"))
        !           298:        ot -> ot_getfnx = o_icmp,
        !           299:        ot -> ot_info = (caddr_t) icmpOutTimestamps;
        !           300:     if (ot = text2obj ("icmpOutTimestampReps"))
        !           301:        ot -> ot_getfnx = o_icmp,
        !           302:        ot -> ot_info = (caddr_t) icmpOutTimestampReps;
        !           303:     if (ot = text2obj ("icmpOutAddrMasks"))
        !           304:        ot -> ot_getfnx = o_icmp,
        !           305:        ot -> ot_info = (caddr_t) icmpOutAddrMasks;
        !           306:     if (ot = text2obj ("icmpOutAddrMaskReps"))
        !           307:        ot -> ot_getfnx = o_icmp,
        !           308:        ot -> ot_info = (caddr_t) icmpOutAddrMaskReps;
        !           309: }

unix.superglobalmegacorp.com

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