1use v5.6.1; 2use strict; 3use warnings; 4use Test::More tests => 13; 5 6use Socket qw(:addrinfo AF_INET pack_sockaddr_in inet_aton); 7 8my ( $err, $host, $service ); 9 10( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICHOST|NI_NUMERICSERV ); 11cmp_ok( $err, "==", 0, '$err == 0 for {family=AF_INET,port=80,sinaddr=127.0.0.1}/NI_NUMERICHOST|NI_NUMERICSERV' ); 12cmp_ok( $err, "eq", "", '$err eq "" for {family=AF_INET,port=80,sinaddr=127.0.0.1}/NI_NUMERICHOST|NI_NUMERICSERV' ); 13 14is( $host, "127.0.0.1", '$host is 127.0.0.1 for NH/NS' ); 15is( $service, "80", '$service is 80 for NH/NS' ); 16 17( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICHOST|NI_NUMERICSERV, NIx_NOHOST ); 18is( $host, undef, '$host is undef for NIx_NOHOST' ); 19is( $service, "80", '$service is 80 for NS, NIx_NOHOST' ); 20 21( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICHOST|NI_NUMERICSERV, NIx_NOSERV ); 22is( $host, "127.0.0.1", '$host is undef for NIx_NOSERV' ); 23is( $service, undef, '$service is 80 for NS, NIx_NOSERV' ); 24 25( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICSERV ); 26cmp_ok( $err, "==", 0, '$err == 0 for {family=AF_INET,port=80,sinaddr=127.0.0.1}/NI_NUMERICSERV' ); 27 28# We can't meaningfully compare '$host' with anything specific, all we can be 29# sure is it's not empty 30ok( length $host, '$host is nonzero length for NS' ); 31 32( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICHOST | NI_NUMERICSERV ); 33cmp_ok( $err, "==", 0, '$err == 0 for {family=AF_INET,port=80,sinaddr=127.0.0.1}/NI_NUMERICHOST' ); 34 35ok( length $service, '$service is nonzero length for NH' ); 36 37# RT79557 38pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ) =~ m/^(.*)$/s; 39( $err, $host, $service ) = getnameinfo( $1, NI_NUMERICHOST|NI_NUMERICSERV ); 40cmp_ok( $err, "==", 0, '$err == 0 for $1' ) or diag( '$err was: ' . $err ); 41