version 1.60, 2007/09/11 19:43:00
|
version 1.62.2.1, 2008/01/30 20:33:29
|
|
|
} | } |
else | else |
{ | { |
|
#if defined(PEGASUS_OS_VMS) |
|
// vms has tcpipv6 support in the kernel so socket |
|
// will always work so a call to "bind" is needed |
|
// to complete this test. |
|
|
|
struct sockaddr_storage listenAddress; |
|
memset(&listenAddress, 0, sizeof (listenAddress)); |
|
SocketLength addressLength; |
|
|
|
HostAddress::convertTextToBinary( |
|
HostAddress::AT_IPV6, |
|
"::1", |
|
&reinterpret_cast<struct sockaddr_in6*>(&listenAddress)->sin6_addr); |
|
listenAddress.ss_family = AF_INET6; |
|
reinterpret_cast<struct sockaddr_in6*>(&listenAddress)->sin6_port = 0; |
|
|
|
addressLength = sizeof(struct sockaddr_in6); |
|
|
|
if (::bind( |
|
ip6Socket, |
|
reinterpret_cast<struct sockaddr*>(&listenAddress), |
|
addressLength) < 0) |
|
{ |
|
Socket::close(ip6Socket); |
|
return false; |
|
} |
|
#endif // PEGASUS_OS_VMS |
|
|
Socket::close(ip6Socket); | Socket::close(ip6Socket); |
} | } |
| |
|
|
} | } |
res1 = res1->ai_next; | res1 = res1->ai_next; |
} | } |
|
if (res1root) |
|
{ |
freeaddrinfo(res1root); | freeaddrinfo(res1root); |
|
} |
|
if (res2root) |
|
{ |
freeaddrinfo(res2root); | freeaddrinfo(res2root); |
|
} |
if (isLocal) | if (isLocal) |
{ | { |
return true; | return true; |
|
|
} | } |
res1 = res1->ai_next; | res1 = res1->ai_next; |
} | } |
|
if (res1root) |
|
{ |
freeaddrinfo(res1root); | freeaddrinfo(res1root); |
|
} |
|
if (res2root) |
|
{ |
freeaddrinfo(res2root); | freeaddrinfo(res2root); |
|
} |
return isLocal; | return isLocal; |
#else | #else |
| |
|
|
return hostEntry; | return hostEntry; |
} | } |
| |
|
#if defined(PEGASUS_OS_ZOS) || \ |
|
defined(PEGASUS_OS_VMS) || \ |
|
defined(PEGASUS_ENABLE_IPV6) |
|
|
int System::getAddrInfo( | int System::getAddrInfo( |
const char *hostname, | const char *hostname, |
const char *servname, | const char *servname, |
|
|
return rc; | return rc; |
} | } |
| |
|
#endif |
| |
// System ID constants for Logger::put and Logger::trace | // System ID constants for Logger::put and Logger::trace |
const String System::CIMLISTENER = "cimlistener"; // Listener systme ID | const String System::CIMLISTENER = "cimlistener"; // Listener systme ID |