|
@@ -341,6 +341,36 @@ ulong env_get_hex(const char *varname, ulong default_val)
|
|
|
return value;
|
|
|
}
|
|
|
|
|
|
+void eth_parse_enetaddr(const char *addr, uint8_t *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_env_get_enetaddr(const char *name, uint8_t *enetaddr)
|
|
|
+{
|
|
|
+ eth_parse_enetaddr(env_get(name), enetaddr);
|
|
|
+ return is_valid_ethaddr(enetaddr);
|
|
|
+}
|
|
|
+
|
|
|
+int eth_env_set_enetaddr(const char *name, const uint8_t *enetaddr)
|
|
|
+{
|
|
|
+ char buf[ARP_HLEN_ASCII + 1];
|
|
|
+
|
|
|
+ if (eth_env_get_enetaddr(name, (uint8_t *)buf))
|
|
|
+ return -EEXIST;
|
|
|
+
|
|
|
+ sprintf(buf, "%pM", enetaddr);
|
|
|
+
|
|
|
+ return env_set(name, buf);
|
|
|
+}
|
|
|
+
|
|
|
#ifndef CONFIG_SPL_BUILD
|
|
|
static int do_env_set(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
|
{
|