ether.c raw

   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  }
  59