/* vi: set sw=4 ts=4: */
/*
 * Utility routines.
 */

//kbuild:lib-$(CONFIG_ARP) += in_ether.o
//kbuild:lib-$(CONFIG_IFCONFIG) += in_ether.o
//kbuild:lib-$(CONFIG_IFENSLAVE) += in_ether.o

#include "libbb.h"
#include <net/if_arp.h>
#include <net/ethernet.h>

/* Convert Ethernet address from "XX[:]XX[:]XX[:]XX[:]XX[:]XX" to sockaddr.
 * Return nonzero on error.
 */
int FAST_FUNC in_ether(const char *bufp, struct sockaddr *sap)
{
	char *ptr;
	int i, j;
	unsigned char val;
	unsigned char c;

	sap->sa_family = ARPHRD_ETHER;
	ptr = (char *) sap->sa_data;

	i = ETH_ALEN;
	goto first;
	do {
		/* We might get a semicolon here */
		if (*bufp == ':')
			bufp++;
 first:
		j = val = 0;
		do {
			c = *bufp;
			if (((unsigned char)(c - '0')) <= 9) {
				c -= '0';
			} else if ((unsigned char)((c|0x20) - 'a') <= 5) {
				c = (unsigned char)((c|0x20) - 'a') + 10;
			} else {
				if (j && (c == ':' || c == '\0'))
					/* One-digit byte: __:X:__ */
					break;
				return -1;
			}
			++bufp;
			val <<= 4;
			val += c;
			j ^= 1;
		} while (j);

		*ptr++ = val;
	} while (--i);

	/* Error if we aren't at end of string */
	return *bufp;
}
