| | |
| | | #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" |
| | | |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * |
| | |
| | | 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; |
| | |
| | | if (adapterByName.find(if_name) == adapterByName.end()) { |
| | | OsAdapterInfo newAdapter; |
| | | memset(&newAdapter, 0, sizeof(OsAdapterInfo)); |
| | | strncpy(&newAdapter.description[0], ifa->ifa_name, NI_MAXHOST); |
| | | strncpy(&newAdapter.description[0], ifa->ifa_name, LCC_ADAPTER_DESCRIPTION_LEN); |
| | | adapterByName[if_name] = newAdapter; |
| | | } |
| | | auto it = adapterByName.find(if_name); |