Subject: remove trailer support, fix savecore(8) bug, delete obsolete files/directories (#498) Index: src/sys/netinet/if_ether.c src/sys/pdpif/if_de.c src/sbin/savecore/savecore.c Description: 1) ethernet trailers have never been supported (good way to crash the system) and were commented out or counted as input errors in some drivers. if_ether.c and if_de.c contained large blocks of "dead code" for trailer support which could never be used. 2) if the swap partition is smaller than main memory savecore(8) will go into an endless loop when saving the core image in /usr/crash 3) htable(8) and gettable(8) were obsolete when they were copied from 4.3BSD and should have been left out when 2.10 / 2.11 started development. 4) trsp(8) won't compile. 5) usr.bin/yacc/Makefile left a file behind during "make clean" Repeat-By: 1) Observation. Look at if_ether.c OR the diff below. Almost 2KB of source code is deleted by removing trailer support. if_de.c is updated to count trailer packets as an input error the same way that if_qe.c and if_qt.c handle the packets. the compiled driver is smaller as a bonus. The compiled code of if_ether.c is noticeably smaller after creating a static routine from the (large) macro ARPTAB_LOOK. A benefit of creating arptab_look() is availability of register variables. Previously the macro was inlined in functions that had allocated all available register variables. 2) Have a system with 4096KB of memory, a swap partition of 8360 sectors and have the system crash. Memory is written to the swap partition starting at offset DUMPLO sectors (512 by default) for a maximum of 8360-512 sectors or 7848 sectors (3924KB). When the system is booted savecore will write 3924*1024 (4018176) bytes to core.N and go into an endless cpu loop (no further writes are done). Having a too small swap partition is not wise of course. The bug is that savecore(8) does not check for read() returning 0 when the end of the partition is encountered. 3) gettable and htable were used over 40 years ago to download the NIC standard host tables and create /etc/{hosts,networks,gateways} files. Obsoleted by BIND and resolver routines. The file: /usr/src/bin/pathnames.h looked out of place. rcp.c is updated and the lone .h file in usr/src/usr.bin will be removed. /usr/src/bin/nm.c.use.disk is removed as junk. reading the source we see the program is extremely slow and was never updated to understand the new object file format. src/bin/PORT contains 4.3 versions of ar/ps/ld/nm. 2.11 has its own modern versions of those programs and will not use the old versions in PORT. The same for the directory src/usr.bin/PORT - see patch #497 where usr.bin/PORT was flagged for removal. 4) Either observation /usr/src/usr.sbin/Makefile says: # This is broken and doesn't compile - thus it is not included in SUBDIR above. BROKEN= trsp OR cd /usr/src/usr.sbin/trsp make trsp compiles now using token pasting from the updated cpp and fixing what appear to be typos. Does it run correctly? Heck no ;) But at least now it compiles, does nothing successfully and it's in a state someone can play with it when they get bored 5) after installing yacc doing "make clean" leaves the 'strings' file behind. Fix: The following files and directories (trailing /) are removed. if you have a sentimental attachment to these create backups or don't run the removal script/step: /usr/man/cat8/htable.0 /usr/man/cat8/gettable.0 /usr/src/bin/MANIFEST /usr/src/bin/PORT/ /usr/src/bin/nm.c.use.disk /usr/src/bin/pathnames.h /usr/src/man/man8/htable.8 /usr/src/usr.bin/MANIFEST /usr/src/usr.bin/PORT/ /usr/src/usr.sbin/htable/ /usr/src/usr.sbin/gettable/ Cut where indicated and save to a file (/tmp/498.patch). Then: cd / patch -p0 < /tmp/498.patch rm -f /usr/man/cat8/htable.0 rm -f /usr/man/cat8/gettable.0 rm -f /usr/src/bin/MANIFEST rm -fr /usr/src/bin/PORT rm -f /usr/src/bin/nm.c.use.disk rm -f /usr/src/bin/pathnames.h rm -f /usr/src/man/man8/htable.8 rm -f /usr/src/usr.bin/MANIFEST rm -fr /usr/src/usr.bin/PORT rm -fr /usr/src/usr.sbin/htable rm -fr /usr/src/usr.sbin/gettable cd /usr/src/sbin/savecore make install make clean cd /usr/src/usr.sbin/trsp make install make clean cd /usr/src/usr.bin/yacc make clean # rebuild the kernel cd /sys/YOUR_KERNEL_BUILD_DIRECTORY make clean make mv /unix /ounix mv /netnix /onetnix install -m 644 unix netnix / This and previous updates to 2.11BSD are available at the following locations: ftp://ftp.dfupdate.se/pub/pdp11/2.11BSD https://www.tuhs.org/Archive/Distributions/UCB/2.11BSD/Patches/ ftp://ftp.2bsd.com/2.11BSD http://www.2bsd.com/2.11BSD/ ---------------------------cut here-------------------- *** /usr/src/sys/netinet/if_ether.c.old Thu Jan 5 23:43:52 1989 --- /usr/src/sys/netinet/if_ether.c Sat Aug 30 23:17:56 2025 *************** *** 9,23 **** * software without specific prior written permission. This software * is provided ``as is'' without express or implied warranty. * ! * @(#)if_ether.c 7.6 (Berkeley) 12/7/87 */ /* * Ethernet address resolution protocol. - * TODO: - * run at splnet (add ARP protocol intr.) - * link entries onto hash chains, keep free list - * add "inuse/lock" bit (or ref. count) along with valid bit */ #include "ether.h" --- 9,19 ---- * software without specific prior written permission. This software * is provided ``as is'' without express or implied warranty. * ! * @(#)if_ether.c 7.8 (2.11BSD) 2025/8/21 */ /* * Ethernet address resolution protocol. */ #include "ether.h" *************** *** 47,69 **** struct arptab arptab[ARPTAB_SIZE]; int arptab_size = ARPTAB_SIZE; /* for arp command */ - /* - * ARP trailer negotiation. Trailer protocol is not IP specific, - * but ARP request/response use IP addresses. - */ - #define ETHERTYPE_IPTRAILERS ETHERTYPE_TRAIL - #define ARPTAB_HASH(a) \ ((short)((((a) >> 16) ^ (a)) & 0x7fff) % ARPTAB_NB) ! #define ARPTAB_LOOK(at,addr) { \ ! register n; \ ! at = &arptab[ARPTAB_HASH(addr) * ARPTAB_BSIZ]; \ ! for (n = 0 ; n < ARPTAB_BSIZ ; n++,at++) \ ! if (at->at_iaddr.s_addr == addr) \ ! break; \ ! if (n >= ARPTAB_BSIZ) \ ! at = 0; \ } /* timer values */ --- 43,64 ---- struct arptab arptab[ARPTAB_SIZE]; int arptab_size = ARPTAB_SIZE; /* for arp command */ #define ARPTAB_HASH(a) \ ((short)((((a) >> 16) ^ (a)) & 0x7fff) % ARPTAB_NB) ! static struct arptab *arptab_look(u_long addr) ! { ! register int n; ! register struct arptab *at; ! ! at = &arptab[ARPTAB_HASH(addr) * ARPTAB_BSIZ]; ! for (n = 0 ; n < ARPTAB_BSIZ ; n++,at++) ! if (at->at_iaddr.s_addr == addr) ! break; ! if (n >= ARPTAB_BSIZ) ! at = 0; ! return (at); ! } /* timer values */ *************** *** 104,110 **** struct in_addr *addr; { register struct mbuf *m; ! register struct ether_header *eh; register struct ether_arp *ea; struct sockaddr sa; --- 99,105 ---- struct in_addr *addr; { register struct mbuf *m; ! struct ether_header *eh; register struct ether_arp *ea; struct sockaddr sa; *************** *** 152,158 **** register struct arpcom *ac; struct mbuf *m; register struct in_addr *destip; ! register u_char *desten; int *usetrailers; { register struct arptab *at; --- 147,153 ---- register struct arpcom *ac; struct mbuf *m; register struct in_addr *destip; ! u_char *desten; int *usetrailers; { register struct arptab *at; *************** *** 194,200 **** } } s = splimp(); ! ARPTAB_LOOK(at, destip->s_addr); if (at == 0) { /* not found */ if (ac->ac_if.if_flags & IFF_NOARP) { bcopy((caddr_t)ac->ac_enaddr, (caddr_t)desten, 3); --- 189,195 ---- } } s = splimp(); ! at = arptab_look(destip->s_addr); if (at == 0) { /* not found */ if (ac->ac_if.if_flags & IFF_NOARP) { bcopy((caddr_t)ac->ac_enaddr, (caddr_t)desten, 3); *************** *** 215,226 **** } at->at_timer = 0; /* restart the timer */ if (at->at_flags & ATF_COM) { /* entry IS complete */ ! bcopy((caddr_t)at->at_enaddr, (caddr_t)desten, ! sizeof(at->at_enaddr)); ! #ifdef I_WANT_MY_MACHINE_TO_CRASH ! if (at->at_flags & ATF_USETRAILERS) ! *usetrailers = 1; ! #endif splx(s); return (1); } --- 210,216 ---- } at->at_timer = 0; /* restart the timer */ if (at->at_flags & ATF_COM) { /* entry IS complete */ ! bcopy((caddr_t)at->at_enaddr, (caddr_t)desten, sizeof(at->at_enaddr)); splx(s); return (1); } *************** *** 259,275 **** goto out; if (m->m_len < sizeof(struct arphdr) + 2 * ar->ar_hln + 2 * ar->ar_pln) goto out; ! ! switch (ntohs(ar->ar_pro)) { ! ! case ETHERTYPE_IP: ! case ETHERTYPE_IPTRAILERS: in_arpinput(ac, m); return; ! ! default: ! break; ! } out: m_freem(m); } --- 249,259 ---- goto out; if (m->m_len < sizeof(struct arphdr) + 2 * ar->ar_hln + 2 * ar->ar_pln) goto out; ! if (ntohs(ar->ar_pro) == ETHERTYPE_IP) ! { in_arpinput(ac, m); return; ! } out: m_freem(m); } *************** *** 279,292 **** * Algorithm is that given in RFC 826. * In addition, a sanity check is performed on the sender * protocol address, to catch impersonators. - * We also handle negotiations for use of trailer protocol: - * ARP replies for protocol type ETHERTYPE_TRAIL are sent - * along with IP replies if we want trailers sent to us, - * and also send them in response to IP replies. - * This allows either end to announce the desire to receive - * trailer packets. - * We reply to requests for ETHERTYPE_TRAIL protocol as well, - * but don't normally send requests. */ in_arpinput(ac, m) register struct arpcom *ac; --- 263,268 ---- *************** *** 295,305 **** register struct ether_arp *ea; struct ether_header *eh; register struct arptab *at; /* same as "merge" flag */ - struct mbuf *mcopy = 0; struct sockaddr_in sin; struct sockaddr sa; struct in_addr isaddr, itaddr, myaddr; ! int proto, op, s, completed = 0; myaddr = ac->ac_ipaddr; ea = mtod(m, struct ether_arp *); --- 271,280 ---- register struct ether_arp *ea; struct ether_header *eh; register struct arptab *at; /* same as "merge" flag */ struct sockaddr_in sin; struct sockaddr sa; struct in_addr isaddr, itaddr, myaddr; ! int proto, op, s; myaddr = ac->ac_ipaddr; ea = mtod(m, struct ether_arp *); *************** *** 326,337 **** goto out; } s = splimp(); ! ARPTAB_LOOK(at, isaddr.s_addr); if (at) { bcopy((caddr_t)ea->arp_sha, (caddr_t)at->at_enaddr, sizeof(ea->arp_sha)); - if ((at->at_flags & ATF_COM) == 0) - completed = 1; at->at_flags |= ATF_COM; if (at->at_hold) { sin.sin_family = AF_INET; --- 301,310 ---- goto out; } s = splimp(); ! at = arptab_look(isaddr.s_addr); if (at) { bcopy((caddr_t)ea->arp_sha, (caddr_t)at->at_enaddr, sizeof(ea->arp_sha)); at->at_flags |= ATF_COM; if (at->at_hold) { sin.sin_family = AF_INET; *************** *** 346,381 **** if (at = arptnew(&isaddr)) { bcopy((caddr_t)ea->arp_sha, (caddr_t)at->at_enaddr, sizeof(ea->arp_sha)); - completed = 1; at->at_flags |= ATF_COM; } } splx(s); reply: ! switch (proto) { - case ETHERTYPE_IPTRAILERS: - /* partner says trailers are OK */ - if (at) - at->at_flags |= ATF_USETRAILERS; - /* - * Reply to request iff we want trailers. - */ - if (op != ARPOP_REQUEST || ac->ac_if.if_flags & IFF_NOTRAILERS) - goto out; - break; - - case ETHERTYPE_IP: - /* - * Reply if this is an IP request, - * or if we want to send a trailer response. - * Send the latter only to the IP response - * that completes the current ARP entry. - */ - if (op != ARPOP_REQUEST && - (completed == 0 || ac->ac_if.if_flags & IFF_NOTRAILERS)) - goto out; - } if (itaddr.s_addr == myaddr.s_addr) { /* I am the target */ bcopy((caddr_t)ea->arp_sha, (caddr_t)ea->arp_tha, --- 319,336 ---- if (at = arptnew(&isaddr)) { bcopy((caddr_t)ea->arp_sha, (caddr_t)at->at_enaddr, sizeof(ea->arp_sha)); at->at_flags |= ATF_COM; } } splx(s); reply: ! /* ! * If this is a Reply then we're done (goto out). ! * Else this is a Request so send a Reply. ! */ ! if (op != ARPOP_REQUEST) /* Same as op == ARPOP_REPLY */ ! goto out; if (itaddr.s_addr == myaddr.s_addr) { /* I am the target */ bcopy((caddr_t)ea->arp_sha, (caddr_t)ea->arp_tha, *************** *** 383,389 **** bcopy((caddr_t)ac->ac_enaddr, (caddr_t)ea->arp_sha, sizeof(ea->arp_sha)); } else { ! ARPTAB_LOOK(at, itaddr.s_addr); if (at == NULL || (at->at_flags & ATF_PUBL) == 0) goto out; bcopy((caddr_t)ea->arp_sha, (caddr_t)ea->arp_tha, --- 338,344 ---- bcopy((caddr_t)ac->ac_enaddr, (caddr_t)ea->arp_sha, sizeof(ea->arp_sha)); } else { ! at = arptab_look(itaddr.s_addr); if (at == NULL || (at->at_flags & ATF_PUBL) == 0) goto out; bcopy((caddr_t)ea->arp_sha, (caddr_t)ea->arp_tha, *************** *** 397,414 **** bcopy((caddr_t)&itaddr, (caddr_t)ea->arp_spa, sizeof(ea->arp_spa)); ea->arp_op = htons(ARPOP_REPLY); - /* - * If incoming packet was an IP reply, - * we are sending a reply for type IPTRAILERS. - * If we are sending a reply for type IP - * and we want to receive trailers, - * send a trailer reply as well. - */ - if (op == ARPOP_REPLY) - ea->arp_pro = htons(ETHERTYPE_IPTRAILERS); - else if (proto == ETHERTYPE_IP && - (ac->ac_if.if_flags & IFF_NOTRAILERS) == 0) - mcopy = m_copy(m, 0, (int)M_COPYALL); eh = (struct ether_header *)sa.sa_data; bcopy((caddr_t)ea->arp_tha, (caddr_t)eh->ether_dhost, sizeof(eh->ether_dhost)); --- 352,357 ---- *************** *** 415,425 **** eh->ether_type = ETHERTYPE_ARP; sa.sa_family = AF_UNSPEC; (*ac->ac_if.if_output)(&ac->ac_if, m, &sa); - if (mcopy) { - ea = mtod(mcopy, struct ether_arp *); - ea->arp_pro = htons(ETHERTYPE_IPTRAILERS); - (*ac->ac_if.if_output)(&ac->ac_if, mcopy, &sa); - } return; out: m_freem(m); --- 358,363 ---- *************** *** 498,504 **** return (EAFNOSUPPORT); sin = (struct sockaddr_in *)&ar->arp_pa; s = splimp(); ! ARPTAB_LOOK(at, sin->sin_addr.s_addr); if (at == NULL) { /* not found */ if (cmd != SIOCSARP) { splx(s); --- 436,442 ---- return (EAFNOSUPPORT); sin = (struct sockaddr_in *)&ar->arp_pa; s = splimp(); ! at = arptab_look(sin->sin_addr.s_addr); if (at == NULL) { /* not found */ if (cmd != SIOCSARP) { splx(s); *** /usr/src/sys/pdpif/if_de.c.old Thu Mar 13 07:08:52 2025 --- /usr/src/sys/pdpif/if_de.c Sun Aug 31 13:18:26 2025 *************** *** 1,12 **** /* ! * SCCSID: @(#)if_de.c 1.1 (2.11BSD GTE) 12/31/93 ! * 2.11BSD - Remove dereset since 1) it was never called, and 2) ! * wouldn't work if it were called. Also uballoc and ! * ubmalloc calling convention changed. - sms * ! * if_de.c 1.2 (2.11BSD) 12-Mar-2025 * Add printout of type of controller and MAC address for * Unibus ethernet similarly to what Qbus drivers were doing. */ #include "de.h" #if NDE > 0 --- 1,17 ---- /* ! * SCCSID: @(#)if_de.c 2.0 (2.11BSD) 2025/8/31 * ! * 2.11BSD - Remove dereset since 1) it was never called, and 2) ! * wouldn't work if it were called. Also uballoc and ! * ubmalloc calling convention changed. - sms ! * ! * 1.2 12-Mar-2025 * Add printout of type of controller and MAC address for * Unibus ethernet similarly to what Qbus drivers were doing. + * + * 2.0 31-Aug-2025 + * Remove trailer support. If a packet with trailer info is received + * increment the input error count and return. */ #include "de.h" #if NDE > 0 *************** *** 620,686 **** struct ether_header *eh; struct mbuf *m; struct protosw *pr; ! int off, resid, s; struct ifqueue *inq; segm sav5; int type; - /* - * Deal with trailer protocol: if type is trailer - * get true type from first 16-bit word past data. - * Remember that type was trailer by setting off. - */ saveseg5(sav5); mapseg5(ifrw->ifrw_click, MAPBUFDESC); eh = (struct ether_header *) SEG5; - type = eh->ether_type = ntohs((u_short)eh->ether_type); - - #define dedataaddr(eh, off, type) ((type)(((caddr_t)((eh)+1)+(off)))) - if (type >= ETHERTYPE_TRAIL && - type < ETHERTYPE_TRAIL+ETHERTYPE_NTRAILER) { - off = (type - ETHERTYPE_TRAIL) * 512; - if (off >= ETHERMTU) { - restorseg5(sav5); - return; /* sanity */ - } - type = ntohs(*dedataaddr(eh, off, u_short *)); - resid = ntohs(*(dedataaddr(eh, off+2, u_short *))); - - if (off + resid > len) { - restorseg5(sav5); - return; /* sanity */ - } - len = off + resid; - } else - off = 0; - - if (len == 0) { - restorseg5(sav5); - return; - } - restorseg5(sav5); /* ! * Pull packet off interface. Off is nonzero if packet ! * has trailing header; deget will then force this header ! * information to be at the front, but we still have to drop ! * the type and length which are at the front of any trailer data. */ ! m = deget(&ds->ds_deuba, ifrw, len, off, &ds->ds_if); if (m == 0) return; - if (off) { - struct ifnet *ifp; - - ifp = *(mtod(m, struct ifnet **)); - m->m_off += 2 * sizeof (u_short); - m->m_len -= 2 * sizeof (u_short); - *(mtod(m, struct ifnet **)) = ifp; - } switch (type) { --- 625,655 ---- struct ether_header *eh; struct mbuf *m; struct protosw *pr; ! int s; struct ifqueue *inq; segm sav5; int type; saveseg5(sav5); mapseg5(ifrw->ifrw_click, MAPBUFDESC); eh = (struct ether_header *) SEG5; type = eh->ether_type = ntohs((u_short)eh->ether_type); restorseg5(sav5); + if (len == 0 || type >= ETHERTYPE_TRAIL && + type < ETHERTYPE_TRAIL+ETHERTYPE_NTRAILER) { + ds->ds_if.if_ierrors++; + return; + } + /* ! * Pull packet off interface. */ ! m = deget(&ds->ds_deuba, ifrw, len, 0, &ds->ds_if); if (m == 0) return; switch (type) { *** /usr/src/bin/rcp.c.old Thu Mar 21 21:55:04 1996 --- /usr/src/bin/rcp.c Sat Aug 30 21:42:47 2025 *************** *** 20,26 **** "@(#) Copyright (c) 1983 The Regents of the University of California.\n\ All rights reserved.\n"; ! static char sccsid[] = "@(#)rcp.c 5.20.1 (2.11BSD) 1996/3/21"; #endif /* not lint */ /* --- 20,26 ---- "@(#) Copyright (c) 1983 The Regents of the University of California.\n\ All rights reserved.\n"; ! static char sccsid[] = "@(#)rcp.c 5.20.2 (2.11BSD) 2025/8/30"; #endif /* not lint */ /* *************** *** 40,46 **** #include #include #include ! #include "pathnames.h" #ifdef KERBEROS #include --- 40,49 ---- #include #include #include ! ! #define _PATH_BSHELL "/bin/sh" ! #define _PATH_CP "/bin/cp" ! #define _PATH_RSH "/usr/ucb/rsh" #ifdef KERBEROS #include *** /usr/src/man/man8/Makefile.old Sat Jan 11 00:27:46 1997 --- /usr/src/man/man8/Makefile Sun Aug 31 14:47:31 2025 *************** *** 14,20 **** # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. # ! # @(#)Makefile 5.4.7 (2.11BSD) 1997/1/10 # MDIR= /usr/man/cat8 SRCS= XNSrouted.8 adduser.8 autoconfig.8 \ --- 14,20 ---- # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. # ! # @(#)Makefile 5.4.8 (2.11BSD) 2025/8/31 # MDIR= /usr/man/cat8 SRCS= XNSrouted.8 adduser.8 autoconfig.8 \ *************** *** 22,28 **** boot.8 \ drtest.8 dump.8 dumpdir.8 \ format.8 fsck.8 \ ! getty.8 htable.8 \ intro.8 lpc.8 lpd.8 makedev.8 \ makekey.8 \ named.8 pac.8 \ --- 22,28 ---- boot.8 \ drtest.8 dump.8 dumpdir.8 \ format.8 fsck.8 \ ! getty.8 \ intro.8 lpc.8 lpd.8 makedev.8 \ makekey.8 \ named.8 pac.8 \ *************** *** 37,43 **** boot.0 \ drtest.0 dump.0 dumpdir.0 \ format.0 fsck.0 \ ! getty.0 htable.0 \ intro.0 lpc.0 lpd.0 makedev.0 \ makekey.0 \ named.0 pac.0 \ --- 37,43 ---- boot.0 \ drtest.0 dump.0 dumpdir.0 \ format.0 fsck.0 \ ! getty.0 \ intro.0 lpc.0 lpd.0 makedev.0 \ makekey.0 \ named.0 pac.0 \ *** /usr/src/sbin/savecore/savecore.c.old Sat Jul 15 23:44:53 1995 --- /usr/src/sbin/savecore/savecore.c Sat Aug 30 23:14:21 2025 *************** *** 1,5 **** /* ! * savecore, 1.1 (2.11BSD) 1995/07/15 */ #include --- 1,5 ---- /* ! * savecore, 1.2 (2.11BSD) 2025/8/30 */ #include *************** *** 324,329 **** --- 324,337 ---- perror("Read"); break; } + /* + * n = 0 means end-of-file was encountered. this happens when the swap + * partition is smaller than physical memory. The core image will be + * incomplete but usable (since kernel tables are in low memory) + */ + printf("n: %d physmem:%u\n", n, physmem); + if (n == 0) + break; Write(ofd, cp, n); physmem -= n/CLICK; } *** /usr/src/usr.bin/yacc/Makefile.old Wed Aug 20 21:50:55 2025 --- /usr/src/usr.bin/yacc/Makefile Sat Aug 30 09:06:36 2025 *************** *** 1,5 **** # ! # @(#)Makefile 4.3 (2.11BSD) 2025/8/20 # DESTDIR= SEPFLAG= -i --- 1,5 ---- # ! # @(#)Makefile 4.4 (2.11BSD) 2025/8/30 # DESTDIR= SEPFLAG= -i *************** *** 27,30 **** install -s -m 755 yacc $(DESTDIR)/usr/bin install -c yaccpar $(DESTDIR)/usr/share/misc clean : ! -rm -f *.o yacc x.c xs.c --- 27,30 ---- install -s -m 755 yacc $(DESTDIR)/usr/bin install -c yaccpar $(DESTDIR)/usr/share/misc clean : ! -rm -f *.o yacc x.c xs.c strings *** /usr/src/usr.sbin/trsp/trsp.c.old Sun Dec 25 01:24:29 1988 --- /usr/src/usr.sbin/trsp/trsp.c Mon Sep 1 19:46:54 2025 *************** *** 4,24 **** * specifies the terms and conditions for redistribution. */ ! #ifndef lint char copyright[] = "@(#) Copyright (c) 1980 Regents of the University of California.\n\ All rights reserved.\n"; - #endif not lint ! #ifndef lint ! static char sccsid[] = "@(#)trsp.c 6.1 (Berkeley) 10/8/85"; ! #endif not lint #include #include #include #define PRUREQUESTS #include #include #include --- 4,24 ---- * specifies the terms and conditions for redistribution. */ ! #if !defined(lint) && defined(DOSCCS) char copyright[] = "@(#) Copyright (c) 1980 Regents of the University of California.\n\ All rights reserved.\n"; ! static char sccsid[] = "@(#)trsp.c 6.2 (2.11BSD) 2025/8/31"; ! #endif #include #include #include #define PRUREQUESTS + #define SUPERVISOR /* for 2.11BSD to get prurequests[] */ #include + #undef SUPERVISOR /* causes problems with other network header files */ #include #include *************** *** 35,40 **** --- 35,41 ---- #include #include #include + #include #include #define SANAMES #include *************** *** 64,70 **** char **argv; { int i, mask = 0, npcbs = 0; ! char *system = "/vmunix", *core = "/dev/kmem"; argc--, argv++; again: --- 65,71 ---- char **argv; { int i, mask = 0, npcbs = 0; ! char *system = "/unix", *core = "/dev/kmem"; argc--, argv++; again: *************** *** 282,293 **** printf("flags=%x", flags); if (flags) { char *cp = "<"; ! #define pf(f) { if (flags&SP_/**/f) { printf("%s%s", cp, "f"); cp = ","; } } pf(SP); pf(SA); pf(OB); pf(EM); printf(">"); } printf(", "); ! #define p2(f) { printf("%s = %x, ", "f", si->si_/**/f); } p2(sid);p2(did);p2(dt); printf("\n\tsna="); ns_printhost(&si->si_sna); --- 283,294 ---- printf("flags=%x", flags); if (flags) { char *cp = "<"; ! #define pf(f) { if (flags&SP_##f) { printf("%s%s", cp, "f"); cp = ","; } } pf(SP); pf(SA); pf(OB); pf(EM); printf(">"); } printf(", "); ! #define p2(f) { printf("%s = %x, ", "f", si->si_##f); } p2(sid);p2(did);p2(dt); printf("\n\tsna="); ns_printhost(&si->si_sna); *************** *** 306,320 **** printf("\n"); if (sp == 0) return; ! #define p3(f) { printf("%s = %x, ", "f", sp->s_/**/f); } if(sflag) { ! printf("\t"); p3(rack); p3(ralo); p3(snt); p3(flags); #undef pf ! #define pf(f) { if (flags&SF_/**/f) { printf("%s%s", cp, "f"); cp = ","; } } flags = sp->s_flags; if (flags || sp->s_oobflags) { char *cp = "<"; ! pf(AK); pf(DELACK); pf(HI); pf(HO); flags = sp->s_oobflags; pf(SOOB); pf(IOOB); printf(">"); --- 307,322 ---- printf("\n"); if (sp == 0) return; ! #define p3(f) { printf("%s = %x, ", "f", sp->s_##f); } if(sflag) { ! printf("\t"); p3(rack); p3(ralo); p3(snxt); p3(flags); /* was p3(snt) - likely a typo */ ! #undef pf ! #define pf(f) { if (flags&SF_##f) { printf("%s%s", cp, "f"); cp = ","; } } flags = sp->s_flags; if (flags || sp->s_oobflags) { char *cp = "<"; ! pf(ACKNOW); pf(DELACK); pf(HI); pf(HO); /* was pf(AK) - likely a typo */ flags = sp->s_oobflags; pf(SOOB); pf(IOOB); printf(">"); *** /usr/src/usr.sbin/trsp/trsp.8.old Sun Dec 14 17:08:50 1986 --- /usr/src/usr.sbin/trsp/trsp.8 Mon Sep 1 19:49:15 2025 *************** *** 2,10 **** .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" ! .\" @(#)trsp.8c 6.1 (Berkeley) 10/8/85 .\" ! .TH TRSP 8c "October 8, 1985" .UC 5 .SH NAME trsp \- transliterate sequenced packet protocol trace --- 2,10 ---- .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" ! .\" @(#)trsp.8 6.2 (2.11BSD) 2025/9/1 .\" ! .TH TRSP 8 "September 2, 2025" .UC 5 .SH NAME trsp \- transliterate sequenced packet protocol trace *** /usr/src/usr.sbin/Makefile.old Sun Aug 31 14:33:48 2025 --- /usr/src/usr.sbin/Makefile Sun Aug 31 20:54:40 2025 *************** *** 1,7 **** # # Public domain - 1996/10/24 - sms # ! # @(#)Makefile 1.3 (2.11BSD) 2021/8/30 # DESTDIR= CFLAGS= -O --- 1,7 ---- # # Public domain - 1996/10/24 - sms # ! # @(#)Makefile 1.4 (2.11BSD) 2025/8/31 # DESTDIR= CFLAGS= -O *************** *** 8,20 **** SEPFLAG= -i SUBDIR= ac accton arff arp bad144 catman chown chroot config cron dev_mkdb \ ! diskpart edquota flcopy gettable htable implog implogd inetd kgmon \ lpr makewhatis mkhosts mklost+found mkproto named nc ntp pstat quot \ quotaon repquota rmt rwhod rxformat sa sendmail sysgen syslogd timed \ ! traceroute trpt update vipw ! ! # This is broken and doesn't compile - thus it is not included in SUBDIR above. ! BROKEN= trsp all: ${SUBDIR} --- 8,17 ---- SEPFLAG= -i SUBDIR= ac accton arff arp bad144 catman chown chroot config cron dev_mkdb \ ! diskpart edquota flcopy implog implogd inetd kgmon \ lpr makewhatis mkhosts mklost+found mkproto named nc ntp pstat quot \ quotaon repquota rmt rwhod rxformat sa sendmail sysgen syslogd timed \ ! traceroute trpt trsp update vipw all: ${SUBDIR} *** /VERSION.old Sun Aug 31 14:43:07 2025 --- /VERSION Sun Aug 31 14:43:26 2025 *************** *** 1,5 **** ! Current Patch Level: 497 ! Date: August 31, 2025 2.11 BSD ============ --- 1,5 ---- ! Current Patch Level: 498 ! Date: September 7, 2025 2.11 BSD ============