[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LFD.2.11.1612142151340.1681@ja.home.ssi.bg>
Date: Wed, 14 Dec 2016 22:15:06 +0200 (EET)
From: Julian Anastasov <ja@....bg>
To: YueHaibing <yuehaibing@...wei.com>
cc: Hannes Frederic Sowa <hannes@...essinduktion.org>,
Eric Dumazet <eric.dumazet@...il.com>,
"David S. Miller" <davem@...emloft.net>, netdev@...r.kernel.org
Subject: Re: net/arp: ARP cache aging failed.
Hello,
On Wed, 14 Dec 2016, YueHaibing wrote:
> On 2016/11/26 4:40, Julian Anastasov wrote:
> >
> > So, the idea is to move TCP and other similar
> > users to the new dst_confirm_sk() method. If other
> > dst_confirm() users are left, they should be checked
> > if dsts with rt_gateway = 0 can be wrongly used.
>
> Sorry for so late.
In fact, I'm late too because I almost finished
my changes, the only remaining part is the cxgb files...
> Based on your ideas, I make a patch and test it for a while.
The problem is that it is valid only for TCP.
Also, this flag should be reset sometimes, eg. when sk dst
changes...
> It works for me.
>
> @@ -847,7 +847,7 @@ static int ping_v4_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
> return err;
>
> do_confirm:
> - dst_confirm(&rt->dst);
> + dst_confirm_sk(sk);
MSG_CONFIRM from sendmsg needs special treatment. The
problem is that UDP sending does not lock the socket, so I also
added a skb flag to handle this situation in ip*_append_data.
We do not want threaded application firing at different
destinations to confirm the wrong neighbour. MSG_PROBE is
another issue, the XFRM dst chaining, etc...
I hope, I'll be ready this weekend with few patches
that change all dst_confirm users... There I'll explain
everything in detail.
Regards
--
Julian Anastasov <ja@....bg>
Powered by blists - more mailing lists