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