From: Siva Durga Prasad Paladugu <siva.durga.palad...@xilinx.com> Based on rfc951 transaction ID has 4 bytes which is not the case when ulong type is used on ARM64. Use u32 type which is well defined for all archs.
BOOTP_VENDOR_MAGIC is also 4 bytes. Based on RFC1048 Time Offset (code 2) is also 4bytes long and IP Address Lease Time also. The patch converts NetCopyLong to netcopy32 and NetReadLong to netread32 to follow u-boot coding style. Signed-off-by: Siva Durga Prasad Paladugu <siva...@xilinx.com> Signed-off-by: Michal Simek <michal.si...@xilinx.com> --- include/net.h | 14 +++++++------- net/bootp.c | 18 +++++++++--------- net/bootp.h | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/include/net.h b/include/net.h index 237c932be334..9b5f8249ddbb 100644 --- a/include/net.h +++ b/include/net.h @@ -607,12 +607,12 @@ static inline IPaddr_t NetReadIP(void *from) return ip; } -/* return ulong *in network byteorder* */ -static inline ulong NetReadLong(ulong *from) +/* return u32 *in network byteorder* */ +static inline u32 netread32(void *from) { - ulong l; + u32 l; - memcpy((void *)&l, (void *)from, sizeof(l)); + memcpy((void *)&l, from, sizeof(u32)); return l; } @@ -628,10 +628,10 @@ static inline void NetCopyIP(void *to, void *from) memcpy((void *)to, from, sizeof(IPaddr_t)); } -/* copy ulong */ -static inline void NetCopyLong(ulong *to, ulong *from) +/* copy u32 */ +static inline void netcopy32(void *to, void *from) { - memcpy((void *)to, (void *)from, sizeof(ulong)); + memcpy(to, from, sizeof(u32)); } /** diff --git a/net/bootp.c b/net/bootp.c index 81066015f1c2..de0d587228df 100644 --- a/net/bootp.c +++ b/net/bootp.c @@ -125,7 +125,7 @@ static int BootpCheckPkt(uchar *pkt, unsigned dest, unsigned src, unsigned len) retval = -4; else if (bp->bp_hlen != HWL_ETHER) retval = -5; - else if (!bootp_match_id(NetReadLong((ulong *)&bp->bp_id))) + else if (!bootp_match_id(netread32(&bp->bp_id))) retval = -6; debug("Filtering pkt = %d\n", retval); @@ -350,7 +350,7 @@ BootpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, BootpCopyNetParams(bp); /* Store net parameters from reply */ /* Retrieve extended information (we must parse the vendor area) */ - if (NetReadLong((ulong *)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC)) + if (netread32(&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC)) BootpVendorProcess((uchar *)&bp->bp_vend[4], len); NetSetTimeout(0, (thand_f *)0); @@ -732,7 +732,7 @@ BootpRequest(void) BootpID += get_timer(0); BootpID = htonl(BootpID); bootp_add_id(BootpID); - NetCopyLong(&bp->bp_id, &BootpID); + netcopy32(&bp->bp_id, &BootpID); /* * Calculate proper packet lengths taking into account the @@ -770,7 +770,7 @@ static void DhcpOptionsProcess(uchar *popt, struct Bootp_t *bp) #if defined(CONFIG_CMD_SNTP) && defined(CONFIG_BOOTP_TIMEOFFSET) case 2: /* Time offset */ to_ptr = &NetTimeOffset; - NetCopyLong((ulong *)to_ptr, (ulong *)(popt + 2)); + netcopy32(to_ptr, popt + 2); NetTimeOffset = ntohl(NetTimeOffset); break; #endif @@ -806,7 +806,7 @@ static void DhcpOptionsProcess(uchar *popt, struct Bootp_t *bp) break; #endif case 51: - NetCopyLong(&dhcp_leasetime, (ulong *) (popt + 2)); + netcopy32(&dhcp_leasetime, popt + 2); break; case 53: /* Ignore Message Type Option */ break; @@ -860,7 +860,7 @@ static void DhcpOptionsProcess(uchar *popt, struct Bootp_t *bp) static int DhcpMessageType(unsigned char *popt) { - if (NetReadLong((ulong *)popt) != htonl(BOOTP_VENDOR_MAGIC)) + if (netread32(popt) != htonl(BOOTP_VENDOR_MAGIC)) return -1; popt += 4; @@ -911,7 +911,7 @@ static void DhcpSendRequestPkt(struct Bootp_t *bp_offer) * ID is the id of the OFFER packet */ - NetCopyLong(&bp->bp_id, &bp_offer->bp_id); + netcopy32(&bp->bp_id, &bp_offer->bp_id); /* * Copy options from OFFER packet if present @@ -970,7 +970,7 @@ DhcpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, debug("TRANSITIONING TO REQUESTING STATE\n"); dhcp_state = REQUESTING; - if (NetReadLong((ulong *)&bp->bp_vend[0]) == + if (netread32(&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC)) DhcpOptionsProcess((u8 *)&bp->bp_vend[4], bp); @@ -986,7 +986,7 @@ DhcpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, debug("DHCP State: REQUESTING\n"); if (DhcpMessageType((u8 *)bp->bp_vend) == DHCP_ACK) { - if (NetReadLong((ulong *)&bp->bp_vend[0]) == + if (netread32(&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC)) DhcpOptionsProcess((u8 *)&bp->bp_vend[4], bp); /* Store net params from reply */ diff --git a/net/bootp.h b/net/bootp.h index 3b95a0a2ded8..cc71b2b56dec 100644 --- a/net/bootp.h +++ b/net/bootp.h @@ -38,7 +38,7 @@ struct Bootp_t { uchar bp_hlen; /* Hardware address length */ # define HWL_ETHER 6 uchar bp_hops; /* Hop count (gateway thing) */ - ulong bp_id; /* Transaction ID */ + u32 bp_id; /* Transaction ID */ ushort bp_secs; /* Seconds since boot */ ushort bp_spare1; /* Alignment */ IPaddr_t bp_ciaddr; /* Client IP address */ -- 2.3.5 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot