* Patch by Philippe Robin, 09 Mar 2004:
  Added ARM Integrator AP, CP and Versatile PB926EJ-S Reference
  Platform support.

* Patch by Masami Komiya, 08 Mar 2004:
  Don't overwrite server IP address or boot file name
  when the boot server does not return values

* Patch by listmember@orkun.us, 5 Mar 2004:
  Removed compile time restriction on CFG_I2C_SPEED for DS1338 RTC
diff --git a/net/bootp.c b/net/bootp.c
index b760b88..9eae34f 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -117,10 +117,15 @@
  */
 static void BootpCopyNetParams(Bootp_t *bp)
 {
+	IPaddr_t tmp_ip;
+
 	NetCopyIP(&NetOurIP, &bp->bp_yiaddr);
-	NetCopyIP(&NetServerIP, &bp->bp_siaddr);
+	NetCopyIP(&tmp_ip, &bp->bp_siaddr);
+	if (tmp_ip != 0)
+		NetCopyIP(&NetServerIP, &bp->bp_siaddr);
 	memcpy (NetServerEther, ((Ethernet_t *)NetRxPkt)->et_src, 6);
-	copy_filename (BootFile, bp->bp_file, sizeof(BootFile));
+	if (strlen(bp->bp_file) > 0)
+		copy_filename (BootFile, bp->bp_file, sizeof(BootFile));
 
 	debug ("Bootfile: %s\n", BootFile);
 
diff --git a/net/net.c b/net/net.c
index 47c2007..907cd73 100644
--- a/net/net.c
+++ b/net/net.c
@@ -323,7 +323,7 @@
 		 * IP addr assigned to us by the BOOTP / RARP server
 		 */
 		NetOurIP = 0;
-		NetServerIP = 0;
+		NetServerIP = getenv_IPaddr ("serverip");
 		break;
 	default:
 		break;
@@ -354,7 +354,7 @@
 		case DHCP:
 			/* Start with a clean slate... */
 			NetOurIP = 0;
-			NetServerIP = 0;
+			NetServerIP = getenv_IPaddr ("serverip");
 			DhcpRequest();		/* Basically same as BOOTP */
 			break;
 #endif /* CFG_CMD_DHCP */
@@ -832,7 +832,8 @@
 			printf("invalid RARP header\n");
 		} else {
 			NetCopyIP(&NetOurIP,    &arp->ar_data[16]);
-			NetCopyIP(&NetServerIP, &arp->ar_data[ 6]);
+			if (NetServerIP == 0)
+				NetCopyIP(&NetServerIP, &arp->ar_data[ 6]);
 			memcpy (NetServerEther, &arp->ar_data[ 0], 6);
 
 			(*packetHandler)(0,0,0,0);