(file) Return to SystemWindows.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/SystemWindows.cpp between version 1.79.2.2 and 1.80

version 1.79.2.2, 2008/03/20 06:16:41 version 1.80, 2008/01/30 05:23:46
Line 934 
Line 934 
     // 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
Line 1057 
Line 997 
     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
 /////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////


Legend:
Removed from v.1.79.2.2  
changed lines
  Added in v.1.80

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2