void EnumIp(vector<string>& vIP)
{
struct ifaddrs* ifAddrStruct = NULL;
void* tmpAddrPtr = NULL;
getifaddrs(&ifAddrStruct);
while (ifAddrStruct != NULL){
if (ifAddrStruct->ifa_addr && ifAddrStruct->ifa_addr->sa_family == AF_INET){// check it is IP4
// is a valid IP4 Address
tmpAddrPtr = &((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
if(tmpAddrPtr){
char addressBuffer[INET_ADDRSTRLEN];
inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN);
vIP.push_back(addressBuffer);
}
}
else if (ifAddrStruct->ifa_addr && ifAddrStruct->ifa_addr->sa_family == AF_INET6){// check it is IP6
// is a valid IP6 Address
tmpAddrPtr = &((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
if(tmpAddrPtr){
char addressBuffer[INET6_ADDRSTRLEN];
inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN);
vIP.push_back(addressBuffer);
}
}
ifAddrStruct = ifAddrStruct->ifa_next;
}
freeifaddrs(ifAddrStruct);
}