⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icmp.c

📁 开发snmp的开发包有两个开放的SNMP开发库
💻 C
📖 第 1 页 / 共 2 页
字号:
            netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT);            continue;	}        ret_value = icmpstat;        break;#elif defined (WIN32) || defined (cygwin)    case ICMPINMSGS:        ret_value = icmpstat.stats.icmpInStats.dwMsgs;        break;    case ICMPINERRORS:        ret_value = icmpstat.stats.icmpInStats.dwErrors;        break;    case ICMPINDESTUNREACHS:        ret_value = icmpstat.stats.icmpInStats.dwDestUnreachs;        break;    case ICMPINTIMEEXCDS:        ret_value = icmpstat.stats.icmpInStats.dwTimeExcds;        break;    case ICMPINPARMPROBS:        ret_value = icmpstat.stats.icmpInStats.dwParmProbs;        break;    case ICMPINSRCQUENCHS:        ret_value = icmpstat.stats.icmpInStats.dwSrcQuenchs;        break;    case ICMPINREDIRECTS:        ret_value = icmpstat.stats.icmpInStats.dwRedirects;        break;    case ICMPINECHOS:        ret_value = icmpstat.stats.icmpInStats.dwEchos;        break;    case ICMPINECHOREPS:        ret_value = icmpstat.stats.icmpInStats.dwEchoReps;        break;    case ICMPINTIMESTAMPS:        ret_value = icmpstat.stats.icmpInStats.dwTimestamps;        break;    case ICMPINTIMESTAMPREPS:        ret_value = icmpstat.stats.icmpInStats.dwTimestampReps;        break;    case ICMPINADDRMASKS:        ret_value = icmpstat.stats.icmpInStats.dwAddrMasks;        break;    case ICMPINADDRMASKREPS:        ret_value = icmpstat.stats.icmpInStats.dwAddrMaskReps;        break;    case ICMPOUTMSGS:        ret_value = icmpstat.stats.icmpOutStats.dwMsgs;        break;    case ICMPOUTERRORS:        ret_value = icmpstat.stats.icmpOutStats.dwErrors;        break;    case ICMPOUTDESTUNREACHS:        ret_value = icmpstat.stats.icmpOutStats.dwDestUnreachs;        break;    case ICMPOUTTIMEEXCDS:        ret_value = icmpstat.stats.icmpOutStats.dwTimeExcds;        break;    case ICMPOUTPARMPROBS:        ret_value = icmpstat.stats.icmpOutStats.dwParmProbs;        break;    case ICMPOUTSRCQUENCHS:        ret_value = icmpstat.stats.icmpOutStats.dwSrcQuenchs;        break;    case ICMPOUTREDIRECTS:        ret_value = icmpstat.stats.icmpOutStats.dwRedirects;        break;    case ICMPOUTECHOS:        ret_value = icmpstat.stats.icmpOutStats.dwEchos;        break;    case ICMPOUTECHOREPS:        ret_value = icmpstat.stats.icmpOutStats.dwEchoReps;        break;    case ICMPOUTTIMESTAMPS:        ret_value = icmpstat.stats.icmpOutStats.dwTimestamps;        break;    case ICMPOUTTIMESTAMPREPS:        ret_value = icmpstat.stats.icmpOutStats.dwTimestampReps;        break;    case ICMPOUTADDRMASKS:        ret_value = icmpstat.stats.icmpOutStats.dwAddrMasks;        break;    case ICMPOUTADDRMASKREPS:        ret_value = icmpstat.stats.icmpOutStats.dwAddrMaskReps;        break;#elif defined(_USE_PERFSTAT_PROTOCOL)    case ICMPINMSGS:        ret_value = ps_proto.u.icmp.received;        break;    case ICMPINERRORS:        ret_value = ps_proto.u.icmp.errors;        break;    case ICMPINDESTUNREACHS:    case ICMPINTIMEEXCDS:    case ICMPINPARMPROBS:    case ICMPINSRCQUENCHS:    case ICMPINREDIRECTS:    case ICMPINECHOS:    case ICMPINECHOREPS:    case ICMPINTIMESTAMPS:    case ICMPINTIMESTAMPREPS:    case ICMPINADDRMASKS:    case ICMPINADDRMASKREPS:        ret_value = 0;        break;    case ICMPOUTMSGS:        ret_value = ps_proto.u.icmp.sent;        break;    case ICMPOUTERRORS:        ret_value = ps_proto.u.icmp.errors;        break;    case ICMPOUTDESTUNREACHS:    case ICMPOUTTIMEEXCDS:    case ICMPOUTPARMPROBS:    case ICMPOUTSRCQUENCHS:    case ICMPOUTREDIRECTS:    case ICMPOUTECHOS:    case ICMPOUTECHOREPS:    case ICMPOUTTIMESTAMPS:    case ICMPOUTTIMESTAMPREPS:    case ICMPOUTADDRMASKS:    case ICMPOUTADDRMASKREPS:        ret_value = 0;        break;#endif                          /* USES_SNMP_DESIGNED_ICMPSTAT */	    }	    snmp_set_var_typed_value(request->requestvb, ASN_COUNTER,			             (u_char *)&ret_value, sizeof(ret_value));	}        break;    case MODE_GETNEXT:    case MODE_GETBULK:    case MODE_SET_RESERVE1:    case MODE_SET_RESERVE2:    case MODE_SET_ACTION:    case MODE_SET_COMMIT:    case MODE_SET_FREE:    case MODE_SET_UNDO:        snmp_log(LOG_WARNING, "mibII/icmp: Unsupported mode (%d)\n",                               reqinfo->mode);        break;    default:        snmp_log(LOG_WARNING, "mibII/icmp: Unrecognised mode (%d)\n",                               reqinfo->mode);        break;    }    return SNMP_ERR_NOERROR;}        /*********************	 *	 *  Internal implementation functions	 *	 *********************/#ifdef hpux11inticmp_load(netsnmp_cache *cache, void *vmagic){    int             fd;    struct nmparms  p;    unsigned int    ulen;    int             ret;    int             magic = (int) vmagic;    if ((fd = open_mib("/dev/ip", O_RDONLY, 0, NM_ASYNC_OFF)) < 0) {        DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP object %d (hpux11)\n", magic));        return (-1);            /* error */    }    switch (magic) {    case ICMPINMSGS:        p.objid = ID_icmpInMsgs;        break;    case ICMPINERRORS:        p.objid = ID_icmpInErrors;        break;    case ICMPINDESTUNREACHS:        p.objid = ID_icmpInDestUnreachs;        break;    case ICMPINTIMEEXCDS:        p.objid = ID_icmpInTimeExcds;        break;    case ICMPINPARMPROBS:        p.objid = ID_icmpInParmProbs;        break;    case ICMPINSRCQUENCHS:        p.objid = ID_icmpInSrcQuenchs;        break;    case ICMPINREDIRECTS:        p.objid = ID_icmpInRedirects;        break;    case ICMPINECHOS:        p.objid = ID_icmpInEchos;        break;    case ICMPINECHOREPS:        p.objid = ID_icmpInEchoReps;        break;    case ICMPINTIMESTAMPS:        p.objid = ID_icmpInTimestamps;        break;    case ICMPINTIMESTAMPREPS:        p.objid = ID_icmpInTimestampReps;        break;    case ICMPINADDRMASKS:        p.objid = ID_icmpInAddrMasks;        break;    case ICMPINADDRMASKREPS:        p.objid = ID_icmpInAddrMaskReps;        break;    case ICMPOUTMSGS:        p.objid = ID_icmpOutMsgs;        break;    case ICMPOUTERRORS:        p.objid = ID_icmpOutErrors;        break;    case ICMPOUTDESTUNREACHS:        p.objid = ID_icmpOutDestUnreachs;        break;    case ICMPOUTTIMEEXCDS:        p.objid = ID_icmpOutTimeExcds;        break;    case ICMPOUTPARMPROBS:        p.objid = ID_icmpOutParmProbs;        break;    case ICMPOUTSRCQUENCHS:        p.objid = ID_icmpOutSrcQuenchs;        break;    case ICMPOUTREDIRECTS:        p.objid = ID_icmpOutRedirects;        break;    case ICMPOUTECHOS:        p.objid = ID_icmpOutEchos;        break;    case ICMPOUTECHOREPS:        p.objid = ID_icmpOutEchoReps;        break;    case ICMPOUTTIMESTAMPS:        p.objid = ID_icmpOutTimestamps;        break;    case ICMPOUTTIMESTAMPREPS:        p.objid = ID_icmpOutTimestampReps;        break;    case ICMPOUTADDRMASKS:        p.objid = ID_icmpOutAddrMasks;        break;    case ICMPOUTADDRMASKREPS:        p.objid = ID_icmpOutAddrMaskReps;        break;    default:        icmpstat = 0;        close_mib(fd);        return (0);    }    p.buffer = (void *)&icmpstat;    ulen = sizeof(ICMP_STAT_STRUCTURE);    p.len = &ulen;    ret = get_mib_info(fd, &p);    close_mib(fd);    DEBUGMSGTL(("mibII/icmp", "%s ICMP object %d (hpux11)\n",               (ret < 0 ? "Failed to load" : "Loaded"),  magic));    return (ret);               /* 0: ok, < 0: error */}#elif defined(linux)inticmp_load(netsnmp_cache *cache, void *vmagic){    long            ret_value = -1;    ret_value = linux_read_icmp_stat(&icmpstat);    if ( ret_value < 0 ) {        DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP Group (linux)\n"));    } else {        DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (linux)\n"));    }    return ret_value;}#elif defined(solaris2)inticmp_load(netsnmp_cache *cache, void *vmagic){    long            ret_value = -1;    ret_value =        getMibstat(MIB_ICMP, &icmpstat, sizeof(mib2_icmp_t), GET_FIRST,                   &Get_everything, NULL);    if ( ret_value < 0 ) {        DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP Group (solaris)\n"));    } else {        DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (solaris)\n"));    }    return ret_value;}#elif defined (WIN32) || defined (cygwin)inticmp_load(netsnmp_cache *cache, void *vmagic){    long            ret_value = -1;    ret_value = GetIcmpStatistics(&icmpstat);    if ( ret_value < 0 ) {        DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP Group (win32)\n"));    } else {        DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (win32)\n"));    }    return ret_value;}#elif defined(_USE_PERFSTAT_PROTOCOL)inticmp_load(netsnmp_cache *cache, void *vmagic){    long            ret_value = -1;    strcpy(ps_name.name, "icmp");    ret_value = perfstat_protocol(&ps_name, &ps_proto, sizeof(ps_proto), 1);    if ( ret_value < 0 ) {        DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP Group (AIX)\n"));    } else {        ret_value = 0;        DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (AIX)\n"));    }    return ret_value;}#elif defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS)inticmp_load(netsnmp_cache *cache, void *vmagic){    long            ret_value = -1;    static int      sname[4] =        { CTL_NET, PF_INET, IPPROTO_ICMP, ICMPCTL_STATS };    size_t          len = sizeof(icmpstat);    ret_value = sysctl(sname, 4, &icmpstat, &len, 0, 0);    if ( ret_value < 0 ) {        DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP Group (sysctl)\n"));    } else {        DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (sysctl)\n"));    }    return ret_value;}#elif defined(HAVE_SYS_TCPIPSTATS_H)inticmp_load(netsnmp_cache *cache, void *vmagic){    long            ret_value = -1;    ret_value =        sysmp(MP_SAGET, MPSA_TCPIPSTATS, &icmpstat, sizeof icmpstat);    if ( ret_value < 0 ) {        DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP Group (tcpipstats)\n"));    } else {        DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (tcpipstats)\n"));    }    return ret_value;}#elif defined(ICMPSTAT_SYMBOL)inticmp_load(netsnmp_cache *cache, void *vmagic){    long            ret_value = -1;    if (auto_nlist(ICMPSTAT_SYMBOL, (char *)&icmpstat, sizeof(icmpstat)))        ret_value = 0;    if ( ret_value < 0 ) {        DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP Group (icmpstat)\n"));    } else {        DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (icmpstat)\n"));    }    return ret_value;}#else		/* ICMPSTAT_SYMBOL */inticmp_load(netsnmp_cache *cache, void *vmagic){    long            ret_value = -1;    DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP Group (null)\n"));    return ret_value;}#endif		/* hpux11 */voidicmp_free(netsnmp_cache *cache, void *magic){#if defined(_USE_PERFSTAT_PROTOCOL)    memset(&ps_proto, 0, sizeof(ps_proto));#else    memset(&icmpstat, 0, sizeof(icmpstat));#endif}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -