Serious IBM 4.3 network bug

Stig Ostholm ostholm at ce.chalmers.se
Wed Oct 26 21:10:19 AEST 1988


In article <23657 at pprg.unm.edu> cyrus at pprg.unm.edu (Tait Cyrus) writes:
>
>There has been A LOT of talk lately concerning DEC LANBridges learning
>ff-ff-ff-ff-ff-ff (the broadcast address).  Well, as I posted a few
>days ago, I thought that I saw a relation between seeing these packets
>and an IBM PC/RT booting.
			.
			.

We at Chalmers University of technology has also experiensed this behavior
and made the following observations:

	* Both the Miniroot diskett and the "normal" kernel sends garbage.

	* This bug is also present in ibm4.3 release 2

	* The bug is NOT present in AIX.

We have also made a fix to the kernel that makes all garbage packages to be
"controlled" (it sends "IBM RT/PC" from itself to itself).
The real cause of this behavior is currently unknown.

The fix in /usr/sys/caif/if_un.c:
2c2
<  * 5799-WZQ (C) COPYRIGHT IBM CORPORATION  1986,1987
---
>  * 5799-CGZ (C) COPYRIGHT IBM CORPORATION  1986,1987
6c6
< /* $Header: if_un.c,v 1.1 88/05/19 09:59:24 ostholm Exp $ */
---
> /* $Header: if_un.c,v 1.2 88/05/20 10:24:38 ostholm Exp $ */
11c11
< static char *rcsid = "$Header: if_un.c,v 1.1 88/05/19 09:59:24 ostholm Exp $";
---
> static char *rcsid = "$Header: if_un.c,v 1.2 88/05/20 10:24:38 ostholm Exp $";
120a121,125
> 	/*
> 	 * The next line puts the transmitter in loopbackmode so that no
> 	 * uncontrolled packeges are sent on the ethernet.
> 	MM_OUT(&addr->un_edlc.tmode, TM_NORMAL - TM_LBC);
> 	 */
124a130,133
> 	/*
> 	 * The next line puts the transmitter in normal mode.
> 	MM_OUT(&addr->un_edlc.tmode, TM_NORMAL);
> 	 */
876a886
> 	register int i;
879d888
< 	MM_OUT(&addr->un_edlc.reset, RESET_ON);
880a890,909
> 	MM_OUT(&addr->un_edlc.reset, RESET_ON);
> 	/*
> 	 * Set the Xmit-buffer area to a know value
> 	 */
> #define	DUMMY_MSG	"IBM RT/PC"
> #define	MSG_LEN		((sizeof DUMMY_MSG)-1)
> 	i = UN_XBSIZE - MSG_LEN;
> 	/* Set the dummy message */
> 	bcopyout(DUMMY_MSG, &addr->un_xmtbuf[0][i],MSG_LEN);
> 	/* set protocol type 0 (IEEE package, illegal) */
> 	i--, MM_OUT(&addr->un_xmtbuf[0][i], 0x00);
> 	i--, MM_OUT(&addr->un_xmtbuf[0][i], 0x00);
> 	/* source and destination address = this card */
> 	i -= ETH_ADDR_SIZE;
> 	bcopyout(&addr->un_eprom[UN_EADDROFF], &addr->un_xmtbuf[0][i],ETH_ADDR_SIZE);
> 	i -= ETH_ADDR_SIZE;
> 	bcopyout(&addr->un_eprom[UN_EADDROFF], &addr->un_xmtbuf[0][i],ETH_ADDR_SIZE);
> 	/* Set the tx-start registers */
> 	MM_OUT(&addr->un_xsar[1], i & 0xFF);
> 	MM_OUT(&addr->un_xsar[0], i >> 8 & 0xF);



More information about the Comp.bugs.4bsd.ucb-fixes mailing list