mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-07-31 18:19:40 +00:00
fix(ddns): recognize a routed local nameserver address
The DNS-managed-networks check used my_ip_facing($net->{net}), which only
returns local addresses on the interface directly facing that network. A
nameserver that is a local address reachable via a different (routed)
interface was therefore treated as external, and the network was wrongly
dropped from ddns management.
Use thishostisnot(), which recognizes any local address regardless of the
interface, and keep the existing <xcatmaster> and site-nameserver special
cases.
Recovered from the unmerged lenovobuild branch (original 3c343f83), adapted
to preserve those special cases: lab validation showed the original replaced
them wholesale, which would exclude any network whose nameserver is the
literal <xcatmaster> token (thishostisnot('<xcatmaster>') is true).
Co-authored-by: Jarrod Johnson <10814490+jjohnson42@users.noreply.github.com>
This commit is contained in:
@@ -443,18 +443,17 @@ sub process_request {
|
||||
if ($net and $net->{nameservers})
|
||||
{
|
||||
my $valid = 0;
|
||||
my @myips;
|
||||
my @myipsd = xCAT::NetworkUtils->my_ip_facing($net->{net});
|
||||
my $myipsd_l = @myipsd;
|
||||
unless ($myipsd[0]) { @myips = @myipsd[ 1 .. ($myipsd_l - 1) ]; }
|
||||
foreach (split /,/, $net->{nameservers})
|
||||
{
|
||||
chomp $_;
|
||||
foreach my $myip (@myips) {
|
||||
if (($_ eq $myip) || ($_ eq '<xcatmaster>') || ($_ eq $sitens))
|
||||
{
|
||||
$valid += 1;
|
||||
}
|
||||
# my_ip_facing() only returns addresses on the interface directly
|
||||
# facing this network, so a nameserver that is a local address on
|
||||
# another (routed) interface was wrongly treated as external.
|
||||
# thishostisnot() recognizes any local address; keep the existing
|
||||
# <xcatmaster> and site-nameserver special cases.
|
||||
if (!xCAT::NetworkUtils->thishostisnot($_) || $_ eq '<xcatmaster>' || $_ eq $sitens)
|
||||
{
|
||||
$valid += 1;
|
||||
}
|
||||
}
|
||||
unless ($valid > 0)
|
||||
|
||||
Reference in New Issue
Block a user