use subs qw(print);
use Cwd;
use L7lib;
-use Test::More tests => 8;
-use IO::Socket::INET;
+use Test::More tests => 12;
+use Socket;
+use Socket6;
+use IO::Socket::INET6;
L7lib::chdir();
L7lib::comment_out();
my $got = check_sip($v, $r);
is $got, $main::SERVICE_DOWN, 'check_sip - connect error (udp)';
}
+#### IPv6
+SKIP: {
+ my $port = 63334;
+ my $sock = create_sock6($port);
+ skip 'cannot create socket6', 1 if !$sock;
+ my $pid = prepare_child($sock, ["SIP/2.0 200 OK\n"]);
+ set_default();
+ my $v = { negotiatetimeout => 3, protocol => 'tcp', login => 'carol@chicago.com' };
+ my $r = { server => {ip => '[::1]', port => $port }, fail_counts => 0 };
+ my $got = check_sip($v, $r);
+ is $got, $main::SERVICE_UP, 'check_sip IPv6 - response ok';
+ close_child($pid);
+ close $sock;
+}
+SKIP: {
+ my $port = 63334;
+ my $sock = create_sock6($port);
+ skip 'cannot create socket6', 1 if !$sock;
+ my $pid = prepare_child($sock, ["SIP/2.0 200 OK\n"]);
+ set_default();
+ my $v = { negotiatetimeout => 3, protocol => 'tcp', checkport => $port, login => 'carol@chicago.com' };
+ my $r = { server => {ip => '[::1]', port => 10000 }, fail_counts => 0 };
+ my $got = check_sip($v, $r);
+ is $got, $main::SERVICE_UP, 'check_sip - checkport response ok';
+ close_child($pid);
+ close $sock;
+}
+SKIP: {
+ my $port = 63334;
+ my $sock = create_sock6($port);
+ skip 'cannot create socket6', 1 if !$sock;
+ my $pid = prepare_child($sock, ["SIP/2.0 200 OK\n"], 2);
+ set_default();
+ my $v = { negotiatetimeout => 1, protocol => 'tcp', login => 'carol@chicago.com' };
+ my $r = { server => {ip => '[::1]', port => $port } , fail_counts => 0 };
+ my $got = check_sip($v, $r);
+ is $got, $main::SERVICE_DOWN, 'check_sip - timeout';
+ close_child($pid);
+ close $sock;
+}
+{
+ my $port = 63334;
+ set_default();
+ my $v = { negotiatetimeout => 1, checkport => $port, protocol => 'tcp', login => 'carol@chicago.com' };
+ my $r = { server => {ip => '[::1]', port => 10000 }, fail_counts => 0 };
+ my $got = check_sip($v, $r);
+ is $got, $main::SERVICE_DOWN, 'check_sip - connect error';
+}
# test end
#...............................................
my $port = shift;
my $proto = shift || 'tcp';
if ($proto eq 'tcp') {
- my $sock = IO::Socket::INET->new(
+ my $sock = IO::Socket::INET6->new(
Listen => 5,
LocalAddr => 'localhost',
LocalPort => $port,
return $sock;
}
else {
- my $sock = IO::Socket::INET->new(
+ my $sock = IO::Socket::INET6->new(
LocalAddr => 'localhost',
LocalPort => $port,
ReuseAddr => 1,
return $sock;
}
}
+sub create_sock6 {
+ my $port = shift;
+ my $proto = shift || 'tcp';
+ if ($proto eq 'tcp') {
+ my $sock = IO::Socket::INET6->new(
+ Listen => 5,
+ LocalAddr => 'localhost6',
+ LocalPort => $port,
+ ReuseAddr => 1,
+ Proto => $proto);
+ return $sock;
+ }
+ else {
+ my $sock = IO::Socket::INET6->new(
+ LocalAddr => 'localhost6',
+ LocalPort => $port,
+ ReuseAddr => 1,
+ Proto => $proto);
+ return $sock;
+ }
+}
+
sub prepare_child {
my $sock = shift;
my $res = shift;
exit;
} else {
my $req;
+ my $ip1;
+ my $port1;
recv $sock, $req, 1500, 0;
- $req =~ /^Via.+(\d+\.\d+\.\d+\.\d+):(\d+)/;
+ if($req =~ /^Via.+(\d+\.\d+\.\d+\.\d+):(\d+)/){
+ $ip1 = $1;
+ $port1 = $2;
+ }
+ else {
+ $req =~ /^Via\s*:(\[(0-9a-zA-Z:_-)\]):(\d+)/;
+ $ip1 = $1;
+ $port1 = $2;
+ }
my $ret_sock = IO::Socket::INET->new(
- PeerAddr => $1,
- PeerPort => $2,
+ PeerAddr => $ip1,
+ PeerPort => $port1,
Proto => 'udp',
);
if ($sleep) { sleep $sleep; }
########################################################################
#### IPv6 Test
SKIP: {
- my $port = 63334;
+ my $port = 63335;
my $sock = create_sock6($port);
skip 'cannot create socket', 1 if !$sock;
my $pid = prepare_child($sock, [
]);
set_default();
my $v = { negotiatetimeout => 3, login => 'ftp', passwd => 'ftppass' };
- my $r = { server => {ip => '[::1]', port => $port }, fail_counts => 0 };
+ my $r = { server => {ip => '::1', port => $port }, fail_counts => 0 };
my $got = check_ftp($v, $r);
is $got, $main::SERVICE_UP, 'check_ftp - login ok';
close_child($pid);
close $sock;
}
SKIP: {
- my $port = 63334;
+ my $port = 63335;
my $sock = create_sock6($port);
skip 'cannot create socket', 1 if !$sock;
my $pid = prepare_child($sock, [
close $sock;
}
SKIP: {
- my $port = 63334;
+ my $port = 63335;
my $sock = create_sock6($port);
skip 'cannot create socket', 1 if !$sock;
my $pid = prepare_child($sock, [
close $sock;
}
SKIP: {
- my $port = 63334;
+ my $port = 63335;
my $sock = create_sock6($port);
my $dataport = 53332;
my $datasock = create_sock6($dataport);
close $sock;
}
SKIP: {
- my $port = 63334;
+ my $port = 63335;
my $sock = create_sock6($port);
skip 'cannot create socket', 1 if !$sock;
my $pid = prepare_child($sock, [
close $sock;
}
SKIP: {
- my $port = 63334;
+ my $port = 63335;
my $sock = create_sock6($port);
my $dataport = 53334;
my $datasock = create_sock6($dataport);
close $sock;
}
SKIP: {
- my $port = 63334;
+ my $port = 63336;
my $sock = create_sock6($port);
my $dataport = 53335;
my $datasock = create_sock6($dataport);
close $sock;
}
SKIP: {
- my $port = 63334;
+ my $port = 63335;
my $sock = create_sock6($port);
my $dataport = 53334;
my $datasock = create_sock6($dataport);
close $sock;
}
SKIP: {
- my $port = 63334;
+ my $port = 63336;
my $sock = create_sock6($port);
my $dataport = 53334;
my $datasock = create_sock6($dataport);
Proto => 'tcp');
return $sock;
}
-
sub create_sock6 {
my $port = shift;
- my $sock = IO::Socket::INET6->new(
- Listen => 5,
- LocalAddr => '::1',
- LocalPort => $port,
- ReuseAddr => 1,
- Proto => 'tcp');
- return $sock;
+ my $proto = shift || 'tcp';
+ if ($proto eq 'tcp') {
+ my $sock = IO::Socket::INET6->new(
+ Listen => 5,
+ LocalAddr => '::1',
+ LocalPort => $port,
+ ReuseAddr => 1,
+ Proto => $proto);
+ return $sock;
+ }
+ else {
+ my $sock = IO::Socket::INET6->new(
+ LocalAddr => '::1',
+ LocalPort => $port,
+ ReuseAddr => 1,
+ Proto => $proto);
+ return $sock;
+ }
}
+##
+##sub create_sock6 {
+## my $port = shift;
+## my $sock = IO::Socket::INET6->new(
+## Listen => 5,
+## LocalAddr => '::1',
+## LocalPort => $port,
+## ReuseAddr => 1,
+## Proto => 'tcp');
+## return $sock;
+##}
sub prepare_child {
my $sock = shift;
my $res = shift;