[fa.tcp-ip] Sun Gateway problems

tcp-ip@ucbvax.ARPA (05/17/85)

From: Clive Dawson <AI.CLIVE@MCC.ARPA>

We have a DEC-20 on our corporate Ethernet which cannot establish
connections to hosts on any subnets which are gatewayed by Sun work-
stations.  The strange thing is that if the hosts on those subnets initiate
the connection to the 20, then communcation is established with no problem.

One of the Suns in question is reporting 
	103104 messages < minimum length
and so we have reason to suspect that the problem has to do with the 
length of ICMP packets.  Apparently the Unix 4.2 which runs on the Suns
doesn't accept ICMP packets which are less than 8 bytes long.

Has anybody experienced this problem?  A while back there was some mention
about a large number of patches to the IP stuff in generic 4.2.  I'm hoping
that one of them addresses this.

Many thanks, 

Clive Dawson
-------

tcp-ip@ucbvax.ARPA (05/17/85)

From: Mike Brescia <brescia@bbnccv>

We found that there was a bug in some versions of 4.2BSD which rejected ICMP
packets shorter than 48 bytes (IP header + ICMP + 20 extra bytes).

tcp-ip@ucbvax.ARPA (05/17/85)

From: Chris Torek <chris@gyre>

If it's the ICMP bug Jim and I found, and you have Sun source, you can
fix it by finding modules that call "m_pullup" but have already used
"mtod" on the argument to m_pullup.  Whatever was mtod'ed needs to be
mtod'ed again.

Example:

icmp_xyzzy(m)
	struct mbuf *m;
{
	struct icmp_hdr *ic = mtod(m, struct icmp_hdr *);
	... <code> ...
	if (m->m_len < sizeof (struct icmp_hdr)) {
		if ((m = m_pullup(m, sizeof (struct icmp_hdr))) == NULL) {
			/* forget it */
		}
+-->		ic = mtod(m, struct icmp_hdr *);
|	}
|	... <code using ic->icmp_fields> ...
|
+---ADD THIS LINE

(We've reported the bug to Sun; I don't know when they'll get around to
fixing it.)

tcp-ip@ucbvax.ARPA (05/30/85)

From: decwrl!sun!guy@BERKELEY (Guy Harris)

It's at least fixed in 3.0, and probably in 2.0.  BTW, what does "xyzzy"
equal in this case?  The only call to "m_pullup" I can find in ip_icmp.c is
in "icmp_input", and the code is different from your example...

	Guy Harris

tcp-ip@ucbvax.ARPA (05/31/85)

From: Chris Torek <chris@gyre>

I forget what the xyzzy was, which is why I used a generic word.

You don't seriously expect me to go look up the code do you :-) ?

Chris