20 #include <netinet/in.h> 
   23 #include <arpa/inet.h> 
   90     CPPUNIT_ASSERT( !anIPA.
isIPv4() );
 
   92     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, anIPA.
port() );
 
   93     CPPUNIT_ASSERT( anIPA.
isIPv6() );
 
  100     struct in_addr outval;
 
  102     inval.s_addr = htonl(0xC0A8640C);
 
  103     outval.s_addr = htonl(0x00000000);
 
  109     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  110     CPPUNIT_ASSERT( anIPA.
isIPv4() );
 
  111     CPPUNIT_ASSERT( !anIPA.
isIPv6() );
 
  113     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, anIPA.
port() );
 
  115     CPPUNIT_ASSERT( memcmp(&inval, &outval, 
sizeof(
struct in_addr)) == 0 );
 
  121     struct in6_addr inval;
 
  122     struct in6_addr outval = IN6ADDR_ANY_INIT;
 
  124     inval.s6_addr32[0] = htonl(0xC0A8640C);
 
  125     inval.s6_addr32[1] = htonl(0xFFFFFFFF);
 
  126     inval.s6_addr32[2] = htonl(0xFFFFFFFF);
 
  127     inval.s6_addr32[3] = htonl(0xFFFFFFFF);
 
  133     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  134     CPPUNIT_ASSERT( !anIPA.
isIPv4() );
 
  135     CPPUNIT_ASSERT( anIPA.
isIPv6() );
 
  137     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, anIPA.
port() );
 
  139     CPPUNIT_ASSERT( memcmp( &inval, &outval, 
sizeof(
struct in6_addr)) == 0 );
 
  145     struct sockaddr_in insock;
 
  146     struct sockaddr_in outsock;
 
  148     memset(&insock,  0, 
sizeof(
struct sockaddr_in));
 
  149     memset(&outsock, 0, 
sizeof(
struct sockaddr_in));
 
  151     insock.sin_family = AF_INET;
 
  152     insock.sin_port = htons(80);
 
  153     insock.sin_addr.s_addr = htonl(0xC0A8640C);
 
  154 #if HAVE_SIN_LEN_IN_SAI 
  155     insock.sin_len = 
sizeof(
struct sockaddr_in);
 
  162     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  163     CPPUNIT_ASSERT( anIPA.
isIPv4() );
 
  164     CPPUNIT_ASSERT( !anIPA.
isIPv6() );
 
  166     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 80, anIPA.
port() );
 
  168     CPPUNIT_ASSERT( memcmp( &insock, &outsock, 
sizeof(
struct sockaddr_in)) == 0 );
 
  174     struct sockaddr_in6 insock;
 
  175     struct sockaddr_in6 outsock;
 
  177     memset(&insock, 0, 
sizeof(
struct sockaddr_in6));
 
  178     memset(&outsock, 0, 
sizeof(
struct sockaddr_in6));
 
  180     insock.sin6_family = AF_INET6;
 
  181     insock.sin6_port = htons(80);
 
  182     insock.sin6_addr.s6_addr32[0] = htonl(0xFFFFFFFF);
 
  183     insock.sin6_addr.s6_addr32[1] = htonl(0x00000000);
 
  184     insock.sin6_addr.s6_addr32[2] = htonl(0x0000FFFF);
 
  185     insock.sin6_addr.s6_addr32[3] = htonl(0xC0A8640C);
 
  186 #if HAVE_SIN6_LEN_IN_SAI 
  187     insock.sin6_len = 
sizeof(
struct sockaddr_in6);
 
  190     Ip::Address anIPA((
const struct sockaddr_in6)insock);
 
  194     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  195     CPPUNIT_ASSERT( !anIPA.
isIPv4() );
 
  196     CPPUNIT_ASSERT( anIPA.
isIPv6() );
 
  198     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 80, anIPA.
port() );
 
  200     CPPUNIT_ASSERT( memcmp( &insock, &outsock, 
sizeof(
struct sockaddr_in6)) == 0 );
 
  206     struct sockaddr_in insock;
 
  207     struct sockaddr_in outsock;
 
  209     memset(&insock,  0, 
sizeof(
struct sockaddr_in));
 
  210     memset(&outsock, 0, 
sizeof(
struct sockaddr_in));
 
  212     insock.sin_family = AF_INET;
 
  213     insock.sin_port = htons(80);
 
  214     insock.sin_addr.s_addr = htonl(0xC0A8640C);
 
  215 #if HAVE_SIN_LEN_IN_SAI 
  216     insock.sin_len = 
sizeof(
struct sockaddr_in);
 
  224     CPPUNIT_ASSERT( !outIPA.
isNoAddr() );
 
  225     CPPUNIT_ASSERT( outIPA.
isIPv4() );
 
  226     CPPUNIT_ASSERT( !outIPA.
isIPv6() );
 
  228     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 80, outIPA.
port() );
 
  230     CPPUNIT_ASSERT( memcmp( &insock, &outsock, 
sizeof(
struct sockaddr_in)) == 0 );
 
  236     struct in_addr outval;
 
  237     struct in_addr expectval;
 
  239     expectval.s_addr = htonl(0xC0A8640C);
 
  242     CPPUNIT_ASSERT( hp != 
nullptr  );
 
  248     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  249     CPPUNIT_ASSERT( anIPA.
isIPv4() );
 
  250     CPPUNIT_ASSERT( !anIPA.
isIPv6() );
 
  252     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, anIPA.
port() );
 
  254     CPPUNIT_ASSERT( memcmp( &expectval, &outval, 
sizeof(
struct in_addr)) == 0 );
 
  260     struct in_addr outval;
 
  261     struct in_addr expectval;
 
  263     expectval.s_addr = htonl(0xC0A8640C);
 
  269     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  270     CPPUNIT_ASSERT( anIPA.
isIPv4() );
 
  271     CPPUNIT_ASSERT( !anIPA.
isIPv6() );
 
  272     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, anIPA.
port() );
 
  275     CPPUNIT_ASSERT( memcmp( &expectval, &outval, 
sizeof(
struct in_addr)) == 0 );
 
  277     struct in6_addr expectv6;
 
  278     struct in6_addr outval6;
 
  280     expectv6.s6_addr32[0] = htonl(0x20000800);
 
  281     expectv6.s6_addr32[1] = htonl(0x00000000);
 
  282     expectv6.s6_addr32[2] = htonl(0x00000000);
 
  283     expectv6.s6_addr32[3] = htonl(0x00000045);
 
  293     CPPUNIT_ASSERT( !bnIPA.
isNoAddr() );
 
  294     CPPUNIT_ASSERT( !bnIPA.
isIPv4() );
 
  295     CPPUNIT_ASSERT(  bnIPA.
isIPv6() );
 
  297     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, bnIPA.
port() );
 
  299     CPPUNIT_ASSERT( memcmp( &expectv6, &outval6, 
sizeof(
struct in6_addr)) == 0 );
 
  304     expectv6.s6_addr32[0] = htonl(0xFFFFFFFF);
 
  305     expectv6.s6_addr32[1] = htonl(0xFFF00000);
 
  306     expectv6.s6_addr32[2] = htonl(0x00000000);
 
  307     expectv6.s6_addr32[3] = htonl(0x00000000);
 
  311     CPPUNIT_ASSERT( !cnIPA.
isNoAddr() );
 
  312     CPPUNIT_ASSERT( !cnIPA.
isIPv4() );
 
  313     CPPUNIT_ASSERT( cnIPA.
isIPv6() );
 
  315     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, cnIPA.
port() );
 
  317     CPPUNIT_ASSERT( memcmp( &expectv6, &outval6, 
sizeof(
struct in6_addr)) == 0 );
 
  324     struct in_addr inval;
 
  326     inval.s_addr = htonl(0xC0A8640C);
 
  332     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  333     CPPUNIT_ASSERT( anIPA.
isIPv4() );
 
  334     CPPUNIT_ASSERT( !anIPA.
isIPv6() );
 
  336     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, anIPA.
port() );
 
  342     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  343     CPPUNIT_ASSERT( !anIPA.
isIPv4() );
 
  344     CPPUNIT_ASSERT( anIPA.
isIPv6() );
 
  346     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, anIPA.
port() );
 
  354     struct in_addr valLow;
 
  355     struct in_addr valHigh;
 
  357     valLow.s_addr  = htonl(0xC0A8640C);
 
  358     valHigh.s_addr = htonl(0xC0A8640F);
 
  364     CPPUNIT_ASSERT(  ( lhsIPA == rhsIPA ) );
 
  365     CPPUNIT_ASSERT( !( lhsIPA != rhsIPA ) );
 
  366     CPPUNIT_ASSERT(  ( lhsIPA >= rhsIPA ) );
 
  367     CPPUNIT_ASSERT( !( lhsIPA >  rhsIPA ) );
 
  368     CPPUNIT_ASSERT(  ( lhsIPA <= rhsIPA ) );
 
  369     CPPUNIT_ASSERT( !( lhsIPA <  rhsIPA ) );
 
  375     CPPUNIT_ASSERT(  ( lhsIPA == rhsIPA ) );
 
  376     CPPUNIT_ASSERT( !( lhsIPA != rhsIPA ) );
 
  377     CPPUNIT_ASSERT(  ( lhsIPA >= rhsIPA ) );
 
  378     CPPUNIT_ASSERT( !( lhsIPA >  rhsIPA ) );
 
  379     CPPUNIT_ASSERT(  ( lhsIPA <= rhsIPA ) );
 
  380     CPPUNIT_ASSERT( !( lhsIPA <  rhsIPA ) );
 
  386     CPPUNIT_ASSERT(  ( lhsIPA == rhsIPA ) );
 
  387     CPPUNIT_ASSERT( !( lhsIPA != rhsIPA ) );
 
  388     CPPUNIT_ASSERT(  ( lhsIPA >= rhsIPA ) );
 
  389     CPPUNIT_ASSERT( !( lhsIPA >  rhsIPA ) );
 
  390     CPPUNIT_ASSERT(  ( lhsIPA <= rhsIPA ) );
 
  391     CPPUNIT_ASSERT( !( lhsIPA <  rhsIPA ) );
 
  397     CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) );
 
  398     CPPUNIT_ASSERT(  ( lhsIPA != rhsIPA ) );
 
  399     CPPUNIT_ASSERT( !( lhsIPA >= rhsIPA ) );
 
  400     CPPUNIT_ASSERT( !( lhsIPA >  rhsIPA ) );
 
  401     CPPUNIT_ASSERT(  ( lhsIPA <= rhsIPA ) );
 
  402     CPPUNIT_ASSERT(  ( lhsIPA <  rhsIPA ) );
 
  408     CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) );
 
  409     CPPUNIT_ASSERT(  ( lhsIPA != rhsIPA ) );
 
  410     CPPUNIT_ASSERT( !( lhsIPA >= rhsIPA ) );
 
  411     CPPUNIT_ASSERT( !( lhsIPA >  rhsIPA ) );
 
  412     CPPUNIT_ASSERT(  ( lhsIPA <= rhsIPA ) );
 
  413     CPPUNIT_ASSERT(  ( lhsIPA <  rhsIPA ) );
 
  419     CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) );
 
  420     CPPUNIT_ASSERT(  ( lhsIPA != rhsIPA ) );
 
  421     CPPUNIT_ASSERT( !( lhsIPA >= rhsIPA ) );
 
  422     CPPUNIT_ASSERT( !( lhsIPA >  rhsIPA ) );
 
  423     CPPUNIT_ASSERT(  ( lhsIPA <= rhsIPA ) );
 
  424     CPPUNIT_ASSERT(  ( lhsIPA <  rhsIPA ) );
 
  430     CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) );
 
  431     CPPUNIT_ASSERT(  ( lhsIPA != rhsIPA ) );
 
  432     CPPUNIT_ASSERT(  ( lhsIPA >= rhsIPA ) );
 
  433     CPPUNIT_ASSERT(  ( lhsIPA >  rhsIPA ) );
 
  434     CPPUNIT_ASSERT( !( lhsIPA <= rhsIPA ) );
 
  435     CPPUNIT_ASSERT( !( lhsIPA <  rhsIPA ) );
 
  441     CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) );
 
  442     CPPUNIT_ASSERT(  ( lhsIPA != rhsIPA ) );
 
  443     CPPUNIT_ASSERT(  ( lhsIPA >= rhsIPA ) );
 
  444     CPPUNIT_ASSERT(  ( lhsIPA >  rhsIPA ) );
 
  445     CPPUNIT_ASSERT( !( lhsIPA <= rhsIPA ) );
 
  446     CPPUNIT_ASSERT( !( lhsIPA <  rhsIPA ) );
 
  452     CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) );
 
  453     CPPUNIT_ASSERT(  ( lhsIPA != rhsIPA ) );
 
  454     CPPUNIT_ASSERT(  ( lhsIPA >= rhsIPA ) );
 
  455     CPPUNIT_ASSERT(  ( lhsIPA >  rhsIPA ) );
 
  456     CPPUNIT_ASSERT( !( lhsIPA <= rhsIPA ) );
 
  457     CPPUNIT_ASSERT( !( lhsIPA <  rhsIPA ) );
 
  464     struct in_addr inval;
 
  473     inval.s_addr = htonl(0xC0A8640C);
 
  477     CPPUNIT_ASSERT( memcmp(
"192.168.100.12",anIPA.
toStr(buf,
MAX_IPSTRLEN), 14) == 0 );
 
  482     CPPUNIT_ASSERT( memcmp(
"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",anIPA.
toStr(buf,
MAX_IPSTRLEN), 39) == 0 );
 
  490     struct in_addr inval;
 
  492     inval.s_addr = htonl(0xC0A8640C);
 
  498     CPPUNIT_ASSERT( memcmp(
"192.168.100.12", buf, 14) == 0 );
 
  501     struct in6_addr ip6val;
 
  503     ip6val.s6_addr32[0] = htonl(0xC0A8640C);
 
  504     ip6val.s6_addr32[1] = htonl(0xFFFFFFFF);
 
  505     ip6val.s6_addr32[2] = htonl(0xFFFFFFFF);
 
  506     ip6val.s6_addr32[3] = htonl(0xFFFFFFFF);
 
  511     CPPUNIT_ASSERT( memcmp(
"[c0a8:640c:ffff:ffff:ffff:ffff:ffff:ffff]", buf, 41) == 0 );
 
  517     struct sockaddr_in sock;
 
  518     sock.sin_addr.s_addr = htonl(0xC0A8640C);
 
  519     sock.sin_port = htons(80);
 
  520     sock.sin_family = AF_INET;
 
  521 #if HAVE_SIN_LEN_IN_SAI 
  522     sock.sin_len = 
sizeof(
struct sockaddr_in);
 
  530     CPPUNIT_ASSERT( memcmp(
"192.168.100.12:80", buf, 17) == 0 );
 
  533     struct sockaddr_in6 ip6val;
 
  535     ip6val.sin6_addr.s6_addr32[0] = htonl(0xC0A8640C);
 
  536     ip6val.sin6_addr.s6_addr32[1] = htonl(0xFFFFFFFF);
 
  537     ip6val.sin6_addr.s6_addr32[2] = htonl(0xFFFFFFFF);
 
  538     ip6val.sin6_addr.s6_addr32[3] = htonl(0xFFFFFFFF);
 
  539     ip6val.sin6_port = htons(80);
 
  540     ip6val.sin6_family = AF_INET6;
 
  541 #if HAVE_SIN6_LEN_IN_SAI 
  542     ip6val.sin6_len = 
sizeof(
struct sockaddr_in6);
 
  548     CPPUNIT_ASSERT( memcmp(
"[c0a8:640c:ffff:ffff:ffff:ffff:ffff:ffff]:80", buf, 44) == 0 );
 
  556     struct in_addr ipv4val;
 
  557     ipv4val.s_addr = htonl(0xC0A8640C);
 
  563     CPPUNIT_ASSERT( memcmp(
"12.100.168.192.in-addr.arpa.",buf, 28) == 0 );
 
  566     CPPUNIT_ASSERT( memcmp(
"12.100.168.192.in-addr.arpa.",buf, 28) == 0 );
 
  569     CPPUNIT_ASSERT( memcmp(
"",buf, 1) == 0 );
 
  571     struct in6_addr ip6val;
 
  573     ip6val.s6_addr32[0] = htonl(0xC0A8640C);
 
  574     ip6val.s6_addr32[1] = htonl(0xFFFFFFFF);
 
  575     ip6val.s6_addr32[2] = htonl(0xFFFFFFFF);
 
  576     ip6val.s6_addr32[3] = htonl(0xFFFFFFFF);
 
  582     CPPUNIT_ASSERT( memcmp(
"f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.c.0.4.6.8.a.0.c.ip6.arpa.",buf,73) == 0 );
 
  594     CPPUNIT_ASSERT_EQUAL( 0,anIPA.
cidr() );
 
  597     CPPUNIT_ASSERT_EQUAL( 128, anIPA.
cidr() );
 
  601     CPPUNIT_ASSERT( !anIPA.
applyMask(129,AF_INET6) );
 
  602     CPPUNIT_ASSERT( !anIPA.
applyMask(33,AF_INET) );
 
  605     CPPUNIT_ASSERT( anIPA.
applyMask(31,AF_INET) );
 
  606     CPPUNIT_ASSERT_EQUAL( 127, anIPA.
cidr() );
 
  609     CPPUNIT_ASSERT( anIPA.
applyMask(127,AF_INET6) );
 
  610     CPPUNIT_ASSERT_EQUAL( 127, anIPA.
cidr() );
 
  614     CPPUNIT_ASSERT_EQUAL( 80, anIPA.
cidr() );
 
  618     CPPUNIT_ASSERT( memcmp(
"ffff:ffff:ffff:ffff:ffff::", buf, 26) == 0 );
 
  622     maskIPA = 
"255.255.240.0";
 
  623     CPPUNIT_ASSERT_EQUAL( 20, maskIPA.
cidr() );
 
  625     CPPUNIT_ASSERT_EQUAL( 20, anIPA.
cidr() );
 
  628     struct in_addr btest;
 
  629     CPPUNIT_ASSERT( anIPA.
isIPv4() );
 
  630     CPPUNIT_ASSERT( !anIPA.
isIPv6() );
 
  632     CPPUNIT_ASSERT_EQUAL( (uint32_t)htonl(0xFFFFF000), btest.s_addr );
 
  635     CPPUNIT_ASSERT( memcmp(
"255.255.240.0",anIPA.
toStr(buf,
MAX_IPSTRLEN), 13) == 0 );
 
  642     maskIPA = 
"ffff:ffff:fff0::";
 
  644     CPPUNIT_ASSERT( !maskIPA.
isNoAddr() );
 
  646     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  647     CPPUNIT_ASSERT_EQUAL( 44, anIPA.
cidr() );
 
  653     maskIPA = 
"::ffff:ffff:f000";
 
  655     CPPUNIT_ASSERT( !maskIPA.
isNoAddr() );
 
  656     CPPUNIT_ASSERT(  maskIPA.
isIPv4() );
 
  657     CPPUNIT_ASSERT( !maskIPA.
isIPv6() );
 
  660     CPPUNIT_ASSERT( !maskIPA.
isNoAddr() );
 
  661     CPPUNIT_ASSERT(  maskIPA.
isIPv4() );
 
  662     CPPUNIT_ASSERT( !maskIPA.
isIPv6() );
 
  663     CPPUNIT_ASSERT_EQUAL( 20, anIPA.
cidr() );
 
  669     struct addrinfo *expect;
 
  670     struct addrinfo *ipval = 
nullptr;
 
  671     struct addrinfo hints;
 
  673     memset(&hints, 0, 
sizeof(
struct addrinfo));
 
  675     hints.ai_flags = AI_NUMERICHOST;
 
  680     CPPUNIT_ASSERT( getaddrinfo(
"127.0.0.1", 
nullptr, &hints, &expect ) == 0 );
 
  686     CPPUNIT_ASSERT_EQUAL( expect->ai_flags, ipval->ai_flags );
 
  687     CPPUNIT_ASSERT_EQUAL( expect->ai_family, ipval->ai_family );
 
  689     CPPUNIT_ASSERT_EQUAL( expect->ai_addrlen, ipval->ai_addrlen );
 
  691 #if HAVE_SS_LEN_IN_SS 
  692     CPPUNIT_ASSERT_EQUAL( ((
struct sockaddr_storage*)expect->ai_addr)->ss_len,
 
  693                           ((
struct sockaddr_storage*)ipval->ai_addr)->ss_len );
 
  694     CPPUNIT_ASSERT_EQUAL( (
socklen_t)((
struct sockaddr_storage*)ipval->ai_addr)->ss_len, ipval->ai_addrlen );
 
  696 #if HAVE_SIN6_LEN_IN_SAI 
  697     CPPUNIT_ASSERT_EQUAL( ((
struct sockaddr_in6*)expect->ai_addr)->sin6_len,
 
  698                           ((
struct sockaddr_in6*)ipval->ai_addr)->sin6_len );
 
  699     CPPUNIT_ASSERT_EQUAL( (
socklen_t)((
struct sockaddr_in6*)ipval->ai_addr)->sin6_len, ipval->ai_addrlen );
 
  701 #if HAVE_SIN_LEN_IN_SAI 
  702     CPPUNIT_ASSERT_EQUAL( ((
struct sockaddr_in*)expect->ai_addr)->sin_len,
 
  703                           ((
struct sockaddr_in*)ipval->ai_addr)->sin_len );
 
  704     CPPUNIT_ASSERT_EQUAL( (
socklen_t)((
struct sockaddr_in*)ipval->ai_addr)->sin_len, ipval->ai_addrlen );
 
  707     if (expect->ai_addrlen == 
sizeof(
struct sockaddr_in)) {
 
  709         CPPUNIT_ASSERT_EQUAL( ((
struct sockaddr_in*)expect->ai_addr)->sin_family,
 
  710                               ((
struct sockaddr_in*)ipval->ai_addr)->sin_family );
 
  712         CPPUNIT_ASSERT_EQUAL( ((
struct sockaddr_in*)expect->ai_addr)->sin_port,
 
  713                               ((
struct sockaddr_in*)ipval->ai_addr)->sin_port );
 
  715     if (expect->ai_addrlen == 
sizeof(
struct sockaddr_in6)) {
 
  717         CPPUNIT_ASSERT_EQUAL( ((
struct sockaddr_in6*)expect->ai_addr)->sin6_family,
 
  718                               ((
struct sockaddr_in6*)ipval->ai_addr)->sin6_family );
 
  720         CPPUNIT_ASSERT_EQUAL( ((
struct sockaddr_in6*)expect->ai_addr)->sin6_port,
 
  721                               ((
struct sockaddr_in6*)ipval->ai_addr)->sin6_port );
 
  724     CPPUNIT_ASSERT( memcmp( expect->ai_addr, ipval->ai_addr, expect->ai_addrlen ) == 0 );
 
  726     freeaddrinfo(expect);
 
  741     struct in_addr outval;
 
  742     struct in_addr expectval;
 
  744     expectval.s_addr = htonl(0xC0A8640C);
 
  750     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  751     CPPUNIT_ASSERT( anIPA.
isIPv4() );
 
  752     CPPUNIT_ASSERT( !anIPA.
isIPv6() );
 
  753     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, anIPA.
port() );
 
  756     CPPUNIT_ASSERT( memcmp( &expectval, &outval, 
sizeof(
struct in_addr)) == 0 );
 
  763     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  764     CPPUNIT_ASSERT( anIPA.
isIPv4() );
 
  765     CPPUNIT_ASSERT( !anIPA.
isIPv6() );
 
  766     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, anIPA.
port() );
 
  769     CPPUNIT_ASSERT( memcmp( &expectval, &outval, 
sizeof(
struct in_addr)) == 0 );
 
  776     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  777     CPPUNIT_ASSERT( anIPA.
isIPv4() );
 
  778     CPPUNIT_ASSERT( !anIPA.
isIPv6() );
 
  779     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, anIPA.
port() );
 
  782     CPPUNIT_ASSERT( memcmp( &expectval, &outval, 
sizeof(
struct in_addr)) == 0 );
 
  789     CPPUNIT_ASSERT( !anIPA.
isNoAddr() );
 
  790     CPPUNIT_ASSERT( anIPA.
isIPv4() );
 
  791     CPPUNIT_ASSERT( !anIPA.
isIPv6() );
 
  792     CPPUNIT_ASSERT_EQUAL( (
unsigned short) 0, anIPA.
port() );
 
  795     CPPUNIT_ASSERT( memcmp( &expectval, &outval, 
sizeof(
struct in_addr)) == 0 );