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

Diff for /pegasus/src/Pegasus/Common/SystemPOSIX.cpp between version 1.55 and 1.56

version 1.55, 2008/10/17 11:07:33 version 1.56, 2008/10/17 12:42:55
Line 1207 
Line 1207 
     {     {
         return ips;         return ips;
     }     }
       Boolean ipFound;
     for( addrs = array; addrs != NULL; addrs = addrs->ifa_next)     for( addrs = array; addrs != NULL; addrs = addrs->ifa_next)
     {     {
           ipFound = false;
         switch(addrs->ifa_addr->sa_family)         switch(addrs->ifa_addr->sa_family)
         {         {
             case AF_INET :             case AF_INET :
Line 1222 
Line 1223 
                 HostAddress::convertBinaryToText(AF_INET,                 HostAddress::convertBinaryToText(AF_INET,
                     &((struct sockaddr_in *)addrs->ifa_addr)->sin_addr,                     &((struct sockaddr_in *)addrs->ifa_addr)->sin_addr,
                     buff, sizeof(buff));                     buff, sizeof(buff));
                 ips.append(buff);                  ipFound = true;
                 break;                 break;
             case AF_INET6 :             case AF_INET6 :
                 if (System::isLoopBack(AF_INET6,                 if (System::isLoopBack(AF_INET6,
Line 1233 
Line 1234 
                 HostAddress::convertBinaryToText(AF_INET6,                 HostAddress::convertBinaryToText(AF_INET6,
                     &((struct sockaddr_in6 *)addrs->ifa_addr)->sin6_addr,                     &((struct sockaddr_in6 *)addrs->ifa_addr)->sin6_addr,
                     buff, sizeof(buff));                     buff, sizeof(buff));
                 ips.append(buff);                  ipFound = true;
                 break;                 break;
         }         }
           //ATTN: Some Linux implementations of getifaddrs() returning duplicate
           // IPv6 Link-local unicast addresses. Filter the duplicates IPs.
           if (ipFound)
           {
               Boolean duplicateFound = false;
               for (Uint32 i = 0, n = ips.size(); i < n ; ++i)
               {
                   if (String::equal(ips[i], buff))
                   {
                       duplicateFound = true;
                       break;
                   }
               }
               if (!duplicateFound)
               {
                    ips.append(buff);
               }
           }
     }     }
     if(array)     if(array)
     {     {


Legend:
Removed from v.1.55  
changed lines
  Added in v.1.56

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2