diff options
Diffstat (limited to 'networking/interface.c')
-rw-r--r-- | networking/interface.c | 55 |
1 files changed, 1 insertions, 54 deletions
diff --git a/networking/interface.c b/networking/interface.c index 9ae8b3f..3dc5b36 100644 --- a/networking/interface.c +++ b/networking/interface.c @@ -722,68 +722,15 @@ static char* FAST_FUNC ether_print(unsigned char *ptr) return buff; } -static int FAST_FUNC ether_input(const char *bufp, struct sockaddr *sap); - static const struct hwtype ether_hwtype = { .name = "ether", .title = "Ethernet", .type = ARPHRD_ETHER, .alen = ETH_ALEN, .print = ether_print, - .input = ether_input + .input = in_ether }; -static unsigned hexchar2int(char c) -{ - if (isdigit(c)) - return c - '0'; - c &= ~0x20; /* a -> A */ - if ((unsigned)(c - 'A') <= 5) - return c - ('A' - 10); - return ~0U; -} - -/* Input an Ethernet address and convert to binary. */ -static int FAST_FUNC ether_input(const char *bufp, struct sockaddr *sap) -{ - unsigned char *ptr; - char c; - int i; - unsigned val; - - sap->sa_family = ether_hwtype.type; - ptr = (unsigned char*) sap->sa_data; - - i = 0; - while ((*bufp != '\0') && (i < ETH_ALEN)) { - val = hexchar2int(*bufp++) * 0x10; - if (val > 0xff) { - errno = EINVAL; - return -1; - } - c = *bufp; - if (c == ':' || c == 0) - val >>= 4; - else { - val |= hexchar2int(c); - if (val > 0xff) { - errno = EINVAL; - return -1; - } - } - if (c != 0) - bufp++; - *ptr++ = (unsigned char) val; - i++; - - /* We might get a semicolon here - not required. */ - if (*bufp == ':') { - bufp++; - } - } - return 0; -} - static const struct hwtype ppp_hwtype = { .name = "ppp", .title = "Point-to-Point Protocol", |