From 43db9e00d5837c100c0b2fbbee64a08ab807d1e0 Mon Sep 17 00:00:00 2001 From: thead_admin Date: Tue, 13 Sep 2022 11:04:33 +0800 Subject: Linux_SDK_V0.9.5 --- lib/net_utils.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 lib/net_utils.c (limited to 'lib/net_utils.c') diff --git a/lib/net_utils.c b/lib/net_utils.c new file mode 100644 index 00000000..ed5044c3 --- /dev/null +++ b/lib/net_utils.c @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * 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 + */ + +#include + +struct in_addr string_to_ip(const char *s) +{ + struct in_addr addr; + char *e; + int i; + + addr.s_addr = 0; + if (s == NULL) + return addr; + + for (addr.s_addr = 0, i = 0; i < 4; ++i) { + ulong val = s ? simple_strtoul(s, &e, 10) : 0; + 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; + } + } + + addr.s_addr = htonl(addr.s_addr); + return addr; +} + +void string_to_enetaddr(const char *addr, uint8_t *enetaddr) +{ + char *end; + int i; + + if (!enetaddr) + return; + + for (i = 0; i < 6; ++i) { + enetaddr[i] = addr ? simple_strtoul(addr, &end, 16) : 0; + if (addr) + addr = (*end) ? end + 1 : end; + } +} -- cgit v1.2.3