On Tue, 15 Oct 2013, Thierry Reding wrote: > Today's linux-next merge of the trivial tree got conflicts in > > net/netfilter/xt_set.c > > caused by commits 3f79410 (treewide: Fix common typo in "identify") and > bd3129f (netfilter: ipset: order matches and targets separatedly in > xt_set.c). > > I fixed them up (see below). Please verify that the resolution looks > good. I don't really get it: patch bd3129f was part of a patchset, which was applied to net-next and there it was complete. There's none of the patchset in question in linux-next, so what's the trivial tree? Where's lost what? [The patch below doesn't look good, because it should contain the removed part for the revision 1 match due to the reordering in the file.] Best regards, Jozsef > --- > diff --cc net/netfilter/xt_set.c > index e7c4e0e,4b9d6b4..80c2e2d > --- a/net/netfilter/xt_set.c > +++ b/net/netfilter/xt_set.c > @@@ -81,10 -81,10 +81,10 @@@ set_match_v0_checkentry(const struct xt > struct xt_set_info_match_v0 *info = par->matchinfo; > ip_set_id_t index; > > - index = ip_set_nfnl_get_byindex(info->match_set.index); > + index = ip_set_nfnl_get_byindex(par->net, info->match_set.index); > > if (index == IPSET_INVALID_ID) { > - pr_warning("Cannot find set indentified by id %u to match\n", > + pr_warning("Cannot find set identified by id %u to match\n", > info->match_set.index); > return -ENOENT; > } > @@@ -106,104 -106,9 +106,104 @@@ set_match_v0_destroy(const struct xt_mt > { > struct xt_set_info_match_v0 *info = par->matchinfo; > > - ip_set_nfnl_put(info->match_set.index); > + ip_set_nfnl_put(par->net, info->match_set.index); > } > > +/* Revision 1 match */ > + > +static bool > +set_match_v1(const struct sk_buff *skb, struct xt_action_param *par) > +{ > + const struct xt_set_info_match_v1 *info = par->matchinfo; > + ADT_OPT(opt, par->family, info->match_set.dim, > + info->match_set.flags, 0, UINT_MAX); > + > + if (opt.flags & IPSET_RETURN_NOMATCH) > + opt.cmdflags |= IPSET_FLAG_RETURN_NOMATCH; > + > + return match_set(info->match_set.index, skb, par, &opt, > + info->match_set.flags & IPSET_INV_MATCH); > +} > + > +static int > +set_match_v1_checkentry(const struct xt_mtchk_param *par) > +{ > + struct xt_set_info_match_v1 *info = par->matchinfo; > + ip_set_id_t index; > + > + index = ip_set_nfnl_get_byindex(par->net, info->match_set.index); > + > + if (index == IPSET_INVALID_ID) { > - pr_warning("Cannot find set indentified by id %u to match\n", > ++ pr_warning("Cannot find set identified by id %u to match\n", > + info->match_set.index); > + return -ENOENT; > + } > + if (info->match_set.dim > IPSET_DIM_MAX) { > + pr_warning("Protocol error: set match dimension " > + "is over the limit!\n"); > + ip_set_nfnl_put(par->net, info->match_set.index); > + return -ERANGE; > + } > + > + return 0; > +} > + > +static void > +set_match_v1_destroy(const struct xt_mtdtor_param *par) > +{ > + struct xt_set_info_match_v1 *info = par->matchinfo; > + > + ip_set_nfnl_put(par->net, info->match_set.index); > +} > + > +/* Revision 3 match */ > + > +static bool > +match_counter(u64 counter, const struct ip_set_counter_match *info) > +{ > + switch (info->op) { > + case IPSET_COUNTER_NONE: > + return true; > + case IPSET_COUNTER_EQ: > + return counter == info->value; > + case IPSET_COUNTER_NE: > + return counter != info->value; > + case IPSET_COUNTER_LT: > + return counter < info->value; > + case IPSET_COUNTER_GT: > + return counter > info->value; > + } > + return false; > +} > + > +static bool > +set_match_v3(const struct sk_buff *skb, struct xt_action_param *par) > +{ > + const struct xt_set_info_match_v3 *info = par->matchinfo; > + ADT_OPT(opt, par->family, info->match_set.dim, > + info->match_set.flags, info->flags, UINT_MAX); > + int ret; > + > + if (info->packets.op != IPSET_COUNTER_NONE || > + info->bytes.op != IPSET_COUNTER_NONE) > + opt.cmdflags |= IPSET_FLAG_MATCH_COUNTERS; > + > + ret = match_set(info->match_set.index, skb, par, &opt, > + info->match_set.flags & IPSET_INV_MATCH); > + > + if (!(ret && opt.cmdflags & IPSET_FLAG_MATCH_COUNTERS)) > + return ret; > + > + if (!match_counter(opt.ext.packets, &info->packets)) > + return 0; > + return match_counter(opt.ext.bytes, &info->bytes); > +} > + > +#define set_match_v3_checkentry set_match_v1_checkentry > +#define set_match_v3_destroy set_match_v1_destroy > + > +/* Revision 0 interface: backward compatible with netfilter/iptables */ > + > static unsigned int > set_target_v0(struct sk_buff *skb, const struct xt_action_param *par) > { > - E-mail : kadlec@xxxxxxxxxxxxxxxxx, kadlecsik.jozsef@xxxxxxxxxxxxx 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 -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html