Patch #: 93 Type: bug fix Priority: high Affects: sites using CAP/AUFS with Native EtherTalk (Tickle Timeout) Submitted: David Hornsby Debugged: Bruce Cole Reported: Stephen C. Trier Reported: Don Gilbert Reported: Bruce Benson Reported: John Aspden Reported: Ari Ahonen Reported: Mike Iglesias Reported: Jean Thioulouse Archived: munnari.OZ.AU mac/cap.patches/cap60.patch093 Application: 'cd cap60; patch -p < cap60.patches/cap60.patch093' Summary: fix per-process AARP table management File: cap60/support/ethertalk/abelap.c *** support/ethertalk/abelap.c.orig Mon Nov 18 02:32:55 1991 --- support/ethertalk/abelap.c Sat Mar 7 18:54:03 1992 *************** *** 1,7 **** /* ! * $Author: djh $ $Date: 1991/11/17 15:32:44 $ ! * $Header: /mac/src/cap60/support/ethertalk/RCS/abelap.c,v 2.7 1991/11/17 15:32:44 djh Rel djh $ ! * $Revision: 2.7 $ */ /* --- 1,7 ---- /* ! * $Author: djh $ $Date: 1992/03/07 08:53:45 $ ! * $Header: /mac/src/cap60/support/ethertalk/RCS/abelap.c,v 2.8 1992/03/07 08:53:45 djh Rel djh $ ! * $Revision: 2.8 $ */ /* *************** *** 557,562 **** --- 557,563 ---- int cc; struct iovec *liov; int pos, i, len, lcc, liovlen; + struct ethertalkaddr etaddr; DDP *ddp; ShortDDP *sddp; *************** *** 581,603 **** if (laph.src == 0xff) /* bad, bad, bad */ return(-1); ! /* lap dest isn't right */ ! /* fixup point */ ! if (laph.dst != 0xff && laph.dst != this_node) return(-1); - #ifdef undef - /* pick out source for aarp table management if not self */ - /* EtherTalk II fixup */ - if (lap.src != ddpnode) { - spa.dummy[0] = spa.dummy[1] = spa.dummy[2] = 0; - spa.node = lap.src; - if (!aarp_insert(eh->eh_ah, ea.saddr, &spa, FALSE)) /* drop it */ - return(-1); /* enet address change */ - } - #endif undef - liovlen=iovlen; liov=iov; lcc=cc; --- 582,594 ---- if (laph.src == 0xff) /* bad, bad, bad */ return(-1); ! /* ! * lap dest isn't right ! * ! */ if (laph.dst != 0xff && laph.dst != this_node) return(-1); liovlen=iovlen; liov=iov; lcc=cc; *************** *** 645,650 **** --- 636,657 ---- lastnode = ddp->srcNode; lastnet = ddp->srcNet; lastlnode = laph.src; + + /* + * pick out source address for aarp table management if not self + * + */ + if (ddp->srcNode != this_node) { + #ifdef PHASE2 + etaddr.dummy[0] = 0; + etaddr.dummy[1] = (ntohs(ddp->srcNet) >> 8) & 0xff; + etaddr.dummy[2] = (ntohs(ddp->srcNet) & 0xff); + #else PHASE2 + etaddr.dummy[0] = etaddr.dummy[1] = etaddr.dummy[2] = 0; + #endif PHASE2 + etaddr.node = ddp->srcNode; + aarp_insert(&aih, eaddrbuf+6, &etaddr, FALSE); + } return(ddp_protocol(iov, iovlen, cc)); *** README.orig Sat Mar 7 18:54:33 1992 --- README Sat Mar 7 18:55:02 1992 *************** *** 3,9 **** (For use with AppleTalk/Ethernet bridge) o RELEASE NOTES ! o CAP Distribution 6.0, Patch Level 92, February 1992 Introduction ------------ --- 3,9 ---- (For use with AppleTalk/Ethernet bridge) o RELEASE NOTES ! o CAP Distribution 6.0, Patch Level 93, February 1992 Introduction ------------