diff --git a/lib/route/tc.c b/lib/route/tc.c index 4c92822..1dcb986 100644 --- a/lib/route/tc.c +++ b/lib/route/tc.c @@ -760,16 +760,24 @@ int rtnl_tc_clone(struct nl_object *dstobj, struct nl_object *srcobj) dst->tc_link = src->tc_link; } + dst->tc_opts = NULL; + dst->tc_xstats = NULL; + dst->tc_subdata = NULL; + dst->ce_mask &= ~(TCA_ATTR_OPTS | + TCA_ATTR_XSTATS); + if (src->tc_opts) { dst->tc_opts = nl_data_clone(src->tc_opts); if (!dst->tc_opts) return -NLE_NOMEM; + dst->ce_mask |= TCA_ATTR_OPTS; } - + if (src->tc_xstats) { dst->tc_xstats = nl_data_clone(src->tc_xstats); if (!dst->tc_xstats) return -NLE_NOMEM; + dst->ce_mask |= TCA_ATTR_XSTATS; } if (src->tc_subdata) {