Blame t/17gai-flags.t

Packit 8bbd3c
#!/usr/bin/perl
Packit 8bbd3c
Packit 8bbd3c
use strict;
Packit 8bbd3c
use warnings;
Packit 8bbd3c
Packit 8bbd3c
use Test::More;
Packit 8bbd3c
Packit 8bbd3c
use IO::Socket::IP;
Packit 8bbd3c
use Socket 1.95 qw(
Packit 8bbd3c
   PF_INET SOCK_STREAM IPPROTO_TCP pack_sockaddr_in INADDR_ANY
Packit 8bbd3c
   AI_PASSIVE AI_NUMERICSERV
Packit 8bbd3c
);
Packit 8bbd3c
Packit 8bbd3c
my $AI_ADDRCONFIG = eval { Socket::AI_ADDRCONFIG() } || 0;
Packit 8bbd3c
Packit 8bbd3c
my @gai_args;
Packit 8bbd3c
my @gai_rets;
Packit 8bbd3c
Packit 8bbd3c
no strict 'refs';
Packit 8bbd3c
no warnings 'redefine';
Packit 8bbd3c
Packit 8bbd3c
*{"IO::Socket::IP::getaddrinfo"} = sub {
Packit 8bbd3c
   push @gai_args, [ @_ ];
Packit 8bbd3c
   return @{ shift @gai_rets };
Packit 8bbd3c
};
Packit 8bbd3c
Packit 8bbd3c
@gai_args = ();
Packit 8bbd3c
@gai_rets = (
Packit 8bbd3c
   [ "", {
Packit 8bbd3c
         family   => PF_INET,
Packit 8bbd3c
         socktype => SOCK_STREAM,
Packit 8bbd3c
         protocol => IPPROTO_TCP,
Packit 8bbd3c
         addr     => pack_sockaddr_in( 80, INADDR_ANY )
Packit 8bbd3c
      } ],
Packit 8bbd3c
);
Packit 8bbd3c
IO::Socket::IP->new( LocalPort => "80" );
Packit 8bbd3c
Packit 8bbd3c
is_deeply( \@gai_args,
Packit 8bbd3c
           [ 
Packit 8bbd3c
              [ undef, "80", { flags => AI_PASSIVE|$AI_ADDRCONFIG, socktype => SOCK_STREAM, protocol => IPPROTO_TCP } ],
Packit 8bbd3c
           ],
Packit 8bbd3c
           '@gai_args for LocalPort => "80"' );
Packit 8bbd3c
Packit 8bbd3c
SKIP: {
Packit 8bbd3c
   skip "No AI_NUMERICSERV", 1 unless defined eval { AI_NUMERICSERV() };
Packit 8bbd3c
Packit 8bbd3c
   @gai_args = ();
Packit 8bbd3c
   @gai_rets = (
Packit 8bbd3c
      [ "", {
Packit 8bbd3c
            family   => PF_INET,
Packit 8bbd3c
            socktype => SOCK_STREAM,
Packit 8bbd3c
            protocol => IPPROTO_TCP,
Packit 8bbd3c
            addr     => pack_sockaddr_in( 80, INADDR_ANY )
Packit 8bbd3c
         } ],
Packit 8bbd3c
   );
Packit 8bbd3c
   IO::Socket::IP->new( LocalPort => "80", GetAddrInfoFlags => AI_NUMERICSERV );
Packit 8bbd3c
Packit 8bbd3c
   is_deeply( \@gai_args,
Packit 8bbd3c
              [ 
Packit 8bbd3c
                 [ undef, "80", { flags => AI_PASSIVE|AI_NUMERICSERV, socktype => SOCK_STREAM, protocol => IPPROTO_TCP } ],
Packit 8bbd3c
              ],
Packit 8bbd3c
              '@gai_args for LocalPort => "80", GetAddrInfoFlags => AI_NUMERICSERV' );
Packit 8bbd3c
}
Packit 8bbd3c
Packit 8bbd3c
done_testing;