test_netitf.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include <gtest/gtest.h>
  2. #include "toolkit.h"
  3. #ifdef __linux__
  4. #include <net/if.h>
  5. #include <sys/ioctl.h>
  6. TEST(TestNet, TestNetMac)
  7. {
  8. int fd, interface;
  9. struct ifreq buf[16];
  10. struct ifconf ifc;
  11. char mac[32] = { 0 };
  12. if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) >= 0) {
  13. int i = 0;
  14. ifc.ifc_len = sizeof(buf);
  15. ifc.ifc_buf = (caddr_t)buf;
  16. if (!ioctl(fd, SIOCGIFCONF, (char*)&ifc)) {
  17. interface = ifc.ifc_len / sizeof(struct ifreq);
  18. printf("interface num is %d\n", interface);
  19. while (i < interface) {
  20. printf("net device %s\n", buf[i].ifr_name);
  21. if (!(ioctl(fd, SIOCGIFHWADDR, (char*)&buf[i]))) {
  22. sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X",
  23. (unsigned char)buf[i].ifr_hwaddr.sa_data[0],
  24. (unsigned char)buf[i].ifr_hwaddr.sa_data[1],
  25. (unsigned char)buf[i].ifr_hwaddr.sa_data[2],
  26. (unsigned char)buf[i].ifr_hwaddr.sa_data[3],
  27. (unsigned char)buf[i].ifr_hwaddr.sa_data[4],
  28. (unsigned char)buf[i].ifr_hwaddr.sa_data[5]);
  29. printf("HWaddr %s\n", mac);
  30. }
  31. printf("\n");
  32. i++;
  33. }
  34. }
  35. close(fd);
  36. }
  37. }
  38. #endif
  39. TEST(TestNet, TestNetInterfac)
  40. {
  41. char buf[512];
  42. toolkit_interface_address_t* info;
  43. int count, i;
  44. toolkit_interface_addresses(&info, &count);
  45. i = count;
  46. printf("Number of interfaces: %d\n", count);
  47. while (i--) {
  48. toolkit_interface_address_t interface = info[i];
  49. printf("Name: %s\n", interface.name);
  50. printf("Internal? %s\n", interface.is_internal ? "Yes" : "No");
  51. if (interface.address.address4.sin_family == AF_INET) {
  52. toolkit_ip4_name(&interface.address.address4, buf, sizeof(buf));
  53. printf("IPv4 address: %s\n", buf);
  54. } else if (interface.address.address4.sin_family == AF_INET6) {
  55. toolkit_ip6_name(&interface.address.address6, buf, sizeof(buf));
  56. printf("IPv6 address: %s\n", buf);
  57. }
  58. printf("\n");
  59. }
  60. toolkit_free_interface_addresses(info, count);
  61. }