diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/route/link.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/lib/route/link.c b/lib/route/link.c index 7dc36da4..128607cd 100644 --- a/lib/route/link.c +++ b/lib/route/link.c @@ -2623,21 +2623,21 @@ char *rtnl_link_get_type(struct rtnl_link *link) */ int rtnl_link_set_slave_type(struct rtnl_link *link, const char *type) { - char *kind; - - free(link->l_info_slave_kind); - link->ce_mask &= ~LINK_ATTR_LINKINFO_SLAVE_KIND; + char *kind = NULL; - if (!type) - return 0; - - kind = strdup(type); - if (!kind) - return -NLE_NOMEM; + if (type) { + kind = strdup(type); + if (!kind) + return -NLE_NOMEM; + } + free(link->l_info_slave_kind); link->l_info_slave_kind = kind; - link->ce_mask |= LINK_ATTR_LINKINFO_SLAVE_KIND; + if (kind) + link->ce_mask |= LINK_ATTR_LINKINFO_SLAVE_KIND; + else + link->ce_mask &= ~LINK_ATTR_LINKINFO_SLAVE_KIND; return 0; } |