X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=lib%2Fnet_utils.c;h=d06be22849fb44643e484029c50d2181d6f46344;hb=9bc9664d5ee16155b42baf92282ba7198ef4e873;hp=8d66163159c60d706b80c9f37d2594878d456a52;hpb=5b9c79a81db80c3f9e50c77477957cd803429af8;p=u-boot diff --git a/lib/net_utils.c b/lib/net_utils.c index 8d66163159..d06be22849 100644 --- a/lib/net_utils.c +++ b/lib/net_utils.c @@ -12,23 +12,33 @@ #include -IPaddr_t string_to_ip(const char *s) +struct in_addr string_to_ip(const char *s) { - IPaddr_t addr; + struct in_addr addr; char *e; int i; + addr.s_addr = 0; if (s == NULL) - return(0); + return addr; - for (addr=0, i=0; i<4; ++i) { + for (addr.s_addr = 0, i = 0; i < 4; ++i) { ulong val = s ? simple_strtoul(s, &e, 10) : 0; - addr <<= 8; - addr |= (val & 0xFF); + if (val > 255) { + addr.s_addr = 0; + return addr; + } + if (i != 3 && *e != '.') { + addr.s_addr = 0; + return addr; + } + addr.s_addr <<= 8; + addr.s_addr |= (val & 0xFF); if (s) { s = (*e) ? e+1 : e; } } - return (htonl(addr)); + addr.s_addr = htonl(addr.s_addr); + return addr; }