xenstore: Use virMacAddrCompare() for case-insensitive comparison

This commit is contained in:
John Levon 2009-02-05 18:14:00 +00:00
parent b8b4fd4c7d
commit 003f354917
2 changed files with 15 additions and 11 deletions

View File

@ -1,3 +1,8 @@
Thu Feb 5 18:08:39 GMT 2009 John Levon <john.levon@sun.com>
* src/xs_internal.c: Use virMacAddrCompare() for
case-insensitive comparison
Thu Feb 5 17:19:24 GMT 2009 John Levon <john.levon@sun.com> Thu Feb 5 17:19:24 GMT 2009 John Levon <john.levon@sun.com>
* src/xend_internal.c: report error for some xend operations on * src/xend_internal.c: report error for some xend operations on

View File

@ -915,7 +915,7 @@ xenStoreDomainGetOSTypeID(virConnectPtr conn, int id) {
char * char *
xenStoreDomainGetNetworkID(virConnectPtr conn, int id, const char *mac) { xenStoreDomainGetNetworkID(virConnectPtr conn, int id, const char *mac) {
char dir[80], path[128], **list = NULL, *val = NULL; char dir[80], path[128], **list = NULL, *val = NULL;
unsigned int maclen, len, i, num; unsigned int len, i, num;
char *ret = NULL; char *ret = NULL;
xenUnifiedPrivatePtr priv; xenUnifiedPrivatePtr priv;
@ -927,9 +927,6 @@ xenStoreDomainGetNetworkID(virConnectPtr conn, int id, const char *mac) {
return (NULL); return (NULL);
if (mac == NULL) if (mac == NULL)
return (NULL); return (NULL);
maclen = strlen(mac);
if (maclen <= 0)
return (NULL);
snprintf(dir, sizeof(dir), "/local/domain/0/backend/vif/%d", id); snprintf(dir, sizeof(dir), "/local/domain/0/backend/vif/%d", id);
list = xs_directory(priv->xshandle, 0, dir, &num); list = xs_directory(priv->xshandle, 0, dir, &num);
@ -937,18 +934,20 @@ xenStoreDomainGetNetworkID(virConnectPtr conn, int id, const char *mac) {
return(NULL); return(NULL);
for (i = 0; i < num; i++) { for (i = 0; i < num; i++) {
snprintf(path, sizeof(path), "%s/%s/%s", dir, list[i], "mac"); snprintf(path, sizeof(path), "%s/%s/%s", dir, list[i], "mac");
val = xs_read(priv->xshandle, 0, path, &len); if ((val = xs_read(priv->xshandle, 0, path, &len)) == NULL)
if (val == NULL)
break; break;
if ((maclen != len) || memcmp(val, mac, len)) {
free(val); bool match = (virMacAddrCompare(val, mac) == 0);
} else {
VIR_FREE(val);
if (match) {
ret = strdup(list[i]); ret = strdup(list[i]);
free(val);
break; break;
} }
} }
free(list);
VIR_FREE(list);
return(ret); return(ret);
} }