summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2015-07-02 08:36:08 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2015-07-02 09:39:57 +0200
commit566cac17c3b5cfd85eb5bb1764c6cd29347b390d (patch)
treee5102f0a5d825e48344ab096332cd0836a957f6c /net
parentf2d31f6f6dc01d1b438a12230a536606bfdc43fa (diff)
downloadbarebox-566cac17c3b5cfd85eb5bb1764c6cd29347b390d.tar.gz
barebox-566cac17c3b5cfd85eb5bb1764c6cd29347b390d.tar.xz
net: Move library functions to net/lib.c
Some network related functions are also needed when networking is disabled. Move these to a separate file which is always compiled. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'net')
-rw-r--r--net/Makefile1
-rw-r--r--net/lib.c109
-rw-r--r--net/net.c78
3 files changed, 110 insertions, 78 deletions
diff --git a/net/Makefile b/net/Makefile
index 58bf143676..8d564e7299 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -1,3 +1,4 @@
+obj-y += lib.o
obj-$(CONFIG_NET) += eth.o
obj-$(CONFIG_NET) += net.o
obj-$(CONFIG_NET_NFS) += nfs.o
diff --git a/net/lib.c b/net/lib.c
new file mode 100644
index 0000000000..f1c60c9a74
--- /dev/null
+++ b/net/lib.c
@@ -0,0 +1,109 @@
+/*
+ * net.c - barebox networking support
+ *
+ * Copyright (c) 2015 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix
+ *
+ * based on U-Boot (LiMon) code
+ *
+ * Copyright 1994 - 2000 Neil Russell.
+ * Copyright 2000 Roland Borde
+ * Copyright 2000 Paolo Scaffardi
+ * Copyright 2000-2002 Wolfgang Denk, wd@denx.de
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <common.h>
+#include <net.h>
+#include <linux/ctype.h>
+
+int string_to_ethaddr(const char *str, u8 enetaddr[6])
+{
+ int reg;
+ char *e;
+
+ if (!str || strlen(str) != 17) {
+ memset(enetaddr, 0, 6);
+ return -EINVAL;
+ }
+
+ if (str[2] != ':' || str[5] != ':' || str[8] != ':' ||
+ str[11] != ':' || str[14] != ':')
+ return -EINVAL;
+
+ for (reg = 0; reg < 6; ++reg) {
+ enetaddr[reg] = simple_strtoul(str, &e, 16);
+ str = e + 1;
+ }
+
+ return 0;
+}
+
+void ethaddr_to_string(const u8 enetaddr[6], char *str)
+{
+ sprintf(str, "%02x:%02x:%02x:%02x:%02x:%02x",
+ enetaddr[0], enetaddr[1], enetaddr[2], enetaddr[3],
+ enetaddr[4], enetaddr[5]);
+}
+
+void print_IPaddr(IPaddr_t x)
+{
+ puts(ip_to_string(x));
+}
+
+char *ip_to_string(IPaddr_t x)
+{
+ static char s[sizeof("xxx.xxx.xxx.xxx")];
+
+ x = ntohl(x);
+ sprintf(s, "%d.%d.%d.%d",
+ (int) ((x >> 24) & 0xff),
+ (int) ((x >> 16) & 0xff),
+ (int) ((x >> 8) & 0xff), (int) ((x >> 0) & 0xff)
+ );
+
+ return s;
+}
+
+int string_to_ip(const char *s, IPaddr_t *ip)
+{
+ IPaddr_t addr = 0;
+ char *e;
+ int i;
+
+ if (!s)
+ return -EINVAL;
+
+ for (i = 0; i < 4; i++) {
+ unsigned long val;
+
+ if (!isdigit(*s))
+ return -EINVAL;
+
+ val = simple_strtoul(s, &e, 10);
+ if (val > 255)
+ return -EINVAL;
+
+ addr = (addr << 8) | val;
+
+ if (*e != '.' && i != 3)
+ return -EINVAL;
+
+ s = e + 1;
+ }
+
+ *ip = htonl(addr);
+
+ return 0;
+}
diff --git a/net/net.c b/net/net.c
index 75292c736c..9380664ef7 100644
--- a/net/net.c
+++ b/net/net.c
@@ -62,50 +62,6 @@ uint16_t net_checksum(unsigned char *ptr, int len)
return xsum & 0xffff;
}
-char *ip_to_string (IPaddr_t x)
-{
- static char s[sizeof("xxx.xxx.xxx.xxx")];
-
- x = ntohl (x);
- sprintf (s, "%d.%d.%d.%d",
- (int) ((x >> 24) & 0xff),
- (int) ((x >> 16) & 0xff),
- (int) ((x >> 8) & 0xff), (int) ((x >> 0) & 0xff)
- );
- return s;
-}
-
-int string_to_ip(const char *s, IPaddr_t *ip)
-{
- IPaddr_t addr = 0;
- char *e;
- int i;
-
- if (!s)
- return -EINVAL;
-
- for (i = 0; i < 4; i++) {
- unsigned long val;
-
- if (!isdigit(*s))
- return -EINVAL;
-
- val = simple_strtoul(s, &e, 10);
- if (val > 255)
- return -EINVAL;
-
- addr = (addr << 8) | val;
-
- if (*e != '.' && i != 3)
- return -EINVAL;
-
- s = e + 1;
- }
-
- *ip = htonl(addr);
- return 0;
-}
-
IPaddr_t getenv_ip(const char *name)
{
IPaddr_t ip;
@@ -131,40 +87,6 @@ int setenv_ip(const char *name, IPaddr_t ip)
return 0;
}
-void print_IPaddr (IPaddr_t x)
-{
- puts(ip_to_string(x));
-}
-
-int string_to_ethaddr(const char *str, u8 enetaddr[6])
-{
- int reg;
- char *e;
-
- if (!str || strlen(str) != 17) {
- memset(enetaddr, 0, 6);
- return -EINVAL;
- }
-
- if (str[2] != ':' || str[5] != ':' || str[8] != ':' ||
- str[11] != ':' || str[14] != ':')
- return -EINVAL;
-
- for (reg = 0; reg < 6; ++reg) {
- enetaddr[reg] = simple_strtoul (str, &e, 16);
- str = e + 1;
- }
-
- return 0;
-}
-
-void ethaddr_to_string(const u8 enetaddr[6], char *str)
-{
- sprintf(str, "%02x:%02x:%02x:%02x:%02x:%02x",
- enetaddr[0], enetaddr[1], enetaddr[2], enetaddr[3],
- enetaddr[4], enetaddr[5]);
-}
-
static unsigned char *arp_ether;
static IPaddr_t arp_wait_ip;