On 19.03.2018 19:07, Laine Stump wrote: > On 03/19/2018 11:46 AM, Dennis Jacobfeuerborn wrote: >> Hi, >> I'm trying to get some basic data from running guests on a libvirt HV >> but one thing I'm missing is the name of the network interfaces of the >> guests. I can get the MAC address from the XML but there seems to be no >> function to actually get the name of the interface. >> >> The only function that comes close is this one: >> https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainInterfaceAddresses >> >> This function requires a parameter that I don't really have enough >> information about. > > Which parameter is that? flags? That seems fairly thoroughly explained > in the documentation you pointed at.
I'm actually talking about the "source" parameter. >> What is the best way to enumerate a guests interfaces including the name? > > Assuming you mean the name of the interface *as it appears to the > guest*... Since the host can't directly know the names of devices on the > guest, the only way you can learn this is with cooperation from the OS > running on the guest. One way of getting that cooperation is to make > sure the guest is running the qemu guest agent (and that libvirt's > domain config has the proper serial channel configured), then > virDomainInterfaceAddresses() with the > VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT flag will return entries that > contain the interface name as it appears to the guest (the other modes > of virDomainInterfaceAddresses will show the names of the tap devices on > the *host*, not of the interfaces in the guest). > > You can check if your guests are running the qemu guest agent (and try > out the virDomainInterfaceAddresses() API at the same time) with this > shell command (run as root on the host): > > virsh domifaddr $guestname --source agent > > Here is info in the libvirt wiki about installing / configuring the qemu > guest agent: > > https://wiki.libvirt.org/page/Qemu_guest_agent > > (I just checked on a Fedora 27 guest that I previously defined with > virt-manager to use spice for video, I found that virt-manager had > automatically added the necessary serial channel device > ("org.qemu.guest_agent.0"), and that the Linux kernel in the guest > automatically noticed that and setup a guest agent in the guest. It may > (will) take more work to get the guest agent working for other guest > OSes, e.g. Windows.) > Assuming that the guest agent is running is not really an option as I don't really have control over how the guests are installed. What I'm really interested in is a way to uniquely identify a network interface. Let's say I want gather statistics for an interface using virDomainInterfaceStats() for a guest with multiple interfaces how do I ensure that I always get the proper stats for the individual interfaces? If there was an ID for each interface that would be easy but that doesn't seem to exist and now that I realize that the name apparently is created on startup of the guest that name might not be a stable identifier either. I guess I can (ab)use the MAC address but is this really guaranteed to exist for each Interface? What about SDN-like setups that don't use Layer-2 networking at all and set the MAC to something like "00:00:00:00:00:00"? Regards, Dennis _______________________________________________ libvirt-users mailing list libvirt-users@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-users