prmac.c 728 B

12345678910111213141516171819202122232425262728293031
  1. #include "unpifi.h"
  2. #include <net/if_arp.h>
  3. int
  4. main(int argc, char **argv)
  5. {
  6. int sockfd;
  7. struct ifi_info *ifi;
  8. unsigned char *ptr;
  9. struct arpreq arpreq;
  10. struct sockaddr_in *sin;
  11. sockfd = Socket(AF_INET, SOCK_DGRAM, 0);
  12. for (ifi = get_ifi_info(AF_INET, 0); ifi != NULL; ifi = ifi->ifi_next) {
  13. printf("%s: ", Sock_ntop(ifi->ifi_addr, sizeof(struct sockaddr_in)));
  14. sin = (struct sockaddr_in *) &arpreq.arp_pa;
  15. memcpy(sin, ifi->ifi_addr, sizeof(struct sockaddr_in));
  16. if (ioctl(sockfd, SIOCGARP, &arpreq) < 0) {
  17. err_ret("ioctl SIOCGARP");
  18. continue;
  19. }
  20. ptr = &arpreq.arp_ha.sa_data[0];
  21. printf("%x:%x:%x:%x:%x:%x\n", *ptr, *(ptr+1),
  22. *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5));
  23. }
  24. exit(0);
  25. }