Patch #: 75 Type: OS bug workaround Priority: high for affected sites Affects: (phase 2) sites using unpatched ULTRIX 4.2 packet filter Submitted: Jeffrey Mogul Submitted: David Hornsby Archived: munnari.OZ.AU mac/cap.patches/cap60.patch075 Application: 'cd cap60; patch -p < cap60.patches/cap60.patch075' Summary: add ULT42PFBUG define to workaround missing 802.3 AARPs WARNING: all 4.2 sites must also allow COPYALL using 'ifconfig +copyall' File: cap60/Configure File: cap60/support/ethertalk/spfiltp.c *** Configure.orig Mon Nov 25 02:20:58 1991 --- Configure Mon Nov 25 02:25:39 1991 *************** *** 1,7 **** #!/bin/sh ! # $Author: djh $ $Date: 1991/11/17 12:20:37 $ ! # $Header: /mac/src/cap60/RCS/Configure,v 2.30 1991/11/17 12:20:37 djh Rel djh $ ! # $Revision: 2.30 $ # CAP configuration shell script. This ain't perfect, but it's a start. # Execute with /bin/sh Configure if your system won't run it (ksh is okay too) # --- 1,7 ---- #!/bin/sh ! # $Author: djh $ $Date: 1991/11/24 15:25:20 $ ! # $Header: /mac/src/cap60/RCS/Configure,v 2.31 1991/11/24 15:25:20 djh Rel djh $ ! # $Revision: 2.31 $ # CAP configuration shell script. This ain't perfect, but it's a start. # Execute with /bin/sh Configure if your system won't run it (ksh is okay too) # *************** *** 560,565 **** --- 560,568 ---- # # + AUFS_README links readme file into new user's top level # define(`specialcflags',concat(specialcflags,` -DAUFS_README')) + # + # + ULT42PFBUG unpatched ULTRIX 4.2 packet filter workaround (also need COPYALL) + # define(`specialcflags',concat(specialcflags,` -DULT42PFBUG')) # # # *** support/ethertalk/spfiltp.c.orig Thu Sep 12 02:10:02 1991 --- support/ethertalk/spfiltp.c Mon Nov 25 02:27:33 1991 *************** *** 1,6 **** ! static char rcsid[] = "$Author: djh $ $Date: 1991/09/11 16:09:29 $"; ! static char rcsident[] = "$Header: /mac/src/cap60/support/ethertalk/RCS/spfiltp.c,v 2.4 1991/09/11 16:09:29 djh Rel djh $"; ! static char revision[] = "$Revision: 2.4 $"; /* * spfiltp.c - Simple "protocol" level interface to Ultrix packetfilter --- 1,6 ---- ! static char rcsid[] = "$Author: djh $ $Date: 1991/11/24 15:27:18 $"; ! static char rcsident[] = "$Header: /mac/src/cap60/support/ethertalk/RCS/spfiltp.c,v 2.5 1991/11/24 15:27:18 djh Rel djh $"; ! static char revision[] = "$Revision: 2.5 $"; /* * spfiltp.c - Simple "protocol" level interface to Ultrix packetfilter *************** *** 301,306 **** --- 301,309 ---- #define s_offset(structp, element) (&(((structp)0)->element)) offset = ((int)s_offset(struct ether_header *, ether_type))/sizeof(u_short); #ifdef PHASE2 + #ifdef ULT42PFBUG + if (sock >= 0) + #endif ULT42PFBUG offset += 4; /* shorts: 2 bytes length + 6 bytes of 802.2 and SNAP */ #endif PHASE2 *fwp++ = ENF_PUSHWORD + offset; *************** *** 441,451 **** --- 444,462 ---- iov[0].iov_base = (caddr_t)&ea; iov[0].iov_len = sizeof(ea); iov[1].iov_base = (caddr_t)header; /* consume 802.2 hdr & SNAP */ + #ifdef ULT42PFBUG + iov[1].iov_len = 0; + #else ULT42PFBUG iov[1].iov_len = sizeof(header); + #endif ULT42PFBUG iov[2].iov_base = (caddr_t)buf; iov[2].iov_len = bufsiz; cc = pi_readv(edx, iov, 3); + #ifdef ULT42PFBUG + return(cc - sizeof(ea)); + #else ULT42PFBUG return(cc - sizeof(ea) - sizeof(header)); + #endif ULT42PFBUG #else PHASE2 iov[0].iov_base = (caddr_t)&ea; iov[0].iov_len = sizeof(ea); *** README.orig Mon Nov 25 02:21:05 1991 --- README Mon Nov 25 02:25:56 1991 *************** *** 3,9 **** (For use with AppleTalk/Ethernet bridge) o RELEASE NOTES ! o CAP Distribution 6.0, Patch Level 74, November 1991 Introduction ------------ --- 3,9 ---- (For use with AppleTalk/Ethernet bridge) o RELEASE NOTES ! o CAP Distribution 6.0, Patch Level 75, November 1991 Introduction ------------