Blame view

lib/net_utils.c 825 Bytes
6a45e3849   Dirk Behme   Make getenv_IPadd...
1
2
3
4
5
6
7
8
9
  /*
   * Generic network code. Moved from net.c
   *
   * Copyright 1994 - 2000 Neil Russell.
   * Copyright 2000 Roland Borde
   * Copyright 2000 Paolo Scaffardi
   * Copyright 2000-2002 Wolfgang Denk, wd@denx.de
   * Copyright 2009 Dirk Behme, dirk.behme@googlemail.com
   *
1a4596601   Wolfgang Denk   Add GPL-2.0+ SPDX...
10
   * SPDX-License-Identifier:	GPL-2.0+
6a45e3849   Dirk Behme   Make getenv_IPadd...
11
12
13
   */
  
  #include <common.h>
049a95a77   Joe Hershberger   net: cosmetic: Ch...
14
  struct in_addr string_to_ip(const char *s)
6a45e3849   Dirk Behme   Make getenv_IPadd...
15
  {
049a95a77   Joe Hershberger   net: cosmetic: Ch...
16
  	struct in_addr addr;
6a45e3849   Dirk Behme   Make getenv_IPadd...
17
18
  	char *e;
  	int i;
049a95a77   Joe Hershberger   net: cosmetic: Ch...
19
  	addr.s_addr = 0;
6a45e3849   Dirk Behme   Make getenv_IPadd...
20
  	if (s == NULL)
049a95a77   Joe Hershberger   net: cosmetic: Ch...
21
  		return addr;
6a45e3849   Dirk Behme   Make getenv_IPadd...
22

049a95a77   Joe Hershberger   net: cosmetic: Ch...
23
  	for (addr.s_addr = 0, i = 0; i < 4; ++i) {
6a45e3849   Dirk Behme   Make getenv_IPadd...
24
  		ulong val = s ? simple_strtoul(s, &e, 10) : 0;
d921ed9a2   Chris Packham   lib: net_utils: m...
25
26
27
28
  		if (val > 255) {
  			addr.s_addr = 0;
  			return addr;
  		}
f267e40f9   Chris Packham   lib: net_utils: e...
29
30
31
32
  		if (i != 3 && *e != '.') {
  			addr.s_addr = 0;
  			return addr;
  		}
049a95a77   Joe Hershberger   net: cosmetic: Ch...
33
34
  		addr.s_addr <<= 8;
  		addr.s_addr |= (val & 0xFF);
6a45e3849   Dirk Behme   Make getenv_IPadd...
35
36
37
38
  		if (s) {
  			s = (*e) ? e+1 : e;
  		}
  	}
049a95a77   Joe Hershberger   net: cosmetic: Ch...
39
40
  	addr.s_addr = htonl(addr.s_addr);
  	return addr;
6a45e3849   Dirk Behme   Make getenv_IPadd...
41
  }