|
|
|
@ -9,13 +9,14 @@ use Getopt::Long; |
|
|
|
use Socket6; |
|
|
|
|
|
|
|
my ($NUM, $RUNTIME) = (1000, 30); |
|
|
|
my ($NODEL, $IP, $IPV6); |
|
|
|
my ($NODEL, $IP, $IPV6, $KEEPGOING); |
|
|
|
GetOptions( |
|
|
|
'no-delete' => \$NODEL, |
|
|
|
'num-calls=i' => \$NUM, |
|
|
|
'local-ip=s' => \$IP, |
|
|
|
'local-ipv6=s' => \$IPV6, |
|
|
|
'runtime=i' => \$RUNTIME, |
|
|
|
'keep-going' => \$KEEPGOING, # don't stop sending rtp if a packet doesn't go through |
|
|
|
) or die; |
|
|
|
|
|
|
|
($IP || $IPV6) or die("at least one of --local-ip or --local-ipv6 must be given"); |
|
|
|
@ -64,7 +65,8 @@ sub do_rtp { |
|
|
|
for my $i ([0,1],[1,0]) { |
|
|
|
my ($a, $b) = @$i; |
|
|
|
my $pr = $$protos[$a]; |
|
|
|
send($$fds[$a], 'rtp', 0, $$pr{sockaddr}($$outputs[$b][0], |
|
|
|
my $payload = rand_str(100); |
|
|
|
send($$fds[$a], $payload, 0, $$pr{sockaddr}($$outputs[$b][0], |
|
|
|
inet_pton($$pr{family}, $$outputs[$b][1]))) or die $!; |
|
|
|
my $x; |
|
|
|
my $err = ''; |
|
|
|
@ -72,7 +74,10 @@ sub do_rtp { |
|
|
|
recv($$fds[$b], $x, 0xffff, 0) or $err = "$!"; |
|
|
|
alarm(0); |
|
|
|
$err && $err !~ /interrupt/i and die $err; |
|
|
|
$x eq 'rtp' or warn("no rtp reply received, ports $$outputs[$b][0] and $$outputs[$a][0]"), undef($c); |
|
|
|
if (($x || '') ne $payload) { |
|
|
|
warn("no rtp reply received, ports $$outputs[$b][0] and $$outputs[$a][0]"); |
|
|
|
$KEEPGOING or undef($c); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|