[PATCH 2.4] raw table and NOTRACK support
Roberto Nibali
ratz at tac.ch
Mon Nov 28 10:11:29 CET 2005
> One of the things it broke was SO_ORIGINAL_DST support for
> transparent proxying, which also affects 2.4.
Ok.
>> That would be perfect, could you point me to the git reference to this
>> patch, please?
>
> It was commit 84531c24f27b02daa8e54e2bb6dc74a730fdf0a5, titled
> "[NETFILTER]: Revert nf_reset change".
Hmmm, so how about the following approach?
--- linux-2.4.32-orig/include/net/dst.h 2005-04-04 03:42:20 +0200
+++ linux-2.4.32-pab2/include/net/dst.h 2005-11-28 09:42:59 +0100
@@ -105,6 +105,7 @@
void dst_release(struct dst_entry * dst)
{
if (dst) {
+ WARN_ON(atomic_read(&dst->__refcnt) < 1);
smp_mb__before_atomic_dec();
atomic_dec(&dst->__refcnt);
}
diff -X dontdiff -Nur linux-2.4.32-orig/net/packet/af_packet.c
linux-2.4.32-pab2/net/packet/af_packet.c
--- linux-2.4.32-orig/net/packet/af_packet.c 2004-11-17 12:54:22 +0100
+++ linux-2.4.32-pab2/net/packet/af_packet.c 2005-11-28 10:00:27 +0100
@@ -272,6 +272,11 @@
if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL)
goto oom;
+ /* drop any routing info and conntrack reference */
+ dst_release(skb->dst);
+ skb->dst = NULL;
+ nf_reset(skb);
+
spkt = (struct sockaddr_pkt*)skb->cb;
skb_push(skb, skb->data-skb->mac.raw);
@@ -507,6 +512,12 @@
skb_set_owner_r(skb, sk);
skb->dev = NULL;
+
+ /* drop any routing info and conntrack reference */
+ dst_release(skb->dst);
+ skb->dst = NULL;
+ nf_reset(skb);
+
spin_lock(&sk->receive_queue.lock);
po->stats.tp_packets++;
__skb_queue_tail(&sk->receive_queue, skb);
I'm compiling it now and will be running test, so long as the thing even
boots ;).
I think the WARN_ON could be submitted to 2.4.x anyway since it helps
finding other occurances of wrong refcnt decreasing. Why is the routing
entry dropped in 2.6.x and not in 2.4.x? Maybe I should also cc netdev
as well.
Thanks and best regards,
Roberto Nibali, ratz
--
-------------------------------------------------------------
addr://Kasinostrasse 30, CH-5001 Aarau tel://++41 62 823 9355
http://www.terreactive.com fax://++41 62 823 9356
-------------------------------------------------------------
terreActive AG Wir sichern Ihren Erfolg
-------------------------------------------------------------
More information about the netfilter-devel
mailing list