summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/route/link.c22
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;
}