提交 ab4139a4 编写于 作者: S Stefan Berger 提交者: Laine Stump

nwfilter: utility function virNWFilterVarValueEqual

To detect if an interface's nwfilter has changed, we need to also
compare the filterparams, which is a hashtable of virNWFilterVarValue.
virHashEqual can do this nicely, but requires a pointer to a function
that will compare two of the items being stored in the hashes.
上级 3738cf41
......@@ -189,6 +189,37 @@ virNWFilterVarValueGetCardinality(const virNWFilterVarValuePtr val)
return 0;
}
bool
virNWFilterVarValueEqual(const virNWFilterVarValuePtr a,
const virNWFilterVarValuePtr b)
{
unsigned int card, i, j;
const char *s;
if (!a || !b)
return false;
card = virNWFilterVarValueGetCardinality(a);
if (card != virNWFilterVarValueGetCardinality(b))
return false;
/* brute force O(n^2) comparison */
for (i = 0; i < card; i++) {
bool eq = false;
s = virNWFilterVarValueGetNthValue(a, i);
for (j = 0; j < card; j++) {
if (STREQ_NULLABLE(s, virNWFilterVarValueGetNthValue(b, j))) {
eq = true;
break;
}
}
if (!eq)
return false;
}
return true;
}
int
virNWFilterVarValueAddValue(virNWFilterVarValuePtr val, char *value)
{
......
......@@ -57,6 +57,8 @@ const char *virNWFilterVarValueGetSimple(const virNWFilterVarValuePtr val);
const char *virNWFilterVarValueGetNthValue(virNWFilterVarValuePtr val,
unsigned int idx);
unsigned int virNWFilterVarValueGetCardinality(const virNWFilterVarValuePtr);
bool virNWFilterVarValueEqual(const virNWFilterVarValuePtr a,
const virNWFilterVarValuePtr b);
int virNWFilterVarValueAddValue(virNWFilterVarValuePtr val, char *value);
int virNWFilterVarValueDelValue(virNWFilterVarValuePtr val, const char *value);
......
......@@ -975,6 +975,7 @@ virNWFilterVarValueCopy;
virNWFilterVarValueCreateSimple;
virNWFilterVarValueCreateSimpleCopyValue;
virNWFilterVarValueDelValue;
virNWFilterVarValueEqual;
virNWFilterVarValueFree;
virNWFilterVarValueGetCardinality;
virNWFilterVarValueGetNthValue;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册