[U-Boot-Users] [PATCH] 2/9: bootp
Robert Schwebel
robert at schwebel.de
Thu Mar 6 13:31:01 CET 2003
BOOTP
=====
- bug: when accessing data inside a network packet you must use
NetCopyIP. When accessing data directly via pointers you can be biten
by the processor's 32 bit alignment.
Robert
--
Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de
Pengutronix - Linux Solutions for Science and Industry
Braunschweiger Str. 79, 31134 Hildesheim, Germany
Handelsregister: Amtsgericht Hildesheim, HRA 2686
Phone: +49-5121-28619-0 | Fax: +49-5121-28619-4
-------------- next part --------------
diff -urN -x CVS -x ptx-patches -x logfile -x logfile1 u-boot/net/bootp.c u-boot-ptx/net/bootp.c
--- u-boot/net/bootp.c 2002-09-28 01:19:37.000000000 +0200
+++ u-boot-ptx/net/bootp.c 2003-02-11 19:42:44.000000000 +0100
@@ -8,10 +8,11 @@
* Copyright 2000-2002 Wolfgang Denk, wd at denx.de
*/
-#if 0
-#define DEBUG 1 /* general debug */
-#define DEBUG_BOOTP_EXT 1 /* Debug received vendor fields */
-#endif
+//#define DEBUG 1 /* general debug */
+//#define DEBUG_BOOTP_EXT 1 /* Debug received vendor fields */
+#undef DEBUG
+#undef DEBUG_BOOTP_EXT
+
#ifdef DEBUG_BOOTP_EXT
#define debug_ext(fmt,args...) printf (fmt ,##args)
@@ -752,8 +753,10 @@
volatile uchar *pkt, *iphdr;
Bootp_t *bp;
int pktlen, iplen, extlen;
+ IPaddr_t OfferedIP;
debug ("DhcpSendRequestPkt: Sending DHCPREQUEST\n");
+
pkt = NetTxPacket;
memset ((void*)pkt, 0, PKTSIZE);
@@ -784,13 +787,16 @@
/*
* Copy options from OFFER packet if present
*/
- extlen = DhcpExtended(bp->bp_vend, DHCP_REQUEST, NetServerIP, bp->bp_yiaddr);
+
+ NetCopyIP(&OfferedIP, &bp->bp_yiaddr);
+ extlen = DhcpExtended(bp->bp_vend, DHCP_REQUEST, NetServerIP, OfferedIP);
pktlen = BOOTP_SIZE - sizeof(bp->bp_vend) + extlen;
iplen = BOOTP_HDR_SIZE - sizeof(bp->bp_vend) + extlen;
NetSetIP(iphdr, 0xFFFFFFFFL, PORT_BOOTPS, PORT_BOOTPC, iplen);
debug ("Transmitting DHCPREQUEST packet: len = %d\n", pktlen);
+
NetSendPacket(NetTxPacket, pktlen);
}
More information about the U-Boot
mailing list