version 1.79.2.2, 2008/03/20 06:16:41
|
version 1.80, 2008/01/30 05:23:46
|
|
|
// Not implemented | // Not implemented |
} | } |
| |
#ifdef PEGASUS_ENABLE_IPV6 |
|
void _getInterfaceAddrs(Array<String> &ips, int af) |
|
{ |
|
SOCKET sock; |
|
|
|
if (INVALID_SOCKET != (sock = WSASocket(af, SOCK_RAW, |
|
0, NULL, 0, 0))) |
|
{ |
|
DWORD bytesReturned; |
|
char buf[2048]; |
|
int interfaces = 0; |
|
char str[PEGASUS_INET6_ADDRSTR_LEN]; |
|
void *p; |
|
if (0 == WSAIoctl(sock, SIO_ADDRESS_LIST_QUERY, NULL, 0, |
|
buf, 2048, &bytesReturned, NULL, |
|
NULL)) |
|
{ |
|
|
|
SOCKET_ADDRESS_LIST *addr_list; |
|
SOCKET_ADDRESS *addr; |
|
struct sockaddr *sin; |
|
addr_list = (SOCKET_ADDRESS_LIST *)buf; |
|
addr = addr_list->Address; |
|
for (sin = (struct sockaddr *) addr->lpSockaddr ; |
|
interfaces < addr_list->iAddressCount; |
|
interfaces++) |
|
{ |
|
if (af == AF_INET) |
|
{ |
|
p = &((struct sockaddr_in*)sin)->sin_addr; |
|
} |
|
else |
|
{ |
|
p = &((struct sockaddr_in6*)sin)->sin6_addr; |
|
} |
|
// Don't gather loopback addrs |
|
if (!System::isLoopBack(af, p)) |
|
{ |
|
HostAddress::convertBinaryToText(af, p, str, sizeof(str)); |
|
ips.append(str); |
|
} |
|
addr++; |
|
sin = (struct sockaddr*)addr->lpSockaddr; |
|
} |
|
} |
|
} |
|
} |
|
#endif |
|
|
|
Array<String> System::getInterfaceAddrs() |
|
{ |
|
Array<String> ips; |
|
|
|
#ifdef PEGASUS_ENABLE_IPV6 |
|
_getInterfaceAddrs(ips, AF_INET); |
|
_getInterfaceAddrs(ips, AF_INET6); |
|
#endif |
|
|
|
return ips; |
|
} |
|
| |
| |
// System ID constants for Logger::put and Logger::trace | // System ID constants for Logger::put and Logger::trace |
|
|
return false; | return false; |
} | } |
| |
String System::getErrorMSG_NLS(int errorCode,int errorCode2) |
#ifdef PEGASUS_ENABLE_IPV6 |
|
void _getInterfaceAddrs(Array<String> &ips, int af) |
{ | { |
LPVOID winErrorMsg = NULL; |
SOCKET sock; |
| |
if (FormatMessage( |
if (INVALID_SOCKET != (sock = WSASocket(af, SOCK_RAW, |
FORMAT_MESSAGE_ALLOCATE_BUFFER | |
0, NULL, 0, 0))) |
FORMAT_MESSAGE_FROM_SYSTEM | |
{ |
FORMAT_MESSAGE_IGNORE_INSERTS, |
DWORD bytesReturned; |
NULL, |
char buf[2048]; |
errorCode, |
int interfaces = 0; |
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), |
char str[PEGASUS_INET6_ADDRSTR_LEN]; |
(LPTSTR)&winErrorMsg, |
void *p; |
0, |
if (0 == WSAIoctl(sock, SIO_ADDRESS_LIST_QUERY, NULL, 0, |
|
buf, 2048, &bytesReturned, NULL, |
NULL)) | NULL)) |
{ | { |
MessageLoaderParms parms( |
|
"Common.System.ERROR_MESSAGE.STANDARD", |
|
"$0 (error code $1)",(char*)winErrorMsg,errorCode); |
|
LocalFree(winErrorMsg); |
|
return MessageLoader::getMessage(parms); |
|
} |
|
|
|
MessageLoaderParms parms( |
|
"Common.System.ERROR_MESSAGE.STANDARD", |
|
"$0 (error code $1)","",errorCode); |
|
return MessageLoader::getMessage(parms); |
|
| |
|
SOCKET_ADDRESS_LIST *addr_list; |
|
SOCKET_ADDRESS *addr; |
|
struct sockaddr *sin; |
|
addr_list = (SOCKET_ADDRESS_LIST *)buf; |
|
addr = addr_list->Address; |
|
for (sin = (struct sockaddr *) addr->lpSockaddr ; |
|
interfaces < addr_list->iAddressCount; |
|
interfaces++) |
|
{ |
|
if (af == AF_INET) |
|
{ |
|
p = &((struct sockaddr_in*)sin)->sin_addr; |
} | } |
|
else |
String System::getErrorMSG(int errorCode,int errorCode2) |
|
{ | { |
|
p = &((struct sockaddr_in6*)sin)->sin6_addr; |
String buffer; |
} |
LPVOID winErrorMsg = NULL; |
// Don't gather loopback addrs |
|
if (!System::isLoopBack(af, p)) |
char strErrorCode[32]; |
|
sprintf(strErrorCode, "%d", errorCode); |
|
|
|
if (FormatMessage( |
|
FORMAT_MESSAGE_ALLOCATE_BUFFER | |
|
FORMAT_MESSAGE_FROM_SYSTEM | |
|
FORMAT_MESSAGE_IGNORE_INSERTS, |
|
NULL, |
|
errorCode, |
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), |
|
(LPTSTR)&winErrorMsg, |
|
0, |
|
NULL)) |
|
{ | { |
buffer.append((char*)winErrorMsg); |
HostAddress::convertBinaryToText(af, p, str, sizeof(str)); |
LocalFree(winErrorMsg); |
ips.append(str); |
|
} |
|
addr++; |
|
sin = (struct sockaddr*)addr->lpSockaddr; |
|
} |
|
} |
|
} |
} | } |
|
#endif |
| |
buffer.append(" (error code "); |
Array<String> System::getInterfaceAddrs() |
buffer.append(strErrorCode); |
{ |
buffer.append(")"); |
Array<String> ips; |
| |
return buffer; |
#ifdef PEGASUS_ENABLE_IPV6 |
|
_getInterfaceAddrs(ips, AF_INET); |
|
_getInterfaceAddrs(ips, AF_INET6); |
|
#endif |
|
|
|
return ips; |
} | } |
| |
|
|
/////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////// |
// AutoFileLock class | // AutoFileLock class |
/////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////// |