summaryrefslogtreecommitdiff
path: root/agent/mibgroup
diff options
context:
space:
mode:
Diffstat (limited to 'agent/mibgroup')
-rw-r--r--agent/mibgroup/Makefile.depend16
-rw-r--r--agent/mibgroup/mibII/icmp.c25
-rw-r--r--agent/mibgroup/mibII/kernel_linux.c19
-rw-r--r--agent/mibgroup/mibII/kernel_linux.h4
4 files changed, 46 insertions, 18 deletions
diff --git a/agent/mibgroup/Makefile.depend b/agent/mibgroup/Makefile.depend
index cee726e..dac364d 100644
--- a/agent/mibgroup/Makefile.depend
+++ b/agent/mibgroup/Makefile.depend
@@ -5588,7 +5588,7 @@
./ip-mib/ip_scalars.lo: ./ip-mib/ip_scalars.h
./mibII/at.lo: ../../include/net-snmp/net-snmp-config.h
./mibII/at.lo: ./mibII/mibII_common.h
-./mibII/at.lo: ../../agent/kernel.h
+./mibII/at.lo: ../../agent/kernel.h
./mibII/at.lo: ../../include/net-snmp/net-snmp-includes.h
./mibII/at.lo: ../../include/net-snmp/definitions.h
./mibII/at.lo: ../../include/net-snmp/types.h
@@ -6039,7 +6039,7 @@
./mibII/ipAddr.lo: ./mibII/at.h ./mibII/interfaces.h
./mibII/ip.lo: ../../include/net-snmp/net-snmp-config.h
./mibII/ip.lo: ./mibII/mibII_common.h
-./mibII/ip.lo: ../../agent/kernel.h
+./mibII/ip.lo: ../../agent/kernel.h
./mibII/ip.lo: ../../include/net-snmp/net-snmp-includes.h
./mibII/ip.lo: ../../include/net-snmp/definitions.h
./mibII/ip.lo: ../../include/net-snmp/types.h
@@ -7546,9 +7546,9 @@
./mibII/tcp.lo: ../../include/net-snmp/net-snmp-config.h
./mibII/tcp.lo: ../../include/net-snmp/net-snmp-features.h
./mibII/tcp.lo: ./mibII/mibII_common.h
-./mibII/tcp.lo: ../../agent/kernel.h
+./mibII/tcp.lo: ../../agent/kernel.h
./mibII/tcp.lo: ../../include/net-snmp/net-snmp-includes.h
-./mibII/tcp.lo: ../../include/net-snmp/definitions.h
+./mibII/tcp.lo: ../../include/net-snmp/definitions.h
./mibII/tcp.lo: ../../include/net-snmp/types.h
./mibII/tcp.lo: ../../include/net-snmp/library/oid.h
./mibII/tcp.lo: ../../include/net-snmp/library/types.h
@@ -7770,9 +7770,9 @@
./mibII/tcpTable.lo: ./mibII/tcpTable.h
./mibII/udp.lo: ../../include/net-snmp/net-snmp-config.h
./mibII/udp.lo: ./mibII/mibII_common.h
-./mibII/udp.lo: ../../agent/kernel.h
+./mibII/udp.lo: ../../agent/kernel.h
./mibII/udp.lo: ../../include/net-snmp/net-snmp-includes.h
-./mibII/udp.lo: ../../include/net-snmp/definitions.h
+./mibII/udp.lo: ../../include/net-snmp/definitions.h
./mibII/udp.lo: ../../include/net-snmp/types.h
./mibII/udp.lo: ../../include/net-snmp/library/oid.h
./mibII/udp.lo: ../../include/net-snmp/library/types.h
@@ -9530,7 +9530,7 @@
./Rmon/history.lo: ./Rmon/history.h ./Rmon/agutil_api.h ./Rmon/row_api.h
./Rmon/rows.lo: ../../include/net-snmp/net-snmp-config.h
./Rmon/rows.lo: ../../include/net-snmp/net-snmp-includes.h
-./Rmon/rows.lo: ../../include/net-snmp/definitions.h
+./Rmon/rows.lo: ../../include/net-snmp/definitions.h
./Rmon/rows.lo: ../../include/net-snmp/types.h
./Rmon/rows.lo: ../../include/net-snmp/library/oid.h
./Rmon/rows.lo: ../../include/net-snmp/library/types.h
@@ -11619,7 +11619,7 @@
./smux/smux.lo: ../../include/net-snmp/net-snmp-config.h
./smux/smux.lo: ../../include/net-snmp/net-snmp-features.h
./smux/smux.lo: ../../include/net-snmp/net-snmp-includes.h
-./smux/smux.lo: ../../include/net-snmp/definitions.h
+./smux/smux.lo: ../../include/net-snmp/definitions.h
./smux/smux.lo: ../../include/net-snmp/types.h
./smux/smux.lo: ../../include/net-snmp/library/oid.h
./smux/smux.lo: ../../include/net-snmp/library/types.h
diff --git a/agent/mibgroup/mibII/icmp.c b/agent/mibgroup/mibII/icmp.c
index 14c73a6..6d10426 100644
--- a/agent/mibgroup/mibII/icmp.c
+++ b/agent/mibgroup/mibII/icmp.c
@@ -106,10 +106,20 @@ struct icmp_msg_stats_table_entry {
int flags;
};
+#ifdef linux
+/* Linux keeps track of all possible message types */
+#define ICMP_MSG_STATS_IPV4_COUNT 256
+#else
#define ICMP_MSG_STATS_IPV4_COUNT 11
+#endif
#ifdef NETSNMP_ENABLE_IPV6
+#ifdef linux
+/* Linux keeps track of all possible message types */
+#define ICMP_MSG_STATS_IPV6_COUNT 256
+#else
#define ICMP_MSG_STATS_IPV6_COUNT 14
+#endif
#else
#define ICMP_MSG_STATS_IPV6_COUNT 0
#endif /* NETSNMP_ENABLE_IPV6 */
@@ -177,7 +187,7 @@ icmp_msg_stats_load(netsnmp_cache *cache, void *vmagic)
inc = 0;
linux_read_icmp_msg_stat(&v4icmp, &v4icmpmsg, &flag);
if (flag) {
- while (254 != k) {
+ while (255 >= k) {
if (v4icmpmsg.vals[k].InType) {
icmp_msg_stats_table[i].ipVer = 1;
icmp_msg_stats_table[i].icmpMsgStatsType = k;
@@ -267,7 +277,7 @@ icmp_msg_stats_load(netsnmp_cache *cache, void *vmagic)
inc = 0;
linux_read_icmp6_msg_stat(&v6icmp, &v6icmpmsg, &flag);
if (flag) {
- while (254 != k) {
+ while (255 >= k) {
if (v6icmpmsg.vals[k].InType) {
icmp_msg_stats_table[i].ipVer = 2;
icmp_msg_stats_table[i].icmpMsgStatsType = k;
@@ -1050,6 +1060,12 @@ icmp_stats_table_handler(netsnmp_mib_handler *handler,
continue;
table_info = netsnmp_extract_table_info(request);
subid = table_info->colnum;
+ DEBUGMSGTL(( "mibII/icmpStatsTable", "oid: " ));
+ DEBUGMSGOID(( "mibII/icmpStatsTable", request->requestvb->name,
+ request->requestvb->name_length ));
+ DEBUGMSG(( "mibII/icmpStatsTable", " In %d InErr %d Out %d OutErr %d\n",
+ entry->icmpStatsInMsgs, entry->icmpStatsInErrors,
+ entry->icmpStatsOutMsgs, entry->icmpStatsOutErrors ));
switch (subid) {
case ICMP_STAT_INMSG:
@@ -1117,6 +1133,11 @@ icmp_msg_stats_table_handler(netsnmp_mib_handler *handler,
continue;
table_info = netsnmp_extract_table_info(request);
subid = table_info->colnum;
+ DEBUGMSGTL(( "mibII/icmpMsgStatsTable", "oid: " ));
+ DEBUGMSGOID(( "mibII/icmpMsgStatsTable", request->requestvb->name,
+ request->requestvb->name_length ));
+ DEBUGMSG(( "mibII/icmpMsgStatsTable", " In %d Out %d Flags 0x%x\n",
+ entry->icmpMsgStatsInPkts, entry->icmpMsgStatsOutPkts, entry->flags ));
switch (subid) {
case ICMP_MSG_STAT_IN_PKTS:
diff --git a/agent/mibgroup/mibII/kernel_linux.c b/agent/mibgroup/mibII/kernel_linux.c
index b21a166..ba320c7 100644
--- a/agent/mibgroup/mibII/kernel_linux.c
+++ b/agent/mibgroup/mibII/kernel_linux.c
@@ -81,9 +81,9 @@ decode_icmp_msg(char *line, char *data, struct icmp4_msg_mib *msg)
index = strtol(token, &delim, 0);
if (ERANGE == errno) {
continue;
- } else if (index > LONG_MAX) {
+ } else if (index > 255) {
continue;
- } else if (index < LONG_MIN) {
+ } else if (index < 0) {
continue;
}
if (NULL == (token = strtok_r(dataptr, " ", &saveptr1)))
@@ -94,9 +94,9 @@ decode_icmp_msg(char *line, char *data, struct icmp4_msg_mib *msg)
index = strtol(token, &delim, 0);
if (ERANGE == errno) {
continue;
- } else if (index > LONG_MAX) {
+ } else if (index > 255) {
continue;
- } else if (index < LONG_MIN) {
+ } else if (index < 0) {
continue;
}
if(NULL == (token = strtok_r(dataptr, " ", &saveptr1)))
@@ -426,14 +426,21 @@ linux_read_icmp6_parse(struct icmp6_mib *icmp6stat,
vals = name;
if (NULL != icmp6msgstat) {
+ int type;
if (0 == strncmp(name, "Icmp6OutType", 12)) {
strsep(&vals, "e");
- icmp6msgstat->vals[atoi(vals)].OutType = stats;
+ type = atoi(vals);
+ if ( type < 0 || type > 255 )
+ continue;
+ icmp6msgstat->vals[type].OutType = stats;
*support = 1;
continue;
} else if (0 == strncmp(name, "Icmp6InType", 11)) {
strsep(&vals, "e");
- icmp6msgstat->vals[atoi(vals)].InType = stats;
+ type = atoi(vals);
+ if ( type < 0 || type > 255 )
+ continue;
+ icmp6msgstat->vals[type].InType = stats;
*support = 1;
continue;
}
diff --git a/agent/mibgroup/mibII/kernel_linux.h b/agent/mibgroup/mibII/kernel_linux.h
index 6bf5d47..c6dfca9 100644
--- a/agent/mibgroup/mibII/kernel_linux.h
+++ b/agent/mibgroup/mibII/kernel_linux.h
@@ -121,11 +121,11 @@ struct icmp_msg_mib {
/* Lets use wrapper structures for future expansion */
struct icmp4_msg_mib {
- struct icmp_msg_mib vals[255];
+ struct icmp_msg_mib vals[256];
};
struct icmp6_msg_mib {
- struct icmp_msg_mib vals[255];
+ struct icmp_msg_mib vals[256];
};
struct udp_mib {