From: Johannes Cornelis Draaijer via pve-devel <pve-devel@lists.proxmox.com>
To: pve-devel@lists.proxmox.com
Cc: Johannes Cornelis Draaijer <jcdra1@gmail.com>
Subject: [pve-devel] [PATCH pve-container 2/2] fix #5339: api: lxc: ip: add 'all' option so that all addresses can be returned.
Date: Thu, 18 Apr 2024 22:49:33 +0200 [thread overview]
Message-ID: <mailman.710.1713473387.450.pve-devel@lists.proxmox.com> (raw)
In-Reply-To: <20240418204933.58521-1-jcdra1@gmail.com>
[-- Attachment #1: Type: message/rfc822, Size: 7405 bytes --]
From: Johannes Cornelis Draaijer <jcdra1@gmail.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH pve-container 2/2] fix #5339: api: lxc: ip: add 'all' option so that all addresses can be returned.
Date: Thu, 18 Apr 2024 22:49:33 +0200
Message-ID: <20240418204933.58521-3-jcdra1@gmail.com>
Signed-off-by: Johannes Cornelis Draaijer <jcdra1@gmail.com>
---
src/PVE/API2/LXC.pm | 16 +++++++++++++---
src/PVE/LXC.pm | 9 +++++++--
2 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
index 89ba64c..3561317 100644
--- a/src/PVE/API2/LXC.pm
+++ b/src/PVE/API2/LXC.pm
@@ -2533,6 +2533,12 @@ __PACKAGE__->register_method({
properties => {
node => get_standard_option('pve-node'),
vmid => get_standard_option('pve-vmid', { completion => \&PVE::LXC::complete_ctid }),
+ all => {
+ type => 'boolean',
+ default => 0,
+ optional => 1,
+ description => 'Return all adresses of each interface instead of only one',
+ }
},
},
returns => {
@@ -2552,12 +2558,14 @@ __PACKAGE__->register_method({
},
inet => {
type => 'string',
- description => 'The IPv4 address of the interface',
+ format => 'CIDRv4-list',
+ description => 'A list of IPv4 CIDRs. This will only contain a single address if \'all\' is not set to true',
optional => 1,
},
inet6 => {
type => 'string',
- description => 'The IPv6 address of the interface',
+ format => 'CIDRv6-list',
+ description => 'A list of IPv6 CIDRs. This will only contain a single address if \'all\' is not set to true',
optional => 1,
},
}
@@ -2565,8 +2573,10 @@ __PACKAGE__->register_method({
},
code => sub {
my ($param) = @_;
+ my $vmid = extract_param($param, 'vmid');
+ my $alladdrs = extract_param($param, 'all') // 0;
- return PVE::LXC::get_interfaces($param->{vmid});
+ return PVE::LXC::get_interfaces($vmid, $alladdrs);
}});
__PACKAGE__->register_method({
diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
index 7883cfb..6d00141 100644
--- a/src/PVE/LXC.pm
+++ b/src/PVE/LXC.pm
@@ -1088,7 +1088,7 @@ sub hotplug_net {
}
sub get_interfaces {
- my ($vmid) = @_;
+ my ($vmid, $alladdrs) = @_;
my $pid = eval { find_lxc_pid($vmid); };
return if $@;
@@ -1104,7 +1104,12 @@ sub get_interfaces {
for my $interface ($config->@*) {
my $obj = { name => $interface->{ifname} };
for my $ip ($interface->{addr_info}->@*) {
- $obj->{$ip->{family}} = $ip->{local} . "/" . $ip->{prefixlen};
+ my $cidr = $ip->{local} . "/" . $ip->{prefixlen};
+ if ($alladdrs eq 1) {
+ push(@{$obj->{$ip->{family}}}, $cidr);
+ } else {
+ $obj->{$ip->{family}} = $cidr;
+ }
}
$obj->{hwaddr} = $interface->{address};
push @$res, $obj
--
2.34.1
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next prev parent reply other threads:[~2024-04-18 20:49 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20240418204933.58521-1-jcdra1@gmail.com>
2024-04-18 20:49 ` [pve-devel] [PATCH pve-container 1/2] api: lxc: add 'interfaces' endpoint to the index Johannes Cornelis Draaijer via pve-devel
2024-07-02 14:22 ` [pve-devel] applied: " Fabian Grünbichler
2024-04-18 20:49 ` Johannes Cornelis Draaijer via pve-devel [this message]
2024-07-02 14:29 ` [pve-devel] [PATCH pve-container 2/2] fix #5339: api: lxc: ip: add 'all' option so that all addresses can be returned Fabian Grünbichler
2024-07-05 7:45 ` Wolfgang Bumiller
2024-07-05 7:49 ` Fabian Grünbichler
2025-01-07 14:28 ` Gabriel Goller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=mailman.710.1713473387.450.pve-devel@lists.proxmox.com \
--to=pve-devel@lists.proxmox.com \
--cc=jcdra1@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox