net: Use u32 instead of ulong for transaction ID in bootp
PATCH 1/1 net: Use u32 instead of ulong for transaction ID in bootp
From: Siva Durga Prasad Paladugu <[email protected]>
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.
---
include/net.h | 14 +++++++------- net/bootp.c | 18 +++++++++--------- net/bootp.h | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-)
include/net.h +7 -7
@@ -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)); }/**
net/bootp.c +9 -9
@@ -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 */
net/bootp.h +1 -1
@@ -38,7 +38,7 @@ struct Bootp_t {uchar bp_hlen;/* Hardware address length */ # define HWL_ETHER 6uchar 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 */
Signature · 1 line
2.3.5
PATCH 1/1 net: Use u32 instead of ulong for transaction ID in bootp
Quoted 14 lines · Michal Simek
From: Siva Durga Prasad Paladugu <[email protected]>
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_MAGICis 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.
Quoted 8 lines
Signed-off-by Siva Durga Prasad Paladugu <[email protected]>Signed-off-by Michal Simek <[email protected]>---
include/net.h | 14 +++++++------- net/bootp.c | 18 +++++++++--------- net/bootp.h | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-)
Looks reasonable to me:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150415/415327c0/attachment.sig>
PATCH 1/1 net: Use u32 instead of ulong for transaction ID in bootp
In reply to Michal SimekHi Michal,
Quoted 9 lines · Michal Simek
From: Siva Durga Prasad Paladugu <[email protected]>
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_MAGICis also 4 bytes.
Quoted 8 lines
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 <[email protected]>Signed-off-by Michal Simek <[email protected]>
This is a dup of https://patchwork.ozlabs.org/patch/459122/ which is already included in a pull request here:
https://patchwork.ozlabs.org/patch/461424/
Thanks anyway,
-Joe
PATCH 1/1 net: Use u32 instead of ulong for transaction ID in bootp
Quoted 19 lines · Joe Hershberger
Hi Michal,
Quoted 15 lines · Michal Simek
From: Siva Durga Prasad Paladugu <[email protected]>
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_MAGICis 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.
Quoted 6 lines
Quoted 2 lines
Signed-off-by Siva Durga Prasad Paladugu <[email protected]>Signed-off-by Michal Simek <[email protected]>This is a dup of https://patchwork.ozlabs.org/patch/459122/ which is already included in a pull request here:
https://patchwork.ozlabs.org/patch/461424/
That's great.
Thanks,
Michal