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)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 9DE999EBB5 for ; Wed, 7 Jun 2023 12:18:00 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 82B1A3F82E for ; Wed, 7 Jun 2023 12:18:00 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Wed, 7 Jun 2023 12:17:59 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 2E2AE41E44 for ; Wed, 7 Jun 2023 12:17:59 +0200 (CEST) From: Leo Nunner To: pve-devel@lists.proxmox.com Date: Wed, 7 Jun 2023 12:17:48 +0200 Message-Id: <20230607101751.87616-2-l.nunner@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230607101751.87616-1-l.nunner@proxmox.com> References: <20230607101751.87616-1-l.nunner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.108 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH firewall 1/3] fix #4556: introduce 'dc' and 'vm' prefix for IPSets 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: Wed, 07 Jun 2023 10:18:00 -0000 to differentiate whether they should be taken from the datacenter config or from the local config. The parser now accepts IPSets in the following format: +dc/ipset Looks for the IPSet on the Datacenter level. +vm/ipset Looks for the IPSet on the VM level. +ipset Uses the previous method of scoping, where it first looks at the VM level and then at the Datacenter level. Signed-off-by: Leo Nunner --- src/PVE/Firewall.pm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/PVE/Firewall.pm b/src/PVE/Firewall.pm index 8e40872..ff18de0 100644 --- a/src/PVE/Firewall.pm +++ b/src/PVE/Firewall.pm @@ -1683,9 +1683,9 @@ sub verify_rule { if (my $value = $rule->{$name}) { if ($value =~ m/^\+/) { - if ($value =~ m/^\+(${ipset_name_pattern})$/) { - &$add_error($name, "no such ipset '$1'") - if !($cluster_conf->{ipset}->{$1} || ($fw_conf && $fw_conf->{ipset}->{$1})); + if ($value =~ m@^\+(vm/|dc/)?(${ipset_name_pattern})$@) { + &$add_error($name, "no such ipset '$2'") + if !($cluster_conf->{ipset}->{$2} || ($fw_conf && $fw_conf->{ipset}->{$2})); } else { &$add_error($name, "invalid ipset name '$value'"); @@ -2095,12 +2095,13 @@ sub ipt_gen_src_or_dst_match { my $match; if ($adr =~ m/^\+/) { - if ($adr =~ m/^\+(${ipset_name_pattern})$/) { - my $name = $1; + if ($adr =~ m@^\+(vm/|dc/)?(${ipset_name_pattern})$@) { + my $scope = $1; + my $name = $2; my $ipset_chain; - if ($fw_conf && $fw_conf->{ipset}->{$name}) { + if ($scope ne 'dc/' && $fw_conf && $fw_conf->{ipset}->{$name}) { $ipset_chain = compute_ipset_chain_name($fw_conf->{vmid}, $name, $ipversion); - } elsif ($cluster_conf && $cluster_conf->{ipset}->{$name}) { + } elsif ($scope ne 'vm/' && $cluster_conf && $cluster_conf->{ipset}->{$name}) { $ipset_chain = compute_ipset_chain_name(0, $name, $ipversion); } else { die "no such ipset '$name'\n"; -- 2.30.2