Re: linux-next: manual merge of the trivial tree

From: Jozsef Kadlecsik
Date: Wed Oct 16 2013 - 05:18:04 EST


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-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/