aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/libxl.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/libxl/libxl.c')
-rw-r--r--tools/libxl/libxl.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index 09cf3d948c..1f7a529dbc 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -31,6 +31,8 @@
#include <inttypes.h>
#include <assert.h>
+#include <arpa/inet.h>
+
#include "libxl.h"
#include "libxl_utils.h"
#include "libxl_internal.h"
@@ -1173,6 +1175,7 @@ int libxl_device_nic_init(libxl_device_nic *nic_info, int devnum)
nic_info->mac[5] = r[2];
nic_info->ifname = NULL;
nic_info->bridge = strdup("xenbr0");
+ nic_info->ip.s_addr = 0UL;
if ( asprintf(&nic_info->script, "%s/vif-bridge",
libxl_xen_script_dir_path()) < 0 )
return ERROR_FAIL;
@@ -1232,6 +1235,16 @@ int libxl_device_nic_add(libxl_ctx *ctx, uint32_t domid, libxl_device_nic *nic)
flexarray_append(back, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
nic->mac[0], nic->mac[1], nic->mac[2],
nic->mac[3], nic->mac[4], nic->mac[5]));
+ if (nic->ip.s_addr != 0UL) {
+ char dst[INET_ADDRSTRLEN];
+ const char *addr = inet_ntop(AF_INET, &nic->ip.s_addr, &dst[0], INET_ADDRSTRLEN);
+ if (addr) {
+ flexarray_append(back, "ip");
+ flexarray_append(back, libxl__strdup(&gc, addr));
+ } else {
+ LIBXL__LOG(ctx, LIBXL__LOG_WARNING, "Unable to format IP address");
+ }
+ }
flexarray_append(back, "bridge");
flexarray_append(back, libxl__strdup(&gc, nic->bridge));
flexarray_append(back, "handle");