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