changeset 3093:9306ff8edcbf

* src/bootp_support.c (show_bootp): Fixed output for some fields. * src/dhcp_prot.c (do_dhcp): Convert bp_secs field to network byte order. Inspired by Kelvin Lawson. [ Bugzilla 1001170 ]
author sergeig
date Fri, 11 Mar 2011 20:00:19 +0000
parents fed9439fc16c
children 08d845c99239
files packages/net/common/current/ChangeLog packages/net/common/current/src/bootp_support.c packages/net/common/current/src/dhcp_prot.c
diffstat 3 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/packages/net/common/current/ChangeLog
+++ b/packages/net/common/current/ChangeLog
@@ -1,3 +1,10 @@
+2011-03-09  Jay Foster <jay@systech.com>
+            Sergei Gavrikov <sergei.gavrikov@gmail.com>
+
+	* src/bootp_support.c (show_bootp): Fixed output for some fields.
+	* src/dhcp_prot.c (do_dhcp): Convert bp_secs field to network byte
+	order. Inspired by Kelvin Lawson. [ Bugzilla 1001170 ]
+
 2009-09-17	Jay Foster <jay@systech.com>
 
 	* src/dhcp_prot.c (do_dhcp): Fix packet parsing for DHCP servers
--- a/packages/net/common/current/src/bootp_support.c
+++ b/packages/net/common/current/src/bootp_support.c
@@ -274,8 +274,8 @@ show_bootp(const char *intf, struct boot
     diag_printf("        hlen: %d\n", bp->bp_hlen );
     diag_printf("        hops: %d\n", bp->bp_hops );
     diag_printf("         xid: 0x%x\n", bp->bp_xid );
-    diag_printf("        secs: %d\n", bp->bp_secs );
-    diag_printf("       flags: 0x%x\n", bp->bp_flags );
+    diag_printf("        secs: %d\n", ntohs(bp->bp_secs) );
+    diag_printf("       flags: 0x%x\n", ntohs(bp->bp_flags) );
     diag_printf("       hw_addr: ");
     for (i = 0;  i < bp->bp_hlen;  i++) {
         diag_printf("%02x", bp->bp_chaddr[i]);
--- a/packages/net/common/current/src/dhcp_prot.c
+++ b/packages/net/common/current/src/dhcp_prot.c
@@ -701,6 +701,7 @@ do_dhcp(const char *intf, struct bootp *
     unsigned int length;
     
     cyg_uint32 xid;
+    unsigned short bp_secs;
 
 #define CHECK_XID() (  /* and other details */                                  \
     received->bp_xid   != xid            || /* not the same transaction */      \
@@ -842,7 +843,8 @@ do_dhcp(const char *intf, struct bootp *
             xmit->bp_htype = HTYPE_ETHERNET;
             xmit->bp_hlen = IFHWADDRLEN;
             xmit->bp_xid = xid;
-            xmit->bp_secs = cyg_current_time() / 100;
+            bp_secs = cyg_current_time() / 100;
+            xmit->bp_secs = htons(bp_secs);
             xmit->bp_flags = htons(0x8000); // BROADCAST FLAG
             bcopy(ifr.ifr_hwaddr.sa_data, &xmit->bp_chaddr, xmit->bp_hlen);
             bcopy(mincookie, xmit->bp_vend, sizeof(mincookie));