diff options
Diffstat (limited to 'tools/libxl/libxl.c')
-rw-r--r-- | tools/libxl/libxl.c | 13 |
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"); |