Re: [libvirt-php] libvirt_domain_interface_addresses() only returns only on IP address for NICs with multiple IPs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/16/20 9:08 AM, Fernando Casas Schössow wrote:
Forgot to add the output of the equivalent virsh command for the same VM:

Name MAC address Protocol Address
-------------------------------------------------------------------------------
lo 00:00:00:00:00:00 ipv4 127.0.0.1/8
lo 00:00:00:00:00:00 ipv6 ::1/128
eth0 52:54:00:12:b9:22 ipv4 192.168.7.31/26
eth0 52:54:00:12:b9:22 ipv6 fe80::5054:ff:fe12:b922/64
eth1 52:54:00:8e:b0:35 ipv4 192.168.1.34/24
eth1 52:54:00:8e:b0:35 ipv6 fe80::5054:ff:fe8e:b035/64


Thanks,

Fernando

On jue, abr 16, 2020 at 12:58 AM, Fernando Casas Schössow <casasfernando@xxxxxxxxxxx> wrote:
Hi,

While using the function libvirt_domain_interface_addresses() with qemu guest agent as the source, for interfaces with more than one IP address, the function will only return one IP.

Example code:

$netdetails = libvirt_domain_interface_addresses($vmres, 2);
foreach ($netdetails as $nic) {
    print_r($nic);
}


Example output:

Array
(
   [name] => eth0
   [hwaddr] => 52:54:00:12:b9:22
   [naddrs] => 2
   [addrs] => Array
       (
           [addr] => fe80::5054:ff:fe12:b922
           [prefix] => 64
           [type] => 1
       )

Ah, this is another clear bug in PHP bindings. The problem is we use associative array for 'addrs'. As you can see, 'naddrs' is 2, so the API returned 2 IP addresses (IPv4 and IPv6 ones). So we've constructed an associative array for IPv4 and set $nic['addrs'] to it. Then we did the same for IPv6. This is obviously wrong. Let me see if I can fix it.

Michal





[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux