diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2010-08-19 15:32:28 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2010-08-19 15:32:28 +0100 |
commit | f37b9745f255970e286d69b9f3c3fb1f435ca99c (patch) | |
tree | a2aca50ee51d3881f7aa807bf132f98bd4155657 /tools/libxl/libxl_utils.c | |
parent | 59b473787670273e77a1df62fa106b53a133826a (diff) | |
download | xen-f37b9745f255970e286d69b9f3c3fb1f435ca99c.tar.gz xen-f37b9745f255970e286d69b9f3c3fb1f435ca99c.tar.bz2 xen-f37b9745f255970e286d69b9f3c3fb1f435ca99c.zip |
libxl/xl: Use libxl_device_nic_destroy and libxl_nicinfo_destroy
Replaces libxl_free_nics_list
[PATCH 14 of 16 of
libxl: autogenerate type definitions and destructor functions]
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools/libxl/libxl_utils.c')
-rw-r--r-- | tools/libxl/libxl_utils.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c index bf318695f8..225c53fb85 100644 --- a/tools/libxl/libxl_utils.c +++ b/tools/libxl/libxl_utils.c @@ -405,42 +405,44 @@ int libxl_pipe(libxl_ctx *ctx, int pipes[2]) int libxl_mac_to_device_nic(libxl_ctx *ctx, uint32_t domid, const char *mac, libxl_device_nic *nic) { - libxl_nicinfo *nics, *list; - unsigned int nb, i, j; + libxl_nicinfo *nics; + unsigned int nb, i; + int found; uint8_t mac_n[6]; uint8_t *a, *b; const char *tok; char *endptr; - list = nics = libxl_list_nics(ctx, domid, &nb); - if (!nics) { + nics = libxl_list_nics(ctx, domid, &nb); + if (!nics) return ERROR_FAIL; - } for (i = 0, tok = mac; *tok && (i < 6); ++i, tok += 3) { mac_n[i] = strtol(tok, &endptr, 16); - if (endptr != (tok + 2)) { + if (endptr != (tok + 2)) return ERROR_INVAL; - } } memset(nic, 0, sizeof (libxl_device_nic)); - for (j = 0; j < nb; ++j, ++nics) { - for (i = 0, a = nics->mac, b = mac_n; + found = 0; + for (i = 0; i < nb; ++i) { + for (i = 0, a = nics[i].mac, b = mac_n; (b < mac_n + 6) && (*a == *b); ++a, ++b) ; if ((b >= mac_n + 6) && (*a == *b)) { - nic->backend_domid = nics->backend_id; - nic->domid = nics->frontend_id; - nic->devid = nics->devid; - memcpy(nic->mac, nics->mac, sizeof (nic->mac)); - nic->script = nics->script; - libxl_free_nics_list(list, nb); - return 0; + nic->backend_domid = nics[i].backend_id; + nic->domid = nics[i].frontend_id; + nic->devid = nics[i].devid; + memcpy(nic->mac, nics[i].mac, sizeof (nic->mac)); + nic->script = strdup(nics[i].script); + found = 1; + break; } } - libxl_free_nics_list(list, nb); - return 0; + for (i=0; i<nb; i++) + libxl_nicinfo_destroy(&nics[i]); + free(nics); + return found; } int libxl_devid_to_device_nic(libxl_ctx *ctx, uint32_t domid, @@ -472,8 +474,7 @@ int libxl_devid_to_device_nic(libxl_ctx *ctx, uint32_t domid, ++i, tok = strtok(NULL, ":")) { nic->mac[i] = strtoul(tok, NULL, 16); } - nic->script = libxl_xs_read(&gc, XBT_NULL, - libxl_sprintf(&gc, "%s/script", nic_path_be)); + nic->script = xs_read(ctx->xsh, XBT_NULL, libxl_sprintf(&gc, "%s/script", nic_path_be), NULL); rc = 0; out: libxl_free_all(&gc); |