|
Packit |
3de91b |
use strict;
|
|
Packit |
3de91b |
use warnings;
|
|
Packit |
3de91b |
use Test::More;
|
|
Packit |
3de91b |
|
|
Packit |
3de91b |
use Socket qw(
|
|
Packit |
3de91b |
INADDR_ANY
|
|
Packit |
3de91b |
pack_ip_mreq unpack_ip_mreq
|
|
Packit |
3de91b |
pack_ip_mreq_source unpack_ip_mreq_source
|
|
Packit |
3de91b |
);
|
|
Packit |
3de91b |
|
|
Packit |
3de91b |
# Check that pack/unpack_ip_mreq either croak with "Not implemented", or
|
|
Packit |
3de91b |
# roundtrip as identity
|
|
Packit |
3de91b |
|
|
Packit |
3de91b |
my $packed;
|
|
Packit |
3de91b |
eval {
|
|
Packit |
3de91b |
$packed = pack_ip_mreq "\xe0\0\0\1", INADDR_ANY;
|
|
Packit |
3de91b |
};
|
|
Packit |
3de91b |
if( !defined $packed ) {
|
|
Packit |
3de91b |
plan skip_all => "No pack_ip_mreq" if $@ =~ m/ not implemented /;
|
|
Packit |
3de91b |
die $@;
|
|
Packit |
3de91b |
}
|
|
Packit |
3de91b |
|
|
Packit |
3de91b |
plan tests => 6;
|
|
Packit |
3de91b |
|
|
Packit |
3de91b |
my @unpacked = unpack_ip_mreq $packed;
|
|
Packit |
3de91b |
|
|
Packit |
3de91b |
is( $unpacked[0], "\xe0\0\0\1", 'unpack_ip_mreq multiaddr' );
|
|
Packit |
3de91b |
is( $unpacked[1], INADDR_ANY, 'unpack_ip_mreq interface' );
|
|
Packit |
3de91b |
|
|
Packit |
3de91b |
is( (unpack_ip_mreq pack_ip_mreq "\xe0\0\0\1")[1], INADDR_ANY, 'pack_ip_mreq interface defaults to INADDR_ANY' );
|
|
Packit |
3de91b |
|
|
Packit |
3de91b |
SKIP: {
|
|
Packit |
3de91b |
my $mreq;
|
|
Packit |
3de91b |
skip "No pack_ip_mreq_source", 3 unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY };
|
|
Packit |
3de91b |
|
|
Packit |
3de91b |
@unpacked = unpack_ip_mreq_source $mreq;
|
|
Packit |
3de91b |
|
|
Packit |
3de91b |
is( $unpacked[0], "\xe0\0\0\2", 'unpack_ip_mreq_source multiaddr' );
|
|
Packit |
3de91b |
is( $unpacked[1], "\x0a\0\0\1", 'unpack_ip_mreq_source source' );
|
|
Packit |
3de91b |
is( $unpacked[2], INADDR_ANY, 'unpack_ip_mreq_source interface' );
|
|
Packit |
3de91b |
}
|