[BusyBox 0000976]: udhcpc doesn't work if built for 64bit an big endian

bugs at busybox.net bugs at busybox.net
Sun Sep 3 16:58:10 UTC 2006


A NOTE has been added to this issue. 
====================================================================== 
http://busybox.net/bugs/view.php?id=976 
====================================================================== 
Reported By:                creese
Assigned To:                BusyBox
====================================================================== 
Project:                    BusyBox
Issue ID:                   976
Category:                   Networking Support
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     assigned
====================================================================== 
Date Submitted:             07-31-2006 18:27 PDT
Last Modified:              09-03-2006 09:58 PDT
====================================================================== 
Summary:                    udhcpc doesn't work if built for 64bit an big endian
Description: 
The size of a IP addresses are defined as unsigned long instead of
uint32_t. I've attached a patch.
====================================================================== 

---------------------------------------------------------------------- 
 creese - 08-01-06 09:50  
---------------------------------------------------------------------- 
My last patch missed the lease time. It also needs to be a uint32_t instead
of unsigned long on 64bit archs.

--- networking/udhcp/dhcpc.c.orig       2006-08-01 09:34:14.000000000
-0700
+++ networking/udhcp/dhcpc.c    2006-08-01 09:35:18.000000000 -0700
@@ -31,9 +31,9 @@
 #include "signalpipe.h"
 
 static int state;
-static unsigned long requested_ip; /* = 0 */
-static unsigned long server_addr;
-static unsigned long timeout;
+static uint32_t requested_ip; /* = 0 */
+static uint32_t server_addr;
+static uint32_t timeout;
 static int packet_num; /* = 0 */
 static int fd = -1;
 
@@ -138,7 +138,8 @@
 {
        uint8_t *temp, *message;
        unsigned long t1 = 0, t2 = 0, xid = 0;
-       unsigned long start = 0, lease;
+       unsigned long start = 0;
+       uint32_t lease;
        fd_set rfds;
        int retval;
        struct timeval tv;

 

---------------------------------------------------------------------- 
 vda - 09-03-06 09:58  
---------------------------------------------------------------------- 
Well... what is the problem? _How exactly_ it doesn't work?

-static unsigned long timeout;
+static uint32_t timeout;

I'd understand if you turn it into uint, but uint32? Why? 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
07-31-06 18:27  creese         New Issue                                    
07-31-06 18:27  creese         Status                   new => assigned     
07-31-06 18:27  creese         Assigned To               => BusyBox         
07-31-06 18:27  creese         File Added: busybox-udhcpcd-64bit.patch          
         
08-01-06 09:48  creese         Note Added: 0001554                          
08-01-06 09:50  creese         Note Edited: 0001554                         
09-03-06 09:58  vda            Note Added: 0001617                          
======================================================================




More information about the busybox-cvs mailing list