Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 318061 Details for
Bug 464764
[RHEL4] IP address length is 8 bytes on 64bits
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Patch to fix the size of IP addresses on RHEL4
net-snmp-5.1.2-ip-size.patch (text/plain), 17.01 KB, created by
Olivier Fourdan
on 2008-09-30 11:47:20 UTC
(
hide
)
Description:
Patch to fix the size of IP addresses on RHEL4
Filename:
MIME Type:
Creator:
Olivier Fourdan
Created:
2008-09-30 11:47:20 UTC
Size:
17.01 KB
patch
obsolete
>--- net-snmp-5.1.2/snmplib/snmp_client.c.ip-size 2008-09-30 11:06:42.000000000 +0100 >+++ net-snmp-5.1.2/snmplib/snmp_client.c 2008-09-30 11:07:25.000000000 +0100 >@@ -752,7 +752,6 @@ snmp_set_var_value(netsnmp_variable_list > case ASN_INTEGER: > case ASN_UNSIGNED: > case ASN_TIMETICKS: >- case ASN_IPADDRESS: > case ASN_COUNTER: > if (value) { > if (largeval) { >@@ -789,6 +788,11 @@ snmp_set_var_value(netsnmp_variable_list > memmove(vars->val.objid, value, vars->val_len); > break; > >+ case ASN_IPADDRESS: /* snmp_build_var_op treats IPADDR like a string */ >+ if (4 != vars->val_len) { >+ netsnmp_assert("ipaddress length == 4"); >+ } >+ /** FALL THROUGH */ > case ASN_PRIV_IMPLIED_OCTET_STR: > case ASN_OCTET_STR: > case ASN_BIT_STR: >--- net-snmp-5.1.2/snmplib/snmp_api.c.ip-size 2008-09-29 15:53:09.000000000 +0100 >+++ net-snmp-5.1.2/snmplib/snmp_api.c 2008-09-29 15:53:38.000000000 +0100 >@@ -6483,7 +6483,7 @@ snmp_add_var(netsnmp_pdu *pdu, > ltmp = inet_addr(value); > if (ltmp != (long) -1 || !strcmp(value, "255.255.255.255")) > snmp_pdu_add_variable(pdu, name, name_length, ASN_IPADDRESS, >- (u_char *) & ltmp, sizeof(long)); >+ (u_char *) & ltmp, sizeof(ltmp)); > else > goto fail; > break; >--- net-snmp-5.1.2/agent/mibgroup/mibII/udpTable.c.ip-size 2004-07-21 07:26:18.000000000 +0100 >+++ net-snmp-5.1.2/agent/mibgroup/mibII/udpTable.c 2008-09-29 13:48:17.000000000 +0100 >@@ -174,6 +174,7 @@ udpTable_handler(netsnmp_mib_handler > UDPTABLE_ENTRY_TYPE *entry; > oid subid; > long port; >+ in_addr_t addr; > > DEBUGMSGTL(("mibII/udpTable", "Handler - mode %s\n", > se_find_label_in_slist("agent_mode", reqinfo->mode))); >@@ -344,6 +345,7 @@ udpTable_next_entry( void **loop_context > { > UDPTABLE_ENTRY_TYPE *entry = (UDPTABLE_ENTRY_TYPE *)*loop_context; > long port; >+ in_addr_t addr; > > if (!entry) > return NULL; >--- net-snmp-5.1.2/agent/mibgroup/mibII/at.c.ip-size 2008-09-29 12:54:33.000000000 +0100 >+++ net-snmp-5.1.2/agent/mibgroup/mibII/at.c 2008-09-29 12:54:33.000000000 +0100 >@@ -207,7 +207,7 @@ var_atEntry(struct variable *vp, > oid current[16]; > static char PhysAddr[6], LowPhysAddr[6]; > u_int Addr, LowAddr, foundone; >- static int addr_ret; >+ static in_addr_t addr_ret; > #ifdef ARP_SCAN_FOUR_ARGUMENTS > u_short ifIndex, lowIfIndex = 0; > #endif /* ARP_SCAN_FOUR_ARGUMENTS */ >@@ -317,7 +317,7 @@ var_atEntry(struct variable *vp, > *var_len = sizeof(LowPhysAddr); > return (u_char *) LowPhysAddr; > case IPMEDIANETADDRESS: /* also ATNETADDRESS */ >- *var_len = sizeof addr_ret; >+ *var_len = sizeof(addr_ret); > addr_ret = LowAddr; > return (u_char *) & addr_ret; > case IPMEDIATYPE: >@@ -384,6 +384,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) >@@ -457,8 +458,9 @@ var_atEntry(struct variable * vp, > *var_len = Lowentry.ipNetToMediaPhysAddress.o_length; > return Lowentry.ipNetToMediaPhysAddress.o_bytes; > case IPMEDIANETADDRESS: >- *var_len = sizeof(Lowentry.ipNetToMediaNetAddress); >- 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; >@@ -840,6 +842,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) >@@ -955,10 +958,10 @@ var_atEntry(struct variable *vp, > free(pIpNetTable); > return (u_char *) return_buf; > case IPMEDIANETADDRESS: /* also ATNETADDRESS */ >- *var_len = sizeof long_return; >- 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; >--- net-snmp-5.1.2/agent/mibgroup/mibII/var_route.c.ip-size 2008-09-29 12:54:33.000000000 +0100 >+++ net-snmp-5.1.2/agent/mibgroup/mibII/var_route.c 2008-09-29 12:54:33.000000000 +0100 >@@ -114,6 +114,7 @@ var_ipRouteEntry(struct variable *vp, > u_char *cp; > u_char *ap; > oid *op; >+ static in_addr_t add_ret; > > *write_method = write_rte; > >@@ -226,6 +227,7 @@ var_ipRouteEntry(struct variable *vp, > > switch (vp->magic) { > case IPROUTEDEST: >+ *var_len = sizeof(addr_ret); > return (u_char *) get_in_address((struct sockaddr *) (rtp + 1), > rtp->rtm_addrs, RTA_DST); > case IPROUTEIFINDEX: >@@ -259,7 +261,8 @@ var_ipRouteEntry(struct variable *vp, > long_return = -1; > return (u_char *) & long_return; > case IPROUTENEXTHOP: >- return (u_char *) get_in_address((struct sockaddr *) (rtp + 1), >+ *var_len = sizeof(addr_ret); >+ return (u_char *) get_in_address((struct sockaddr *) (rtp + 1), > rtp->rtm_addrs, RTA_GATEWAY); > case IPROUTETYPE: > if (rtp->rtm_flags & RTF_UP) { >@@ -284,9 +287,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); >@@ -656,7 +660,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))-> >@@ -724,7 +728,7 @@ var_ipRouteEntry(struct variable * vp, > mib2_ipRouteEntry_t Lowentry, Nextentry, entry; > int Found = 0; > req_e req_type; >- static uint32_t ipaddr_return; >+ static in_addr_t adr_ret; > > *write_method = write_rte; > >@@ -789,9 +793,9 @@ var_ipRouteEntry(struct variable * vp, > > switch (vp->magic) { > case IPROUTEDEST: >- *var_len = sizeof(uint32_t); >- ipaddr_return = Lowentry.ipRouteDest; >- return (u_char *) & ipaddr_return; >+ *var_len = sizeof(addr_ret); >+ addr_ret = Lowentry.ipRouteDest; >+ return (u_char *) & addr_ret; > case IPROUTEIFINDEX: > long_return = > Interface_Index_By_Name(Lowentry.ipRouteIfIndex.o_bytes, >@@ -810,9 +814,9 @@ var_ipRouteEntry(struct variable * vp, > long_return = Lowentry.ipRouteMetric4; > return (u_char *) & long_return; > case IPROUTENEXTHOP: >- *var_len = sizeof(uint32_t); >- ipaddr_return = Lowentry.ipRouteNextHop; >- return (u_char *) & ipaddr_return; >+ *var_len = sizeof(addr_ret); >+ addr_ret = Lowentry.ipRouteNextHop; >+ return (u_char *) & addr_ret; > case IPROUTETYPE: > long_return = Lowentry.ipRouteType; > return (u_char *) & long_return; >@@ -825,9 +829,9 @@ var_ipRouteEntry(struct variable * vp, > long_return = Lowentry.ipRouteAge; > return (u_char *) & long_return; > case IPROUTEMASK: >- *var_len = sizeof(uint32_t); >- ipaddr_return = Lowentry.ipRouteMask; >- return (u_char *) & ipaddr_return; >+ *var_len = sizeof(addr_ret); >+ addr_ret = Lowentry.ipRouteMask; >+ return (u_char *) & addr_ret; > default: > DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_ipRouteEntry\n", > vp->magic)); >@@ -1437,7 +1441,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; > > /** > ** this optimisation fails, if there is only a single route avail. >@@ -1568,9 +1572,9 @@ var_ipRouteEntry(struct variable *vp, > > switch (vp->magic) { > case IPROUTEDEST: >- *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; >@@ -1596,9 +1600,9 @@ var_ipRouteEntry(struct variable *vp, > long_return = pIpRtrTable->table[RtIndex].dwForwardMetric5; > return (u_char *) & long_return; > case IPROUTENEXTHOP: >- *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; >@@ -1611,9 +1615,9 @@ var_ipRouteEntry(struct variable *vp, > long_return = pIpRtrTable->table[RtIndex].dwForwardAge; > 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; >@@ -1787,6 +1791,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 = write_rte; > >@@ -1863,8 +1868,9 @@ var_ipRouteEntry(struct variable * vp, > > switch (vp->magic) { > case IPROUTEDEST: >- 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; >@@ -1888,12 +1894,13 @@ var_ipRouteEntry(struct variable * vp, > > case IPROUTENEXTHOP: > 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; >+ *var_len = sizeof(addr_ret); >+ return (u_char *) & addr_ret; > > case IPROUTETYPE: > if (rt->hdr->rtm_flags & RTF_UP) { >@@ -1919,8 +1926,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; >--- net-snmp-5.1.2/agent/mibgroup/mibII/ipAddr.c.ip-size 2008-09-29 12:54:33.000000000 +0100 >+++ net-snmp-5.1.2/agent/mibgroup/mibII/ipAddr.c 2008-09-30 11:14:12.000000000 +0100 >@@ -199,13 +199,13 @@ var_ipAddrEntry(struct variable *vp, > static struct in_ifaddr in_ifaddr, lowin_ifaddr; > #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 */ >+ static in_addr_t addr_ret; > > /* > * fill in object part of name for current (less sizeof instance part) >@@ -299,12 +299,13 @@ var_ipAddrEntry(struct variable *vp, > case IPADADDR: > *var_len = sizeof(addr_ret); > #ifdef hpux11 >- addr_ret = lowin_ifaddr.Addr; >+ addr_ret = 1; /*lowin_ifaddr.Addr; */ > return (u_char *) & addr_ret; > #elif defined(linux) || defined(sunV3) > return (u_char *) & ((struct sockaddr_in *) &lowin_ifnet.if_addr)-> > sin_addr.s_addr; > #else >+ *var_len = sizeof(((struct sockaddr_in *) &lowin_ifaddr.ia_addr)->sin_addr.s_addr); > return (u_char *) & ((struct sockaddr_in *) &lowin_ifaddr. > ia_addr)->sin_addr.s_addr; > #endif >@@ -632,6 +633,7 @@ var_ipAddrEntry(struct variable * vp, > static mib2_ipAddrEntry_t Lowentry; > int Found = 0; > req_e req_type; >+ static in_addr_t addr_ret; > > /* > * fill in object part of name for current (less sizeof instance part) >@@ -698,16 +700,18 @@ var_ipAddrEntry(struct variable * vp, > *var_len = sizeof(long_return); > switch (vp->magic) { > case IPADADDR: >- *var_len = sizeof(Lowentry.ipAdEntAddr); >- return (u_char *) &Lowentry.ipAdEntAddr; >+ addr_ret = Lowentry.ipAdEntAddr; >+ *var_len = sizeof(addr_ret); >+ return (u_char *) & addr_ret; > case IPADIFINDEX: > long_return = > Interface_Index_By_Name(Lowentry.ipAdEntIfIndex.o_bytes, > Lowentry.ipAdEntIfIndex.o_length); > return (u_char *) & long_return; > case IPADNETMASK: >- *var_len = sizeof(Lowentry.ipAdEntNetMask); >- return (u_char *) &Lowentry.ipAdEntNetMask; >+ *var_len = sizeof(addr_ret); >+ addr_ret = Lowentry.ipAdEntNetMask; >+ return (u_char *) & addr_ret; > case IPADBCASTADDR: > *var_len = sizeof(Lowentry.ipAdEntBcastAddr); > return (u_char *)&Lowentry.ipAdEntBcastAddr; >@@ -869,6 +873,7 @@ var_ipAddrEntry(struct variable *vp, > u_char *cp; > int lowinterface = -1; > int i, interface; >+ static in_addr_t addr_ret; > > /* > * fill in object part of name for current (less sizeof instance part) >@@ -918,16 +923,18 @@ var_ipAddrEntry(struct variable *vp, > *var_len = sizeof(long_return); > switch (vp->magic) { > case IPADADDR: >- long_return = ifs[i].addr.s_addr; >- return (u_char *) & long_return; >+ addr_ret = ifs[i].addr.s_addr; >+ *var_len = sizeof(addr_ret); >+ return (u_char *) & addr_ret; > > case IPADIFINDEX: > long_return = ifs[i].index; > return (u_char *) & long_return; > > case IPADNETMASK: >- long_return = ifs[i].mask.s_addr; >- return (u_char *) & long_return; >+ addr_ret = ifs[i].mask.s_addr; >+ *var_len = sizeof(addr_ret); >+ return (u_char *) & addr_ret; > > case IPADBCASTADDR: > long_return = ntohl(ifs[i].bcast.s_addr) & 1; >@@ -972,6 +979,7 @@ var_ipAddrEntry(struct variable *vp, > DWORD status = NO_ERROR; > DWORD statusRetry = NO_ERROR; > DWORD dwActualSize = 0; >+ static in_addr_t addr_ret; > > /* > * fill in object part of name for current (less sizeof instance part) >@@ -1027,8 +1035,9 @@ var_ipAddrEntry(struct variable *vp, > *var_len = sizeof(long_return); > switch (vp->magic) { > case IPADADDR: >- long_return = pIpAddrTable->table[i].dwAddr; >- return (u_char *) & long_return; >+ addr_ret = pIpAddrTable->table[i].dwAddr; >+ *var_len = sizeof(addr_ret); >+ return (u_char *) & addr_ret; > > case IPADIFINDEX: > long_return = pIpAddrTable->table[i].dwIndex; >@@ -1036,9 +1045,10 @@ var_ipAddrEntry(struct variable *vp, > return (u_char *) & long_return; > > case IPADNETMASK: >- long_return = pIpAddrTable->table[i].dwMask; >+ addr_ret = pIpAddrTable->table[i].dwMask; >+ *var_len = sizeof(addr_ret); > free(pIpAddrTable); >- return (u_char *) & long_return; >+ return (u_char *) & addr_ret; > > case IPADBCASTADDR: > long_return = pIpAddrTable->table[i].dwBCastAddr; >--- net-snmp-5.1.2/include/net-snmp/types.h.ip-size 2004-02-04 11:21:33.000000000 +0000 >+++ net-snmp-5.1.2/include/net-snmp/types.h 2008-09-29 12:54:33.000000000 +0100 >@@ -57,7 +57,7 @@ typedef u_int socklen_t; > #endif > > #ifndef HAVE_IN_ADDR_T >-typedef u_int in_addr_t; >+typedef uint32_t in_addr_t; > #endif > > #ifndef HAVE_SSIZE_T
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 464764
:
318061
|
319537