]> git.sur5r.net Git - u-boot/blobdiff - net/net.c
Merge branch 'master' of git://git.denx.de/u-boot-mpc83xx
[u-boot] / net / net.c
index fd13cd93f444394650c0a1953e2f33b5f6d2f405..33fcd90cd429ad066da1ca5ed50efef510b85663 100644 (file)
--- a/net/net.c
+++ b/net/net.c
@@ -96,8 +96,6 @@
 #include "dns.h"
 #endif
 
-#if defined(CONFIG_CMD_NET)
-
 DECLARE_GLOBAL_DATA_PTR;
 
 #ifndef        CONFIG_ARP_TIMEOUT
@@ -1203,7 +1201,8 @@ static IP_t *__NetDefragment(IP_t *ip, int *lenp)
                h = payload + h->next_hole;
        }
 
-       if (offset8 + (len / 8) <= h - payload) {
+       /* last fragment may be 1..7 bytes, the "+7" forces acceptance */
+       if (offset8 + ((len + 7) / 8) <= h - payload) {
                /* no overlap with holes (dup fragment?) */
                return NULL;
        }
@@ -1872,15 +1871,15 @@ void copy_filename (char *dst, char *src, int size)
        *dst = '\0';
 }
 
-#endif
-
 #if defined(CONFIG_CMD_NFS) || defined(CONFIG_CMD_SNTP) || defined(CONFIG_CMD_DNS)
 /*
- * make port a little random, but use something trivial to compute
+ * make port a little random (1024-17407)
+ * This keeps the math somewhat trivial to compute, and seems to work with
+ * all supported protocols/clients/servers
  */
 unsigned int random_port(void)
 {
-       return 1024 + (get_timer(0) % 0x8000);;
+       return 1024 + (get_timer(0) % 0x4000);
 }
 #endif
 
@@ -1894,27 +1893,6 @@ void ip_to_string (IPaddr_t x, char *s)
        );
 }
 
-IPaddr_t string_to_ip(char *s)
-{
-       IPaddr_t addr;
-       char *e;
-       int i;
-
-       if (s == NULL)
-               return(0);
-
-       for (addr=0, i=0; i<4; ++i) {
-               ulong val = s ? simple_strtoul(s, &e, 10) : 0;
-               addr <<= 8;
-               addr |= (val & 0xFF);
-               if (s) {
-                       s = (*e) ? e+1 : e;
-               }
-       }
-
-       return (htonl(addr));
-}
-
 void VLAN_to_string(ushort x, char *s)
 {
        x = ntohs(x);
@@ -1943,11 +1921,6 @@ ushort string_to_VLAN(char *s)
        return htons(id);
 }
 
-IPaddr_t getenv_IPaddr (char *var)
-{
-       return (string_to_ip(getenv(var)));
-}
-
 ushort getenv_VLAN(char *var)
 {
        return (string_to_VLAN(getenv(var)));