diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 6784ece..7e1c783 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -748,9 +748,12 @@ static char ** libxl_build_device_model_args(struct libxl_ctx *ctx, } for (i = 0; i < num_vifs; i++) { if (vifs[i].nictype == NICTYPE_IOEMU) { + char *smac = libxl_sprintf(ctx, "%02x:%02x:%02x:%02x:%02x:%02x", + vifs[i].mac[0], vifs[i].mac[1], vifs[i].mac[2], + vifs[i].mac[3], vifs[i].mac[4], vifs[i].mac[5]); flexarray_set(dm_args, num++, "-net"); flexarray_set(dm_args, num++, libxl_sprintf(ctx, "nic,vlan=%d,macaddr=%s,model=%s", - vifs[i].devid, vifs[i].smac, vifs[i].model)); + vifs[i].devid, smac, vifs[i].model)); flexarray_set(dm_args, num++, "-net"); flexarray_set(dm_args, num++, libxl_sprintf(ctx, "tap,vlan=%d,ifname=%s,bridge=%s", vifs[i].devid, vifs[i].ifname, vifs[i].bridge)); @@ -2303,7 +2306,6 @@ void init_nic_info(libxl_device_nic *nic_info, int devnum) nic_info->mac[3] = 1 + (int) (0x7f * (rand() / (RAND_MAX + 1.0))); nic_info->mac[4] = 1 + (int) (0xff * (rand() / (RAND_MAX + 1.0))); nic_info->mac[5] = 1 + (int) (0xff * (rand() / (RAND_MAX + 1.0))); - asprintf(&(nic_info->smac), "%02x:%02x:%02x:%02x:%02x:%02x", nic_info->mac[0], nic_info->mac[1], nic_info->mac[2], nic_info->mac[3], nic_info->mac[4], nic_info->mac[5]); nic_info->ifname = NULL; nic_info->bridge = "xenbr0"; nic_info->script = "/etc/xen/scripts/vif-bridge"; diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index cc6ecee..057ec3a 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -199,7 +199,6 @@ typedef struct { int mtu; char *model; uint8_t mac[6]; - char *smac; struct in_addr ip; char *bridge; char *ifname; diff --git a/tools/libxl/xl.c b/tools/libxl/xl.c index fa92ae3..3439eb9 100644 --- a/tools/libxl/xl.c +++ b/tools/libxl/xl.c @@ -122,7 +122,6 @@ static void printf_info(libxl_domain_create_info *c_info, printf("mtu %d\n", vifs[i].mtu); printf("model %s\n", vifs[i].model); printf("mac %02x:%02x:%02x:%02x:%02x:%02x\n", vifs[i].mac[0], vifs[i].mac[1], vifs[i].mac[2], vifs[i].mac[3], vifs[i].mac[4], vifs[i].mac[5]); - printf("smac %s\n", vifs[i].mac); } for (i = 0; i < num_pcidevs; i++) { @@ -399,7 +398,6 @@ static void parse_config_file(const char *filename, (*vifs)[*num_vifs].model = strdup(p2 + 1); } else if (!strcmp(p, "mac")) { char *p3 = p2 + 1; - (*vifs)[*num_vifs].smac = strdup(p3); *(p3 + 2) = '\0'; (*vifs)[*num_vifs].mac[0] = strtol(p3, NULL, 16); p3 = p3 + 3; @@ -732,7 +730,6 @@ start: close(logfile); for (i = 0; i < num_vifs; i++) { - free(vifs[i].smac); free(vifs[i].ifname); } free(disks);