mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
[IPV4]: Fix "Proxy ARP seems broken"
Meelis Roos <mroos@linux.ee> wrote: > RK> My firewall setup relies on proxyarp working. However, with 2.6.14-rc3, > RK> it appears to be completely broken. The firewall is 212.18.232.186, > > Same here with some kernel between 14-rc2 and 14-rc3 - no reposnse to > ARP on a proxyarp gateway. Sorry, no exact revison and no more debugging > yet since it'a a production gateway. The breakage is caused by the change to use the CB area for flagging whether a packet has been queued due to proxy_delay. This area gets cleared every time arp_rcv gets called. Unfortunately packets delayed due to proxy_delay also go through arp_rcv when they are reprocessed. In fact, I can't think of a reason why delayed proxy packets should go through netfilter again at all. So the easiest solution is to bypass that and go straight to arp_process. This is essentially what would've happened before netfilter support was added to ARP. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
496a22b08f
commit
444fc8fc3a
1 changed files with 5 additions and 6 deletions
|
@ -697,12 +697,6 @@ void arp_send(int type, int ptype, u32 dest_ip,
|
|||
arp_xmit(skb);
|
||||
}
|
||||
|
||||
static void parp_redo(struct sk_buff *skb)
|
||||
{
|
||||
nf_reset(skb);
|
||||
arp_rcv(skb, skb->dev, NULL, skb->dev);
|
||||
}
|
||||
|
||||
/*
|
||||
* Process an arp request.
|
||||
*/
|
||||
|
@ -922,6 +916,11 @@ static int arp_process(struct sk_buff *skb)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void parp_redo(struct sk_buff *skb)
|
||||
{
|
||||
arp_process(skb);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Receive an arp request from the device layer.
|
||||
|
|
Loading…
Reference in a new issue