On 2016/12/15 4:15, Julian Anastasov wrote: > > 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 <j...@ssi.bg> > > . >
Great, I'll be glad to do a testing.