github.com/afumu/libc@v0.0.6/musl/src/network/ether.c (about) 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_octet[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 }