[1541] in linux-net channel archive
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