I probably found the reason for the problems with the ipt action you were talking about. netfilter targets, like tc actions, expect a struct sk_buff **, but the ipt action does: struct sk_buff *skb =
No, just restore the code that you took out in one of your patches right above that line which reads: -- if (skb_cloned(skb)) { if (pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) { return -1; } } -- Depen
This means we must convert all paths on which tcf_action_exec is called to use struct sk_buff ** :( No, just restore the code that you took out in one of your patches right above that line which rea
for ipt, just restore: if (pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) return -ENOMEM for the rest, the action code will handle all just fine. There will only be one copy per serious of tramplings. This
This does not help. Netfilter calls skb_ip_make_writable if it has to touch the packet, if it is shared or cloned the packet will be copied. for ipt, just restore: if (pskb_expand_head(skb, 0, 0, GF
Praise be to the people behind pskb_expand (Alexey and Dave). Amen. The whole idea behind the psk_expand is to _copy_ the data while preserving the skb head i.e anyone in the path before the expand c