[libvirt] RFC: Implement virDomainGetIPAddress()

Michal Novotny minovotn at redhat.com
Fri Jul 15 10:59:35 UTC 2011

On 07/15/2011 12:09 PM, Daniel P. Berrange wrote:
> On Thu, Jul 14, 2011 at 05:14:57PM +0200, Michal Novotny wrote:
>> Hi guys,
>> some time ago I've been investigating the options to get the guest's IP
>> address information without having to connect to guest's VNC window or
>> console. It was for one project I've been working on and I found that
>> the solution lies in the procfs, precisely in the /proc/{PID}/net/arp...
>> The format is as follows:
>> $ cat /proc/{PID}/net/arp
>> IP address       HW type     Flags       HW address            Mask    
>> Device
>>   0x1         0x2         52:54:00:35:76:e6     *       
>> virbr0
>> where the HW address matches the MAC address associated to the guest's
>> NIC. Implementing such an API shouldn't be a big problem however I know
>> that there's some option to run libvirt on Windows machines. It should
>> be just the client so it shouldn't really matter however I'd like to ask
>> you whether it's really not an issue.
>> The function should return a string of the guest's IP address as read
>> from the procfs or return a NULL value if there's no IP address
>> associated with the guest.
>> If the multiple NICs are being used by the guest then the function
>> should return either the IP address matching the MAC address passed to
>> the function or the first IP address if omitted.
>> The prototype should be:
>> char *virDomainGetIPAddress(virDomainPtr domain, char *devmac);
>> For this the internal information about PID of the process spawned
>> should be used (this is already being tracked and stored by libvirt
>> IMHO) to access the /proc/{PID}/net/arp file.
>> This API function would be very useful since it would give libvirt users
>> option to get the information of the guest's IP address without having
>> to connect to guest's VNC window or console.
>> For virsh this could be implemented directly into the dominfo subcommand.
>> What do you think about implementing this ?
> I'm not entirely convinced was want to have this in our APIs, since the
> arp probing is not really a reliable basis for reporting guest IP details.
> In the near future there will be guest agents for QEMU which can report
> this information reliably and I think they're a better bet for any app
> which would want this information.
> Regards,
> Daniel
> --
> |: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
> |: http://libvirt.org              -o-             http://virt-manager.org :|
> |: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
> |: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|
you're right about this. That's the reason I wrote an e-mail about
options  to use nwfilter implementation of pcap or leases-file of DHCP
if available. In fact I'd recommend this priority:

1) ARP table lookup
2) leases file of DHCP server if 1 is not available
3) libpcap if even 2 is not available


Michal Novotny <minovotn at redhat.com>, RHCE, Red Hat
Virtualization | libvirt-php bindings | php-virt-control.org

More information about the libvir-list mailing list