[1541] in linux-net channel archive

home help back first fref pref prev next nref lref last post

small BUG in TCP

daemon@ATHENA.MIT.EDU (roque@di.fc.ul.pt)
Fri Dec 22 05:16:57 1995

To: linux-net@vger.rutgers.edu
From: roque@di.fc.ul.pt
Reply-to: roque@di.fc.ul.pt
Date: Wed, 20 Dec 1995 13:52:20 +0100

in kernel 1.3.48 when you try to issue a TCP connect to a host in your su=
bnet=20
that is down tcp answers with "No route to host" ( ie, -NETUNREACH ). I t=
hink=20
that this is in fact incorrect ...=20
The error reply is not on the instant of the connect call so i think it=20
happens on retransmiting

the right beaviour as per RFCs should be to keep retransmiting till you r=
each=20
the maximum number of retransmits.

There is in fact an route to the host (it's on the local subnet) and i th=
ink=20
this beaviour is related with the route caches...

in tcp_do_retransmit:

...
rt =3D ip_check_route(&sk->ip_route_cache, opt->srr?opt->faddr:iph->daddr=
, skb->
localroute);
...
if (rt=3D=3DNULL)   /* Deep poo */
                {
                        if(skb->sk)
                        {
                                skb->sk->err=3DENETUNREACH;
                                skb->sk->error_report(skb->sk);
                        }
                }
...

The ARP field in the route cache is 0 when the route is checked ( but the=
=20
flags are RTF_UP | RTF_HOST ) . maybe that causes  ip_check_route to fail

... i think this is a bit non conformant with RFCs...

if anybody has a clue on this please send me a note.

	Pedro Roque ( roque@di.fc.ul.pt )				     =20
									     =20
	Faculdade de Ci=EAncias da Universidade de Lisboa		     =20
	Departamento de Inform=E1tica					     =20



home help back first fref pref prev next nref lref last post