diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2011-10-06 18:50:22 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2011-10-06 18:50:22 +0100 |
commit | 2d5b0e8b80e01af1e9f0610adf3386babcf9b884 (patch) | |
tree | 952341f292a5d971eeb0ead4ef4b950aac766f1d /tools/libxl/libxl_utils.c | |
parent | f43458f6e2f777228fc78cb38280f670fe603b9a (diff) | |
download | xen-2d5b0e8b80e01af1e9f0610adf3386babcf9b884.tar.gz xen-2d5b0e8b80e01af1e9f0610adf3386babcf9b884.tar.bz2 xen-2d5b0e8b80e01af1e9f0610adf3386babcf9b884.zip |
libxl: fix libxl_mac_to_device_nic
I think I broke this back in 22041:4c9ef5ec9146, using i as both the inner and
outer loop iterator.
I've added libxl__compare_macs which helps keep things clean.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools/libxl/libxl_utils.c')
-rw-r--r-- | tools/libxl/libxl_utils.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c index 15578b1c4e..9af254d525 100644 --- a/tools/libxl/libxl_utils.c +++ b/tools/libxl/libxl_utils.c @@ -453,9 +453,7 @@ int libxl_mac_to_device_nic(libxl_ctx *ctx, uint32_t domid, { libxl_nicinfo *nics; unsigned int nb, rc, i; - int found; libxl_mac mac_n; - uint8_t *a, *b; rc = libxl__parse_mac(mac, mac_n); if (rc) @@ -466,17 +464,15 @@ int libxl_mac_to_device_nic(libxl_ctx *ctx, uint32_t domid, return ERROR_FAIL; memset(nic, 0, sizeof (libxl_device_nic)); - found = 0; + + rc = ERROR_INVAL; 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)) { + if (!libxl__compare_macs(&mac_n, &nics[i].mac)) { nic->backend_domid = nics[i].backend_id; nic->devid = nics[i].devid; memcpy(nic->mac, nics[i].mac, sizeof (nic->mac)); nic->script = strdup(nics[i].script); - found = 1; + rc = 0; break; } } @@ -484,7 +480,7 @@ int libxl_mac_to_device_nic(libxl_ctx *ctx, uint32_t domid, for (i=0; i<nb; i++) libxl_nicinfo_destroy(&nics[i]); free(nics); - return found; + return rc; } int libxl_devid_to_device_nic(libxl_ctx *ctx, uint32_t domid, |