Add support for icmpMsgStatsTable Written-By: c_varun@users.sourceforge.net http://sourceforge.net/tracker/index.php?func=detail&aid=1735608&group_id=12694&atid=312694 Modified-By: Jan Safranek <jsafrane@redhat.com> http://sourceforge.net/tracker/index.php?func=detail&aid=1783447&group_id=12694&atid=312694 Reviewed-By: Radek Vokal <rvokal@redhat.com? --- orig/agent/mibgroup/mibII/icmp.c 2007-08-27 12:00:10.000000000 +0200 +++ net-snmp-5.3.1/agent/mibgroup/mibII/icmp.c 2007-08-27 16:01:48.000000000 +0200 @@ -8,6 +8,13 @@ #if HAVE_NETINET_IP_ICMP_H #include <netinet/ip_icmp.h> #endif + +#ifdef INET6 +#if HAVE_NETINET_ICMP6_H +#include <netinet/icmp6.h> +#endif +#endif /* INET6 */ + #if HAVE_NETINET_ICMP_VAR_H #include <netinet/icmp_var.h> #endif @@ -29,7 +36,6 @@ #ifndef ICMP_STATS_CACHE_TIMEOUT #define ICMP_STATS_CACHE_TIMEOUT MIB_STATS_CACHE_TIMEOUT #endif - /********************* * * Kernel & interface information, @@ -50,6 +56,7 @@ */ oid icmp_oid[] = { SNMP_OID_MIB2, 5 }; oid icmp_stats_tbl_oid[] = { SNMP_OID_MIB2, 5, 29 }; +oid icmp_msg_stats_tbl_oid[] = { SNMP_OID_MIB2, 5, 30 }; #ifdef USING_MIBII_IP_MODULE extern oid ip_module_oid[]; extern int ip_module_oid_len; @@ -67,6 +74,28 @@ struct icmp_stats_table_entry icmp_stats_table[2]; +#define ICMP_MSG_STATS_HAS_IN 1 +#define ICMP_MSG_STATS_HAS_OUT 2 + +struct icmp_msg_stats_table_entry { + uint32_t ipVer; + uint32_t icmpMsgStatsType; + uint32_t icmpMsgStatsInPkts; + uint32_t icmpMsgStatsOutPkts; + int flags; +}; + +#define ICMP_MSG_STATS_IPV4_COUNT 11 + +#ifdef INET6 +#define ICMP_MSG_STATS_IPV6_COUNT 14 +#else +#define ICMP_MSG_STATS_IPV6_COUNT 0 +#endif /* INET6 */ + + +struct icmp_msg_stats_table_entry icmp_msg_stats_table[ICMP_MSG_STATS_IPV4_COUNT+ICMP_MSG_STATS_IPV6_COUNT]; + int icmp_stats_load(netsnmp_cache *cache, void *vmagic) { @@ -109,7 +138,165 @@ return 0; } +int +icmp_msg_stats_load(netsnmp_cache *cache, void *vmagic) +{ + struct icmp_mib v4icmp; + struct icmp6_mib v6icmp; + int i; + + memset(&icmp_msg_stats_table, 0, sizeof(icmp_msg_stats_table)); + linux_read_icmp_stat(&v4icmp); + + /* set the IP version and default flags */ + for (i=0; i<ICMP_MSG_STATS_IPV4_COUNT; i++) { + icmp_msg_stats_table[i].ipVer = 1; + icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT; + } +#ifdef INET6 + for (i=0; i<ICMP_MSG_STATS_IPV6_COUNT; i++) { + icmp_msg_stats_table[ICMP_MSG_STATS_IPV4_COUNT+i].ipVer = 2; + icmp_msg_stats_table[ICMP_MSG_STATS_IPV4_COUNT+i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT; + } +#endif /* INET6 */ + + i=0; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_ECHOREPLY; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInEchoReps; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutEchoReps; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_DEST_UNREACH; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInDestUnreachs; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutDestUnreachs; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_SOURCE_QUENCH; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInSrcQuenchs; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutSrcQuenchs; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_REDIRECT; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInRedirects; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutRedirects; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_ECHO; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInEchos; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutEchos; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_TIME_EXCEEDED; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInTimeExcds; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutTimeExcds; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_PARAMETERPROB; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInParmProbs; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutParmProbs; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_TIMESTAMP; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInTimestamps; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutTimestamps; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_TIMESTAMPREPLY; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInTimestampReps; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutTimestampReps; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_ADDRESS; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInAddrMasks; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutAddrMasks; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_ADDRESSREPLY; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInAddrMaskReps; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutAddrMaskReps; + i++; + +#ifdef INET6 + linux_read_icmp6_stat(&v6icmp); + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_DST_UNREACH; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InDestUnreachs; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutDestUnreachs; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_PACKET_TOO_BIG; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InPktTooBigs; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutPktTooBigs; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_TIME_EXCEEDED; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InTimeExcds; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutTimeExcds; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_PARAM_PROB; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InParmProblems; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutParmProblems; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_ECHO_REQUEST; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InEchos; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = 0; + icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_ECHO_REPLY; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InEchoReplies; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutEchoReplies; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = MLD_LISTENER_QUERY; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InGroupMembQueries; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = 0; + icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = MLD_LISTENER_REPORT; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InGroupMembResponses; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutGroupMembResponses; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = MLD_LISTENER_REDUCTION; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InGroupMembReductions; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutGroupMembReductions; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ND_ROUTER_SOLICIT; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InRouterSolicits; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutRouterSolicits; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ND_ROUTER_ADVERT; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InRouterAdvertisements; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = 0; + icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ND_NEIGHBOR_SOLICIT; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InNeighborSolicits; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutNeighborSolicits; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ND_NEIGHBOR_ADVERT; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InNeighborAdvertisements; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutNeighborAdvertisements; + i++; + + icmp_msg_stats_table[i].icmpMsgStatsType = ND_REDIRECT; + icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InRedirects; + icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutRedirects; +#endif /* INET6 */ + + return 0; +} + netsnmp_variable_list * + icmp_stats_next_entry( void **loop_context, void **data_context, netsnmp_variable_list *index, @@ -148,14 +335,56 @@ *data_context = NULL; return icmp_stats_next_entry(loop_context, data_context, index, data); } + +netsnmp_variable_list * +icmp_msg_stats_next_entry( void **loop_context, + void **data_context, + netsnmp_variable_list *index, + netsnmp_iterator_info *data) +{ + int i = (int)(*loop_context); + netsnmp_variable_list *idx = index; + + if(i >= ICMP_MSG_STATS_IPV4_COUNT + ICMP_MSG_STATS_IPV6_COUNT) + return NULL; + + /*set IP version */ + snmp_set_var_typed_value(idx, ASN_INTEGER, (u_char *)&icmp_msg_stats_table[i].ipVer, + sizeof(uint32_t)); + idx = idx->next_variable; + /*set packet type */ + snmp_set_var_typed_value(idx, ASN_INTEGER, (u_char *)&icmp_msg_stats_table[i].icmpMsgStatsType, + sizeof(uint32_t)); + + *data_context = &icmp_msg_stats_table[i]; + *loop_context = (void *)(++i); + + return index; +} + + +netsnmp_variable_list * +icmp_msg_stats_first_entry( void **loop_context, + void **data_context, + netsnmp_variable_list *index, + netsnmp_iterator_info *data) +{ + *loop_context = 0; + *data_context = NULL; + return icmp_msg_stats_next_entry(loop_context, data_context, index, data); +} + #endif void init_icmp(void) { netsnmp_handler_registration *reginfo; + netsnmp_handler_registration *msg_stats_reginfo; netsnmp_iterator_info *iinfo; + netsnmp_iterator_info *msg_stats_iinfo; netsnmp_table_registration_info *table_info; + netsnmp_table_registration_info *msg_stats_table_info; /* * register ourselves with the agent as a group of scalars... @@ -165,6 +394,8 @@ icmp_oid, OID_LENGTH(icmp_oid), HANDLER_CAN_RONLY); netsnmp_register_scalar_group(reginfo, ICMPINMSGS, ICMPOUTADDRMASKREPS); #ifdef linux + + /* register icmpStatsTable */ reginfo = netsnmp_create_handler_registration("icmpStatsTable", icmp_stats_table_handler, icmp_stats_tbl_oid, OID_LENGTH(icmp_stats_tbl_oid), HANDLER_CAN_RONLY); @@ -188,6 +419,35 @@ iinfo->table_reginfo = table_info; netsnmp_register_table_iterator(reginfo, iinfo); + + + /* register icmpMsgStatsTable */ + msg_stats_reginfo = netsnmp_create_handler_registration("icmpMsgStatsTable", + icmp_msg_stats_table_handler, icmp_msg_stats_tbl_oid, + OID_LENGTH(icmp_msg_stats_tbl_oid), HANDLER_CAN_RONLY); + + msg_stats_table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info); + if (!msg_stats_table_info) { + return; + } + + netsnmp_table_helper_add_indexes(msg_stats_table_info, ASN_INTEGER, ASN_INTEGER, 0); + msg_stats_table_info->min_column = ICMP_MSG_STAT_IN_PKTS; + msg_stats_table_info->max_column = ICMP_MSG_STAT_OUT_PKTS; + + msg_stats_iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info); + if (!msg_stats_iinfo) { + return; + } + msg_stats_iinfo->get_first_data_point = icmp_msg_stats_first_entry; + msg_stats_iinfo->get_next_data_point = icmp_msg_stats_next_entry; + msg_stats_iinfo->table_reginfo = msg_stats_table_info; + + netsnmp_register_table_iterator(msg_stats_reginfo, msg_stats_iinfo); + netsnmp_inject_handler( msg_stats_reginfo, + netsnmp_get_cache_handler(ICMP_STATS_CACHE_TIMEOUT, + icmp_load, icmp_free, + icmp_msg_stats_tbl_oid, OID_LENGTH(icmp_msg_stats_tbl_oid))); #endif /* * .... with a local cache @@ -693,6 +953,71 @@ return SNMP_ERR_NOERROR; } + +int +icmp_msg_stats_table_handler(netsnmp_mib_handler *handler, + netsnmp_handler_registration *reginfo, + netsnmp_agent_request_info *reqinfo, + netsnmp_request_info *requests) +{ + netsnmp_request_info *request; + netsnmp_variable_list *requestvb; + netsnmp_table_request_info *table_info; + struct icmp_msg_stats_table_entry *entry; + oid subid; + + switch (reqinfo->mode) { + case MODE_GET: + for (request=requests; request; request=request->next) { + requestvb = request->requestvb; + entry = (struct icmp_msg_stats_table_entry *)netsnmp_extract_iterator_context(request); + if (!entry) + continue; + table_info = netsnmp_extract_table_info(request); + subid = table_info->colnum; + + switch (subid) { + case ICMP_MSG_STAT_IN_PKTS: + if (entry->flags & ICMP_MSG_STATS_HAS_IN) { + snmp_set_var_typed_value(requestvb, ASN_COUNTER, + (u_char *)&entry->icmpMsgStatsInPkts, sizeof(uint32_t)); + } else { + requestvb->type = SNMP_NOSUCHINSTANCE; + } + break; + case ICMP_MSG_STAT_OUT_PKTS: + if (entry->flags & ICMP_MSG_STATS_HAS_OUT) { + snmp_set_var_typed_value(requestvb, ASN_COUNTER, + (u_char *)&entry->icmpMsgStatsOutPkts, sizeof(uint32_t)); + } else { + requestvb->type = SNMP_NOSUCHINSTANCE; + } + break; + default: + snmp_log(LOG_WARNING, "mibII/icmpMsgStatsTable: Unrecognised column (%d)\n",(int)subid); + } + } + 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/icmpStatsTable: Unsupported mode (%d)\n", + reqinfo->mode); + break; + default: + snmp_log(LOG_WARNING, "mibII/icmpStatsTable: Unrecognised mode (%d)\n", + reqinfo->mode); + break; + + } + + return SNMP_ERR_NOERROR; +} /********************* * @@ -826,6 +1151,7 @@ DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (linux)\n")); } icmp_stats_load(cache, vmagic); + icmp_msg_stats_load(cache, vmagic); return ret_value; } #else /* linux */ --- orig/agent/mibgroup/mibII/icmp.h 2007-08-27 12:00:10.000000000 +0200 +++ net-snmp-5.3.1/agent/mibgroup/mibII/icmp.h 2007-08-27 15:42:42.000000000 +0200 @@ -13,6 +13,7 @@ extern void init_icmp(void); extern Netsnmp_Node_Handler icmp_handler; extern Netsnmp_Node_Handler icmp_stats_table_handler; +extern Netsnmp_Node_Handler icmp_msg_stats_table_handler; extern NetsnmpCacheLoad icmp_load; extern NetsnmpCacheFree icmp_free; @@ -48,5 +49,12 @@ #define ICMP_STAT_INMSG 2 #define ICMP_STAT_INERR 3 #define ICMP_STAT_OUTMSG 4 -#define ICMP_STAT_OUTERR 5 +#define ICMP_STAT_OUTERR 5 + +#define ICMPMSGSTATSTABLE 30 +#define ICMP_MSG_STAT_IPVER 1 +#define ICMP_MSG_STAT_TYPE 2 +#define ICMP_MSG_STAT_IN_PKTS 3 +#define ICMP_MSG_STAT_OUT_PKTS 4 + #endif /* _MIBGROUP_ICMP_H */ --- orig/configure 2007-08-27 12:00:10.000000000 +0200 +++ net-snmp-5.3.1/configure 2007-08-27 15:42:42.000000000 +0200 @@ -19572,7 +19572,7 @@ -for ac_header in arpa/inet.h netinet/in_systm.h netinet/in.h netinet/ip_var.h netinet/tcp.h netinet/tcpip.h netinet/udp.h net/if.h netinet/in_var.h netinet/ip.h netinet/ip_icmp.h net/if_arp.h net/if_mib.h net/if_var.h netinet/if_ether.h netinet/tcp_timer.h netinet/tcp_var.h netinet/udp_var.h netinet/icmp_var.h netdb.h net/route.h +for ac_header in arpa/inet.h netinet/in_systm.h netinet/in.h netinet/ip_var.h netinet/tcp.h netinet/tcpip.h netinet/udp.h net/if.h netinet/in_var.h netinet/ip.h netinet/ip_icmp.h netinet/icmp6.h net/if_arp.h net/if_mib.h net/if_var.h netinet/if_ether.h netinet/tcp_timer.h netinet/tcp_var.h netinet/udp_var.h netinet/icmp_var.h netdb.h net/route.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 @@ -19620,6 +19620,9 @@ #if HAVE_NETINET_IP_ICMP_H #include <netinet/ip_icmp.h> #endif +#if HAVE_NETINET_ICMP6_H +#include <netinet/icmp6.h> +#endif #if HAVE_NETINET_TCP_H #include <netinet/tcp.h> #endif --- orig/configure.in 2007-08-27 12:00:10.000000000 +0200 +++ net-snmp-5.3.1/configure.in 2007-08-27 15:42:42.000000000 +0200 @@ -2558,7 +2558,7 @@ ]) AC_CHECK_HEADERS(sys/timeout.h sys/un.h fstab.h sys/fs.h mtab.h ufs/fs.h sys/fixpoint.h machine/param.h sys/vm.h vm/vm.h sys/vmmeter.h sys/vmparam.h sys/vmmac.h sys/vmsystm.h sys/time.h sys/times.h sys/statvfs.h sys/vfs.h sys/mnttab.h sys/select.h mntent.h sys/mntent.h kstat.h utsname.h sys/utsname.h sys/cdefs.h getopt.h locale.h pthread.h sys/loadavg.h regex.h linux/tasks.h pwd.h grp.h utmpx.h) # Network headers -AC_CHECK_HEADERS(arpa/inet.h netinet/in_systm.h netinet/in.h netinet/ip_var.h netinet/tcp.h netinet/tcpip.h netinet/udp.h net/if.h netinet/in_var.h netinet/ip.h netinet/ip_icmp.h net/if_arp.h net/if_mib.h net/if_var.h netinet/if_ether.h netinet/tcp_timer.h netinet/tcp_var.h netinet/udp_var.h netinet/icmp_var.h netdb.h net/route.h,,, +AC_CHECK_HEADERS(arpa/inet.h netinet/in_systm.h netinet/in.h netinet/ip_var.h netinet/tcp.h netinet/tcpip.h netinet/udp.h net/if.h netinet/in_var.h netinet/ip.h netinet/ip_icmp.h netinet/icmp6.h net/if_arp.h net/if_mib.h net/if_var.h netinet/if_ether.h netinet/tcp_timer.h netinet/tcp_var.h netinet/udp_var.h netinet/icmp_var.h netdb.h net/route.h,,, [[ #if HAVE_SYS_TYPES_H #include <sys/types.h> @@ -2593,6 +2593,9 @@ #if HAVE_NETINET_IP_ICMP_H #include <netinet/ip_icmp.h> #endif +#if HAVE_NETINET_ICMP6_H +#include <netinet/icmp6.h> +#endif #if HAVE_NETINET_TCP_H #include <netinet/tcp.h> #endif --- orig/include/net-snmp/net-snmp-config.h.in 2007-08-27 12:00:10.000000000 +0200 +++ net-snmp-5.3.1/include/net-snmp/net-snmp-config.h.in 2007-08-27 15:42:42.000000000 +0200 @@ -483,6 +483,9 @@ /* Define to 1 if you have the <netinet/ip_icmp.h> header file. */ #undef HAVE_NETINET_IP_ICMP_H +/* Define to 1 if you have the <netinet/icmp6.h> header file. */ +#undef HAVE_NETINET_ICMP6_H + /* Define to 1 if you have the <netinet/ip_var.h> header file. */ #undef HAVE_NETINET_IP_VAR_H --- orig/win32/net-snmp/net-snmp-config.h.in 2007-08-27 12:00:10.000000000 +0200 +++ net-snmp-5.3.1/win32/net-snmp/net-snmp-config.h.in 2007-08-27 15:42:42.000000000 +0200 @@ -481,6 +481,9 @@ /* Define to 1 if you have the <netinet/ip_icmp.h> header file. */ /* #undef HAVE_NETINET_IP_ICMP_H */ +/* Define to 1 if you have the <netinet/icmp6.h> header file. */ +/* #undef HAVE_NETINET_ICMP6_H */ + /* Define to 1 if you have the <netinet/ip_var.h> header file. */ /* #undef HAVE_NETINET_IP_VAR_H */