
Signed-off-by: Michael Walle michael@walle.cc --- include/net.h | 12 ++++++++++++ net/eth.c | 8 ++++++++ 2 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/include/net.h b/include/net.h index 0da5679..eec846b 100644 --- a/include/net.h +++ b/include/net.h @@ -119,6 +119,18 @@ extern int eth_getenv_enetaddr_by_index(const char *base_name, int index, uchar *enetaddr);
/* + * Set the hardware address for an ethernet interface . + * Args: + * base_name - base name for device (normally "eth") + * index - device index number (0 for first) + * enetaddr - returns 6 byte hardware address + * Returns: + * 0 on success, else 1. + */ +extern int eth_setenv_enetaddr_by_index(const char *base_name, int index, + const uchar *enetaddr); + +/* * The u-boot policy does not allow hardcoded ethernet addresses. Under the * following circumstances a random generated address is allowed: * - in emergency cases, where you need a working network connection to set diff --git a/net/eth.c b/net/eth.c index 3623825..79b81a2 100644 --- a/net/eth.c +++ b/net/eth.c @@ -62,6 +62,14 @@ int eth_getenv_enetaddr_by_index(const char *base_name, int index, return eth_getenv_enetaddr(enetvar, enetaddr); }
+int eth_setenv_enetaddr_by_index(const char *base_name, int index, + const uchar *enetaddr) +{ + char enetvar[32]; + sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index); + return eth_setenv_enetaddr(enetvar, enetaddr); +} + static int eth_mac_skip(int index) { char enetvar[15];