]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - net/eth_common.c
net: Move environment functions to the common file
[people/ms/u-boot.git] / net / eth_common.c
index ee0b6df376a5c247e9b09e4a3541bdd43ed7227a..3fa6d83c70b1696b6a6069bb2e0ef6c67f9330ff 100644 (file)
 #include <miiphy.h>
 #include "eth_internal.h"
 
+void eth_parse_enetaddr(const char *addr, uchar *enetaddr)
+{
+       char *end;
+       int i;
+
+       for (i = 0; i < 6; ++i) {
+               enetaddr[i] = addr ? simple_strtoul(addr, &end, 16) : 0;
+               if (addr)
+                       addr = (*end) ? end + 1 : end;
+       }
+}
+
+int eth_getenv_enetaddr(const char *name, uchar *enetaddr)
+{
+       eth_parse_enetaddr(getenv(name), enetaddr);
+       return is_valid_ethaddr(enetaddr);
+}
+
+int eth_setenv_enetaddr(const char *name, const uchar *enetaddr)
+{
+       char buf[20];
+
+       sprintf(buf, "%pM", enetaddr);
+
+       return setenv(name, buf);
+}
+
+int eth_getenv_enetaddr_by_index(const char *base_name, int index,
+                                uchar *enetaddr)
+{
+       char enetvar[32];
+       sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index);
+       return eth_getenv_enetaddr(enetvar, enetaddr);
+}
+
+int eth_setenv_enetaddr_by_index(const char *base_name, int index,
+                                uchar *enetaddr)
+{
+       char enetvar[32];
+       sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index);
+       return eth_setenv_enetaddr(enetvar, enetaddr);
+}
+
 void eth_common_init(void)
 {
        bootstage_mark(BOOTSTAGE_ID_NET_ETH_START);