Files
bind9/bin/tests/system/testsock.pl
Tony Finch de747f9b6b The system tests are using another IP address
Reduce the number of places that know about the number of IP addresses
required by the system tests, by changing `testsock.pl` to read the
`max` from `ifconfig.sh.in`. This should make the test runner fail
early with a clear message when the interfaces have been set up by an
obsolete script.

Add comments to cross-reference `ifconfig.sh.in`, `testsock.pl`, and
`org.isc.bind.system` to make it easier to remember what needs
updating when an IP address is added.

(cherry picked from commit 258a896a0c)
2022-09-14 11:49:43 +01:00

53 lines
1.2 KiB
Perl
Executable File

#!/usr/bin/perl
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
# Test whether the interfaces on 10.53.0.* are up.
require 5.001;
use Socket;
use Getopt::Long;
my $port = 0;
my $id = 0;
GetOptions("p=i" => \$port,
"i=i" => \$id);
my @ids;
if ($id != 0) {
@ids = ($id);
} else {
my $fn = "ifconfig.sh";
open FH, "< $fn" or die "open < $fn: $!\n";
while (<FH>) {
@ids = (1..$1)
if /^max=(\d+)\s*$/;
}
close FH;
die "could not find max IP address in $fn\n"
unless @ids > 1;
}
foreach $id (@ids) {
my $addr = pack("C4", 10, 53, 0, $id);
my $sa = pack_sockaddr_in($port, $addr);
socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname("tcp"))
or die "$0: socket: $!\n";
setsockopt(SOCK, SOL_SOCKET, SO_REUSEADDR, pack("l", 1));
bind(SOCK, $sa)
or die sprintf("$0: bind(%s, %d): $!\n",
inet_ntoa($addr), $port);
close(SOCK);
}