Skip to content

Commit

Permalink
ifup: fix <child> subnode of <match> generation
Browse files Browse the repository at this point in the history
It should not check the w->device existance.
  • Loading branch information
wipawel committed Jul 17, 2014
1 parent 94f12a3 commit 7104cad
Showing 1 changed file with 19 additions and 19 deletions.
38 changes: 19 additions & 19 deletions client/ifup.c
Expand Up @@ -46,7 +46,7 @@
#include "ifup.h"

static xml_node_t *
__ni_ifup_generate_match_type_dev(ni_netdev_t *dev, ni_bool_t child)
__ni_ifup_generate_match_type_dev(ni_netdev_t *dev)
{
const char *type;
xml_node_t *ret;
Expand All @@ -57,9 +57,7 @@ __ni_ifup_generate_match_type_dev(ni_netdev_t *dev, ni_bool_t child)
if (!(type = ni_linktype_type_to_name(dev->link.type)))
return NULL;

ret = child ? xml_node_new(NI_NANNY_IFPOLICY_MATCH_COND_CHILD, NULL) :
xml_node_new(NI_NANNY_IFPOLICY_MATCH_COND_AND, NULL);
if (!ret)
if (!(ret = xml_node_new(NI_NANNY_IFPOLICY_MATCH_COND_AND, NULL)))
return NULL;

if (!xml_node_new_element(NI_NANNY_IFPOLICY_MATCH_DEV, ret, dev->name) ||
Expand All @@ -71,7 +69,7 @@ __ni_ifup_generate_match_type_dev(ni_netdev_t *dev, ni_bool_t child)
}

static xml_node_t *
__ni_ifup_generate_match_dev(xml_node_t *node, ni_ifworker_t *w, ni_bool_t child)
__ni_ifup_generate_match_dev(xml_node_t *node, ni_ifworker_t *w)
{
if (!node || !w || !w->name)
return NULL;
Expand All @@ -83,7 +81,7 @@ __ni_ifup_generate_match_dev(xml_node_t *node, ni_ifworker_t *w, ni_bool_t child
if (w->device && ni_string_eq(w->name, w->device->name)) {
xml_node_t * ret = NULL;

if ((ret = __ni_ifup_generate_match_type_dev(w->device, child))) {
if ((ret = __ni_ifup_generate_match_type_dev(w->device))) {
xml_node_add_child(node, ret);
return ret;
}
Expand All @@ -96,34 +94,36 @@ static xml_node_t *
__ni_ifup_generate_match(ni_ifworker_t *w)
{
xml_node_t *match;
unsigned int i;

if (!(match = xml_node_new(NI_NANNY_IFPOLICY_MATCH, NULL)))
return NULL;
goto error;

if (!__ni_ifup_generate_match_dev(match, w, FALSE)) {
xml_node_free(match);
return NULL;
}
if (!__ni_ifup_generate_match_dev(match, w))
goto error;

if (w->children.count) {
xml_node_t*or;
xml_node_t *or;
unsigned int i;

if (!(or = xml_node_new(NI_NANNY_IFPOLICY_MATCH_COND_OR, match)))
return NULL;
goto error;

for (i = 0; i < w->children.count; i++) {
ni_ifworker_t *child = w->children.data[i];
xml_node_t *cnode;

if (!__ni_ifup_generate_match_dev(or, child, TRUE)) {
xml_node_free(match);
return NULL;
}
}
if(!(cnode = xml_node_new(NI_NANNY_IFPOLICY_MATCH_COND_CHILD, or)))
goto error;

if (!__ni_ifup_generate_match_dev(cnode, child))
goto error;
}
}

return match;
error:
xml_node_free(match);
return NULL;
}

static ni_bool_t
Expand Down

0 comments on commit 7104cad

Please sign in to comment.