[977] in linux-net channel archive

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

IP patch

daemon@ATHENA.MIT.EDU (Alan Cox)
Thu Aug 24 00:23:26 1995

Date: Wed, 23 Aug 95 15:13 BST
From: iialan@iifeak.swan.ac.uk (Alan Cox)
To: linux-net@vger.rutgers.edu, torvalds@cs.Helsinki.FI

This fixes the pushdown panic on slip/ppp quits or some routing shifts. I
submitted it for 1.3.14, 1.3.17 and now again - third time lucky remembering
to add this one Linus ;)

	Alan


--- ip.c.ook	Tue Jul 18 00:15:32 1995
+++ ip.c	Tue Jul 18 00:15:32 1995
@@ -201,6 +201,26 @@
 	return mac;
 }
 
+static int ip_send_room(struct sk_buff *skb, unsigned long daddr, int len, struct device *dev, unsigned long saddr)
+{
+	int mac = 0;
+
+	skb->dev = dev;
+	skb->arp = 1;
+	if (dev->hard_header)
+	{
+		skb_reserve(skb,MAX_HEADER);
+		mac = dev->hard_header(skb, dev, ETH_P_IP, NULL, NULL, len);
+		if (mac < 0)
+		{
+			mac = -mac;
+			skb->arp = 0;
+			skb->raddr = daddr;	/* next routing address */
+		}
+	}
+	return mac;
+}
+
 int ip_id_count = 0;
 
 /*
@@ -283,7 +303,10 @@
 	 *	Now build the MAC header.
 	 */
 
-	tmp = ip_send(skb, raddr, len, *dev, saddr);
+	if(type==IPPROTO_TCP)
+		tmp = ip_send_room(skb, raddr, len, *dev, saddr);
+	else
+		tmp = ip_send(skb, raddr, len, *dev, saddr);
 
 	/*
 	 *	Book keeping

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