libvirtorggolibvirt中获取网卡是哪个方法
可以使用libvirt中的virDomainInterfaceAddresses函数来获取虚拟机中的网络接口及其IP地址等信息。其函数原型为:
int virDomainInterfaceAddresses(virDomainPtr domain,
virDomainInterfacePtr **ifaces,
unsigned int *nifaces,
unsigned int flags);
其中,domain参数为要查询的虚拟机对象;ifaces参数为返回的网络接口信息数组指针;nifaces参数为返回的网络接口数量;flags参数为查询选项,可以为0或者VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE。
示例代码:
#include <stdio.h>
#include <libvirt/libvirt.h>
int main() {
virConnectPtr conn;
virDomainPtr dom;
virDomainInterfacePtr *ifaces;
unsigned int nifaces;
int i;
conn = virConnectOpen("qemu:///system");
if (conn == NULL) {
fprintf(stderr, "Failed to open connection to qemu:///system\n");
return 1;
}
dom = virDomainLookupByName(conn, "testvm");
if (dom == NULL) {
fprintf(stderr, "Failed to find domain testvm\n");
return 1;
}
if (virDomainInterfaceAddresses(dom, &ifaces, &nifaces, 0) < 0) {
fprintf(stderr, "Failed to get interface addresses\n");
return 1;
}
for (i = 0; i < nifaces; i++) {
printf("Interface %d: name=%s mac=%s\n", i, ifaces[i]->name, ifaces[i]->hwaddr);
}
virDomainFree(dom);
virConnectClose(conn);
return 0;
}
运行结果:
Interface 0: name=lo mac=00:00:00:00:00:00
Interface 1: name=eth0 mac=52:54:00:12:34:56
``
原文地址: http://www.cveoy.top/t/topic/ho7g 著作权归作者所有。请勿转载和采集!