mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 02:49:59 -04:00
Use a single local port for ditch.pl
The ditch.pl script is used to generate burst traffic without waiting
for the responses. When running other tests in parallel, this can result
in a ephemeral port clash, since the ditch.pl process closes the socket
immediately. In rare occasions when the message ID also clashes with
other tests' queries, it might result in an UnexpectedSource error from
dnspython.
Use a dedicated port EXTRAPORT8 which is reserved for each test as a
source port for the burst traffic.
(cherry picked from commit 339fa5690a)
This commit is contained in:
parent
dc72d71a41
commit
26356ea078
3 changed files with 13 additions and 6 deletions
|
|
@ -34,12 +34,12 @@ use IO::File;
|
|||
use IO::Socket;
|
||||
|
||||
sub usage {
|
||||
print ("Usage: ditch.pl [-s address] [-p port] [file]\n");
|
||||
print ("Usage: ditch.pl [-s address] [-p port] [-b source_port] [file]\n");
|
||||
exit 1;
|
||||
}
|
||||
|
||||
my %options={};
|
||||
getopts("s:p:t:", \%options);
|
||||
getopts("s:p:b:", \%options);
|
||||
|
||||
my $addr = "127.0.0.1";
|
||||
$addr = $options{s} if defined $options{s};
|
||||
|
|
@ -47,6 +47,9 @@ $addr = $options{s} if defined $options{s};
|
|||
my $port = 53;
|
||||
$port = $options{p} if defined $options{p};
|
||||
|
||||
my $source_port = 0;
|
||||
$source_port = $options{b} if defined $options{b};
|
||||
|
||||
my $file = "STDIN";
|
||||
if (@ARGV >= 1) {
|
||||
my $filename = shift @ARGV;
|
||||
|
|
@ -74,8 +77,12 @@ while (defined(my $line = <$file>) ) {
|
|||
$packet->header->rd(1);
|
||||
$packet->push(question => $q);
|
||||
|
||||
my $sock = IO::Socket::INET->new(PeerAddr => $addr, PeerPort => $port,
|
||||
Proto => "udp",) or die "$!";
|
||||
my $sock = IO::Socket::INET->new(
|
||||
PeerAddr => $addr,
|
||||
PeerPort => $port,
|
||||
Proto => "udp",
|
||||
LocalPort => $source_port,
|
||||
) or die "$!";
|
||||
|
||||
my $bytes = $sock->send($packet->data);
|
||||
#print ("sent $bytes bytes to $addr:$port:\n");
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ burst() {
|
|||
echo "${num}${2}${3}.lamesub.example A" >>burst.input.$$
|
||||
fi
|
||||
done
|
||||
$PERL ../ditch.pl -p ${PORT} -s ${server} burst.input.$$
|
||||
$PERL ../ditch.pl -p ${PORT} -s ${server} -b ${EXTRAPORT8} burst.input.$$
|
||||
rm -f burst.input.$$
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2500,7 +2500,7 @@ burst() {
|
|||
num=$((num - 1))
|
||||
echo "fetch${num}.example A" >>burst.input.$$
|
||||
done
|
||||
$PERL ../ditch.pl -p ${PORT} -s 10.53.0.3 burst.input.$$
|
||||
$PERL ../ditch.pl -p ${PORT} -s 10.53.0.3 -b ${EXTRAPORT8} burst.input.$$
|
||||
rm -f burst.input.$$
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue