56 lines
933 B
C++
56 lines
933 B
C++
|
|
#include "precomp.h"
|
|
#include "getip.h"
|
|
|
|
#define MAX_HOSTNAME_LENGTH 80
|
|
|
|
int __stdcall GetIPAddresses(char **szAddressArray, int numAddresses)
|
|
{
|
|
hostent *pHostent;
|
|
char szHostname[MAX_HOSTNAME_LENGTH];
|
|
int nRet, nIndex;
|
|
int nCount;
|
|
in_addr* pInterfaceAddr;
|
|
|
|
|
|
nRet = gethostname(szHostname, MAX_HOSTNAME_LENGTH);
|
|
szHostname[MAX_HOSTNAME_LENGTH-1] = '\0';
|
|
|
|
|
|
if (nRet < 0)
|
|
{
|
|
return nRet;
|
|
}
|
|
|
|
|
|
pHostent = gethostbyname(szHostname);
|
|
|
|
if (pHostent == NULL)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
|
|
nCount = 0;
|
|
for (nIndex = 0; nIndex < numAddresses; nIndex++)
|
|
{
|
|
if (pHostent->h_addr_list[nIndex] != NULL)
|
|
nCount++;
|
|
else
|
|
break;
|
|
}
|
|
|
|
// enumerate the addresses backwards - PPP addresses will get listed
|
|
// first ???
|
|
for (nIndex = (nCount-1); nIndex >= 0; nIndex--)
|
|
{
|
|
pInterfaceAddr = (in_addr*)(pHostent->h_addr_list[nIndex]);
|
|
lstrcpy(szAddressArray[nCount - 1 - nIndex], inet_ntoa(*pInterfaceAddr));
|
|
}
|
|
|
|
return nCount;
|
|
}
|
|
|
|
|
|
|