diff options
| -rw-r--r-- | common/cmd_pxe.c | 34 | 
1 files changed, 9 insertions, 25 deletions
| diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c index 2dbd49cbd..f785c0e99 100644 --- a/common/cmd_pxe.c +++ b/common/cmd_pxe.c @@ -55,37 +55,21 @@ static char *from_env(char *envvar)   */  static int format_mac_pxe(char *outbuf, size_t outbuf_len)  { -	size_t ethaddr_len; -	char *p, *ethaddr; +	uchar ethaddr[6]; -	ethaddr = from_env("ethaddr"); - -	if (!ethaddr) -		return -ENOENT; - -	ethaddr_len = strlen(ethaddr); - -	/* -	 * ethaddr_len + 4 gives room for "01-", ethaddr, and a NUL byte at -	 * the end. -	 */ -	if (outbuf_len < ethaddr_len + 4) { -		printf("outbuf is too small (%d < %d)\n", -				outbuf_len, ethaddr_len + 4); +	if (outbuf_len < 21) { +		printf("outbuf is too small (%d < 21)\n", outbuf_len);  		return -EINVAL;  	} -	strcpy(outbuf, "01-"); - -	for (p = outbuf + 3; *ethaddr; ethaddr++, p++) { -		if (*ethaddr == ':') -			*p = '-'; -		else -			*p = tolower(*ethaddr); -	} +	if (!eth_getenv_enetaddr_by_index("eth", eth_get_dev_index(), +					  ethaddr)) +		return -ENOENT; -	*p = '\0'; +	sprintf(outbuf, "01-%02x-%02x-%02x-%02x-%02x-%02x", +		ethaddr[0], ethaddr[1], ethaddr[2], +		ethaddr[3], ethaddr[4], ethaddr[5]);  	return 1;  } |