diff --git a/lib/route/link.c b/lib/route/link.c index 99c5013..7450545 100644 --- a/lib/route/link.c +++ b/lib/route/link.c @@ -1742,6 +1742,12 @@ void rtnl_link_set_family(struct rtnl_link *link, int family) { link->l_family = family; link->ce_mask |= LINK_ATTR_FAMILY; + + if (link->l_af_ops) + af_free(link, link->l_af_ops, + link->l_af_data[link->l_af_ops->ao_family], NULL); + + link->l_af_ops = af_lookup_and_alloc(link, family); } /**