diff -up net-snmp-5.3.2.2/agent/mibgroup/mibII/at.c.64bit net-snmp-5.3.2.2/agent/mibgroup/mibII/at.c --- net-snmp-5.3.2.2/agent/mibgroup/mibII/at.c.64bit 2006-09-08 18:09:51.000000000 +0200 +++ net-snmp-5.3.2.2/agent/mibgroup/mibII/at.c 2008-07-14 15:49:48.000000000 +0200 @@ -126,9 +126,9 @@ #ifndef solaris2 static void ARP_Scan_Init(void); #ifdef ARP_SCAN_FOUR_ARGUMENTS -static int ARP_Scan_Next(u_long *, char *, u_long *, u_short *); +static int ARP_Scan_Next(u_int *, char *, u_long *, u_short *); #else -static int ARP_Scan_Next(u_long *, char *, u_long *); +static int ARP_Scan_Next(u_int *, char *, u_long *); #endif #endif #endif @@ -204,7 +204,8 @@ var_atEntry(struct variable *vp, oid lowest[16]; oid current[16]; static char PhysAddr[6], LowPhysAddr[6]; - u_long Addr, LowAddr, foundone; + u_int Addr, LowAddr, foundone; + static in_addr_t addr_ret; #ifdef ARP_SCAN_FOUR_ARGUMENTS u_short ifIndex, lowIfIndex = 0; #endif /* ARP_SCAN_FOUR_ARGUMENTS */ @@ -314,9 +315,9 @@ var_atEntry(struct variable *vp, *var_len = sizeof(LowPhysAddr); return (u_char *) LowPhysAddr; case IPMEDIANETADDRESS: /* also ATNETADDRESS */ - *var_len = sizeof(uint32_t); - long_return = LowAddr; - return (u_char *) & long_return; + *var_len = sizeof(addr_ret); + addr_ret = LowAddr; + return (u_char *) & addr_ret; case IPMEDIATYPE: *var_len = sizeof long_return; long_return = lowIfType; @@ -381,6 +382,7 @@ var_atEntry(struct variable * vp, int Found = 0; req_e req_type; int offset, olength; + static in_addr_t addr_ret; /* * fill in object part of name for current (less sizeof instance part) @@ -454,8 +456,9 @@ var_atEntry(struct variable * vp, *var_len = Lowentry.ipNetToMediaPhysAddress.o_length; return Lowentry.ipNetToMediaPhysAddress.o_bytes; case IPMEDIANETADDRESS: - *var_len = sizeof(uint32_t); - return (u_char *) &Lowentry.ipNetToMediaNetAddress; + *var_len = sizeof(addr_ret); + addr_ret = Lowentry.ipNetToMediaNetAddress; + return (u_char *) &addr_ret; case IPMEDIATYPE: *var_len = sizeof long_return; long_return = Lowentry.ipNetToMediaType; @@ -684,11 +687,11 @@ ARP_Scan_Init(void) #ifdef ARP_SCAN_FOUR_ARGUMENTS static int -ARP_Scan_Next(u_long * IPAddr, char *PhysAddr, u_long * ifType, +ARP_Scan_Next(u_int * IPAddr, char *PhysAddr, u_long * ifType, u_short * ifIndex) #else static int -ARP_Scan_Next(u_long * IPAddr, char *PhysAddr, u_long * ifType) +ARP_Scan_Next(u_int * IPAddr, char *PhysAddr, u_long * ifType) #endif { #ifndef CAN_USE_SYSCTL @@ -838,6 +841,7 @@ var_atEntry(struct variable *vp, DWORD dwActualSize = 0; UINT i; u_char dest_addr[4]; + static in_addr_t addr_ret; /* * fill in object part of name for current (less sizeof instance part) @@ -953,10 +957,10 @@ var_atEntry(struct variable *vp, free(pIpNetTable); return (u_char *) return_buf; case IPMEDIANETADDRESS: /* also ATNETADDRESS */ - *var_len = sizeof(uint32_t); - long_return = pIpNetTable->table[i].dwAddr; + *var_len = sizeof(addr_ret); + addr_ret = pIpNetTable->table[i].dwAddr; free(pIpNetTable); - return (u_char *) & long_return; + return (u_char *) & addr_ret; case IPMEDIATYPE: *var_len = sizeof long_return; long_return = pIpNetTable->table[i].dwType; diff -up net-snmp-5.3.2.2/agent/mibgroup/mibII/ipCidrRouteTable_access.c.64bit net-snmp-5.3.2.2/agent/mibgroup/mibII/ipCidrRouteTable_access.c --- net-snmp-5.3.2.2/agent/mibgroup/mibII/ipCidrRouteTable_access.c.64bit 2003-02-22 05:19:51.000000000 +0100 +++ net-snmp-5.3.2.2/agent/mibgroup/mibII/ipCidrRouteTable_access.c 2008-07-14 15:47:56.000000000 +0200 @@ -22,6 +22,7 @@ /** a global static we'll make use of a lot to map to the right datatype to return (which for SNMP integer's is always a long). */ static u_long long_ret; +static in_addr_t addr_ret; /* @@ -32,18 +33,18 @@ u_long * get_ipCidrRouteDest(void *data_context, size_t * ret_len) { RTENTRY *ourroute = (RTENTRY *) data_context; - long_ret = ((struct sockaddr_in *) (&ourroute->rt_dst))->sin_addr.s_addr; - *ret_len = sizeof(long_ret); - return &long_ret; + addr_ret = ((struct sockaddr_in *) (&ourroute->rt_dst))->sin_addr.s_addr; + *ret_len = sizeof(addr_ret); + return &addr_ret; } u_long * get_ipCidrRouteMask(void *data_context, size_t * ret_len) { RTENTRY *ourroute = (RTENTRY *) data_context; - long_ret = ((struct sockaddr_in *) (&ourroute->rt_genmask))->sin_addr.s_addr; - *ret_len = sizeof(long_ret); - return &long_ret; + addr_ret = ((struct sockaddr_in *) (&ourroute->rt_genmask))->sin_addr.s_addr; + *ret_len = sizeof(addr_ret); + return &addr_ret; } long * @@ -59,9 +60,9 @@ u_long * get_ipCidrRouteNextHop(void *data_context, size_t * ret_len) { RTENTRY *ourroute = (RTENTRY *) data_context; - long_ret = ((struct sockaddr_in *) (&ourroute->rt_gateway))->sin_addr.s_addr; - *ret_len = sizeof(long_ret); - return &long_ret; + addr_ret = ((struct sockaddr_in *) (&ourroute->rt_gateway))->sin_addr.s_addr; + *ret_len = sizeof(addr_ret); + return &addr_ret; } long * diff -up net-snmp-5.3.2.2/agent/mibgroup/mibII/var_route.c.64bit net-snmp-5.3.2.2/agent/mibgroup/mibII/var_route.c --- net-snmp-5.3.2.2/agent/mibgroup/mibII/var_route.c.64bit 2006-09-08 18:09:51.000000000 +0200 +++ net-snmp-5.3.2.2/agent/mibgroup/mibII/var_route.c 2008-07-14 15:53:17.000000000 +0200 @@ -115,6 +115,7 @@ var_ipRouteEntry(struct variable *vp, u_char *cp; u_char *ap; oid *op; + static in_addr_t add_ret; *write_method = NULL; /* write_rte; XXX: SET support not really implemented */ @@ -227,7 +228,7 @@ var_ipRouteEntry(struct variable *vp, switch (vp->magic) { case IPROUTEDEST: - *var_len = sizeof(uint32_t); + *var_len = sizeof(addr_ret); return (u_char *) get_in_address((struct sockaddr *) (rtp + 1), rtp->rtm_addrs, RTA_DST); case IPROUTEIFINDEX: @@ -261,7 +262,7 @@ var_ipRouteEntry(struct variable *vp, long_return = -1; return (u_char *) & long_return; case IPROUTENEXTHOP: - *var_len = sizeof(uint32_t); + *var_len = sizeof(addr_ret); return (u_char *) get_in_address((struct sockaddr *) (rtp + 1), rtp->rtm_addrs, RTA_GATEWAY); case IPROUTETYPE: @@ -287,9 +288,10 @@ var_ipRouteEntry(struct variable *vp, long_return = 0; return (u_char *) & long_return; case IPROUTEMASK: + *var_len = sizeof(addr_ret); if (rtp->rtm_flags & RTF_HOST) { - long_return = 0x00000001; - return (u_char *) & long_return; + addr_ret = 0x00000001; + return (u_char *) & addr_ret; } else { return (u_char *) get_in_address((struct sockaddr *) (rtp + 1), rtp->rtm_addrs, RTA_NETMASK); @@ -428,6 +430,7 @@ var_ipRouteEntry(struct variable * vp, static oid saveName[MAX_OID_LEN], Current[MAX_OID_LEN]; u_char *cp; oid *op; + static in_addr_t addr_ret; #if NEED_KLGETSA struct sockaddr_in *sa; #endif @@ -532,13 +535,13 @@ var_ipRouteEntry(struct variable * vp, switch (vp->magic) { case IPROUTEDEST: - *var_len = sizeof(uint32_t); + *var_len = sizeof(addr_ret); #if NEED_KLGETSA sa = klgetsa((struct sockaddr_in *) rthead[RtIndex]->rt_dst); return (u_char *) & (sa->sin_addr.s_addr); #elif defined(hpux11) - long_return = rt[RtIndex].Dest; - return (u_char *) & long_return; + addr_ret = rt[RtIndex].Dest; + return (u_char *) & addr_ret; #else return (u_char *) & ((struct sockaddr_in *) &rthead[RtIndex]-> rt_dst)->sin_addr.s_addr; @@ -591,13 +594,13 @@ var_ipRouteEntry(struct variable * vp, long_return = -1; return (u_char *) & long_return; case IPROUTENEXTHOP: - *var_len = sizeof(uint32_t); + *var_len = sizeof(addr_ret); #if NEED_KLGETSA sa = klgetsa((struct sockaddr_in *) rthead[RtIndex]->rt_gateway); return (u_char *) & (sa->sin_addr.s_addr); #elif defined(hpux11) - long_return = rt[RtIndex].NextHop; - return (u_char *) & long_return; + addr_ret = rt[RtIndex].NextHop; + return (u_char *) & addr_ret; #else return (u_char *) & ((struct sockaddr_in *) &rthead[RtIndex]-> rt_gateway)->sin_addr.s_addr; @@ -634,7 +637,7 @@ var_ipRouteEntry(struct variable * vp, long_return = 0; return (u_char *) & long_return; case IPROUTEMASK: - *var_len = 4; + *var_len = sizeof(addr_ret); #if NEED_KLGETSA /* * XXX - Almost certainly not right @@ -643,14 +646,14 @@ var_ipRouteEntry(struct variable * vp, #if NO_DUMMY_VALUES return NULL; #endif - long_return = 0; + addr_ret = 0; #elif defined(hpux11) - long_return = rt[RtIndex].Mask; - return (u_char *) & long_return; + addr_ret = rt[RtIndex].Mask; + return (u_char *) & addr_ret; #else /* !NEED_KLGETSA && !hpux11 */ if (((struct sockaddr_in *) &rthead[RtIndex]->rt_dst)->sin_addr. s_addr == 0) - long_return = 0; /* Default route */ + addr_ret = 0; /* Default route */ else { #ifndef linux klookup((unsigned long) rthead[RtIndex]->rt_ifp, @@ -658,7 +661,7 @@ var_ipRouteEntry(struct variable * vp, klookup((unsigned long) rt_ifnet.if_addrlist, (char *) &rt_ifnetaddr, sizeof(rt_ifnetaddr)); - long_return = rt_ifnetaddr.ia_subnetmask; + addr_ret = rt_ifnetaddr.ia_subnetmask; #else /* linux */ cp = (u_char *) & (((struct sockaddr_in *) &(rthead[RtIndex]->rt_dst))-> @@ -669,7 +672,7 @@ var_ipRouteEntry(struct variable * vp, #endif /* linux */ } #endif /* NEED_KLGETSA */ - return (u_char *) & long_return; + return (u_char *) & addr_ret; case IPROUTEINFO: *var_len = nullOidLen; return (u_char *) nullOid; @@ -1432,6 +1435,7 @@ var_ipRouteEntry(struct variable *vp, static long Time_Of_Last_Reload = 0; u_char dest_addr[4]; MIB_IPFORWARDROW temp_row; + static in_addr_t addr_ret; /** @@ -1563,10 +1567,10 @@ var_ipRouteEntry(struct variable *vp, switch (vp->magic) { case IPROUTEDEST: - *var_len = sizeof(uint32_t); *write_method = write_rte; - long_return = pIpRtrTable->table[RtIndex].dwForwardDest; - return (u_char *) & long_return; + addr_ret = pIpRtrTable->table[RtIndex].dwForwardDest; + *var_len = sizeof(addr_ret); + return (u_char *) & addr_ret; case IPROUTEIFINDEX: *write_method = write_rte; long_return = pIpRtrTable->table[RtIndex].dwForwardIfIndex; @@ -1592,10 +1596,10 @@ var_ipRouteEntry(struct variable *vp, long_return = pIpRtrTable->table[RtIndex].dwForwardMetric5; return (u_char *) & long_return; case IPROUTENEXTHOP: - *var_len = sizeof(uint32_t); *write_method = write_rte; - long_return = pIpRtrTable->table[RtIndex].dwForwardNextHop; - return (u_char *) & long_return; + addr_ret = pIpRtrTable->table[RtIndex].dwForwardNextHop; + *var_len = sizeof(addr_ret); + return (u_char *) & addr_ret; case IPROUTETYPE: *write_method = write_rte; long_return = pIpRtrTable->table[RtIndex].dwForwardType; @@ -1609,8 +1613,9 @@ var_ipRouteEntry(struct variable *vp, return (u_char *) & long_return; case IPROUTEMASK: *write_method = write_rte; - long_return = pIpRtrTable->table[RtIndex].dwForwardMask; - return (u_char *) & long_return; + addr_ret = pIpRtrTable->table[RtIndex].dwForwardMask; + *var_len = sizeof(addr_ret); + return (u_char *) & addr_ret; case IPROUTEINFO: *var_len = nullOidLen; return (u_char *) nullOid; @@ -1784,6 +1789,7 @@ var_ipRouteEntry(struct variable * vp, static struct snmprt *savert; static int saveNameLen, saveExact; static oid saveName[14], Current[14]; + static in_addr_t addr_ret; *write_method = NULL; /* write_rte; XXX: SET support not really implemented */ @@ -1860,9 +1866,9 @@ var_ipRouteEntry(struct variable * vp, switch (vp->magic) { case IPROUTEDEST: - *var_len = sizeof(uint32_t); - long_return = rt->dest.s_addr; - return (u_char *) & long_return; + addr_ret = rt->dest.s_addr; + *var_len = sizeof(addr_ret); + return (u_char *) & addr_ret; case IPROUTEIFINDEX: long_return = rt->index; @@ -1885,14 +1891,14 @@ var_ipRouteEntry(struct variable * vp, return (u_char *) & long_return; case IPROUTENEXTHOP: - *var_len = sizeof(uint32_t); + *var_len = sizeof(addr_ret); if (rt->gateway.s_addr == 0 && rt->ifa.s_addr == 0) - long_return = 0; + addr_ret = 0; else if (rt->gateway.s_addr == 0) - long_return = rt->ifa.s_addr; + addr_ret = rt->ifa.s_addr; else - long_return = rt->gateway.s_addr; - return (u_char *) & long_return; + addr_ret = rt->gateway.s_addr; + return (u_char *) & addr_ret; case IPROUTETYPE: if (rt->hdr->rtm_flags & RTF_UP) { @@ -1918,8 +1924,9 @@ var_ipRouteEntry(struct variable * vp, return (u_char *) & long_return; case IPROUTEMASK: - long_return = rt->netmask.s_addr; - return (u_char *) & long_return; + addr_ret = rt->netmask.s_addr; + *var_len = sizeof(addr_ret); + return (u_char *) & addr_ret; case IPROUTEINFO: *var_len = nullOidLen; diff -up net-snmp-5.3.2.2/agent/mibgroup/ucd-snmp/pass.c.64bit net-snmp-5.3.2.2/agent/mibgroup/ucd-snmp/pass.c --- net-snmp-5.3.2.2/agent/mibgroup/ucd-snmp/pass.c.64bit 2005-08-18 02:44:02.000000000 +0200 +++ net-snmp-5.3.2.2/agent/mibgroup/ucd-snmp/pass.c 2008-07-14 15:47:56.000000000 +0200 @@ -287,6 +287,7 @@ var_extensible_pass(struct variable *vp, oid newname[MAX_OID_LEN]; int i, rtest, fd, newlen; static long long_ret; + static in_addr_t addr_ret; char buf[SNMP_MAXBUF]; static char buf2[SNMP_MAXBUF]; static oid objid[MAX_OID_LEN]; @@ -412,13 +413,13 @@ var_extensible_pass(struct variable *vp, *var_len = 0; return (NULL); } - long_ret = + addr_ret = (objid[0] << (8 * 3)) + (objid[1] << (8 * 2)) + (objid[2] << 8) + objid[3]; - long_ret = htonl(long_ret); - *var_len = sizeof(long_ret); + addr_ret = htonl(addr_ret); + *var_len = sizeof(addr_ret); vp->type = ASN_IPADDRESS; - return ((unsigned char *) &long_ret); + return ((unsigned char *) &addr_ret); } } *var_len = 0; diff -up net-snmp-5.3.2.2/agent/mibgroup/ucd-snmp/pass_persist.c.64bit net-snmp-5.3.2.2/agent/mibgroup/ucd-snmp/pass_persist.c --- net-snmp-5.3.2.2/agent/mibgroup/ucd-snmp/pass_persist.c.64bit 2005-10-03 13:52:44.000000000 +0200 +++ net-snmp-5.3.2.2/agent/mibgroup/ucd-snmp/pass_persist.c 2008-07-14 15:47:56.000000000 +0200 @@ -218,6 +218,7 @@ var_extensible_pass_persist(struct varia oid newname[MAX_OID_LEN]; int i, rtest, newlen; static long long_ret; + static in_addr_t addr_ret; char buf[SNMP_MAXBUF]; static char buf2[SNMP_MAXBUF]; static oid objid[MAX_OID_LEN]; @@ -366,13 +367,13 @@ var_extensible_pass_persist(struct varia *var_len = 0; return (NULL); } - long_ret = + addr_ret = (objid[0] << (8 * 3)) + (objid[1] << (8 * 2)) + (objid[2] << 8) + objid[3]; - long_ret = htonl(long_ret); - *var_len = sizeof(long_ret); + addr_ret = htonl(addr_ret); + *var_len = sizeof(addr_ret); vp->type = ASN_IPADDRESS; - return ((unsigned char *) &long_ret); + return ((unsigned char *) &addr_ret); } } *var_len = 0;