net-snmp/net-snmp-5.1.1-ipAdEntIfIndex.patch
cvsdist 3762211db6 auto-import changelog data from net-snmp-5.1.1-2.src.rpm
Thu Apr 08 2004 Phil Knirsch <pknirsch@redhat.com> 5.1.1-2
- Added Kaj J. Niemi that fixes ipAdEntIfIndex problem (#119106)
- Added Kaj J. Niemi to shut up memshared message for 2.6 kernel (#119203)
Tue Mar 23 2004 Phil Knirsch <pknirsch@redhat.com> 5.1.1-1
- Update to latest upstream version 5.1.1
- Included updated patches from Kaj J. Niemi (#118580).
Thu Mar 18 2004 Phil Knirsch <pknirsch@redhat.com> 5.1-12
- Hacked an ugly perl hack to get rid of perl RPATH problems.
- Fixed 64bit patch and applied it. ;-)
2004-09-09 09:13:01 +00:00

52 lines
1.8 KiB
Diff

--- net-snmp-5.1.1/agent/mibgroup/mibII/ipAddr.c.ipAdEntIfIndex 2004-04-08 17:38:48.368076685 +0200
+++ net-snmp-5.1.1/agent/mibgroup/mibII/ipAddr.c 2004-04-08 17:48:52.977283961 +0200
@@ -200,6 +200,9 @@
#else
static struct ifnet lowin_ifnet;
static in_addr_t addr_ret;
+#if defined(linux)
+ static struct in_ifaddr in_ifaddr;
+#endif
#endif
static struct ifnet ifnet;
#endif /* hpux11 */
@@ -211,14 +214,14 @@
memcpy((char *) current, (char *) vp->name,
(int) vp->namelen * sizeof(oid));
-#if !defined(freebsd2) && !defined(hpux11) && !defined(linux)
+#if !defined(freebsd2) && !defined(hpux11)
Interface_Scan_Init();
#else
Address_Scan_Init();
#endif
for (;;) {
-#if !defined(freebsd2) && !defined(hpux11) && !defined(linux)
+#if !defined(freebsd2) && !defined(hpux11)
if (Interface_Scan_Next(&interface, NULL, &ifnet, &in_ifaddr) == 0)
break;
#ifdef STRUCT_IFNET_HAS_IF_ADDRLIST
@@ -226,10 +229,7 @@
continue; /* No address found for interface */
#endif
#else /* !freebsd2 && !hpux11 */
-#if defined(linux)
- if (Address_Scan_Next(&interface, &ifnet) == 0)
- break;
-#else
+#if !defined(linux)
if (Address_Scan_Next(&interface, &in_ifaddr) == 0)
break;
#endif
@@ -240,6 +240,9 @@
#elif defined(linux) || defined(sunV3)
cp = (u_char *) & (((struct sockaddr_in *) &(ifnet.if_addr))->
sin_addr.s_addr);
+
+ if (*cp == 0) /* first octet is zero? 0.x.x.x is not a */
+ continue; /* legal address for an interface */
#else
cp = (u_char *) & (((struct sockaddr_in *) &(in_ifaddr.ia_addr))->
sin_addr.s_addr);