gcontini
2021-05-20 51fbd6a53d53fc1106726890017c51d5abe4759a
src/library/os/linux/network.cpp
@@ -23,11 +23,12 @@
#include <ifaddrs.h>
#include <linux/if_link.h>
#include <netpacket/packet.h>
#include <string.h>
#include <stdio.h>
#include <unordered_map>
#include <string.h>
#include <memory.h>
#include "../../base/StringUtils.h"
#include "../../base/string_utils.h"
#include "../../base/logger.h"
#include "../network.hpp"
@@ -35,25 +36,6 @@
namespace os {
using namespace std;
/**
 *
 * @param ifnames
 * @param ifname
 * @param ifnames_max
 * @return
 */
static int ifname_position(char *ifnames, char *ifname, int ifnames_max) {
   int i, position;
   position = -1;
   for (i = 0; i < ifnames_max; i++) {
      if (strcmp(ifname, &ifnames[i * NI_MAXHOST]) == 0) {
         position = i;
         break;
      }
   }
   return position;
}
/**
 *
@@ -67,7 +49,7 @@
   FUNCTION_RETURN f_return = FUNC_RET_OK;
   struct ifaddrs *ifaddr, *ifa;
   int family, n = 0;
   unsigned int if_num, if_max;
   unsigned int if_num;
   if (getifaddrs(&ifaddr) == -1) {
      LOG_WARN("getifaddrs failed == -1");
@@ -78,15 +60,14 @@
      if (ifa->ifa_addr == NULL || (ifa->ifa_flags & IFF_LOOPBACK) != 0) {
         continue;
      }
      string if_name(ifa->ifa_name, mstrnlen_s(ifa->ifa_name, NI_MAXHOST));
      string if_name(ifa->ifa_name, mstrnlen_s(ifa->ifa_name, LCC_ADAPTER_DESCRIPTION_LEN));
      // if_name_position = ifname_position(ifnames, ifa->ifa_name, if_num);
      // interface name not seen en advance
      OsAdapterInfo *currentAdapter;
      // FIXME not working
      if (adapterByName.find(if_name) == adapterByName.end()) {
         OsAdapterInfo newAdapter;
         memset(&newAdapter, 0, sizeof(OsAdapterInfo));
         strncpy(&newAdapter.description[0], ifa->ifa_name, NI_MAXHOST);
         mstrlcpy(&newAdapter.description[0], ifa->ifa_name, LCC_ADAPTER_DESCRIPTION_LEN);
         adapterByName[if_name] = newAdapter;
      }
      auto it = adapterByName.find(if_name);
@@ -94,12 +75,10 @@
      family = ifa->ifa_addr->sa_family;
      /* Display interface name and family (including symbolic
       form of the latter for the common families) */
#ifdef _DEBUG
      printf("%-8s %s (%d)\n", ifa->ifa_name,
            (family == AF_PACKET) ? "AF_PACKET"
                            : (family == AF_INET) ? "AF_INET" : (family == AF_INET6) ? "AF_INET6" : "???",
            family);
#endif
      LOG_DEBUG("%-8s %s (%d)\n", ifa->ifa_name,
              (family == AF_PACKET) ? "AF_PACKET"
                              : (family == AF_INET) ? "AF_INET" : (family == AF_INET6) ? "AF_INET6" : "???",
              family);
      /* For an AF_INET* interface address, display the address
       * || family == AF_INET6*/
      if (family == AF_INET) {
@@ -115,13 +94,9 @@
         int i;
         for (i = 0; i < 6; i++) {
            currentAdapter->mac_address[i] = s1->sll_addr[i];
#ifdef _DEBUG
            printf("%02x:", s1->sll_addr[i]);
#endif
            LOG_DEBUG("%02x:", s1->sll_addr[i]);
         }
#ifdef _DEBUG
         printf("\t %s\n", ifa->ifa_name);
#endif
         LOG_DEBUG("\t %s\n", ifa->ifa_name);
      }
   }
   freeifaddrs(ifaddr);