mirror of
https://github.com/isc-projects/bind9.git
synced 2026-02-24 02:10:30 -05:00
Instead of using the current working directory to find the ifconfig.sh script, look for the ifconfig.sh.in template in the directory where the testsock.pl script is located. This enables the testsock.pl script to be called from any working directory. Using the ifconfig.sh.in template is sufficient, since it contains the necessary information to be extracted: the max= value (which is hard-coded in the template).
55 lines
1.3 KiB
Perl
Executable file
55 lines
1.3 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 Cwd 'abs_path';
|
|
use File::Basename;
|
|
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 $dir = dirname(abs_path($0));
|
|
my $fn = "$dir/ifconfig.sh.in";
|
|
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);
|
|
}
|