1 #include <netinet/ether.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4
ether_aton_r(const char * x,struct ether_addr * p_a)5 struct ether_addr* ether_aton_r(const char* x, struct ether_addr* p_a) {
6 struct ether_addr a;
7 char* y;
8 for (int ii = 0; ii < 6; ii++) {
9 unsigned long int n;
10 if (ii != 0) {
11 if (x[0] != ':')
12 return 0; /* bad format */
13 else
14 x++;
15 }
16 n = strtoul(x, &y, 16);
17 x = y;
18 if (n > 0xFF)
19 return 0; /* bad byte */
20 a.ether_addr_octet[ii] = n;
21 }
22 if (x[0] != 0)
23 return 0; /* bad format */
24 *p_a = a;
25 return p_a;
26 }
27
ether_aton(const char * x)28 struct ether_addr* ether_aton(const char* x) {
29 static struct ether_addr a;
30 return ether_aton_r(x, &a);
31 }
32
ether_ntoa_r(const struct ether_addr * p_a,char * x)33 char* ether_ntoa_r(const struct ether_addr* p_a, char* x) {
34 char* y;
35 y = x;
36 for (int ii = 0; ii < 6; ii++) {
37 x += sprintf(x, ii == 0 ? "%.2X" : ":%.2X", p_a->ether_addr_octet[ii]);
38 }
39 return y;
40 }
41
ether_ntoa(const struct ether_addr * p_a)42 char* ether_ntoa(const struct ether_addr* p_a) {
43 static char x[18];
44 return ether_ntoa_r(p_a, x);
45 }
46
ether_line(const char * l,struct ether_addr * e,char * hostname)47 int ether_line(const char* l, struct ether_addr* e, char* hostname) {
48 return -1;
49 }
50
ether_ntohost(char * hostname,const struct ether_addr * e)51 int ether_ntohost(char* hostname, const struct ether_addr* e) {
52 return -1;
53 }
54
ether_hostton(const char * hostname,struct ether_addr * e)55 int ether_hostton(const char* hostname, struct ether_addr* e) {
56 return -1;
57 }
58