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

//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;
}
