📄 icmp.c
字号:
case ICMPINTIMEEXCDS: return (u_char *) &icmpstat.icmpInTimeExcds; case ICMPINPARMPROBS: return (u_char *) &icmpstat.icmpInParmProbs; case ICMPINSRCQUENCHS: return (u_char *) &icmpstat.icmpInSrcQuenchs; case ICMPINREDIRECTS: return (u_char *) &icmpstat.icmpInRedirects; case ICMPINECHOS: return (u_char *) &icmpstat.icmpInEchos; case ICMPINECHOREPS: return (u_char *) &icmpstat.icmpInEchoReps; case ICMPINTIMESTAMPS: return (u_char *) &icmpstat.icmpInTimestamps; case ICMPINTIMESTAMPREPS:return (u_char *) &icmpstat.icmpInTimestampReps; case ICMPINADDRMASKS: return (u_char *) &icmpstat.icmpInAddrMasks; case ICMPINADDRMASKREPS:return (u_char *) &icmpstat.icmpInAddrMaskReps; case ICMPOUTMSGS: return (u_char *) &icmpstat.icmpOutMsgs; case ICMPOUTERRORS: return (u_char *) &icmpstat.icmpOutErrors; case ICMPOUTDESTUNREACHS:return (u_char *) &icmpstat.icmpOutDestUnreachs; case ICMPOUTTIMEEXCDS: return (u_char *) &icmpstat.icmpOutTimeExcds; case ICMPOUTPARMPROBS: return (u_char *) &icmpstat.icmpOutParmProbs; case ICMPOUTSRCQUENCHS: return (u_char *) &icmpstat.icmpOutSrcQuenchs; case ICMPOUTREDIRECTS: return (u_char *) &icmpstat.icmpOutRedirects; case ICMPOUTECHOS: return (u_char *) &icmpstat.icmpOutEchos; case ICMPOUTECHOREPS: return (u_char *) &icmpstat.icmpOutEchoReps; case ICMPOUTTIMESTAMPS: return (u_char *) &icmpstat.icmpOutTimestamps; case ICMPOUTTIMESTAMPREPS:return (u_char *)&icmpstat.icmpOutTimestampReps; case ICMPOUTADDRMASKS: return (u_char *) &icmpstat.icmpOutAddrMasks; case ICMPOUTADDRMASKREPS:return (u_char *) &icmpstat.icmpOutAddrMaskReps;#endif /* USES_SNMP_DESIGNED_ICMPSTAT */#ifdef USES_TRADITIONAL_ICMPSTAT case ICMPINMSGS: long_return = icmpstat.icps_badcode + icmpstat.icps_tooshort + icmpstat.icps_checksum + icmpstat.icps_badlen; for (i=0; i <= ICMP_MAXTYPE; i++) long_return += icmpstat.icps_inhist[i]; return (u_char *)&long_return; case ICMPINERRORS: long_return = icmpstat.icps_badcode + icmpstat.icps_tooshort + icmpstat.icps_checksum + icmpstat.icps_badlen; return (u_char *)&long_return; case ICMPINDESTUNREACHS:return (u_char *) &icmpstat.icps_inhist[ICMP_UNREACH]; case ICMPINTIMEEXCDS: return (u_char *) &icmpstat.icps_inhist[ICMP_TIMXCEED]; case ICMPINPARMPROBS: return (u_char *) &icmpstat.icps_inhist[ICMP_PARAMPROB]; case ICMPINSRCQUENCHS: return (u_char *) &icmpstat.icps_inhist[ICMP_SOURCEQUENCH]; case ICMPINREDIRECTS: return (u_char *) &icmpstat.icps_inhist[ICMP_REDIRECT]; case ICMPINECHOS: return (u_char *) &icmpstat.icps_inhist[ICMP_ECHO]; case ICMPINECHOREPS: return (u_char *) &icmpstat.icps_inhist[ICMP_ECHOREPLY]; case ICMPINTIMESTAMPS: return (u_char *) &icmpstat.icps_inhist[ICMP_TSTAMP]; case ICMPINTIMESTAMPREPS:return (u_char *) &icmpstat.icps_inhist[ICMP_TSTAMPREPLY]; case ICMPINADDRMASKS: return (u_char *) &icmpstat.icps_inhist[ICMP_MASKREQ]; case ICMPINADDRMASKREPS:return (u_char *) &icmpstat.icps_inhist[ICMP_MASKREPLY]; case ICMPOUTMSGS: long_return = icmpstat.icps_oldshort + icmpstat.icps_oldicmp; for (i=0; i <= ICMP_MAXTYPE; i++) long_return += icmpstat.icps_outhist[i]; return (u_char *)&long_return; case ICMPOUTERRORS: long_return = icmpstat.icps_oldshort + icmpstat.icps_oldicmp; return (u_char *)&long_return; case ICMPOUTDESTUNREACHS:return (u_char *) &icmpstat.icps_outhist[ICMP_UNREACH]; case ICMPOUTTIMEEXCDS: return (u_char *) &icmpstat.icps_outhist[ICMP_TIMXCEED]; case ICMPOUTPARMPROBS: return (u_char *) &icmpstat.icps_outhist[ICMP_PARAMPROB]; case ICMPOUTSRCQUENCHS: return (u_char *) &icmpstat.icps_outhist[ICMP_SOURCEQUENCH]; case ICMPOUTREDIRECTS: return (u_char *) &icmpstat.icps_outhist[ICMP_REDIRECT]; case ICMPOUTECHOS: return (u_char *) &icmpstat.icps_outhist[ICMP_ECHO]; case ICMPOUTECHOREPS: return (u_char *) &icmpstat.icps_outhist[ICMP_ECHOREPLY]; case ICMPOUTTIMESTAMPS: return (u_char *) &icmpstat.icps_outhist[ICMP_TSTAMP]; case ICMPOUTTIMESTAMPREPS:return (u_char *) &icmpstat.icps_outhist[ICMP_TSTAMPREPLY]; case ICMPOUTADDRMASKS: return (u_char *) &icmpstat.icps_outhist[ICMP_MASKREQ]; case ICMPOUTADDRMASKREPS:return (u_char *) &icmpstat.icps_outhist[ICMP_MASKREPLY];#endif /* USES_TRADITIONAL_ICMPSTAT */#ifdef hpux11 case ICMPINMSGS: case ICMPINERRORS: case ICMPINDESTUNREACHS: case ICMPINTIMEEXCDS: case ICMPINPARMPROBS: case ICMPINSRCQUENCHS: case ICMPINREDIRECTS: case ICMPINECHOS: case ICMPINECHOREPS: case ICMPINTIMESTAMPS: case ICMPINTIMESTAMPREPS: case ICMPINADDRMASKS: case ICMPINADDRMASKREPS: case ICMPOUTMSGS: case ICMPOUTERRORS: case ICMPOUTDESTUNREACHS: case ICMPOUTTIMEEXCDS: case ICMPOUTPARMPROBS: case ICMPOUTSRCQUENCHS: case ICMPOUTREDIRECTS: case ICMPOUTECHOS: case ICMPOUTECHOREPS: case ICMPOUTTIMESTAMPS: case ICMPOUTTIMESTAMPREPS: case ICMPOUTADDRMASKS: case ICMPOUTADDRMASKREPS: long_return = icmpstat; return (u_char *)&long_return;#endif /* hpux11 */#ifdef WIN32 case ICMPINMSGS: return (u_char *) &icmpstat.stats.icmpInStats.dwMsgs; case ICMPINERRORS: return (u_char *) &icmpstat.stats.icmpInStats.dwErrors; case ICMPINDESTUNREACHS:return (u_char *) &icmpstat.stats.icmpInStats.dwDestUnreachs; case ICMPINTIMEEXCDS: return (u_char *) &icmpstat.stats.icmpInStats.dwTimeExcds; case ICMPINPARMPROBS: return (u_char *) &icmpstat.stats.icmpInStats.dwParmProbs; case ICMPINSRCQUENCHS: return (u_char *) &icmpstat.stats.icmpInStats.dwSrcQuenchs; case ICMPINREDIRECTS: return (u_char *) &icmpstat.stats.icmpInStats.dwRedirects; case ICMPINECHOS: return (u_char *) &icmpstat.stats.icmpInStats.dwEchos; case ICMPINECHOREPS: return (u_char *) &icmpstat.stats.icmpInStats.dwEchoReps; case ICMPINTIMESTAMPS: return (u_char *) &icmpstat.stats.icmpInStats.dwTimestamps; case ICMPINTIMESTAMPREPS:return (u_char *) &icmpstat.stats.icmpInStats.dwTimestampReps; case ICMPINADDRMASKS: return (u_char *) &icmpstat.stats.icmpInStats.dwAddrMasks; case ICMPINADDRMASKREPS:return (u_char *) &icmpstat.stats.icmpInStats.dwAddrMaskReps; case ICMPOUTMSGS: return (u_char *) &icmpstat.stats.icmpOutStats.dwMsgs; case ICMPOUTERRORS: return (u_char *) &icmpstat.stats.icmpOutStats.dwErrors; case ICMPOUTDESTUNREACHS:return (u_char *) &icmpstat.stats.icmpOutStats.dwDestUnreachs; case ICMPOUTTIMEEXCDS: return (u_char *) &icmpstat.stats.icmpOutStats.dwTimeExcds; case ICMPOUTPARMPROBS: return (u_char *) &icmpstat.stats.icmpOutStats.dwParmProbs; case ICMPOUTSRCQUENCHS: return (u_char *) &icmpstat.stats.icmpOutStats.dwSrcQuenchs; case ICMPOUTREDIRECTS: return (u_char *) &icmpstat.stats.icmpOutStats.dwRedirects; case ICMPOUTECHOS: return (u_char *) &icmpstat.stats.icmpOutStats.dwEchos; case ICMPOUTECHOREPS: return (u_char *) &icmpstat.stats.icmpOutStats.dwEchoReps; case ICMPOUTTIMESTAMPS: return (u_char *) &icmpstat.stats.icmpOutStats.dwTimestamps; case ICMPOUTTIMESTAMPREPS:return (u_char *)&icmpstat.stats.icmpOutStats.dwTimestampReps; case ICMPOUTADDRMASKS: return (u_char *) &icmpstat.stats.icmpOutStats.dwAddrMasks; case ICMPOUTADDRMASKREPS:return (u_char *) &icmpstat.stats.icmpOutStats.dwAddrMaskReps;#endif /* WIN32 */ default: DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_icmp\n", vp->magic)); } return NULL;} /********************* * * Internal implementation functions * *********************/longread_icmp_stat( ICMP_STAT_STRUCTURE *icmpstat, int magic ){#ifdef hpux11 int fd; struct nmparms p; unsigned int ulen; int ret; if ((fd = open_mib("/dev/ip", O_RDONLY, 0, NM_ASYNC_OFF)) < 0) 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); return (ret); /* 0: ok, < 0: error */#else /* hpux11 */ long ret_value = -1;#if (defined(CAN_USE_SYSCTL) && defined(ICMPCTL_STATS)) static int sname[4] = { CTL_NET, PF_INET, IPPROTO_ICMP, ICMPCTL_STATS }; size_t len = sizeof( *icmpstat );#endif if ( icmp_stats_cache_marker && (!atime_ready(icmp_stats_cache_marker, ICMP_STATS_CACHE_TIMEOUT*1000))) return 0; if (icmp_stats_cache_marker ) atime_setMarker( icmp_stats_cache_marker ); else icmp_stats_cache_marker = atime_newMarker();#ifdef linux ret_value = linux_read_icmp_stat(icmpstat);#endif#ifdef solaris2 ret_value = getMibstat(MIB_ICMP, icmpstat, sizeof(mib2_icmp_t), GET_FIRST, &Get_everything, NULL);#endif#ifdef WIN32 ret_value = GetIcmpStatistics(icmpstat);#endif#ifdef HAVE_SYS_TCPIPSTATS_H ret_value = sysmp (MP_SAGET, MPSA_TCPIPSTATS, icmpstat, sizeof *icmpstat);#endif#if defined(CAN_USE_SYSCTL) && defined(ICMPCTL_STATS) ret_value = sysctl(sname, 4, icmpstat, &len, 0, 0);#endif#ifdef ICMPSTAT_SYMBOL if (auto_nlist(ICMPSTAT_SYMBOL, (char *)icmpstat, sizeof (*icmpstat))) ret_value = 0;#endif if ( ret_value == -1 ) { free( icmp_stats_cache_marker ); icmp_stats_cache_marker = NULL; } return ret_value;#endif /* hpux11 */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -