mirror of https://gitee.com/openkylin/linux.git
netfilter: nf_tables: __nft_expr_type_get() selects specific family type
In case that there are two types, prefer the family specify extension. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
b9c04ae790
commit
9cff126f73
|
@ -2009,14 +2009,17 @@ EXPORT_SYMBOL_GPL(nft_unregister_expr);
|
||||||
static const struct nft_expr_type *__nft_expr_type_get(u8 family,
|
static const struct nft_expr_type *__nft_expr_type_get(u8 family,
|
||||||
struct nlattr *nla)
|
struct nlattr *nla)
|
||||||
{
|
{
|
||||||
const struct nft_expr_type *type;
|
const struct nft_expr_type *type, *candidate = NULL;
|
||||||
|
|
||||||
list_for_each_entry(type, &nf_tables_expressions, list) {
|
list_for_each_entry(type, &nf_tables_expressions, list) {
|
||||||
if (!nla_strcmp(nla, type->name) &&
|
if (!nla_strcmp(nla, type->name)) {
|
||||||
(!type->family || type->family == family))
|
if (!type->family && !candidate)
|
||||||
return type;
|
candidate = type;
|
||||||
|
else if (type->family == family)
|
||||||
|
candidate = type;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return NULL;
|
return candidate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_MODULES
|
#ifdef CONFIG_MODULES
|
||||||
|
|
Loading…
Reference in New Issue