Hi Anders, 2016-10-21 3:09 GMT+08:00 Anders K. Pedersen | Cohaesio <akp@xxxxxxxxxxxx>: > +int nft_rt_get_init(const struct nft_ctx *ctx, > + const struct nft_expr *expr, > + const struct nlattr * const tb[]) > +{ > + struct nft_rt *priv = nft_expr_priv(expr); > + unsigned int len; > + > + if (tb[NFTA_RT_KEY] == NULL || > + tb[NFTA_RT_DREG] == NULL || > + tb[NFTA_RT_FAMILY] == NULL) The judgement here is also confusing to me, we do not use family in NFT_RT_CLASSID key, so why we force the user that they must specify the NFTA_RT_FAMILY attribute? As I mentioned in another reply, I think the NFTA_RT_FAMILY attr is redundant. > + return -EINVAL; > + > + priv->key = ntohl(nla_get_be32(tb[NFTA_RT_KEY])); > + switch (priv->key) { > +#ifdef CONFIG_IP_ROUTE_CLASSID > + case NFT_RT_CLASSID: > + len = sizeof(u32); > + break; > +#endif > + default: > + return -EOPNOTSUPP; > + } > + > + priv->family = ntohl(nla_get_be32(tb[NFTA_RT_FAMILY])); > + priv->dreg = nft_parse_register(tb[NFTA_RT_DREG]); > + return nft_validate_register_store(ctx, priv->dreg, NULL, > + NFT_DATA_VALUE, len); > +} -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html