Problems with the IP tunnel

Jon Tombs (jon@gte.esi.us.es)
Tue, 25 Jun 1996 01:15:11 +0200 (MET DST)


I'm having problems with hanging sockets using the 2.0 IP tunnel, Generally
things work well, but rlogin through a tunnel to a Sun 4.1.3, hangs after
entering the passwd (when it should show the motd). ftp to some machines
also hangs.

Looking at new_tunnel.c there are a few things I don't understand.

if (skb_headroom(skb) >= max_headroom) {
skb->h.iph = (struct iphdr *) skb_push(skb, tunnel_hlen);
} else {
So if there isn't enough space, here we copy the buffer - OK

...

memcpy(new_skb->ip_hdr, skb->data, skb->len);
This copies the data - OK
memset(new_skb->proto_priv, 0, sizeof(skb->proto_priv));
Zero the proto_priv field - WHY don't we copy?

WHY don't we copy the other fields from the old skb?
i.e. what about saddr,daddr,raddr and pkt_type??

}

Sure I don't follow what is going on 100%, but it seems strange to me that
we can ignore always the old skb fields. Can somebody look over this
condition.

-- 
Jon. <jon@gte.esi.us.es, http://www.esi.us.es/~jon>