From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 49F751FF17C for ; Wed, 9 Jul 2025 21:45:32 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4334414A78; Wed, 9 Jul 2025 21:46:05 +0200 (CEST) From: Stefan Hanreich To: pve-devel@lists.proxmox.com Date: Wed, 9 Jul 2025 21:45:20 +0200 Message-Id: <20250709194526.560709-2-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250709194526.560709-1-s.hanreich@proxmox.com> References: <20250709194526.560709-1-s.hanreich@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.222 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 KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RDNS_NONE 0.793 Delivered to internal network by a host with no rDNS 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [network.pm] Subject: [pve-devel] [PATCH pve-common 1/2] network: add ip link and altname helpers 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: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" Those helpers will be used by several other packages to implement the altname support. Those helpers will also be used by the new pveeth tool which can be used for pinning interface names. Signed-off-by: Stefan Hanreich --- src/PVE/Network.pm | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/PVE/Network.pm b/src/PVE/Network.pm index d084b36..ce87b93 100644 --- a/src/PVE/Network.pm +++ b/src/PVE/Network.pm @@ -973,4 +973,49 @@ sub is_ovs_bridge { die "failed to query OVS to determine type of '$bridge': $res\n"; } +sub ip_link_details { + my $link_json = ''; + + PVE::Tools::run_command( + ['ip', '-details', '-json', 'link', 'show'], + outfunc => sub { + $link_json .= shift; + } + ); + + my $links = JSON::decode_json($link_json); + my %ip_links = map { $_->{ifname} => $_ } $links->@*; + + return \%ip_links; +} + +sub ip_link_is_physical { + my ($ip_link) = @_; + + # ether alone isn't enough, as virtual interfaces can also have link_type + # ether + return $ip_link->{link_type} eq 'ether' + && (!defined($ip_link->{linkinfo}) || !defined($ip_link->{linkinfo}->{info_kind})); +} + +sub altname_mapping { + my ($ip_links) = @_; + + $ip_links = ip_link_details() if !defined($ip_links); + + my $altnames = {}; + + foreach my $iface_name (keys $ip_links->%*) { + my $iface = $ip_links->{$iface_name}; + + next if !$iface->{altnames}; + + foreach my $altname ($iface->{altnames}->@*) { + $altnames->{$altname} = $iface_name; + } + } + + return $altnames; +} + 1; -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel