OpenWrt

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 2  →  ?path2? @ 3
/branches/18.06.1/target/linux/generic/backport-4.14/344-v4.16-netfilter-nf_tables-allocate-handle-and-delete-objec.patch
@@ -244,7 +244,7 @@
if (IS_ERR(table))
return PTR_ERR(table);
@@ -1581,6 +1623,7 @@ static int nf_tables_delchain(struct net
@@ -1565,6 +1607,7 @@ static int nf_tables_delchain(struct net
struct nft_rule *rule;
int family = nfmsg->nfgen_family;
struct nft_ctx ctx;
@@ -252,7 +252,7 @@
u32 use;
int err;
@@ -1589,7 +1632,12 @@ static int nf_tables_delchain(struct net
@@ -1573,7 +1616,12 @@ static int nf_tables_delchain(struct net
if (IS_ERR(table))
return PTR_ERR(table);
@@ -266,7 +266,7 @@
if (IS_ERR(chain))
return PTR_ERR(chain);
@@ -2557,6 +2605,7 @@ static const struct nla_policy nft_set_p
@@ -2547,6 +2595,7 @@ static const struct nla_policy nft_set_p
[NFTA_SET_USERDATA] = { .type = NLA_BINARY,
.len = NFT_USERDATA_MAXLEN },
[NFTA_SET_OBJ_TYPE] = { .type = NLA_U32 },
@@ -274,7 +274,7 @@
};
static const struct nla_policy nft_set_desc_policy[NFTA_SET_DESC_MAX + 1] = {
@@ -2600,6 +2649,22 @@ static struct nft_set *nf_tables_set_loo
@@ -2590,6 +2639,22 @@ static struct nft_set *nf_tables_set_loo
return ERR_PTR(-ENOENT);
}
@@ -297,7 +297,7 @@
static struct nft_set *nf_tables_set_lookup_byid(const struct net *net,
const struct nlattr *nla,
u8 genmask)
@@ -2716,6 +2781,9 @@ static int nf_tables_fill_set(struct sk_
@@ -2706,6 +2771,9 @@ static int nf_tables_fill_set(struct sk_
goto nla_put_failure;
if (nla_put_string(skb, NFTA_SET_NAME, set->name))
goto nla_put_failure;
@@ -307,7 +307,7 @@
if (set->flags != 0)
if (nla_put_be32(skb, NFTA_SET_FLAGS, htonl(set->flags)))
goto nla_put_failure;
@@ -3124,6 +3192,7 @@ static int nf_tables_newset(struct net *
@@ -3114,6 +3182,7 @@ static int nf_tables_newset(struct net *
set->udata = udata;
set->timeout = timeout;
set->gc_int = gc_int;
@@ -315,7 +315,7 @@
err = ops->init(set, &desc, nla);
if (err < 0)
@@ -3183,7 +3252,10 @@ static int nf_tables_delset(struct net *
@@ -3173,7 +3242,10 @@ static int nf_tables_delset(struct net *
if (err < 0)
return err;
@@ -327,7 +327,7 @@
if (IS_ERR(set))
return PTR_ERR(set);
@@ -4244,6 +4316,21 @@ struct nft_object *nf_tables_obj_lookup(
@@ -4233,6 +4305,21 @@ struct nft_object *nf_tables_obj_lookup(
}
EXPORT_SYMBOL_GPL(nf_tables_obj_lookup);
@@ -349,7 +349,7 @@
static const struct nla_policy nft_obj_policy[NFTA_OBJ_MAX + 1] = {
[NFTA_OBJ_TABLE] = { .type = NLA_STRING,
.len = NFT_TABLE_MAXNAMELEN - 1 },
@@ -4251,6 +4338,7 @@ static const struct nla_policy nft_obj_p
@@ -4240,6 +4327,7 @@ static const struct nla_policy nft_obj_p
.len = NFT_OBJ_MAXNAMELEN - 1 },
[NFTA_OBJ_TYPE] = { .type = NLA_U32 },
[NFTA_OBJ_DATA] = { .type = NLA_NESTED },
@@ -357,7 +357,7 @@
};
static struct nft_object *nft_obj_init(const struct nft_ctx *ctx,
@@ -4398,6 +4486,8 @@ static int nf_tables_newobj(struct net *
@@ -4387,6 +4475,8 @@ static int nf_tables_newobj(struct net *
goto err1;
}
obj->table = table;
@@ -366,7 +366,7 @@
obj->name = nla_strdup(nla[NFTA_OBJ_NAME], GFP_KERNEL);
if (!obj->name) {
err = -ENOMEM;
@@ -4444,7 +4534,9 @@ static int nf_tables_fill_obj_info(struc
@@ -4433,7 +4523,9 @@ static int nf_tables_fill_obj_info(struc
nla_put_string(skb, NFTA_OBJ_NAME, obj->name) ||
nla_put_be32(skb, NFTA_OBJ_TYPE, htonl(obj->ops->type->type)) ||
nla_put_be32(skb, NFTA_OBJ_USE, htonl(obj->use)) ||
@@ -377,7 +377,7 @@
goto nla_put_failure;
nlmsg_end(skb, nlh);
@@ -4642,7 +4734,7 @@ static int nf_tables_delobj(struct net *
@@ -4631,7 +4723,7 @@ static int nf_tables_delobj(struct net *
u32 objtype;
if (!nla[NFTA_OBJ_TYPE] ||
@@ -386,7 +386,7 @@
return -EINVAL;
table = nf_tables_table_lookup(net, nla[NFTA_OBJ_TABLE], family,
@@ -4651,7 +4743,12 @@ static int nf_tables_delobj(struct net *
@@ -4640,7 +4732,12 @@ static int nf_tables_delobj(struct net *
return PTR_ERR(table);
objtype = ntohl(nla_get_be32(nla[NFTA_OBJ_TYPE]));
@@ -400,7 +400,7 @@
if (IS_ERR(obj))
return PTR_ERR(obj);
if (obj->use > 0)
@@ -4723,6 +4820,7 @@ static const struct nla_policy nft_flowt
@@ -4712,6 +4809,7 @@ static const struct nla_policy nft_flowt
[NFTA_FLOWTABLE_NAME] = { .type = NLA_STRING,
.len = NFT_NAME_MAXLEN - 1 },
[NFTA_FLOWTABLE_HOOK] = { .type = NLA_NESTED },
@@ -408,7 +408,7 @@
};
struct nft_flowtable *nf_tables_flowtable_lookup(const struct nft_table *table,
@@ -4740,6 +4838,20 @@ struct nft_flowtable *nf_tables_flowtabl
@@ -4729,6 +4827,20 @@ struct nft_flowtable *nf_tables_flowtabl
}
EXPORT_SYMBOL_GPL(nf_tables_flowtable_lookup);
@@ -429,7 +429,7 @@
#define NFT_FLOWTABLE_DEVICE_MAX 8
static int nf_tables_parse_devices(const struct nft_ctx *ctx,
@@ -4948,6 +5060,8 @@ static int nf_tables_newflowtable(struct
@@ -4937,6 +5049,8 @@ static int nf_tables_newflowtable(struct
return -ENOMEM;
flowtable->table = table;
@@ -438,7 +438,7 @@
flowtable->name = nla_strdup(nla[NFTA_FLOWTABLE_NAME], GFP_KERNEL);
if (!flowtable->name) {
err = -ENOMEM;
@@ -5022,8 +5136,14 @@ static int nf_tables_delflowtable(struct
@@ -5011,8 +5125,14 @@ static int nf_tables_delflowtable(struct
if (IS_ERR(table))
return PTR_ERR(table);
@@ -455,7 +455,7 @@
if (IS_ERR(flowtable))
return PTR_ERR(flowtable);
if (flowtable->use > 0)
@@ -5056,7 +5176,9 @@ static int nf_tables_fill_flowtable_info
@@ -5045,7 +5165,9 @@ static int nf_tables_fill_flowtable_info
if (nla_put_string(skb, NFTA_FLOWTABLE_TABLE, flowtable->table->name) ||
nla_put_string(skb, NFTA_FLOWTABLE_NAME, flowtable->name) ||