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