From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id C6D7AB84F9 for ; Mon, 4 Dec 2023 18:20:13 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id AD80F11BA3 for ; Mon, 4 Dec 2023 18:19:43 +0100 (CET) Received: from cyan.elm.relay.mailchannels.net (cyan.elm.relay.mailchannels.net [23.83.212.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Mon, 4 Dec 2023 18:19:41 +0100 (CET) X-Sender-Id: dreamhost|x-authsender|matthieu@matthieu-dev.xyz Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id D99904C1DB1; Mon, 4 Dec 2023 16:41:05 +0000 (UTC) Received: from pdx1-sub0-mail-a247.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 9049E4C20DA; Mon, 4 Dec 2023 16:41:05 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1701708065; a=rsa-sha256; cv=none; b=tQ+IeO8/zCaMVSucg7CoMp7jucgwtaqlONf28JFbrprzjcapqyeIOdf++OzbcpkzIwHu1P lhCjoQU80usUukIA2IYBdMbb0RLu3QRlicsNzJ36oD2G1+5DD8zXwvf9QXN3mdL7aTFs8s 5f/29no8ETtykz1LPRLrpVVJ+Us+kH6iB18AsaJo7BJwe4LcF2j3Ymq12MbqR37nrwcwY3 mPGb/qhlvGyHDEtzpIloYXid78ZmKMGKZm3bleCdrNhVOGTmZG/8OifeQV0g4l/7j5Oeai A1GjGBJpbgNE4EVjMAacJIrb0KvQtmoCjh6pkQebw5AFqnRaes6JiCkAWutaLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1701708065; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:dkim-signature; bh=MxKI65AcM/Vm555bNd7Ds8k12ImnEwoBbRZJzL6UrPc=; b=knn3MW9hcZP4RFM8NHrEo/PDQ2e9VPI2Mt0X1NuVkWwUsa90eeRYTT7kYlvdi2gGJOheni PcJyyo1BjOVwsb+MvmEGdSeuwd3WNJsyKsK9PvNJQsVLX4hhvrRgm0Amb+vJKDHWV0W73A aqumRWVmyQalmoKWKC3S9uPV9U9AyKrJnK16Aw8/7UYfSphe0qNkoXsO0Q4QNIFuUIzmdn 8Qp1klooFMVaexgRFl5Ghx66LFsMf0RtNElosZTqpepwhU/kJt31HtPDcuF/3dMFK82e9b 7UbtaQNr11m8q2FGpZqDPgFR3iVPVuB4Jot9FufTseIiLVl3aTy5H5Uxs1h3HQ== ARC-Authentication-Results: i=1; rspamd-d88d8bd54-wtvvh; auth=pass smtp.auth=dreamhost smtp.mailfrom=matthieu@matthieu-dev.xyz X-Sender-Id: dreamhost|x-authsender|matthieu@matthieu-dev.xyz X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|matthieu@matthieu-dev.xyz X-MailChannels-Auth-Id: dreamhost X-Slimy-Illustrious: 0998f2956e472381_1701708065732_2572323330 X-MC-Loop-Signature: 1701708065732:2239365790 X-MC-Ingress-Time: 1701708065732 Received: from pdx1-sub0-mail-a247.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.104.11.72 (trex/6.9.2); Mon, 04 Dec 2023 16:41:05 +0000 Received: from pve.matthieunet (unknown [41.213.187.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: matthieu@matthieu-dev.xyz) by pdx1-sub0-mail-a247.dreamhost.com (Postfix) with ESMTPSA id 4SkTv36hwRz5y; Mon, 4 Dec 2023 08:41:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=matthieu-dev.xyz; s=dreamhost; t=1701708065; bh=MxKI65AcM/Vm555bNd7Ds8k12ImnEwoBbRZJzL6UrPc=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=AUJpSOpscfJdykNQvZnydul5EczosYqB/mTC2RCXT8lGsAi2kX9BRFPE6OFMznZZI 6lnD37YlUHFd57I8edMl3PijqVh/lCXr18ucivEObo7GlFQB/1JcAAf4nLQS9GVtMF elHlDY/ohux2I0CghsEhEa7bvCaS4lYu706ayfVuxYiEYMC+nxbMvZGN10CNfAnWUb +KAsQdqQwwYLuElpKqlwEl4Gg/0bX46PB99g2LCbjNpu/Wsd/dWPf+13i/ZntmDt5i kUI/lyVDlMmnNzg1uvS7B5gJUBWUjNShdnX2W1iBRj97KJ1SW4jcgxRRRbgu0v4oS6 eS9RzUJQdsi4g== From: Matthieu Pignolet To: pve-devel@lists.proxmox.com Cc: Matthieu Pignolet Date: Mon, 4 Dec 2023 20:40:54 +0400 Message-Id: <20231204164054.861599-1-matthieu@matthieu-dev.xyz> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 ARC_SIGNED 0.001 Message has a ARC signature ARC_VALID -0.1 Message has a valid ARC signature BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain DMARC_MISSING 0.1 Missing DMARC policy KAM_INFOUSMEBIZ 0.75 Prevalent use of .info|.us|.me|.me.uk|.biz|xyz|id|rocks|life domains in spam/malware RCVD_IN_DNSWL_NONE -0.0001 Sender listed at https://www.dnswl.org/, no trust RCVD_IN_MSPIKE_H4 -0.01 Very Good reputation (+4) RCVD_IN_MSPIKE_WL -0.01 Mailspike good senders SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record T_SCC_BODY_TEXT_LINE -0.01 - X-Mailman-Approved-At: Tue, 05 Dec 2023 10:42:27 +0100 Subject: [pve-devel] [PATCH pve-network] dns: only update rrsets which matches the rrset type X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Dec 2023 17:20:13 -0000 PowerDNS does not allow multiple dns types in the same rrset, this patch enables the use of multiple rrset for each types of records. This fixes an issue when using dual stack ips (Both IPv4 and IPv6) with the same dns suffix. --- src/PVE/Network/SDN/Dns/PowerdnsPlugin.pm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/PVE/Network/SDN/Dns/PowerdnsPlugin.pm b/src/PVE/Network/SDN/Dns/PowerdnsPlugin.pm index 096d131..c7f79c1 100644 --- a/src/PVE/Network/SDN/Dns/PowerdnsPlugin.pm +++ b/src/PVE/Network/SDN/Dns/PowerdnsPlugin.pm @@ -53,7 +53,7 @@ sub add_a_record { my $fqdn = $hostname.".".$zone."."; my $zonecontent = get_zone_content($plugin_config, $zone); - my $existing_rrset = get_zone_rrset($zonecontent, $fqdn); + my $existing_rrset = get_zone_rrset($zonecontent, $fqdn, $type); my $final_records = []; my $foundrecord = undef; @@ -62,13 +62,14 @@ sub add_a_record { $foundrecord = 1; next; } + push @$final_records, $record; } return if $foundrecord; my $record = { content => $ip, disabled => JSON::false, - name => $fqdn, + name => $fqdn, type => $type, priority => 0 }; @@ -139,7 +140,7 @@ sub del_a_record { my $type = Net::IP::ip_is_ipv6($ip) ? "AAAA" : "A"; my $zonecontent = get_zone_content($plugin_config, $zone); - my $existing_rrset = get_zone_rrset($zonecontent, $fqdn); + my $existing_rrset = get_zone_rrset($zonecontent, $fqdn, $type); my $final_records = []; my $foundrecord = undef; @@ -313,13 +314,13 @@ sub get_zone_content { } sub get_zone_rrset { - my ($zonecontent, $name) = @_; + my ($zonecontent, $name, $type) = @_; my $rrsetresult = undef; foreach my $rrset (@{$zonecontent->{rrsets}}) { - next if $rrset->{name} ne $name; + next if ($rrset->{name} ne $name) or ($rrset->{type} ne $type); $rrsetresult = $rrset; - last; + last; } return $rrsetresult; } -- 2.39.2