Message ID | 20181229161822.5772-2-florent.fourcot@wifirst.fr |
---|---|
State | Accepted |
Delegated to: | Pablo Neira |
Headers | show |
Series | [v2,1/2] ipset: remove useless memset() calls | expand |
Hi, On Sat, 29 Dec 2018, Florent Fourcot wrote: > Both functions are using exactly the same code, except the command value > passed to call_ad function. Yes, it makes the code simpler. Thanks, patch is applied. Best regards, Jozsef > Signed-off-by: Florent Fourcot <florent.fourcot@wifirst.fr> > --- > net/netfilter/ipset/ip_set_core.c | 69 +++++++++------------------------------ > 1 file changed, 16 insertions(+), 53 deletions(-) > > diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c > index c1513e590a27..041baf28088a 100644 > --- a/net/netfilter/ipset/ip_set_core.c > +++ b/net/netfilter/ipset/ip_set_core.c > @@ -1562,10 +1562,11 @@ call_ad(struct sock *ctnl, struct sk_buff *skb, struct ip_set *set, > return ret; > } > > -static int ip_set_uadd(struct net *net, struct sock *ctnl, struct sk_buff *skb, > - const struct nlmsghdr *nlh, > - const struct nlattr * const attr[], > - struct netlink_ext_ack *extack) > +static int ip_set_ad(struct net *net, struct sock *ctnl, struct sk_buff *skb, > + enum ipset_adt adt, > + const struct nlmsghdr *nlh, > + const struct nlattr * const attr[], > + struct netlink_ext_ack *extack) > { > struct ip_set_net *inst = ip_set_pernet(net); > struct ip_set *set; > @@ -1596,7 +1597,7 @@ static int ip_set_uadd(struct net *net, struct sock *ctnl, struct sk_buff *skb, > attr[IPSET_ATTR_DATA], > set->type->adt_policy, NULL)) > return -IPSET_ERR_PROTOCOL; > - ret = call_ad(ctnl, skb, set, tb, IPSET_ADD, flags, > + ret = call_ad(ctnl, skb, set, tb, adt, flags, > use_lineno); > } else { > int nla_rem; > @@ -1607,7 +1608,7 @@ static int ip_set_uadd(struct net *net, struct sock *ctnl, struct sk_buff *skb, > nla_parse_nested(tb, IPSET_ATTR_ADT_MAX, nla, > set->type->adt_policy, NULL)) > return -IPSET_ERR_PROTOCOL; > - ret = call_ad(ctnl, skb, set, tb, IPSET_ADD, > + ret = call_ad(ctnl, skb, set, tb, adt, > flags, use_lineno); > if (ret < 0) > return ret; > @@ -1616,58 +1617,20 @@ static int ip_set_uadd(struct net *net, struct sock *ctnl, struct sk_buff *skb, > return ret; > } > > -static int ip_set_udel(struct net *net, struct sock *ctnl, struct sk_buff *skb, > +static int ip_set_uadd(struct net *net, struct sock *ctnl, struct sk_buff *skb, > const struct nlmsghdr *nlh, > const struct nlattr * const attr[], > struct netlink_ext_ack *extack) > { > - struct ip_set_net *inst = ip_set_pernet(net); > - struct ip_set *set; > - struct nlattr *tb[IPSET_ATTR_ADT_MAX + 1] = {}; > - const struct nlattr *nla; > - u32 flags = flag_exist(nlh); > - bool use_lineno; > - int ret = 0; > - > - if (unlikely(protocol_min_failed(attr) || > - !attr[IPSET_ATTR_SETNAME] || > - !((attr[IPSET_ATTR_DATA] != NULL) ^ > - (attr[IPSET_ATTR_ADT] != NULL)) || > - (attr[IPSET_ATTR_DATA] && > - !flag_nested(attr[IPSET_ATTR_DATA])) || > - (attr[IPSET_ATTR_ADT] && > - (!flag_nested(attr[IPSET_ATTR_ADT]) || > - !attr[IPSET_ATTR_LINENO])))) > - return -IPSET_ERR_PROTOCOL; > - > - set = find_set(inst, nla_data(attr[IPSET_ATTR_SETNAME])); > - if (!set) > - return -ENOENT; > - > - use_lineno = !!attr[IPSET_ATTR_LINENO]; > - if (attr[IPSET_ATTR_DATA]) { > - if (nla_parse_nested(tb, IPSET_ATTR_ADT_MAX, > - attr[IPSET_ATTR_DATA], > - set->type->adt_policy, NULL)) > - return -IPSET_ERR_PROTOCOL; > - ret = call_ad(ctnl, skb, set, tb, IPSET_DEL, flags, > - use_lineno); > - } else { > - int nla_rem; > + return ip_set_ad(net, ctnl, skb, IPSET_ADD, nlh, attr, extack); > +} > > - nla_for_each_nested(nla, attr[IPSET_ATTR_ADT], nla_rem) { > - if (nla_type(nla) != IPSET_ATTR_DATA || > - !flag_nested(nla) || > - nla_parse_nested(tb, IPSET_ATTR_ADT_MAX, nla, > - set->type->adt_policy, NULL)) > - return -IPSET_ERR_PROTOCOL; > - ret = call_ad(ctnl, skb, set, tb, IPSET_DEL, > - flags, use_lineno); > - if (ret < 0) > - return ret; > - } > - } > - return ret; > +static int ip_set_udel(struct net *net, struct sock *ctnl, struct sk_buff *skb, > + const struct nlmsghdr *nlh, > + const struct nlattr * const attr[], > + struct netlink_ext_ack *extack) > +{ > + return ip_set_ad(net, ctnl, skb, IPSET_DEL, nlh, attr, extack); > } > > static int ip_set_utest(struct net *net, struct sock *ctnl, struct sk_buff *skb, > -- > 2.11.0 > > -- E-mail : kadlecsik.jozsef@wigner.mta.hu PGP key: http://www.kfki.hu/~kadlec/pgp_public_key.txt Address: Wigner Research Centre for Physics, Hungarian Academy of Sciences H-1525 Budapest 114, POB. 49, Hungary
diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c index c1513e590a27..041baf28088a 100644 --- a/net/netfilter/ipset/ip_set_core.c +++ b/net/netfilter/ipset/ip_set_core.c @@ -1562,10 +1562,11 @@ call_ad(struct sock *ctnl, struct sk_buff *skb, struct ip_set *set, return ret; } -static int ip_set_uadd(struct net *net, struct sock *ctnl, struct sk_buff *skb, - const struct nlmsghdr *nlh, - const struct nlattr * const attr[], - struct netlink_ext_ack *extack) +static int ip_set_ad(struct net *net, struct sock *ctnl, struct sk_buff *skb, + enum ipset_adt adt, + const struct nlmsghdr *nlh, + const struct nlattr * const attr[], + struct netlink_ext_ack *extack) { struct ip_set_net *inst = ip_set_pernet(net); struct ip_set *set; @@ -1596,7 +1597,7 @@ static int ip_set_uadd(struct net *net, struct sock *ctnl, struct sk_buff *skb, attr[IPSET_ATTR_DATA], set->type->adt_policy, NULL)) return -IPSET_ERR_PROTOCOL; - ret = call_ad(ctnl, skb, set, tb, IPSET_ADD, flags, + ret = call_ad(ctnl, skb, set, tb, adt, flags, use_lineno); } else { int nla_rem; @@ -1607,7 +1608,7 @@ static int ip_set_uadd(struct net *net, struct sock *ctnl, struct sk_buff *skb, nla_parse_nested(tb, IPSET_ATTR_ADT_MAX, nla, set->type->adt_policy, NULL)) return -IPSET_ERR_PROTOCOL; - ret = call_ad(ctnl, skb, set, tb, IPSET_ADD, + ret = call_ad(ctnl, skb, set, tb, adt, flags, use_lineno); if (ret < 0) return ret; @@ -1616,58 +1617,20 @@ static int ip_set_uadd(struct net *net, struct sock *ctnl, struct sk_buff *skb, return ret; } -static int ip_set_udel(struct net *net, struct sock *ctnl, struct sk_buff *skb, +static int ip_set_uadd(struct net *net, struct sock *ctnl, struct sk_buff *skb, const struct nlmsghdr *nlh, const struct nlattr * const attr[], struct netlink_ext_ack *extack) { - struct ip_set_net *inst = ip_set_pernet(net); - struct ip_set *set; - struct nlattr *tb[IPSET_ATTR_ADT_MAX + 1] = {}; - const struct nlattr *nla; - u32 flags = flag_exist(nlh); - bool use_lineno; - int ret = 0; - - if (unlikely(protocol_min_failed(attr) || - !attr[IPSET_ATTR_SETNAME] || - !((attr[IPSET_ATTR_DATA] != NULL) ^ - (attr[IPSET_ATTR_ADT] != NULL)) || - (attr[IPSET_ATTR_DATA] && - !flag_nested(attr[IPSET_ATTR_DATA])) || - (attr[IPSET_ATTR_ADT] && - (!flag_nested(attr[IPSET_ATTR_ADT]) || - !attr[IPSET_ATTR_LINENO])))) - return -IPSET_ERR_PROTOCOL; - - set = find_set(inst, nla_data(attr[IPSET_ATTR_SETNAME])); - if (!set) - return -ENOENT; - - use_lineno = !!attr[IPSET_ATTR_LINENO]; - if (attr[IPSET_ATTR_DATA]) { - if (nla_parse_nested(tb, IPSET_ATTR_ADT_MAX, - attr[IPSET_ATTR_DATA], - set->type->adt_policy, NULL)) - return -IPSET_ERR_PROTOCOL; - ret = call_ad(ctnl, skb, set, tb, IPSET_DEL, flags, - use_lineno); - } else { - int nla_rem; + return ip_set_ad(net, ctnl, skb, IPSET_ADD, nlh, attr, extack); +} - nla_for_each_nested(nla, attr[IPSET_ATTR_ADT], nla_rem) { - if (nla_type(nla) != IPSET_ATTR_DATA || - !flag_nested(nla) || - nla_parse_nested(tb, IPSET_ATTR_ADT_MAX, nla, - set->type->adt_policy, NULL)) - return -IPSET_ERR_PROTOCOL; - ret = call_ad(ctnl, skb, set, tb, IPSET_DEL, - flags, use_lineno); - if (ret < 0) - return ret; - } - } - return ret; +static int ip_set_udel(struct net *net, struct sock *ctnl, struct sk_buff *skb, + const struct nlmsghdr *nlh, + const struct nlattr * const attr[], + struct netlink_ext_ack *extack) +{ + return ip_set_ad(net, ctnl, skb, IPSET_DEL, nlh, attr, extack); } static int ip_set_utest(struct net *net, struct sock *ctnl, struct sk_buff *skb,
Both functions are using exactly the same code, except the command value passed to call_ad function. Signed-off-by: Florent Fourcot <florent.fourcot@wifirst.fr> --- net/netfilter/ipset/ip_set_core.c | 69 +++++++++------------------------------ 1 file changed, 16 insertions(+), 53 deletions(-)