|
|
|
@ -17,7 +17,8 @@ use SRTP; |
|
|
|
|
|
|
|
my ($NUM, $RUNTIME, $STREAMS, $PAYLOAD, $INTERVAL, $RTCP_INTERVAL, $STATS_INTERVAL) |
|
|
|
= (1000, 30, 1, 160, 20, 5, 5); |
|
|
|
my ($NODEL, $IP, $IPV6, $KEEPGOING, $REINVITES, $PROTOS, $DEST, $SUITES, $NOENC, $RTCPMUX, $BUNDLE, $LAZY); |
|
|
|
my ($NODEL, $IP, $IPV6, $KEEPGOING, $REINVITES, $PROTOS, $DEST, $SUITES, $NOENC, $RTCPMUX, $BUNDLE, $LAZY, |
|
|
|
$CHANGE_SSRC); |
|
|
|
GetOptions( |
|
|
|
'no-delete' => \$NODEL, |
|
|
|
'num-calls=i' => \$NUM, |
|
|
|
@ -38,6 +39,7 @@ GetOptions( |
|
|
|
'rtcp-mux' => \$RTCPMUX, |
|
|
|
'bundle' => \$BUNDLE, |
|
|
|
'lazy-params' => \$LAZY, |
|
|
|
'change-ssrc' => \$CHANGE_SSRC, |
|
|
|
) or die; |
|
|
|
|
|
|
|
($IP || $IPV6) or die("at least one of --local-ip or --local-ipv6 must be given"); |
|
|
|
@ -154,6 +156,7 @@ sub rtp_encrypt { |
|
|
|
|
|
|
|
my ($pkt, $roc) = SRTP::encrypt_rtp(@$dctx{qw(crypto_suite rtp_session_key rtp_session_salt |
|
|
|
rtp_session_auth_key rtp_roc rtp_mki rtp_mki_len unenc_srtp unauth_srtp)}, $r); |
|
|
|
$roc == ($$dctx{rtp_roc} // 0) or print("ROC is now $roc\n"); |
|
|
|
$$dctx{rtp_roc} = $roc; |
|
|
|
|
|
|
|
$NOENC{rtp_packet} = $pkt; |
|
|
|
@ -769,6 +772,21 @@ while (time() < $end) { |
|
|
|
offer($c, 0, 1); |
|
|
|
answer($c, 1, 0); |
|
|
|
} |
|
|
|
|
|
|
|
if ($CHANGE_SSRC && rand() < .001) { |
|
|
|
my $c = $calls[rand(@calls)]; |
|
|
|
my $s = $$c{sides}[rand(2)]; |
|
|
|
my $st = rand($$s{num_streams}); |
|
|
|
my $d = (qw(in out))[rand(2)]; |
|
|
|
my $stc = $$s{trans_contexts}[$st]; |
|
|
|
my $ct = $$stc{$d}; |
|
|
|
if (defined($$ct{rtp_roc}) && $$stc{ssrc}) { |
|
|
|
my $nssrc = rand(2 ** 32); |
|
|
|
print("change SSRC from $$stc{ssrc} to $nssrc\n"); |
|
|
|
$$stc{ssrc} = $nssrc; |
|
|
|
$$ct{roc} = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (!$NODEL) { |
|
|
|
|