reSIProcate/rutil  9694
Public Member Functions | Public Attributes
resip::GenericIPAddress Struct Reference

Represents an IP-address and port (V4 or V6). More...

#include <GenericIPAddress.hxx>

List of all members.

Public Member Functions

 GenericIPAddress ()
 GenericIPAddress (const sockaddr &addr)
 GenericIPAddress (const sockaddr_in &v4)
size_t length () const
bool isVersion4 () const
bool isVersion6 () const
bool operator== (const GenericIPAddress &addr) const
bool operator< (const GenericIPAddress &addr) const

Public Attributes

union {
   sockaddr   address
   sockaddr_in   v4Address
   char   pad [28]
}; 

Detailed Description

Represents an IP-address and port (V4 or V6).

Note:
This class is misnamed - it is really an IP address and port

Definition at line 22 of file GenericIPAddress.hxx.


Constructor & Destructor Documentation

resip::GenericIPAddress::GenericIPAddress ( ) [inline]

Definition at line 25 of file GenericIPAddress.hxx.

      {
      }
resip::GenericIPAddress::GenericIPAddress ( const sockaddr &  addr) [inline]

Definition at line 29 of file GenericIPAddress.hxx.

                                             : address(addr) 
      {
      }
resip::GenericIPAddress::GenericIPAddress ( const sockaddr_in &  v4) [inline]

Definition at line 33 of file GenericIPAddress.hxx.

                                              : v4Address(v4)
      {
      }

Member Function Documentation

bool resip::GenericIPAddress::isVersion4 ( ) const [inline]

Definition at line 59 of file GenericIPAddress.hxx.

References address.

      {
         return address.sa_family == AF_INET;
      }
bool resip::GenericIPAddress::isVersion6 ( ) const [inline]

Definition at line 64 of file GenericIPAddress.hxx.

References address.

      { 
#ifdef IPPROTO_IPV6
         if (address.sa_family == AF_INET6) return true; 
#endif
         return false;
      }
size_t resip::GenericIPAddress::length ( ) const [inline]

Definition at line 43 of file GenericIPAddress.hxx.

References address.

      {
         if (address.sa_family == AF_INET) // v4
         {
            return sizeof(sockaddr_in);
         }
#ifdef IPPROTO_IPV6
         else  if (address.sa_family == AF_INET6) // v6
         {
            return sizeof(sockaddr_in6);
         }
#endif
         assert(0);
         return 0;
      }
bool resip::GenericIPAddress::operator< ( const GenericIPAddress addr) const [inline]

Definition at line 105 of file GenericIPAddress.hxx.

References address, and v4Address.

      {
    
         if (address.sa_family == AF_INET && addr.address.sa_family == AF_INET)
         {
            int c=memcmp(&v4Address.sin_addr,
                        &addr.v4Address.sin_addr,
                        sizeof(in_addr));

            if (c < 0)
            {
               return true;
            }
            else if (c > 0)
            {
               return false;
            }
            else if (v4Address.sin_port < addr.v4Address.sin_port)
            {
               return true;
            }
            else
            {
               return false;
            }
         }
#ifdef IPPROTO_IPV6
         else if (address.sa_family == AF_INET6 &&
                  addr.address.sa_family == AF_INET6)
         {
            int c = memcmp(&v6Address.sin6_addr,
                           &addr.v6Address.sin6_addr,
                           sizeof(in6_addr));
            if (c < 0)
            {
               return true;
            }
            else if (c > 0)
            {
               return false;
            }
            else if (v6Address.sin6_port < addr.v6Address.sin6_port)
            {
               return true;
            }
            else
            {
               return false;
            }
         }
         else if (address.sa_family == AF_INET6 &&
                  addr.address.sa_family == AF_INET)
         {
            return true;
         }
         else if (address.sa_family == AF_INET &&
                  addr.address.sa_family == AF_INET6)
         {
            return false;
         }
#endif
         else
         {
            //assert(0);
            return false;
         }
      }
bool resip::GenericIPAddress::operator== ( const GenericIPAddress addr) const [inline]

Definition at line 82 of file GenericIPAddress.hxx.

References address, and v4Address.

      {
         if (address.sa_family == addr.address.sa_family)
         {
            if (address.sa_family == AF_INET) // v4
            {
               return (v4Address.sin_port == addr.v4Address.sin_port &&
                     memcmp(&v4Address.sin_addr, &addr.v4Address.sin_addr, sizeof(in_addr)) == 0);
            }
            else // v6
            {
#ifdef IPPROTO_IPV6
               return (v6Address.sin6_port == addr.v6Address.sin6_port &&
                     memcmp(&v6Address.sin6_addr, &addr.v6Address.sin6_addr, sizeof(in6_addr)) == 0);
#else
               assert(0);
                         return false;
#endif
            }
         }
         return false;
      }

Member Data Documentation

union { ... }

Definition at line 74 of file GenericIPAddress.hxx.

Referenced by isVersion4(), isVersion6(), length(), operator<(), and operator==().

Definition at line 79 of file GenericIPAddress.hxx.

Definition at line 75 of file GenericIPAddress.hxx.

Referenced by operator<(), and operator==().


The documentation for this struct was generated from the following file: