Will do that straight away and recompile tc.
In case it wasn't clear: the patch is for the kernel part;
no need to rebuild tc.
Yeah, I just realised that... :-(
Please consider re-testing. Once you find the first testcase
in your list that still doesn't work, please let me know which
one it is and i'll have a look at it.
OK, will do that (kernel is compiling at present - I had to amend your
patchlet slightly as there were errors from patch, I am enclosing the
modified version...)
diff --git a/net/sched/em_ipset.c b/net/sched/em_ipset.c
index 0a153d0..13ec7b6 100644
--- a/net/sched/em_ipset.c
+++ b/net/sched/em_ipset.c
@@ -56,6 +56,7 @@ static int em_ipset_match(struct sk_buff *skb, struct tcf_ematch *em,
struct ip_set_adt_opt opt;
struct xt_action_param acpar;
const struct xt_set_info *set = (const void *) em->data;
+ int ret, network_offset;
switch (skb->protocol) {
case htons(ETH_P_IP):
@@ -84,7 +85,12 @@ static int em_ipset_match(struct sk_buff *skb, struct tcf_ematch *em,
opt.flags = set->flags;
opt.cmdflags = 0;
opt.timeout = ~0u;
- return ip_set_test(set->index, skb, &acpar, &opt);
+
+ network_offset = skb_network_offset(skb);
+ skb_pull(skb, network_offset);
+ ret = ip_set_test(set->index, skb, &acpar, &opt);
+ skb_push(skb, network_offset);
+ return ret;
}
static struct tcf_ematch_ops em_ipset_ops = {