static int cgroup_get_opts(struct rtnl_cls *cls, struct nl_msg *msg) { struct rtnl_cgroup *c = rtnl_cls_data(cls); if (!(cls->ce_mask & TCA_ATTR_HANDLE)) return -NLE_MISSING_ATTR; if (c->cg_mask & CGROUP_ATTR_EMATCH) return rtnl_ematch_fill_attr(msg, TCA_CGROUP_EMATCHES, c->cg_ematch); return 0; }
static int cgroup_fill_msg(struct rtnl_tc *tc, void *data, struct nl_msg *msg) { struct rtnl_cgroup *c = data; if (!c) BUG(); if (!(tc->ce_mask & TCA_ATTR_HANDLE)) return -NLE_MISSING_ATTR; if (c->cg_mask & CGROUP_ATTR_EMATCH) return rtnl_ematch_fill_attr(msg, TCA_CGROUP_EMATCHES, c->cg_ematch); return 0; }