Remove files that don't go into releases
authorPaul Mackerras <paulus@samba.org>
Sun, 27 Jul 2008 12:23:45 +0000 (22:23 +1000)
committerPaul Mackerras <paulus@samba.org>
Sun, 27 Jul 2008 12:23:45 +0000 (22:23 +1000)
This mainly removes files specific to platforms that we no longer support,
and removes a few other outdated files.

Signed-off-by: Paul Mackerras <paulus@samba.org>
173 files changed:
NeXT/ChangeLog.rtf [deleted file]
NeXT/Examples/NXHosting_with_PPP [deleted file]
NeXT/Examples/Persistent_Connection [deleted file]
NeXT/Examples/README [deleted file]
NeXT/Examples/chap-secrets.example [deleted file]
NeXT/Examples/flow-control-hints [deleted file]
NeXT/Examples/ip-down.example [deleted file]
NeXT/Examples/ip-up.example [deleted file]
NeXT/Examples/options.example [deleted file]
NeXT/Examples/pap-secrets.example [deleted file]
NeXT/Examples/ppp_multiple_hosts.tar.gz [deleted file]
NeXT/Examples/pppdown [deleted file]
NeXT/Examples/pppkill.c [deleted file]
NeXT/Examples/pppup.annex [deleted file]
NeXT/Examples/pppup.direct [deleted file]
NeXT/Examples/pppup.portmaster [deleted file]
NeXT/Examples/pppup.remote [deleted file]
NeXT/Examples/pppup.zyxel [deleted file]
NeXT/Examples/redial.sh [deleted file]
NeXT/INSTALL [deleted file]
NeXT/Load_Commands.sect [deleted file]
NeXT/Makefile [deleted file]
NeXT/Makefile.top [deleted file]
NeXT/NeXT_Version.h [deleted file]
NeXT/TODO.NeXT [deleted file]
NeXT/Unload_Commands.sect [deleted file]
NeXT/bsd-comp.c [deleted file]
NeXT/hppa/README.hppa [deleted file]
NeXT/if_ppp.c [deleted file]
NeXT/if_pppvar.h [deleted file]
NeXT/inlines.h [deleted file]
NeXT/libposix/Makefile [deleted file]
NeXT/libposix/libposix.c [deleted file]
NeXT/linedisc.h [deleted file]
NeXT/mach/features.h [deleted file]
NeXT/nbq.h [deleted file]
NeXT/netbuf.h [deleted file]
NeXT/ppp_tty.c [deleted file]
NeXT/spl.h [deleted file]
NeXT/vjcompress.c [deleted file]
README.NeXT [deleted file]
README.aix4 [deleted file]
README.bsd [deleted file]
README.osf [deleted file]
README.sunos4 [deleted file]
README.svr4 [deleted file]
README.ultrix [deleted file]
TODO [deleted file]
aix4/Makefile [deleted file]
aix4/Makefile.top [deleted file]
aix4/load [deleted file]
aix4/ppp_async.c [deleted file]
aix4/ppp_async.exp [deleted file]
aix4/ppp_comp.c [deleted file]
aix4/ppp_if.c [deleted file]
aix4/ppp_if.exp [deleted file]
chat/Makefile.NeXT [deleted file]
chat/Makefile.aix4 [deleted file]
chat/Makefile.bsd [deleted file]
chat/Makefile.netbsd-1.2 [deleted file]
chat/Makefile.osf [deleted file]
chat/Makefile.sunos4 [deleted file]
chat/Makefile.svr4 [deleted file]
chat/Makefile.ultrix [deleted file]
freebsd-2.0/Makefile.top [deleted file]
freebsd-2.0/files-2.2.patch [deleted file]
freebsd-2.0/files.patch [deleted file]
freebsd-2.0/if_ppp.c [deleted file]
freebsd-2.0/if_pppvar.h [deleted file]
freebsd-2.0/kinstall.sh [deleted file]
freebsd-2.0/ppp_defs.h [deleted file]
freebsd-2.0/ppp_tty.c [deleted file]
freebsd-2.0/pppcompress.c [deleted file]
freebsd-2.0/pppcompress.h [deleted file]
freebsd-2.2.8/Makefile.top [deleted file]
freebsd-2.2.8/kinstall.sh [deleted file]
freebsd-2.2.8/patch.if_ppp.c [deleted file]
freebsd-2.2.8/patch.if_ppp.h [deleted file]
freebsd-2.2.8/patch.ppp_tty.c [deleted file]
freebsd-3.0/Makefile.top [deleted file]
freebsd-3.0/kinstall.sh [deleted file]
freebsd-3.0/patch.if_ppp.c [deleted file]
freebsd-3.0/patch.if_ppp.h [deleted file]
freebsd-3.0/patch.ppp_tty.c [deleted file]
freebsd-3.0/patch.ttycom.h [deleted file]
linux/patch-include [deleted file]
linux/ppp.c [deleted file]
linux/ppp_deflate.c [deleted file]
netbsd-1.1/Makefile.top [deleted file]
netbsd-1.1/bsd-comp.c [deleted file]
netbsd-1.1/files.oldconf.patch [deleted file]
netbsd-1.1/files.patch [deleted file]
netbsd-1.1/if_ppp.c [deleted file]
netbsd-1.1/if_pppvar.h [deleted file]
netbsd-1.1/kinstall.sh [deleted file]
netbsd-1.1/ppp-deflate.c [deleted file]
netbsd-1.1/ppp_tty.c [deleted file]
netbsd-1.1/slcompress.c [deleted file]
netbsd-1.1/slcompress.h [deleted file]
netbsd-1.2/Makefile.top [deleted file]
netbsd-1.2/bsd-comp.c [deleted file]
netbsd-1.2/if_ppp.c [deleted file]
netbsd-1.2/if_pppvar.h [deleted file]
netbsd-1.2/kinstall.sh [deleted file]
netbsd-1.2/ppp-deflate.c [deleted file]
netbsd-1.2/ppp_tty.c [deleted file]
netbsd-1.2/slcompress.c [deleted file]
netbsd-1.2/slcompress.h [deleted file]
osf1/Makefile [deleted file]
osf1/Makefile.top [deleted file]
osf1/makevers [deleted file]
osf1/ppp_init.c [deleted file]
pppd/Makefile.NeXT [deleted file]
pppd/Makefile.aix4 [deleted file]
pppd/Makefile.bsd [deleted file]
pppd/Makefile.netbsd-1.2 [deleted file]
pppd/Makefile.osf [deleted file]
pppd/Makefile.sunos4 [deleted file]
pppd/Makefile.svr4 [deleted file]
pppd/Makefile.ultrix [deleted file]
pppd/sys-NeXT.c [deleted file]
pppd/sys-aix4.c [deleted file]
pppd/sys-bsd.c [deleted file]
pppd/sys-osf.c [deleted file]
pppd/sys-sunos4.c [deleted file]
pppd/sys-svr4.c [deleted file]
pppd/sys-ultrix.c [deleted file]
pppdump/Makefile.sunos4 [deleted file]
pppdump/Makefile.svr4 [deleted file]
pppstats/Makefile.NeXT [deleted file]
pppstats/Makefile.aix4 [deleted file]
pppstats/Makefile.bsd [deleted file]
pppstats/Makefile.netbsd-1.2 [deleted file]
pppstats/Makefile.osf [deleted file]
pppstats/Makefile.sunos4 [deleted file]
pppstats/Makefile.svr4 [deleted file]
pppstats/Makefile.ultrix [deleted file]
sunos4/Makedefs [deleted file]
sunos4/Makefile [deleted file]
sunos4/Makefile.top [deleted file]
sunos4/if_ppp_vdcmd.c [deleted file]
sunos4/ppp.INSTALL [deleted file]
sunos4/ppp_ahdlc_vdcmd.c [deleted file]
sunos4/ppp_comp_vdcmd.c [deleted file]
sunos4/ppp_vdcmd.c [deleted file]
svr4/Makedefs [deleted file]
svr4/Makedefs.sol2 [deleted file]
svr4/Makefile.sol2 [deleted file]
svr4/Makefile.sol2-64 [deleted file]
svr4/Makefile.svr4 [deleted file]
svr4/Makefile.top [deleted file]
svr4/ppp.Master [deleted file]
svr4/ppp.Node [deleted file]
svr4/ppp.System [deleted file]
svr4/ppp.conf [deleted file]
svr4/ppp_ahdl.Master [deleted file]
svr4/ppp_ahdl.System [deleted file]
svr4/ppp_ahdlc_mod.c [deleted file]
svr4/ppp_comp.Master [deleted file]
svr4/ppp_comp.System [deleted file]
svr4/ppp_comp_mod.c [deleted file]
svr4/ppp_mod.c [deleted file]
ultrix/Makefile.top [deleted file]
ultrix/bsd-comp.c [deleted file]
ultrix/if_ppp.c [deleted file]
ultrix/if_ppp.h [deleted file]
ultrix/if_pppvar.h [deleted file]
ultrix/patches [deleted file]
ultrix/ppp-deflate.c [deleted file]
ultrix/ppp_tty.c [deleted file]
ultrix/slcompress.c [deleted file]
ultrix/slcompress.h [deleted file]
ultrix/upgrade [deleted file]

diff --git a/NeXT/ChangeLog.rtf b/NeXT/ChangeLog.rtf
deleted file mode 100644 (file)
index 25c5e98..0000000
+++ /dev/null
@@ -1,427 +0,0 @@
-{\rtf0\ansi{\fonttbl\f0\fmodern Courier;\f1\fswiss Helvetica;\f2\fmodern Ohlfs;}
-\paperw12040
-\paperh11720
-\margl40
-\margr40
-{\colortbl;\red59\green11\blue84;\red0\green0\blue0;\red19\green34\blue84;\red6\green0\blue85;}
-\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\f0\b0\i0\ulnone\fs24\fc0\cf0 \
-
-\b\gray128\fc1\cf1 11
-\b0\gray0\fc0\cf0      Submitted:      
-\b\fc2\cf2 perkins
-\b0    
-\b\fc0\cf0 Jul 10 1996 00:00\
-       
-\b0 Topic:             
-\b /PPP-2.x/Documentation/WWW Pages/
-\b0 \
-       Owner:          
-\b perkins 
-\b0 (nobody)
-\b \
-
-\b0    Status:         
-\b Fixed\
-       
-\b0 \
-
-\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\b\i\gray136\fc3\cf3         Mail setup for FAQ\
-
-\i0\gray0\fc0\cf0      
-\b0 \
-
-\pard\tx1480\tx2020\tx2560\tx3080\tx3620\tx4160\tx4680\tx5220\tx5760\tx6280\f1\li960\fc0\cf0 [perkins Wed Jul 10 14:59:39 EDT 1996]\
-[perkins Wed Jun 05 21:31:44 EDT 1996]\
-On 06/04/96, Francois Magnan wrote:\
-
-\gray46\fc4\cf4 >\
->I have written down the steps I did to configure sendmail 8.7.5 for a \
->standalone machine using a dial up PPP connection to link to the \
->internet. It uses the user database to set From and Reply to fields \
->correctly to each user of the system own's Pop account (in all \
->outgoing mail). Is there a need for this? Should I post it? Could an \
->expert verify it before an unexperienced user try this???\
->\
->Thank you,\
->Francois Magnan\
->   \
->-- \
->______________________________________________________\
->Francois Magnan\
->Departement de Mathematique & Statistiques\
->Universite de Montreal\
->email: magnan@mathcn.umontreal.ca (MIME, NeXTMail Ok!)\
->\
->\
-
-\gray0\fc0\cf0 \
-Sorry for this.... My news server was always telling me it could not \
-send the post.\
-\
-Francois\
-\
-\
--- \
-______________________________________________________\
-Francois Magnan\
-Departement de Mathematique & Statistiques\
-Universite de Montreal\
-email: magnan@mathcn.umontreal.ca (MIME, NeXTMail Ok!)\
-\
-
-\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\f0\li960\fc0\cf0 \
-
-\li0 \
-Trackers:      perkins\
-               
-\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\fc0\cf0 \
-
-\b\gray128\fc1\cf1 13
-\b0\gray0\fc0\cf0      Submitted:      
-\b\fc2\cf2 perkins
-\b0    
-\b\fc0\cf0 Jul 10 1996 00:00\
-       
-\b0 Topic:             
-\b /PPP-2.x/PPP Daemon/Interoperation/
-\b0 \
-       Owner:          
-\b perkins 
-\b0 (nobody)
-\b \
-
-\b0    Status:         
-\b Open\
-       
-\b0 \
-
-\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\b\i\gray136\fc3\cf3         PPP-2.2 doesn't negotiate well with Netcom's PPP server using bsdcomp\
-
-\i0\gray0\fc0\cf0      
-\b0 \
-
-\pard\tx1480\tx2020\tx2560\tx3080\tx3620\tx4160\tx4680\tx5220\tx5760\tx6280\f1\li960\fc0\cf0 [perkins Wed Jul 10 15:01:24 EDT 1996]\
-\
-[aisbell@cubicsol.com Mon Jun 17 16:47:27 CDT 1996]\
-    Using the default PPP options file which specifies the "bsdcomp 10,10" pppd option, negotiation with Netcom's PPP server has been problematic since early June, 1996.  Negotiation succeeds, ipcp comes up, but then the Netcom server resends a negotiation packet causing ipcp to be brought down followed by successful renegotiation bringing ipcp up.  This causes ip-up to run, then ip-down, and then ip-up again.  Depending on what is being done in ip-up and ip-down, this multiple repeated execution, possibly concurrently, can cause problems.\
-\
-    However, BSD compression negotiation is rejected by the Netcom server.  So by disabling BSD compression negotiation (i.e., specifying the "-bsdcomp" instead of the "bsdcomp 10,10" pppd option), this problem seems to disappear.
-\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\f0\li960\fc0\cf0 \
-
-\li0 \
-Trackers:      perkins\
-               \
-
-\b\gray128\fc1\cf1 15
-\b0\gray0\fc0\cf0      Submitted:      
-\b\fc2\cf2 perkins
-\b0    
-\b\fc0\cf0 Jul 10 1996 00:00\
-       
-\b0 Topic:             
-\b /PPP-2.x/Kernel Server/
-\b0 \
-       Owner:          
-\b perkins 
-\b0 (nobody)
-\b \
-
-\b0    Status:         
-\b Open\
-       
-\b0 \
-
-\b\i\gray136\fc3\cf3   PPP running out of netbuffers & thrashing\
-
-\i0\gray0\fc0\cf0      
-\b0 \
-
-\pard\tx1480\tx2020\tx2560\tx3080\tx3620\tx4160\tx4680\tx5220\tx5760\tx6280\f1\li960\fc0\cf0 [perkins Wed Jul 10 15:02:51 EDT 1996]\
-\
-[rvose@ix.netcom.com Wed Jun 26 01:03:20 CDT 1996]\
-You'll have to excuse me if this is categorized wrong.  I'm a PPP newbie.\
-\
-I'm running PPP 2.2.046 on a NeXTstation Turbo Color w/32MB RAM to access my ISP over a modem.  Certain operations cause my system to thrash until I break into the NMI to stop it.  When I look at messages in the NMI, at the very end are several errors from PPP indicating that it's out of 'netbuffers'  I'm not sure if PPP is causing the trash, but the netbuffer errors seemed to point to it.  A friend of mine running the same configuration has the same problems.\
-\
-I'm looking for a way to recreate the problem on demand, and will forward that on when I find it.  The trashing usually appears while using OmniWeb 2.0.1 from Lighthouse Design, but I've had similar problems using NetSurfer.  The problem seems to happen much faster with NetSurfer.\
-\
-Again, I'll try to get you more details.  Does this sound like a PPP problem? 
-\b \
- ===============================================\
-\
-
-\b0 [perkins Mon Jul 01 10:33:36 EDT 1996]\
-\
-See Bug #16 for more information.\
-
-\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\f0\li960\fc0\cf0 \
-
-\li0 \
-Trackers:      perkins\
-               \
-
-\b\gray128\fc1\cf1 16
-\b0\gray0\fc0\cf0      Submitted:      
-\b\fc2\cf2 perkins
-\b0    
-\b\fc0\cf0 Jul 10 1996 00:00\
-       
-\b0 Topic:             
-\b /PPP-2.x/Kernel Server/Panic/
-\b0 \
-       Owner:          
-\b perkins 
-\b0 (nobody)
-\b \
-
-\b0    Status:         
-\b Obsolete\
-       
-\b0 \
-
-\b\i\gray136\fc3\cf3   Re: PPP causing thrashing - Tracking ID 15\
-
-\i0\gray0\fc0\cf0      
-\b0 \
-
-\pard\tx1480\tx2020\tx2560\tx3080\tx3620\tx4160\tx4680\tx5220\tx5760\tx6280\f1\li960\fc0\cf0 [perkins Wed Jul 10 15:04:07 EDT 1996]\
-\
-[rvose@ix.netcom.com Mon Jul  1 04:37:03 CDT 1996]\
-Last week I had submitted report indicating that my NeXTstation Color Turbo machine ran out of network buffers and thrashed to the point of crashing.  The tracking ID assigned was 16.\
-\
-I believe that this problem may have been due to my swapfile size growing beyond the high-water mark.  My machine crashed several times this evening (thrashing) while connected and I happened to notice that the swapfile size was pushing the hiwat limit.  I increased the hiwat limit on the file from 40 MB (which is the NeXT default) to 105 MB (the partition size where the file residess - it's on its own drive) and voila!  No more thrashing.  I've been connected over PPP and hitting the system hard with network transactions with ZERO difficulties.\
-\
-Just wanted to pass that info along.  I'm not sure if the combination of the system hitting the hiwat mark on the swapfile + PPP needing more resources caused the thrashing problem, but it seems reasobable.\
-\
-Thanks...\
-\
-Randy\
-rvose@ix.netcom.com\
-\
-\b \
- ===============================================\
-\
-
-\b0 [perkins Mon Jul 01 10:33:24 EDT 1996]\
-\
-This bug is in relation to bug #15\
-
-\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\f0\li960\fc0\cf0 \
-
-\li0 \
-Trackers:      perkins\
-               \
-
-\b\gray128\fc1\cf1 21
-\b0\gray0\fc0\cf0      Submitted:      
-\b\fc2\cf2 perkins
-\b0    
-\b\fc0\cf0 Aug 10 1996 00:00\
-       
-\b0 Topic:             
-\b /PPP-2.x/PPP Daemon/
-\b0 \
-       Owner:          
-\b perkins 
-\b0 (nobody)
-\b \
-
-\b0    Status:         
-\b Fixed\
-       
-\b0 \
-
-\b\i\gray136\fc3\cf3   ip-up and ip-down examples need updating\
-
-\i0\gray0\fc0\cf0      
-\b0 \
-
-\pard\tx1480\tx2020\tx2560\tx3080\tx3620\tx4160\tx4680\tx5220\tx5760\tx6280\f1\li960\fc0\cf0 [perkins Sat Aug 10 09:41:59 EDT 1996]\
-\
-Update ip-up and ip-down examples.\
-\
-\
-\
-\
-ams@best.com (Samuel G. Streeper) wrote:\
-\
-
-\gray46\fc4\cf4 > You need to restart the nameserver on your home system when\
-> you bring PPP up:\
-> \
->      kill -USR2 <nmserver pid>\
-> \
-> (You may want to do this in your ppp-up script)  I've heard some\
-> people also do the same with lookupd but that hasn't been necessary\
-> for me.\
-
-\gray0\fc0\cf0 \
-    Sending the pre-OS 4.0 lookupd a USR2 signal causes it to toggle logging, \
-but sending it a HUP signal forces it to restart and thus read any new \
-resolv.conf indo.  You shouldn't have to do this unless you need to use \
-different nameservers when establishing your PPP connection.  I need to \
-connect to several different PPP servers, so I slide in the correct \
-resolv.conf and send resolv.conf a HUP signal in pppd's ip-up.\
-\
-    Note that sending the OS 4.0 lookupd a HUP signal won't cause it to \
-restart.  Restarting it manually will leave the system unusable until a \
-reboot :-(  NeXT is aware of this problem.\
--- \
-Art Isbell                      NeXT/MIME Mail: aisbell@ix.netcom.com\
-Trego Systems                              Voice/Fax: +1 408 335 2515\
-CaseServ:  NEXTSTEP/OpenStep              Voice Mail: +1 408 335 1154\
-   managed care solutions              US Mail: Felton, CA 95018-9442\
-
-\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\f0\li960\fc0\cf0 \
-
-\li0 \
-Trackers:      perkins\
-               \
-
-\b\gray128\fc1\cf1 22
-\b0\gray0\fc0\cf0      Submitted:      
-\b\fc2\cf2 perkins
-\b0    
-\b\fc0\cf0 Aug 13 1996 00:00\
-       
-\b0 Topic:             
-\b /PPP-2.x/PPP Daemon/
-\b0 \
-       Owner:          
-\b perkins 
-\b0 (nobody)
-\b \
-
-\b0    Status:         
-\b Open\
-       
-\b0 \
-
-\b\i\gray136\fc3\cf3   NXHosting \
-
-\i0\gray0\fc0\cf0      
-\b0 \
-
-\pard\tx1480\tx2020\tx2560\tx3080\tx3620\tx4160\tx4680\tx5220\tx5760\tx6280\f1\li960\fc0\cf0 [perkins Tue Aug 13 09:06:52 EDT 1996]\
-\
-In article <4ule10$g2t@nuke.csu.net>, John Rudd <kzin@arcadia.sjsu.edu> wrote:\
-
-\gray46\fc4\cf4 >(isc-ts2-* are our dialup PPP lines.. each line in the hunt group has a \
->different IP addy associated with it.. so you are likely to get a different \
->one each time.  And this is why I can't do the "Services -> OpenSesame -> \
->Open on host X", because that sends "-NXHost copernicus".. which is what my \
->home machine internally identifies itself as)\
-
-\gray0\fc0\cf0 \
-The only way to get -NXHost to work over PPP is to have an IP address\
-assigned to your Ethernet port, and have a route to that address\
-reachable over the PPP.\
-\
-When you try to -NXHost, it uses UDP, and for some reason the UDP\
-protocol decides to use the Ethernet's IP address for outgoing\
-packets, rather than using the PPP's IP address.\
-\
-You'll also have similar problems trying to get talk to work over\
-PPP. Unless there is a route to your Ethernet's IP address, it isn't\
-going to work.\
-\
--- \
-Chris Osborn, Network Administrator     Napa Valley College\
-707 253 3130 - Voice                    2277 Napa-Vallejo Hwy.\
-707 253 3063 - Fax                      Napa, CA 94558\
-<fozztexx@nvc.cc.ca.us>    <¬http://www.nvc.cc.ca.us/~fozztexx>\
-
-\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\f0\li960\fc0\cf0 \
-
-\li0 \
-Trackers:      perkins\
-               \
-
-\b\gray128\fc1\cf1 25
-\b0\gray0\fc0\cf0      Submitted:      
-\b\fc2\cf2 perkins
-\b0    
-\b\fc0\cf0 Sep 17 1996 00:00\
-       
-\b0 Topic:             
-\b /PPP-2.x/Documentation/Installation Instructions/
-\b0 \
-       Owner:          
-\b perkins 
-\b0 (nobody)
-\b \
-
-\b0    Status:         
-\b Fixed\
-       
-\b0 \
-
-\b\i\gray136\fc3\cf3   typo?\
-
-\i0\gray0\fc0\cf0      
-\b0 \
-
-\pard\tx1480\tx2020\tx2560\tx3080\tx3620\tx4160\tx4680\tx5220\tx5760\tx6280\f1\li960\fc0\cf0 [sysadmin Tue Sep 17 12:05:33 EDT 1996]\
-In ./NeXT/INSTALL, I assume '-DBPFILTER' in the second paragraph  \
-should be '-DNBPFILTER'? And the third paragraph applies with the  \
-second paragraph condition?\
-\
- 4) If you plan in using tcpdump to monitor packets, you must\
-    enable the Berkley Packet Filter code.  Edit ./NeXT/Makefile\
-    and make sure the '-DNBPFILTER' option is defined in DFLAGS.\
-    WARNING: If you choose to use BPF, you must make sure that you\
-    compile _AND LOAD_ the bpf_reloc LKS _BEFORE_ you load the\
-    ppp_reloc LKS.  See the ./NeXT/bpf directory for more  \
-information.\
-\
-    If you don't want to compile in this code, please make sure that\
-    '-DBPFILTER' is _not_ defined in the ./NeXT/Makefile DFLAGS.\
-\
-    Also, make sure you read the installation file in ./NeXT/bpf.   \
-You\
-    will need to create a few special device files in /dev/.\
-\
-Stephen Johnson\
-stephen@ccc1.tamu.edu\
-\
-\
-
-\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\f0\li960\fc0\cf0 \
-
-\li0 \
-Trackers:      perkins\
-               \
-
-\b\gray128\fc1\cf1 26
-\b0\gray0\fc0\cf0      Submitted:      
-\b\fc2\cf2 J. P. McCann
-\b0    
-\b\fc0\cf0 Oct 06 1996 00:00\
-       
-\b0 Topic:             
-\b /PPP-2.x/PPP Daemon/Option Handling/
-\b0 \
-       Owner:          
-\b perkins 
-\b0 (nobody)
-\b \
-
-\b0    Status:         
-\b Superseded\
-       
-\b0 \
-
-\b\i\gray136\fc3\cf3   Netcom ISP hookups disconnect with bsdcomp values\
-
-\i0\gray0\fc0\cf0      
-\b0 \
-
-\pard\tx1480\tx2020\tx2560\tx3080\tx3620\tx4160\tx4680\tx5220\tx5760\tx6280\f1\li960\fc0\cf0 [jpmeia@ix.netcom.com Sun Oct  6 20:11:22 CDT 1996]\
-When trying to connect to Netcom with any bsdcomp values (eg, bsdcomp 10,10) in the options script, connection will fail vice ignore bsdcomp.  Must use the "-bsdcomp" option to negotiate a connection that does not fail.
-\pard\tx960\tx1920\tx2880\tx3840\tx4800\tx5760\tx6720\tx7680\tx8640\tx9600\f0\li960\fc0\cf0 \
-
-\li0 \
-Trackers:      perkins\
-               
-}
diff --git a/NeXT/Examples/NXHosting_with_PPP b/NeXT/Examples/NXHosting_with_PPP
deleted file mode 100644 (file)
index 7c744c4..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-From: gbrown@alumni.caltech.edu (Glenn Brown)
-Subject: Re: ppp and NXHost problems
-Date: 23 Nov 1994 07:37:57 GMT
-Organization: California Institute of Technology, Pasadena
-
-If you want to NXHost over PPP, Simply execute the following 7 lines
-after the ppp connection has been brought up (these are simply the
-lines from the rc.net script that signal the nmserver that it should
-check for new interfaces.  Note that the kill command does not kill the
-nmserver.  Rather, it sends the "USR2" signal to the nmserver.)
-
-#!/bin/sh
-#  Let the nmserver know the fruits of our network configuration endeavor.
-pid=`ps cax | egrep nmserver | awk '{print $1;}'`
-if [ -n "$pid" ]; then
-    echo "Reinitializing nmserver's network portion"
-    /bin/kill -USR2 $pid
-fi
-
-Note 1: You have to executed the lines under "sh".  I suggest you
-save them in a file and type "/bin/sh file".
-
-Note 2: I haven't actually tried this (I don't have another NeXT to
-test it on), but I figured out out reading the rc scripts.  Please let
-me know the result if you try it.
-
---Glenn
-
-----------------------------------------------------------------------
-
-In article <4ule10$g2t@nuke.csu.net>, John Rudd <kzin@arcadia.sjsu.edu> wrote:
->(isc-ts2-* are our dialup PPP lines.. each line in the hunt group has a 
->different IP addy associated with it.. so you are likely to get a different 
->one each time.  And this is why I can't do the "Services -> OpenSesame -> 
->Open on host X", because that sends "-NXHost copernicus".. which is what my 
->home machine internally identifies itself as)
-
-The only way to get -NXHost to work over PPP is to have an IP address
-assigned to your Ethernet port, and have a route to that address
-reachable over the PPP.
-
-When you try to -NXHost, it uses UDP, and for some reason the UDP
-protocol decides to use the Ethernet's IP address for outgoing
-packets, rather than using the PPP's IP address.
-
-You'll also have similar problems trying to get talk to work over
-PPP. Unless there is a route to your Ethernet's IP address, it isn't
-going to work.
-
--- 
-Chris Osborn, Network Administrator     Napa Valley College
-707 253 3130 - Voice                    2277 Napa-Vallejo Hwy.
-707 253 3063 - Fax                      Napa, CA 94558
-<fozztexx@nvc.cc.ca.us>    <¬http://www.nvc.cc.ca.us/~fozztexx>
-
-
diff --git a/NeXT/Examples/Persistent_Connection b/NeXT/Examples/Persistent_Connection
deleted file mode 100644 (file)
index 0813c51..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-#! /usr/bin/perl
-
-# ip-down -- executed by pppd on connection death
-#
-# This particular implementation of ip-down attempts to re-establish
-# the ppp connection.  It does this by first forking and having the
-# parent die (returning control to the invoking pppd for final
-# cleanup).
-#
-# The child waits until the specified port (pppd passes the path to
-# the port's device as argument 2) is available and launches pppd (or
-# whatever is specfied by $PATH_pppd.
-#
-# This script requires "syslog.pl" (included with perl).  Because of
-# this, it also requires "syslog.ph";  "syslog.ph" can be
-# manufactured using the h2ph script included with the perl
-# distribution.  Under NeXTSTEP, one can create syslog.ph by:
-#
-#        h2ph < /usr/include/bsd/sys/syslog.h > syslog.ph
-#
-# 'syslog.ph' should either be copied into your machines perl library
-# (wherever syslog.pl resides), or you should add wherever syslog.ph
-# resides to Perl's library search path.
-#
-# Removing all references to syslog (including openlog() and
-# closelog()) will also work, but will render this script's execution
-# completely silent.
-#
-# By default, this script logs to the default target for ppp's logs --
-# LOCAL2.
-#
-# hacqued by: <bbum@friday.com>, jan 30 1995
-#
-# Please send any changes/improvements to <bbum@friday.com>.  And
-# please try not to laugh at this code... or, at least, tell me why
-# you are laughing so I won't make the same mistakes twice.
-
-# ABSOLUTE path to PPP daemon (or whatever you want executed after the
-# port becomes available).
-
-$PATH_pppd = "/usr/local/ppp/bin/pppd";
-
-# number of seconds to sleep between checking for port availability
-$lock_sleep = 2;
-
-require "syslog.pl";
-
-FORK: {
-    if ($pid = fork) {
-       # this is the parent.  It must die so the old pppd can
-       # clean-up and exit.
-       exit;
-    } elsif ($! =~ /No more process/) {
-       # oops! ran out of processes.  This is supposed to be a
-       # recoverable error, so sleep and try again.
-       sleep 5;
-       redo FORK;      
-    } elsif (!defined($pid)) {
-       # fork error -- log it and die.
-       &openlog("pppd/ip-down", 'cons,pid', LOG_LOCAL2);
-       &syslog('warning',
-               "Fork() error '$!'");
-       &closelog;
-       die "can't fork: $!\n";
-    }
-}
-
-# everything from here down is the child.
-&openlog("pppd/ip-down", 'cons,pid', LOG_LOCAL2);
-
-if ( ! @ARGV ) {
-    # no arguments -- exec specified thing (assume the process
-    # being called has a clue about what port it should use)
-
-    &syslog('info', "No device specified. Executing '$PATH_pppd'.");
-    &closelog;
-
-    exec $PATH_pppd;
-    ## NOT REACHED: exec never returns
-}
-
-# (assume-- it will if pppd starts ip-down)
-# ARGV contains:
-#          interface-name tty-device speed local-IP-address
-#          remote-IP-address
-($interface_name,
- $tty_device,
- $speed,
- $local_IP_address,
- $remote_IP_address) = @ARGV;
-
-# find the raw device name
-@path = split ('/', $tty_device);
-$device = pop @path;
-
-# Generate path to lock file -- assumes NeXT style device locking
-$lock = "/usr/spool/uucp/LCK/LCK..$device";
-
-# log some info.
-&syslog('info',
-       "Reconnecting '$interface_name' ($local_IP_address:$remote_IP_address) through '$tty_device' at '$speed' baud.");
-
-# check for lock
-if ( -e $lock) {
-
-    &syslog('info',
-           "'$device' locked. Waiting for unlock.");
-
-    # loop until unlocked
-    while ( -e $lock ) {
-       sleep $lock_sleep;
-    }
-}
-
-#### port available -- log and execute
-
-&syslog('info',
-       "Port '$device' available. Launching '$PATH_pppd'");
-
-&closelog;
-
-exec $PATH_pppd;
-### NOT REACHED
-
-
diff --git a/NeXT/Examples/README b/NeXT/Examples/README
deleted file mode 100644 (file)
index bc35d58..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-This directory contains example files that people have found useful
-on NeXTStep systems.  They were collected by Stephen Perkins
-(perkins@netmass.com).
diff --git a/NeXT/Examples/chap-secrets.example b/NeXT/Examples/chap-secrets.example
deleted file mode 100644 (file)
index 5cc3abb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# This file is used to control CHAP access
-# the local machine.  See the man pages
-# for details.  Make sure this file does
-# not have world read access.
-#
-#"userid" "providerid" "Password"
-
-
diff --git a/NeXT/Examples/flow-control-hints b/NeXT/Examples/flow-control-hints
deleted file mode 100644 (file)
index e0e6787..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-From katzlbt@vuse.vanderbilt.edu mentions:
-
-I was working with software flow control (at 38400 baud) so the output
-to /dev/cufa resulted in a deadlock.  If the modem does not dial but
-shows TR, check hardware flow control by using the device /dev/cufa
-with tip. If this results in a deadlock relace your modem cable, for
-now replace /dev/cufa with /dev/cua and change the baudrate to 19200.
-
-
diff --git a/NeXT/Examples/ip-down.example b/NeXT/Examples/ip-down.example
deleted file mode 100644 (file)
index 92576ec..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-# -*- Fundamental -*-
-#
-# args: interface-name tty-device speed local-IP remote-IP
-
-PATH=/usr/ucb:/bin:/usr/bin:/etc:/usr/etc:/usr/local/bin; export PATH
-
-#
-# Remove the route to localhost that we created in ip-up
-#
-/usr/etc/route delete $4 127.0.0.1
-
-#  Let the nmserver know the fruits of our network configuration
-#  endeavor. This allows NXHost connections. Thanks to Glenn Brown
-#  <gbrown@alumni.caltech.edu>  
-pid=`ps cax | egrep nmserver | awk '{print $1;}'`
-if [ -n "$pid" ]; then
-    echo "PPP Reinitializing nmserver's network portion" > /dev/console
-    kill -USR2 $pid
-fi
-
-#
-# Let lookupd know that things have changed
-#
-pid=`ps cax | egrep lookupd | awk '{print $1;}'`
-if [ -n "$pid" ]; then
-    echo "PPP Reinitializing lookupd" > /dev/console
-    kill -HUP $pid
-fi
-
-
-
-
diff --git a/NeXT/Examples/ip-up.example b/NeXT/Examples/ip-up.example
deleted file mode 100644 (file)
index 0cd5266..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/sh
-# -*- Fundamental -*-
-#
-#
-# args: interface-name tty-device speed local-IP remote-IP
-
-PATH=/usr/ucb:/bin:/usr/bin:/etc:/usr/etc:/usr/local/bin; export PATH
-
-#
-# Add a route to localhost so netinfo won't sleep.
-#
-/usr/etc/route add $4 127.0.0.1 0
-
-
-#  Let the nmserver know the fruits of our network configuration
-#  endeavor. This allows NXHost connections. Thanks to Glenn Brown
-#  <gbrown@alumni.caltech.edu>  
-pid=`ps cax | egrep nmserver | awk '{print $1;}'`
-if [ -n "$pid" ]; then
-    echo "PPP Reinitializing nmserver's network portion" > /dev/console
-    kill -USR2 $pid
-fi
-
-
-#
-# Let lookupd know that things have changed
-pid=`ps cax | egrep lookupd | awk '{print $1;}'`
-if [ -n "$pid" ]; then
-    echo "PPP Reinitializing lookupd" > /dev/console
-    kill -HUP $pid
-fi
-
-
-#
-# Send any mail that has been queued while the link
-# was down.
-/usr/lib/sendmail -q &
-
-
-#
-# Synchronize our clock with some of the public NTP servers.
-#
-# norad.arc.nasa.gov  - 192.203.230.10
-# tick.usno.navy.mil  - 192.5.41.40
-#
-/usr/etc/ntp -sf 192.203.230.10 192.5.41.40 > /dev/console 2>&1 &
diff --git a/NeXT/Examples/options.example b/NeXT/Examples/options.example
deleted file mode 100644 (file)
index 14b58b8..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# NOTE:  All options in the file are commented out.  PPP.app
-#        typically takes care of setting options on a per provider
-#        basis.  If you want to set a global option, then 
-#        add/uncomment the appropriate option in this file.
-#
-#
-# This is an example options file.  The options file
-# should be placed in /etc/ppp/options.  These options
-# are global to all ppp connections.  See the "OPTIONS FILES" section
-# in the pppd man page for more details.
-#
-# Options specified here don't need to be respecified
-# on the pppd command line.  Note: Most of the example
-# scripts in this directory assume an empty options file.
-# However, it doesn't hurt to respecify them.
-#
-
-#
-# The size of the Maximum Transfer Unit.  Higher values
-# give better performance for file transfers.  Lower values
-# give better performance for interactive performance.
-#
-#mtu 296
-
-#
-# If you want to periodically touch the other end to make 
-# sure it is still alive, set these options.
-#
-#lcp-echo-interval 15    # interval in seconds between touches
-#lcp-echo-failure  3     # number of failed attempts before link shutdown
-
-#
-# If you want to enable debugging of the pppd process, leave
-# this uncommented.  Output will be sent to the file
-# /usr/adm/ppp2.2.debug (or whatever you set it to in
-# /etc/syslog.conf.
-#
-#debug
-
-#
-# If you want kernel debugging (i.e. debug output from the
-# NeXT LKS), enable this:
-#
-# kdebug 1  is SC_DEBUG
-#        2  is SC_LOG_INPKT
-#        4  is SC_LOG_OUTPKT
-#        8  is SC_LOG_RAWIN
-#        16 is SC_LOG_FLUSH
-# 
-# add together to get debugging you want.
-#
-#kdebug 17
-
-#
-# If you want pppd to set the PPP connection as the default
-# route when the link is brought up, enable this option.
-# Standalone systems dialing into a provider probably want this
-# option.
-#
-#defaultroute
-
-#
-# These two options disable some of the
-# various types of authentication.
-#
-# Note: Some systems require authenticaion before
-#       negotiation can complete.  If you disable
-#       authentication on these systems, they will
-#       not complain, but they will also not allow
-#       negotiaion to complete and your link will
-#       not come up.
-#
-# NOTE: PAP and CHAP authentication are enabled
-#       by default.
-#
-# If you uncomment either or both of these, you will
-# refuse that type of authentication if the server
-# requests it.  DO NOT put +pap or +chap.  This will
-# require the server to authenticate to you and it will
-# refuse (causing PPP to fail).  read the pppd man page
-# to create the proper secrets files.
-#
-#-pap
-#-chap
-
-#
-# This specifies that should use a UUCP-style lock on the
-# serial device to ensure exclusive access to the device.
-#
-#lock
-
-#
-# Use hardware flow control (i.e. RTS/CTS) to control the
-#  flow of data on the serial port.
-#
-# On NeXT, you also must use the proper device.
-#  /dev/cufa 
-#    -or-
-#  /dev/cufb
-#
-#crtscts
-
-#
-# bsdcomp nr,nt
-#
-# Request that the peer compress packets that it sends,
-# using the BSD-Compress scheme, with a maximum code size
-# of nr bits, and agree to compress packets sent to the
-# peer with a maximum code size of nt bits.  If nt is not
-# specified, it defaults to the value given for nr.
-# Values in the range 9 to 15 may be used for nr and nt;
-# larger values give better compression but consume more
-# kernel memory for compression dictionaries.  Alterna-
-# tively, a value of 0 for nr or nt disables compression
-# in the corresponding direction.
-#
-# It is OK if the peer doesn't support BSD compression.  In that
-# case, the peer will NAK this option and things will continue
-# normally.
-#
-#bsdcomp 10,10 
-
-#
-# Add an entry to this system's ARP [Address Resolution
-# Protocol] table with the IP address of the peer and the
-# Ethernet address of this system.
-#
-# This is only necessary if your are allowing others to dial
-# into you (i.e. you are the server).
-#proxyarp
-
-
-
diff --git a/NeXT/Examples/pap-secrets.example b/NeXT/Examples/pap-secrets.example
deleted file mode 100644 (file)
index 8e415a4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# This file is used to control PAP access
-# the local machine.  See the man pages
-# for details.  Make sure this file does
-# not have world read access.
-#
-#"userid" "providerid" "Password"
-
-
diff --git a/NeXT/Examples/ppp_multiple_hosts.tar.gz b/NeXT/Examples/ppp_multiple_hosts.tar.gz
deleted file mode 100644 (file)
index ddeda96..0000000
Binary files a/NeXT/Examples/ppp_multiple_hosts.tar.gz and /dev/null differ
diff --git a/NeXT/Examples/pppdown b/NeXT/Examples/pppdown
deleted file mode 100644 (file)
index c35471f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-#
-# This script fill find processes with 'pppd' in the name 
-# and send them SIGINT.  It must be run suid root to work
-# correctly.  Some people don't like suid root shell scripts.
-# In that case, check out the example pppkill.c which contains a
-# C program that does the same thing.  This might be a bit safer
-# to make suid root.
-#
-# Note: there is the potential that this script can kill more than
-#       one process.  Maybe even an incorrect process.  It could 
-#       probably be done better.
-#
-
-PATH=/usr/ucb:/bin:/usr/bin:/etc:/usr/etc:/usr/local/bin; export PATH
-
-kill -INT `ps -ax | egrep "(pppd)" | egrep -v "egrep" | sed 's/^\([ 0-9]*\) .*/\1'/`
-exit 0
diff --git a/NeXT/Examples/pppkill.c b/NeXT/Examples/pppkill.c
deleted file mode 100644 (file)
index 932eaca..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-Many thanks to:
-   shess@winternet.com (Scott Hess)  
-   andrew_abernathy@wire.seanet.com (Andrew Abernathy)
-   michal@ellpspace.math.ualberta.ca (Michal Jaegermann)
-
-for contributing programs that can take the place
-of the pppdown script.  I have included Scott Hess's 
-(now modified) here.  If you would like to see the other program, please
-mail Andrew.
-
-======================================================================
-
-From shess@winternet.com Mon Jan  9 02:45 EST 1995
-Date: Mon, 9 Jan 95 01:45 CST
-From: shess@winternet.com (Scott Hess)
-Reply-To: shess@winternet.com (Scott Hess)
-To: Steve Perkins <perkins@cps.msu.edu>
-Subject: Bringing down ppp.
-
-[munch]
-
-In any case, having to run pppdown as root has been annoying,
-because I don't like to run things as root more than necessary.
-In other words, more than about once a week is too often :-).  So,
-I wrote the following quick&dirty hack.  Basic operation is to read
-the pppd pid from a file where it's stored and send a SIGINT to
-that process.  Since there's not a shell script in sight, this
-should be a reasonably safe program to make setuid root.  [I'll
-have to think on what someone can do if they crack it or /etc/ppp
-and can send SIGINT to just anyone.  Perhaps it should check to
-see if the process is really a pppd?  Oh, well.]
-
-howard:/tmp> ls -l /usr/local/ppp/bin/killppp 
-
--rwsr-sr-x  1 root        1464 Jan  7 12:41 /usr/local/ppp/bin/killppp*
-howard:/tmp> cat /usr/local/ppp/src/killppp.c 
-
-/*
- * Originally written by Scott Hess <shess@winternet.com>
- * and later modified by Michal Jaegermann  <michal@ellpspace.math.ualberta.ca>
- */
-
-#include <libc.h>
-#include <stdio.h>
-
-
-#include <libc.h>
-#include <stdio.h>
-
-#define PIDF "/etc/ppp/ppp0.pid"
-
-int
-main( void)
-{
-    FILE *ff;
-    int pid;
-
-    
-    if( NULL == (ff = fopen( PIDF, "r"))) {
-        perror( "opening " PIDF
-       "\nppp0 link does not seem to be active" );
-        exit(1);
-    }
-    
-
-    if( fscanf( ff, "%d", &pid)<1) {
-        fprintf( stderr, "Cannot read pid from" PIDF "\n");
-        exit(1);
-    }
-    
-
-    fclose( ff);
-    if( kill( pid, SIGINT)==-1) {
-        perror( "killing pppd");
-       fprintf( stderr, "removing stale" PIDF "file\n");
-       if (0 != unlink( PIDF)) {
-           perror("cannot remove" PIDF);
-       }
-       exit(1);
-    }
-    return 0;
-}
-
-Later,
----
-scott hess <shess@winternet.com> (WWW to "http://www.winternet.com/~shess/")
-Home:   12901 Upton Avenue South, #326  Burnsville, MN 55337  (612) 895-1208
-Office: 101 W. Burnsville Pkwy, Suite 108E, Burnsville, MN 55337    890-1332
-<?If you haven't the time to design, where will you find the time to debug?>
-
diff --git a/NeXT/Examples/pppup.annex b/NeXT/Examples/pppup.annex
deleted file mode 100644 (file)
index d5ee18f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh -f
-# -*- Fundamental -*-
-#
-# kdebug 1  is SC_DEBUG
-#        2  is SC_LOG_INPKT
-#        4  is SC_LOG_OUTPKT
-#        8  is SC_LOG_RAWIN
-#        16 is SC_LOG_FLUSH
-# 
-# add together to get debugging you want
-# Remember: for HW flow control you must you /dev/cufa or /dev/cufb
-#
-#
-#  This is an example that dials a modem, logs into a remote Annex terminal
-#  server and starts ppp. 
-#
-exec /usr/local/bin/pppd bsdcomp 10,10 mtu 296 lcp-echo-interval 15 \
-lcp-echo-failure 3 debug crtscts kdebug 17 defaultroute modem -pap -chap \
-connect '/usr/local/bin/chat -v ABORT BUSY ABORT "NO CARRIER" ABORT "NO DIAL TONE" ABORT "ERROR" "" ATZ0 "OK" ATDT####### CONNECT "" MSUnet: ppp sername: USER assword: PASS PPP.' \
-/dev/cufa 57600 lock
-
diff --git a/NeXT/Examples/pppup.direct b/NeXT/Examples/pppup.direct
deleted file mode 100644 (file)
index 4958fc6..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh -f
-#
-# -*- Fundamental -*-
-#
-# kdebug 1  is SC_DEBUG
-#        2  is SC_LOG_INPKT
-#        4  is SC_LOG_OUTPKT
-#        8  is SC_LOG_RAWIN
-#        16 is SC_LOG_FLUSH
-# 
-# add together to get debugging you want
-# Remember: for HW flow control you must you /dev/cufa or /dev/cufb
-#
-# This is used to start a ppp session over a link that is directly
-# connected to another computer.  Make sure the peer runs at the
-# same speed.
-#
-/usr/local/bin/pppd bsdcomp 10,10 ipcp-restart 4 ipcp-max-configure 5 lcp-echo-failure 3 lcp-echo-interval 30 debug crtscts kdebug 17 -pap -chap /dev/ttyfb 38400 lock
-exit 0
diff --git a/NeXT/Examples/pppup.portmaster b/NeXT/Examples/pppup.portmaster
deleted file mode 100644 (file)
index c6431ff..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh -f
-#
-#  Call a portmaster terminal server;
-#  start ppp.
-#
-# Thanks to Terence John Parr <parrt@parr-research.com>
-#
-exec /usr/local/ppp/bin/pppd \
-netmask 255.255.255.0 bsdcomp 10,10 mtu 296 lcp-echo-interval 15 \
-lcp-echo-failure 3 debug crtscts kdebug 31 defaultroute modem +pap -chap \
-connect '/usr/local/ppp/bin/chat -v ABORT BUSY ABORT "NO CARRIER" ABORT "NO DIAL TONE" ABORT "ERROR" "" ATZ0 "OK" ATDT000-0000 CONNECT "" ogin:--ogin: mylogin: assword: mypassword.' \
-/dev/cufb 57600
diff --git a/NeXT/Examples/pppup.remote b/NeXT/Examples/pppup.remote
deleted file mode 100644 (file)
index 5e10552..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/csh -f
-#
-# -*- Fundamental -*-
-#
-#
-# kdebug 1  is SC_DEBUG
-#        2  is SC_LOG_INPKT
-#        4  is SC_LOG_OUTPKT
-#        8  is SC_LOG_RAWIN
-#        16 is SC_LOG_FLUSH
-# 
-# add together to get debugging you want
-# Remember: for HW flow control you must you /dev/cufa or /dev/cufb
-#
-# This script is used as the shell for a user account entitiled ppp.
-# When users log into this account, PPP is automatically started
-# (through this script).  The 'echo' command is to help the remote
-# process synchronize with this end.
-echo Starting PPP
-/usr/bin/mesg n
-/bin/stty -tostop litout
-exec /usr/local/bin/pppd passive bsdcomp 10,10 lcp-echo-interval 15 lcp-echo-failure 3 debug kdebug 17 57600
diff --git a/NeXT/Examples/pppup.zyxel b/NeXT/Examples/pppup.zyxel
deleted file mode 100644 (file)
index a1d87fc..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-ABORT BUSY ABORT "NO CARRIER" ABORT "NO DIAL TONE" ABORT "ERROR"
-""
-ATI1 "OK"
-AT+FCLASS=0 "OK"
-ATS42.1=0 "OK"
-ATS38.3=1 "OK"
-ATS38.5=1 "OK"
-ATS2=128 "OK"
-ATS46.2=1 "OK"
-AT&K4 "OK"
-AT&N0 "OK"
-ATM0 "OK"
-ATV1 "OK"
-ATQ0 "OK"
-ATX5 "OK"
-AT&C1 "OK"
-AT&D3 "OK"
-AT&H3 "OK"
-AT&J0 "OK"
-AT&L0 "OK"
-AT&M0 "OK"
-AT&R1 "OK"
-AT&S0 "OK"
-ATN1 "OK"
-ATDT########
-CONNECT "" ogin: USERNAME assword: PASSWORD
-ACTIVE
diff --git a/NeXT/Examples/redial.sh b/NeXT/Examples/redial.sh
deleted file mode 100644 (file)
index 5c40acf..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/csh
-# Script for multiple redialing to bring up PPP connection.
-# Written by Colin.Allen@tamu.edu
-# I make no warranties about this script, but if you have suggestions
-# for improving it please feel free to email them to me.
-
-# Last modified 11-29-95
-
-if ( -f /usr/local/ppp/etc/ppp0.pid ) then
-
-# The ppp0.pid file should only exist with an active ppp connection
-# in which case we don't want to try to dial out. Sometimes the file
-# will need to be deleted manually if ppp was dropped abnormally.
-
-        echo ERROR: PPP already running.
-        set quit = y
-else
-        set quit = n
-        set count = 0
-        set limit = 500
-       set script = pppup
-
-endif
-
-while ( $quit != y );
-
-# Next we loop as long as we are not quitting.  Each circuit we check
-# for a connection and if it's there we launch PopOver.
-# Delete or add other programs as desired.
-
-        if ( -f /usr/local/ppp/etc/ppp0.pid ) then
-                set quit = y
-                echo Connected after $count attempts.
-                echo -n "Launching PopOver...Process id: "
-                nohup /LocalApps/PopOver.app/PopOver &
-                echo Done.
-
-# If the connection is not there we ascertain whether the modem is
-# still trying to get a connection by looking to see if "chat" appears
-# in the output of ps.  It is bound to appear at least once because ps
-# will find the grep process.  If it appears exactly once then any
-# previous connection attempt has failed and we need to allow time
-# for the modem to reset, then we are free to dial again.
-
-# You may be able to optimize this script by adjusting the sleep values
-# below.  My modem (a ZyXEL 1496E) takes about 8 seconds to reset after
-# hanging up.
-
-        else
-                set chat =  `ps | grep -c chat`
-                if ( $chat == 1 ) then
-                        if ( $count != 0 ) then
-                                echo "no connect"
-                                sleep 8
-                        endif
-                        @ count++
-                        if ( $count == $limit ) then
-                                echo "Dial count over limit.  Aborting."
-                                set quit = y
-                        else
-                                /usr/local/ppp/scripts/$script
-                                echo -n "($count) Dialing..."
-                                sleep 5
-                                echo -n "trying to connect..."
-                                sleep 5
-                        endif
-                else
-
-# If chat is still working we just wait a bit and loop again.
-
-                        echo -n "."
-                        sleep 5
-                endif
-        endif
-end
-
diff --git a/NeXT/INSTALL b/NeXT/INSTALL
deleted file mode 100644 (file)
index bd00b61..0000000
+++ /dev/null
@@ -1,582 +0,0 @@
-               PPP-2.3 for systems running NeXTSTEP
-                ====================================
-
-
-Authoritative information can be found at:
-
-  WWW site:     http://www.peak.org/next/ppp/
-  WWW mirror:   http://www.thoughtport.com:8080/PPP/
-
-  FTP site:     ftp://next-ftp.peak.org/pub/next/apps/internet/ppp/dev
-  FTP Mirror:   ftp://ftp.NMR.EMBL-Heidelberg.DE/pub/next/ppp/
-
-If you have questions or problems, please visit the WWW site
-for FAQ and mailing list information.
-
-NEW: If you want to submit a bug report, please
-     use the bug submission form on the WWW site.
-
-If you use this software and are pleased with its performance, you are
-encouraged to make a donation to support continued development.  50%
-of all donations go to charity.  For more information, please see:
-  http://www.thoughtport.com:8080/cgi-bin/PPP/donation
-
-
-NeXT Specific Installation Instructions
-=======================================
-
-The procedure for an initial installation and for an upgrade are very
-similar. However, if this is the first time you are installing PPP,
-there are a few extra steps that you must do for the initial setup.
-They will be described later in this document.
-
-Making the source files
-=========================
-
-To install on a computer running NeXTSTEP:
-
- 1) Read this file completely through before you start.
-
- 2) If you are on an HP-PA system, read the file
-    ./NeXT/hppa/README.hppa and install the serial
-    driver patch.  Successfull installation of this
-    patch will require a reboot of your machine.  HPPA
-    is no longer supported.
-
- 3) If you have previously installed a SLIP package, comment out
-    the slip configuration code in /etc/rc.local and reboot your
-    machine.  SLIP and PPP _should_ interoperate but for initial
-    testing it is best to remove SLIP.
-
- 4) If you are using Intel OS version 3.3, you _must_ get the latest
-    NeXT serial drivers from NeXTAnswers.  You need both the serial
-    and ttyport drivers (version 3.33 or later).  Install these
-    according to the directions.  PPP-2.3 is optimized to work with 
-    the NeXT drivers.   It will work with the Mux driver (especially
-    beneficial for OS versions prior to 3.3), but that driver has been
-    known to cause panics with PPP.  If you use OS 4.x you can use the
-    drivers that came with the system.
-
- 5) Type ./configure in the top level PPP directory.  This will set
-    up some necessary links.
-
- 6) If you have developer 3.2, you need to use the old version of
-    chat.c.  Perform:
-      a) cd to the chat directory
-      b) backup chat.c (mv chat.c chat.c.orig)
-      c) use the old chat (mv chat.c.3.2 chat.c)
-
- 7) Edit ./Makefile and set the installation directories.
-    If you change the ETCDIR you will need to modify pathnames in
-    pppd/pathnames.h. I recommend keeping it set to /etc/ppp. 
-    If you don't specifically like that directory, you may
-    also change the Makefile directory and put a link in /etc/ppp
-    that points to the proper place. 
-
-    You will also want to set the -arch flags to the appropriate
-    architectures.  Leaving it blank will default to your current
-    architecture. 
-
- 9) Do a:
-      make 
-
- 10) If you are satisfied with the results, then as root, type:
-      make install
-
-
-If you are performing an upgrade, you are done after successfully
-making and installing the latest release.  All you need to do is to
-reboot your machine so that the new loadable kernel server (LKS) is
-loaded.  You should be able to start the upgraded PPP just like
-normal.  If this doesn't work, see the "Troubleshooting" section later
-on.
-
-Also, you might want to compare the ip-up and ip-down scripts in 
-the ./NeXT/Examples directory with those you have installed in
-/etc/ppp/ip-up and /etc/ppp/ip-down.  Most things included in the
-examples should be in any installation.
-
-
-Extra Steps for Initial Configuration 
-=====================================
-
-If this is the initial installation of PPP, there are several system
-administration steps that must be performed.  These only need to be
-done once.  These steps do not need to be re-performed for an upgrade.
-
-1) Before PPP can successfully run, a module called the loadable
-   kernel server (LKS) must be linked into the system.  This is 
-   something that must be done each time the computer boots up.
-   So that you don't have to do this by hand each time the machine
-   boots, you should modify a file called /etc/rc.local.  Since 
-   this is a system file, you must be root to perform the
-   modification.
-
-   This file contains code that is run each time the machine is
-   started.  This is the standard place where "local" modifications 
-   are made to the system.  First, make a backup copy of /etc/rc.local
-   (maybe named /etc/rc.local.prePPP).  It will be available in case
-   you accidentally mess up the file.  Then, using vi or your favorite
-   editor, place the following lines (not includeing the ==...==
-   separators ;) somewhere near the end of the file /etc/rc.local:
-======================================================================
-# 
-# Load the selected version of the PPP-2.3 loadable
-# kernel server (LKS).
-#     
-if [ -f /usr/local/ppp/reloc/ppp_reloc ]; then
-       /usr/etc/kl_util -a /usr/local/ppp/reloc/ppp_reloc > /dev/console 2>&1
-       (echo -n ' ppp')        > /dev/console
-fi
-======================================================================
-
-  This code will now be executed next time you reboot your machine.
-  You can verify that this was executed by checking the output of
-  /usr/adm/messages upon a successful reboot.  There should be a
-  section of output that says the PPP-2.3 LKS was successfully loaded.
-
-
-2) The default Makefile paths place PPP files  in a directory called
-   /usr/local/ppp.  There are several subdirectories under this
-   directory.  However, these directories are not part of the standard
-   UNIX Path.  The UNIX Path is a list of directories that UNIX searches 
-   when it is trying to find a command.  There are two solutions
-   to fix the problem.  You may either add specific PPP directories to
-   the current path (must be done for each individual user), or you
-   may add important files to a directory that is already in the
-   standard path.  I believe the second approach is the better
-   solution.  
-
-   This step is optional, but highly recommended.  As root,
-   execute the following commands to add important files
-   to directories that are already in the Standard UNIX path:
-
-   /bin/mkdirs -o root -g wheel -m 755 /usr/local/bin /usr/local/man/man8
-   ln -s /usr/local/ppp/bin/* /usr/local/bin
-   ln -s /usr/local/ppp/man/man8/* /usr/local/man/man8
-
-   To get the man program to understand that you have added some pages
-   to the /usr/local/man directory, you need to make sure that the
-   environment variable MANPATH includes the /usr/local/man entry.  In
-   my .cshrc file (in my home directory) I have an entry that looks like:
-      setenv MANPATH "/usr/local/man:/usr/man:.:.."
-   See 'man man' for more information.
-
-   Once these commands are executed, the programs pppd, pppstats, and
-   chat (along with their respective man pages) will become available
-   to you from the command line.  However, before you can immediately
-   see them, you may need to log out and log back in.
-3) Once you start trying to make PPP connections, it is important
-   to have access to the logging information that PPP generates. This
-   will allow you to follow the progress of PPP and will aid in
-   diagnosing problems.  The user level process 'pppd' outputs
-   logging information by using the standard UNIX syslog facility.
-   Part of this facility allows you to select how much (i.e.
-   what level of verbosity) and where (i.e. to which file) this
-   information will be placed.  While the following step is optional,
-   it is highly recommended.
-
-   As root, make a backup copy of /etc/syslog.conf.  You may wish
-   to call it /etc/syslog.conf.prePPP.  If you run into problems with
-   the system logging error messages, you can replace /etc/syslog.conf
-   with the original, reboot, and then you should be back to normal.
-
-   Now, as root, use vi or your favorite editor to edit the file
-   /etc/syslog.conf.  You need to add the line:
-
-       local2.debug            /usr/adm/pppd.log
-
-   It is _imperative_ that you place a <tab> character
-   between the level "local2.debug" and the file name
-   "/usr/adm/pppd.log.  Do _not_ use spaces. If your
-   editor converts tab characters to spaces, you need to
-   use a different editor.  Also beware of cutting and pasting
-   between buffers.  Sometimes a tab will be converted to spaces
-   during that operation. Below is the actual contents of
-   my /etc/syslog.conf:
-
-======================================================================
-local2.debug                                   /usr/adm/pppd.log
-*.err;kern.debug;auth.notice                   /dev/console
-kern.debug;daemon,auth.notice;*.err;mail.crit  /usr/adm/messages
-mark.debug,daemon.info                         /usr/adm/messages
-lpr.debug                                      /usr/adm/lpd-errs
-mail.info                                      /usr/spool/mqueue/syslog
-
-*.alert;kern.err;daemon.err                    operator
-*.alert                                                root
-
-*.emerg                                                *
-======================================================================
-
-   Once you have modified /etc/syslog.conf, you then need to perform
-   one more step.  You need to actually create an empty logging file.
-   This step is necessary because if syslog does not see the file, it
-   will not create it.  So, removing the file is a handy way to turn
-   off the logging.  To create an empty logging file, as root execute:
-        touch /usr/adm/pppd.log
-
-   Upon a successful reboot, logging will be enabled for pppd
-   (remember to specify the 'debug' option to pppd to get reasonable 
-   information sent to the logging file).
-
-
-4) You should copy a few files to a new directory.  Part of the
-   installation process creates a new directory (or link)
-   called /etc/ppp/. Further, it creates an empty file called
-   /etc/ppp/options. An empty options file is the bare minimum of what
-   is necessary. However, the directory ./NeXT/Examples contains
-   several files that are useful in almost any setup.  It is
-   recommended that you perform the following steps to place better
-   files in the directory /etc/ppp.  As user root, perform the
-   following commands.  It assumes you are in the PPP distribution
-   directory:
-
-     cp NeXT/Examples/options.example /etc/ppp/options
-     cp NeXT/Examples/ip-up.example /etc/ppp/ip-up
-     cp NeXT/Examples/ip-down.example /etc/ppp/ip-down
-     /usr/etc/chown root.wheel /etc/ppp/options /etc/ppp/ip-up /etc/ppp/ip-down
-     chmod 644 /etc/ppp/options
-     chmod  511 /etc/ppp/ip-up /etc/ppp/ip-down
-
-
-Congratulations!  You have successfully installed PPP and are now
-ready to start up a connection.  See the section "Initial Testing" for
-steps to verify that PPP works on your system.  
-
-
-Initial Testing
-===============
-
-One of the most notoriously difficult portions of getting PPP links up
-and running involves writing the script that automatically dials your
-modem, connects to the peer, and starts the remote ppp process.  Once
-you are connected to the peer, each PPP process will start
-communications and things become much easier.  Several frontends are
-available that help ease this problem.  See:
-  http://www.peak.org/next/ppp/NeXT_PPP_Frontends.html
-for more information on those.  If you want or need to go the
-scripting route, then please read on.
-
-Before you dive into script writing, there is a simpler solution that
-will allow you to test the ppp portion.  Once this works, getting the
-dial scripts to work is a matter of sheer determination!
-
-The mechanism is this... use a communications package (tip or kermit
-are good choices) to manually dial the modem and log into the remote
-server.  There, manually start up the pppd process (the remote
-process, once started, will probably print some garbage on the screen.
-You can ignore this). Once this is done, you can exit the
-communications process (to free up the device it is using).  Then,
-start your local pppd on the same device.  The pppd processes will
-then start communicating.  The premise is that you manually perform
-the operations that you would like your dial script to automatically
-perform.  Once you _know_ ppp works, you can spend time on the dial
-scripts.
-
-Please note, you _must_ exit from your communications program before
-you start your local pppd.  If you find that when you exit, your modem
-immediately hangs up, you need to instruct the modem to ignore DTR.
-There is an AT command that will do this (AT&D on Supra), but you will
-need to check your modem manual to determine the correct command.
-
-If you are planning on using kermit, Stephane I. Matis
-<petergun@vectrex.login.qc.ca>, has supplied this excellent definition
-that you may place inside your .kermrc file to help with PPP testing:
-----------------------------------------------------------------------
-set term byte 8
-
-# define pppd 
-define pppd -
-        !pppd < \v(line) > \v(line) defaultroute
-----------------------------------------------------------------------
-
-To use this, add the above to your ~/.kermrc file (minus the
-'---...---' separators).  Then start kermit.  After you have started
-the remote PPP server by hand and you see garbage being printed on the
-screen, return back to your local kermit prompt and execute the
-command 'do pppd'.  In this particular circumstance, you will not need
-to exit completely from kermit.
-
-Before you start initial testing, you may want to read the pppd man
-page.  This will allow you to familiarize yourself with the some of
-the options available to you for starting your local pppd.
-
-Of particular interest for most people is the 'defaultroute' option to
-pppd.  If you have a standalone machine, then all your foreign traffic
-must go to the peer.  Adding the 'defaultroute' option to pppd
-instructs pppd to set your system up in such a manner.
-
-
-Determining if the link is actually up
-======================================
-
-There are several ways to determine if the link has actaully been
-established.  I will go through some of them.
-
-1) You may look at the pppd log file (typically
-   /usr/adm/pppd.log).  If you see lines that look similar to:
-
-    Jan 11 23:13:38 sidney2b pppd[2141]: local  IP address 35.9.12.55
-    Jan 11 23:13:38 sidney2b pppd[2141]: remote IP address 35.9.10.13
-
-   You are probably up.
-
-2) You may check the status of the PPP interface.  Using the command:
-     /usr/etc/ifconfig ppp0
-
-   You should see that the interface is UP and that there are valid
-   IP addresses assigned to it (0.0.0.0 is not valid).  Here is an
-   example of what you might see:
-
-       ppp0: flags=51<UP,POINTOPOINT,RUNNING>
-               inet 35.9.12.104 --> 35.9.10.14 netmask ff000000 
-
-3) You may check the routing.  When the connection comes up, you
-   should get at least one route to the new interface.  If you
-   specified 'defaultroute' to pppd, you should also see a default
-   route.  The command for checking routes is 'netstat -rn'.  Here
-   is an example of what you might see:
-
-       Routing tables
-        Destination      Gateway            Flags     Refs     Use  Interface
-        35.9.10.32       35.9.15.107        UH          0        0  ppp0
-        127.0.0.1        127.0.0.1          UH         12     2636  lo0
-        35.9.15.107      127.0.0.1          UH          0        0  lo0
-        default          35.9.10.32         UG          2        6  ppp0
-        192.42.172       192.42.172.1       U          15     8872  en0
-
-
-  In the above case, the peer is 35.9.10.32 and my local machine has
-  been assigned 35.9.15.107.  All foreign traffic goes through the
-  default route to the peer.
-
-  If you don't have an ethernet card installed on your system, you
-  will not have an 'en0' interface.
-   
-  
-The routing issue is important.  Discussion of this issue is outside
-the scope of these instructions, but I thought it might be beneficial
-to list a few other important tools that may help you out.  The man
-pages can give more details:
-  /usr/etc/ping           - send packets to an IP address or hostname
-  traceroute             - Show the route to a particular machine
-
-The IP address that you use can be negotiated automatically in PPP.
-Unlike SLIP, you do not have to specify an IP address when the link is
-brought up.  If no address is specified as an argument to pppd, then
-PPP will negotiate the address with the peer.  This is the preferred
-mechanism of operation.  Probably the only time you should specify an
-IP address as an argument to pppd is if you are assigned your own IP
-address by your system administrator.  Otherwise, sit back and let PPP
-do the work for you.  If you are assigned an address by your PPP
-provider, that address does _NOT_ go in the hostconfig.app or netinfo.
-Instead, you provide that IP address as a command line option to pppd
-when you start it up.  See the pppd man page for details on specifying
-a fixed IP address.
-
-
-A Typical PPP Session
-=====================
-
-A tyipcal PPP session begins when you log into your system.  From a
-terminal window, you will run your dial script by typing its name at
-the prompt.  If you use the Workspace manager, you can double click on
-the scripts icon.  This will start the chat process that will dial the
-modem and log into the remote system.  It will then turn control over
-to pppd.  If your script is successful (as described in the
-"Determining if the link is actually up" section), you will be all
-set.  All your apps, OmniWeb, FTP, telnet, etc should work.  Please
-note that pppd itself will not appear to do anything but sit there.
-
-Once you are through using the connection, you can close down the PPP
-link by executing the ppp down script.  Again, this can be done by
-typing the name of the pppdown script in a terminal window, or double
-clicking on the appropriate icon in the Workspace manager.  At this
-point, ppp will terminate the phone connection and pppd will die off.
-
-You may start and kill the ppp session as many times as you like while
-you are logged on.  However, if you do not kill the PPP session, it
-will not die once you log out (unless you use the idle timer option to
-pppd).  Thus your telephone will remain off the hook and your computer
-will remain connected to the net until you log back in and shut down
-the connection.  Turning off the computer will obviously close the
-connection.
-
-
-Name Resolution
-===============
-
-Once you have a ppp connection up, you may notice that your machine
-will not be able to resolve the names of machines to their IP
-addresses.  You can check this by trying to telnet to a machine outside
-your local domain.  If "telnet <IP address of machine>" is successful,
-but "telnet <machinename>" is not, then your name resolution is not
-configured correctly. The fix is to edit the file /etc/resolv.conf.
-This file contains two important items.  The first is your domain
-name.  This is the name that is automatically tacked on to a computer
-name if you don't specify the complete name.  For example if my domain
-is 'cps.msu.edu' and I say 'telnet sidney', the computer will try
-'telnet sidney.cps.msu.edu' (although, it will not print this name on
-the command line).
-
-The second thing is a list of name servers.  These should be local to
-your ppp provider.  Your network administrator will be able to provide
-you with the appropriate addresses and you should use those, not the
-ones listed below.  An example file might look like:
-
-----------------------------------------------------------------------
-domain cps.msu.edu
-
-#
-# Insert local name servers here
-#
-
-
-#
-# MSU name servers 
-#
-nameserver 35.8.2.41
-nameserver 35.8.2.41
-nameserver 128.247.160.56
-
-----------------------------------------------------------------------
-
-You will need to reboot your computer for the new nameservers to take
-effect.
-
-
-Making startup and shutdown scripts
-===================================
-
-By this time, I'm assuming that PPP has been successfully installed.
-However, there are a few more steps that you must perform so that
-using PPP (now and with future upgrades) will be convenient and easy.
-These steps are optional, but they are highly recommended.
-
-Make scripts 'pppup' and 'pppdown' that bring up and shutdown PPP
-connections.  There are a number of example scripts that you can copy
-and modify.  Reading the man page for 'chat' will help you understand
-these scripts. You should note that once these scripts are made, you
-probably won't need to change them for future upgrades to PPP.
-
-One note that you should be VERY careful about.  These file are shell
-scripts.  This means that the contents are executed in a shell just as
-if you had typed them in by hand.  You must make sure that any
-characters that are treated specially by the shell (such as < > | \ )
-are inside quotation marks ("").  Otherwise, they will be interpreted
-by the shell in a manner that is probably to your dislike.  For
-example, if your peer sends you a prompt like MSUnet> you must add it
-to the chat portion of your script like "MSUnet>".
-
-In order to ensure that these scripts are not removed or modified when
-new versions of PPP are installed, you should copy all important
-scripts into a new directory.  I suggest /usr/local/ppp/scripts.  This
-directory will not be modified during installation. Further, as you
-did earlier for the important binaries, you may want to add important
-scripts to a directory that is in the default UNIX Search Path.  The
-mechanism for doing this is as follows.  Suppose you have a script
-'pppup' (found in /usr/local/ppp/scripts) that you want to be
-available on your command line.  You could execute the commands:
-  /bin/mkdirs -o root -g wheel -m 755 /usr/local/bin
-  ln -s /usr/local/ppp/scripts/pppup /usr/local/bin
-
-Once you log out and log back in, this script will be available.  If
-you want to be able to call this script from a non-root account, you
-need to modify the permission on the file to make it suid root.
-Please note that this can be a potential security hazard.  See your
-system administrator for more details.
-
-As mentioned above, of particular interest for most people is the
-'defaultroute' option to pppd.  If you have a standalone machine, then
-all your foreign traffic must go to the peer.  Remember to add the
-'defaultroute' option to pppd in your startup scripts if necessary (or
-place it in the /etc/ppp/options file).
-
-Troubleshooting
-===============
-
-Any time that you have a bug report, please use the included
-MailBug.app (in the NeXT directory) to submit an electronic report.
-If you don't have email capability, please see the WWW site and use
-the bug report form found there.  Please remember to include your 
-hardware type and the LKS version number in all reports.  This number
-may be found in the file /usr/adm/messages (once the LKS has been
-installed). Also, for most questions, it is best to append a copy of
-the /usr/adm/pppd.log file.
-
-If you do have troubles, please see the FAQ on:
-  http://www.peak.org/next/ppp/
-
-
-Updates
-=======
-
-You may want to join the mailing list for PPP.  This will keep
-you informed of new releases and will provide an arena for discussing
-problems with the NeXT specific PPP port.  To add yourself to the list
-(or for any other administrative requests), send an email message to:
-       majordomo@peak.org
-with no subject and message body consisting of:
-       subscribe nextppp 
-(please use your own name ;). To send mail to all the participants on
-the list, address your messages to:
-       nextppp@peak.org
-
-If you want announcements only, there is a second "announcements only"
-list.  To subscribe to this, you may use the alternate body:
-       subscribe nextppp-announce 
-You don't need to subscribe to both.  All announcements are forwarded
-to the regular list.
-
-Security
-========
-
-Security issues are not dealt with in this document.  Please
-note that the pppd file is installed suid root.  This is a potential
-security hazard.
-
-
-Noted bugs
-==========
-
-There have been various problems reported when trying to install LKSs
-the way NeXT intended (i.e. placing them in /usr/lib/kern_loader/* and
-modifying /etc/kern_loader.conf). The main problem is that if users
-have a bad copy of the LKS, the system will panic and will be unable
-to boot. So, for the time, it is suggested that you install the package
-manually and load the LKS in /etc/rc.local as directed above.
-
-
-Modem Configuration
-===================
-
-It is important to use hardware flow control if you use a high speed
-modem. On my supra V.32bis modem, the command to use Hardware Flow
-Control is 'AT&K3'.
-
-Also, you will probably want to set your modem so that when the DTR is
-dropped, the modem will disconnect.  On my modem the command is
-'AT&D2' This setting disables auto-answer so if you want to allow
-dialins, you must read your modem manual to determine the correct
-setting.
-
-
-Obtaining the Software by Electronic Mail
------------------------------------------
-
-Do not send me requests for the software; they will be ignored
-(without response).  If you cannot use FTP at all, there is a service
-called "ftpmail" available from decwrl.dec.com: you can send e-mail to
-this machine and it will use FTP to retrieve files for you and send
-you the files back again via e-mail.  To find out more about the
-ftpmail service, send a message to "ftpmail@decwrl.dec.com" whose body
-consists of the single line "help".
-
-
-Thanks
-
-Stephen J. Perkins
diff --git a/NeXT/Load_Commands.sect b/NeXT/Load_Commands.sect
deleted file mode 100755 (executable)
index d701060..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# Associate ports with proc/arg
-
-CALL           pppattach               0
-WIRE
-START
diff --git a/NeXT/Makefile b/NeXT/Makefile
deleted file mode 100755 (executable)
index b39a849..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-#
-# Makefile for NeXT OS 3.2
-#
-# $Id: Makefile,v 1.3 1998/03/26 02:51:37 paulus Exp $
-#
-
-#ARCHFLAGS = -arch i386 -arch m68k
-ARCHFLAGS =
-
-BINDIR = /usr/local/ppp/bin
-MANDIR = /usr/local/ppp/man
-ETCDIR = /usr/local/ppp/etc
-
-#
-# If you change this pathname, you must also change the path
-# in and rc.local (or rc.ppp).
-#
-LKS_DIR=/usr/local/ppp/reloc
-
-#
-# NUM_PPP=x      The number of ppp interfaces you want to create
-#
-# VJC            If defined, enables VJ header compression
-#
-# PPP_COMPRESS   If defined, enables BSD packet compression
-#
-# HAS_BROKEN_TIOCSPGRP Fixes broken IOCTL with NeXT serial drivers
-#
-# OLD_MUX        Fixes double buffer problem with the MuX serial
-#                driver.
-#
-# OPTIMIZE_PPPREND Enable an optimization supported by the NeXT serial
-#                  drivers.  Basically they buffer characters for an
-#                  interrupt and call ppprend.
-#
-# NEW_CLOCAL     Used to enable the new code that sets CLOCAL.  Else,
-#                the old code is used.
-#
-
-DFLAGS = -D_POSIX_SOURCE -DINET -DKERNEL -DMACH -DPOSIX_KERN \
-       -DNUM_PPP=2 -DVJC -DPPP_COMPRESS \
-       -DDEBUG -DNEW_CLOCAL -DOPTIMIZE_PPPREND
-
-IFLAGS = -I. -I../include -I../pppd
-
-CFLAGS = -O -g -pipe $(ARCHFLAGS) $(DFLAGS) $(IFLAGS) 
-
-OBJS = bsd-comp.o if_ppp.o ppp_tty.o vjcompress.o
-SRCS = $(OBJS:.o=.c)
-
-
-#
-# Default target
-#
-all:   ppp_reloc
-
-
-install: all
-       /bin/mkdirs $(ETCDIR) $(LKS_DIR)
-       if (test ! -r /etc/ppp) then (ln -s $(ETCDIR) /etc/ppp) fi
-       install -c -m 644 -o root -g daemon ppp_reloc $(LKS_DIR)
-       touch $(ETCDIR)/options
-
-ppp_reloc:     $(OBJS) Load_Commands.sect Unload_Commands.sect
-       kl_ld $(ARCHFLAGS) -n ppp -l Load_Commands.sect -u Unload_Commands.sect \
-              -d ppp_loadable -i instance -o $@ $(OBJS)
-
-clean:
-       rm -f ppp_reloc ppp_loadable core make $(OBJS) *~ 
-
-
-$(SRCS): if_pppvar.h nbq.h inlines.h Makefile
diff --git a/NeXT/Makefile.top b/NeXT/Makefile.top
deleted file mode 100644 (file)
index 4ca9d58..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-# ppp top level makefile for NeXT systems
-#
-# $Id: Makefile.top,v 1.10 1999/12/23 01:48:44 paulus Exp $
-#
-
-# Change the values of ARCHFLAGS to include the 
-# appropriate architectures.  A blank entry compiles
-# for the local architecture
-#ARCHFLAGS = -arch i386 -arch m68k -arch hppa -arch sparc
-#ARCHFLAGS = -arch i386 -arch m68k
-ARCHFLAGS =
-
-#
-# It is not suggested that you change any values from here
-# on.
-#
-BINDIR = /usr/local/ppp/bin
-MANDIR = /usr/local/ppp/man
-ETCDIR = /etc/ppp
-
-
-all:
-       cd NeXT/libposix; $(MAKE) ARCHFLAGS="$(ARCHFLAGS)" all
-       cd chat; $(MAKE) -f Makefile.NeXT ARCHFLAGS="$(ARCHFLAGS)" all
-       cd pppstats; $(MAKE) -f Makefile.NeXT ARCHFLAGS="$(ARCHFLAGS)" all
-       cd pppd; $(MAKE) -f Makefile.NeXT ARCHFLAGS="$(ARCHFLAGS)" all
-       cd NeXT; $(MAKE) ARCHFLAGS="$(ARCHFLAGS)" all
-
-
-install: 
-       cd chat; \
-       $(MAKE) -f Makefile.NeXT ARCHFLAGS="$(ARCHFLAGS)" BINDIR=$(BINDIR) MANDIR=$(MANDIR) install
-       cd pppstats; \
-       $(MAKE) -f Makefile.NeXT ARCHFLAGS="$(ARCHFLAGS)" BINDIR=$(BINDIR) MANDIR=$(MANDIR) install
-       cd pppd; \
-       $(MAKE) -f Makefile.NeXT ARCHFLAGS="$(ARCHFLAGS)" BINDIR=$(BINDIR) MANDIR=$(MANDIR) install
-       cd NeXT; \
-       $(MAKE) ARCHFLAGS="$(ARCHFLAGS)" BINDIR=$(BINDIR) ETCDIR=$(ETCDIR) install
-
-clean: 
-       rm -f *~
-       (cd libposix; $(MAKE) -f Makefile.NeXT clean)
-       (cd chat; $(MAKE) -f Makefile.NeXT clean)
-       (cd pppstats; $(MAKE) -f Makefile.NeXT clean)
-       (cd pppd; $(MAKE) -f Makefile.NeXT clean)
-       (cd NeXT; $(MAKE) clean)
-
-
-
-NEXTTOP = \
-       README.NeXT                             \
-       ${NULL}
-
-NEXTPOSIX = \
-       libposix/Makefile.NeXT                  \
-       libposix/libposix.c                     \
-       ${NULL}
-
-NEXTPPPD = \
-       pppd/Makefile.NeXT                      \
-       pppd/sys-NeXT.c                         \
-       ${NULL}
-
-NEXTNET = \
-       net/if_ppp.h                            \
-       net/ppp_defs.h                          \
-       ${NULL}
-
-NEXTSTATS = \
-       pppstats/Makefile.NeXT                  \
-       ${NULL}
-
-#      pppstats/pppstats.c                     
-
-
-NEXTCHAT = \
-       chat/Makefile.NeXT                      \
-       chat/chat.c.3.2                         \
-       ${NULL}
-
-NEXTLKS = \
-       NeXT/ChangeLog.rtf                      \
-       NeXT/INSTALL                            \
-       NeXT/Load_Commands.sect                 \
-       NeXT/Makefile                           \
-       NeXT/Makefile.top                       \
-        NeXT/NeXT_Version.h                    \
-       NeXT/TODO.NeXT                          \
-       NeXT/Unload_Commands.sect               \
-       NeXT/bsd-comp.c                         \
-       NeXT/if_ppp.c                           \
-       NeXT/if_pppvar.h                        \
-       NeXT/inlines.h                          \
-       NeXT/linedisc.h                         \
-       NeXT/nbq.h                              \
-       NeXT/netbuf.h                           \
-       NeXT/ppp_tty.c                          \
-       NeXT/spl.h                              \
-       NeXT/vjcompress.c                       \
-       ${NULL}
-
-NEXTHPPA = \
-       NeXT/hppa/README.hppa                   \
-       NeXT/hppa/hppaSerialPatch.tar.gz        \
-       ${NULL}
-
-NEXTMACH = \
-       NeXT/mach/features.h                    \
-       ${NULL}
-
-
-NEXTEXAMP = \
-       NeXT/Examples/NXHosting_with_PPP        \
-       NeXT/Examples/Persistent_Connection     \
-       NeXT/Examples/README                    \
-       NeXT/Examples/chap-secrets.example      \
-       NeXT/Examples/flow-control-hints        \
-       NeXT/Examples/ip-down.example           \
-       NeXT/Examples/ip-up.example             \
-       NeXT/Examples/options.example           \
-       NeXT/Examples/pap-secrets.example       \
-       NeXT/Examples/ppp_multiple_hosts.tar.gz \
-       NeXT/Examples/pppdown                   \
-       NeXT/Examples/pppkill.c                 \
-       NeXT/Examples/pppup.annex               \
-       NeXT/Examples/pppup.direct              \
-       NeXT/Examples/pppup.portmaster          \
-       NeXT/Examples/pppup.remote              \
-       NeXT/Examples/pppup.zyxel               \
-       NeXT/Examples/redial.sh                 \
-       ${NULL}
-
-NEXTPORT = \
-          ${NEXTTOP}                   \
-          ${NEXTPOSIX}                 \
-          ${NEXTPPPD}                  \
-          ${NEXTNET}                   \
-          ${NEXTSTATS}                 \
-          ${NEXTCHAT}                  \
-          ${NEXTLKS}                   \
-          ${NEXTHPPA}                  \
-          ${NEXTMACH}                  \
-          ${NEXTEXAMP}                 \
-          ${NULL}
-
-
-#
-#  The idea is to make for easy distribution of new port material.
-#  Just make sure all relevant files appear in the lists above,
-#  then:
-#    1) Update the file ./NeXT_Version with a new number
-#    2) go to the top level directory and type 'make portdist'.
-#       You should get a nice tared/compressed file that is ready for
-#       the archive. 
-#
-
-portdist: 
-       echo NeXT-ppp2.3.11-`sed -e '/version_string/!d' \
-             -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q ./NeXT/NeXT_Version.h` > .fname
-       rm -rf `cat .fname`
-       mkdir `cat .fname`
-       mkdir `cat .fname`/libposix
-       mkdir `cat .fname`/pppd
-       mkdir `cat .fname`/net
-       mkdir `cat .fname`/chat
-       mkdir `cat .fname`/NeXT
-       mkdir `cat .fname`/NeXT/hppa
-       mkdir `cat .fname`/NeXT/mach
-       mkdir `cat .fname`/NeXT/Examples
-       mkdir `cat .fname`/pppstats
-       -ln $(NEXTTOP) `cat .fname`
-       -ln $(NEXTPOSIX) `cat .fname`/libposix
-       -ln $(NEXTPPPD) `cat .fname`/pppd
-       -ln $(NEXTNET) `cat .fname`/net
-       -ln $(NEXTCHAT) `cat .fname`/chat
-       -ln $(NEXTLKS) `cat .fname`/NeXT
-       -ln $(NEXTHPPA) `cat .fname`/NeXT/hppa
-       -ln $(NEXTMACH) `cat .fname`/NeXT/mach
-       -ln $(NEXTEXAMP) `cat .fname`/NeXT/Examples
-       -ln $(NEXTSTATS) `cat .fname`/pppstats
-       for file in $(NEXTPORT); do \
-               test -r `cat .fname`/$$file || cp -p $$file `cat .fname`; \
-       done
-       (cd `cat .fname`;tar chf - '.' | gzip --best > ../`cat ../.fname`.tar.gz)
-       rm -rf `cat .fname` .fname
-
-.PHONY: dialppp portdist
diff --git a/NeXT/NeXT_Version.h b/NeXT/NeXT_Version.h
deleted file mode 100644 (file)
index 41fe944..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
-* ppp-2.3 port to the NeXT
-* version_string 0.5.1
-*
-* $Id: NeXT_Version.h,v 1.1 1998/03/26 02:51:41 paulus Exp $
-*/
-#define PPPVERSION "0.5.1"
diff --git a/NeXT/TODO.NeXT b/NeXT/TODO.NeXT
deleted file mode 100644 (file)
index a893288..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-#  $Id: TODO.NeXT,v 1.3 1998/03/26 02:51:42 paulus Exp $
-#
-
-* Check persist option
-
-* Fix installer to recognize other installation.
-
-* Add threads to LKS.
-
-* NUM_PPP in pppd/pppd.h and Makefile are different
-
-* Fix with VirtModem
-
-* Use kget inside interrupt handler.
-
-* Move LKS to user space via an IP Tunneler
-
-Look at NAT:There *is* a way to get multiple machines on a network to use
-       one IP address.  RFC 1631 -- The IP Network Address Translator
-       (NAT) describes how this works.
-       http://www.mischler.com 
-       http://willow.canberra.edu.au/~chrisc/nat.html
\ No newline at end of file
diff --git a/NeXT/Unload_Commands.sect b/NeXT/Unload_Commands.sect
deleted file mode 100755 (executable)
index 81ff88e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-CALL           pppdetach               0
diff --git a/NeXT/bsd-comp.c b/NeXT/bsd-comp.c
deleted file mode 100644 (file)
index 8ae9404..0000000
+++ /dev/null
@@ -1,1079 +0,0 @@
-/* Because this code is derived from the 4.3BSD compress source:
- *
- *
- * Copyright (c) 1985, 1986 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * James A. Woods, derived from original work by Spencer Thomas
- * and Joseph Orost.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * Rewritten for NextStep's funky kernel functions, I/O threads,
- * and netbufs (instead of real mbufs).  Also, ifnets don't install
- * into the kernel under NS as they do under BSD.  We have tried to
- * make the code remain as similar to the NetBSD version without
- * incurring too much hassle.  This code is the merge of 
- * Philip Prindeville's <philipp@res.enst.fr>/Pete French's <pete@ohm.york.ac.uk>
- * and Stephen Perkins'  <perkins@cps.msu.edu> independent ports.
- *
- */
-
-/*
- * This version is for use with mbufs on BSD-derived systems.
- *
- * $Id: bsd-comp.c,v 1.5 1998/03/26 02:51:45 paulus Exp $
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-
-#define        KERNEL 1
-#include <net/netbuf.h>
-#include <net/if.h>
-
-#include <net/ppp_defs.h>
-
-#include <net/if_ppp.h>
-
-#include "nbq.h"
-
-#define PACKETPTR      NETBUF_T
-#include <net/ppp-comp.h>
-
-
-/*
- * We align with this number of bits zero. The code makes the somewhat
- * suspect assumption that an address can be held in an unsigned long.
- * Sadly this is necessary to do bit operations on it.
- */
-
-#define Z_ALIGN 3      /* 8 byte boudary */
-#define Z_EXTRA ((unsigned long)((1<<Z_ALIGN)-1))
-#define ALIGN(x) ((x+Z_EXTRA) & ~Z_EXTRA)
-
-#if DO_BSD_COMPRESS
-
-/*
- * The following includes are necessary to correctly
- * support BYTE_ORDER.  -SJP
- */
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/in_var.h>
-#include <netinet/ip.h>
-
-#define        mtod(m,type)    ((type)NB_MAP(m))
-
-/*
- * PPP "BSD compress" compression
- *  The differences between this compression and the classic BSD LZW
- *  source are obvious from the requirement that the classic code worked
- *  with files while this handles arbitrarily long streams that
- *  are broken into packets.  They are:
- *
- *     When the code size expands, a block of junk is not emitted by
- *         the compressor and not expected by the decompressor.
- *
- *     New codes are not necessarily assigned every time an old
- *         code is output by the compressor.  This is because a packet
- *         end forces a code to be emitted, but does not imply that a
- *         new sequence has been seen.
- *
- *     The compression ratio is checked at the first end of a packet
- *         after the appropriate gap.  Besides simplifying and speeding
- *         things up, this makes it more likely that the transmitter
- *         and receiver will agree when the dictionary is cleared when
- *         compression is not going well.
- */
-
-/*
- * A dictionary for doing BSD compress.
- */
-struct bsd_db {
-    void    *kbase;                    /* actual kalloc'd address for struct */
-    void    *klens;                    /* actual kalloc'd address for lens */
-    int            totlen;                     /* length of this structure */
-    u_int   hsize;                     /* size of the hash table */
-    u_char  hshift;                    /* used in hash function */
-    u_char  n_bits;                    /* current bits/code */
-    u_char  maxbits;
-    u_char  debug;
-    u_char  unit;
-    u_int16_t seqno;                   /* sequence # of next packet */
-    u_int   hdrlen;                    /* header length to preallocate */
-    u_int   mru;
-    u_int   maxmaxcode;                        /* largest valid code */
-    u_int   max_ent;                   /* largest code in use */
-    u_int   in_count;                  /* uncompressed bytes, aged */
-    u_int   bytes_out;                 /* compressed bytes, aged */
-    u_int   ratio;                     /* recent compression ratio */
-    u_int   checkpoint;                        /* when to next check the ratio */
-    u_int   clear_count;               /* times dictionary cleared */
-    u_int   incomp_count;              /* incompressible packets */
-    u_int   incomp_bytes;              /* incompressible bytes */
-    u_int   uncomp_count;              /* uncompressed packets */
-    u_int   uncomp_bytes;              /* uncompressed bytes */
-    u_int   comp_count;                        /* compressed packets */
-    u_int   comp_bytes;                        /* compressed bytes */
-    u_int16_t *lens;                   /* array of lengths of codes */
-    struct bsd_dict {
-       union {                         /* hash value */
-           u_int32_t   fcode;
-           struct {
-#if BYTE_ORDER == LITTLE_ENDIAN
-               u_int16_t prefix;               /* preceding code */
-               u_char  suffix;         /* last character of new code */
-               u_char  pad;
-#else
-               u_char  pad;
-               u_char  suffix;         /* last character of new code */
-               u_int16_t prefix;               /* preceding code */
-#endif
-           } hs;
-       } f;
-       u_int16_t codem1;                       /* output of hash table -1 */
-       u_int16_t cptr;                 /* map code to hash table entry */
-    } dict[1];
-};
-
-#define BSD_OVHD       2               /* BSD compress overhead/packet */
-#define BSD_INIT_BITS  BSD_MIN_BITS
-
-static void    *bsd_comp_alloc __P((u_char *options, int opt_len));
-static void    *bsd_decomp_alloc __P((u_char *options, int opt_len));
-static void    bsd_free __P((void *state));
-static int     bsd_comp_init __P((void *state, u_char *options, int opt_len,
-                                  int unit, int hdrlen, int debug));
-static int     bsd_decomp_init __P((void *state, u_char *options, int opt_len,
-                                    int unit, int hdrlen, int mru, int debug));
-static int     bsd_compress __P((void *state, NETBUF_T *mret,
-                                 NETBUF_T mp, int slen, int maxolen));
-static void    bsd_incomp __P((void *state, NETBUF_T dmsg));
-static int     bsd_decompress __P((void *state, NETBUF_T cmp, NETBUF_T *dmpp));
-static void    bsd_reset __P((void *state));
-static void    bsd_comp_stats __P((void *state, struct compstat *stats));
-
-/*
- * Procedures exported to if_ppp.c.
- */
-struct compressor ppp_bsd_compress = {
-    CI_BSD_COMPRESS,           /* compress_proto */
-    bsd_comp_alloc,            /* comp_alloc */
-    bsd_free,                  /* comp_free */
-    bsd_comp_init,             /* comp_init */
-    bsd_reset,                 /* comp_reset */
-    bsd_compress,              /* compress */
-    bsd_comp_stats,            /* comp_stat */
-    bsd_decomp_alloc,          /* decomp_alloc */
-    bsd_free,                  /* decomp_free */
-    bsd_decomp_init,           /* decomp_init */
-    bsd_reset,                 /* decomp_reset */
-    bsd_decompress,            /* decompress */
-    bsd_incomp,                        /* incomp */
-    bsd_comp_stats,            /* decomp_stat */
-};
-
-/*
- * the next two codes should not be changed lightly, as they must not
- * lie within the contiguous general code space.
- */
-#define CLEAR  256                     /* table clear output code */
-#define FIRST  257                     /* first free entry */
-#define LAST   255
-
-#define MAXCODE(b)     ((1 << (b)) - 1)
-#define BADCODEM1      MAXCODE(BSD_MAX_BITS)
-
-#define BSD_HASH(prefix,suffix,hshift) ((((u_int32_t)(suffix)) << (hshift)) \
-                                        ^ (u_int32_t)(prefix))
-#define BSD_KEY(prefix,suffix)         ((((u_int32_t)(suffix)) << 16) \
-                                        + (u_int32_t)(prefix))
-
-#define CHECK_GAP      10000           /* Ratio check interval */
-
-#define RATIO_SCALE_LOG        8
-#define RATIO_SCALE    (1<<RATIO_SCALE_LOG)
-#define RATIO_MAX      (0x7fffffff>>RATIO_SCALE_LOG)
-
-/* Could include inlines.h */
-#ifndef IOLog
-#define IOLog printf
-#define        IOLogDbg        if (db->debug) printf
-#else
-#define        IOLogDbg        if (db->debug) IOLog
-#endif
-
-/*
- * clear the dictionary
- */
-static void
-bsd_clear(db)
-    struct bsd_db *db;
-{
-    db->clear_count++;
-    db->max_ent = FIRST-1;
-    db->n_bits = BSD_INIT_BITS;
-    db->ratio = 0;
-    db->bytes_out = 0;
-    db->in_count = 0;
-    db->incomp_count = 0;
-    db->checkpoint = CHECK_GAP;
-}
-
-/*
- * If the dictionary is full, then see if it is time to reset it.
- *
- * Compute the compression ratio using fixed-point arithmetic
- * with 8 fractional bits.
- *
- * Since we have an infinite stream instead of a single file,
- * watch only the local compression ratio.
- *
- * Since both peers must reset the dictionary at the same time even in
- * the absence of CLEAR codes (while packets are incompressible), they
- * must compute the same ratio.
- */
-static int                             /* 1=output CLEAR */
-bsd_check(db)
-    struct bsd_db *db;
-{
-    u_int new_ratio;
-
-    if (db->in_count >= db->checkpoint)
-      {
-
-       /* age the ratio by limiting the size of the counts */
-       if (db->in_count >= RATIO_MAX
-           || db->bytes_out >= RATIO_MAX) {
-           db->in_count -= db->in_count/4;
-           db->bytes_out -= db->bytes_out/4;
-       }
-
-       db->checkpoint = db->in_count + CHECK_GAP;
-
-       if (db->max_ent >= db->maxmaxcode) {
-           /* Reset the dictionary only if the ratio is worse,
-            * or if it looks as if it has been poisoned
-            * by incompressible data.
-            *
-            * This does not overflow, because
-            *  db->in_count <= RATIO_MAX.
-            */
-           new_ratio = db->in_count << RATIO_SCALE_LOG;
-           if (db->bytes_out != 0)
-               new_ratio /= db->bytes_out;
-
-           if (new_ratio < db->ratio || new_ratio < 1 * RATIO_SCALE)
-             {
-               bsd_clear(db);
-               return 1;
-             }
-           db->ratio = new_ratio;
-       }
-    }
-    return 0;
-}
-
-/*
- * Return statistics.
- */
-static void
-bsd_comp_stats(state, stats)
-    void *state;
-    struct compstat *stats;
-{
-    struct bsd_db *db = (struct bsd_db *) state;
-    u_int out;
-
-    stats->unc_bytes = db->uncomp_bytes;
-    stats->unc_packets = db->uncomp_count;
-    stats->comp_bytes = db->comp_bytes;
-    stats->comp_packets = db->comp_count;
-    stats->inc_bytes = db->incomp_bytes;
-    stats->inc_packets = db->incomp_count;
-    stats->ratio = db->in_count;
-    out = db->bytes_out;
-    if (stats->ratio <= 0x7fffff)
-      stats->ratio <<= 8;
-    else
-      out >>= 8;
-    if (out != 0)
-      stats->ratio /= out;
-}
-
-/*
- * Reset state, as on a CCP ResetReq.
- */
-static void
-bsd_reset(state)
-    void *state;
-{
-    struct bsd_db *db = (struct bsd_db *) state;
-
-    db->seqno = 0;
-    bsd_clear(db);
-    db->clear_count = 0;
-}
-
-/*
- * Allocate space for a (de) compressor.
- */
-static void *
-bsd_alloc(options, opt_len, decomp)
-    u_char *options;
-    int opt_len, decomp;
-{
-    int bits;
-    u_int newlen, hsize, hshift, maxmaxcode;
-    struct bsd_db *db;
-
-    if (opt_len != CILEN_BSD_COMPRESS || options[0] != CI_BSD_COMPRESS
-       || options[1] != CILEN_BSD_COMPRESS
-       || BSD_VERSION(options[2]) != BSD_CURRENT_VERSION)
-       return NULL;
-    bits = BSD_NBITS(options[2]);
-    switch (bits) {
-    case 9:                    /* needs 82152 for both directions */
-    case 10:                   /* needs 84144 */
-    case 11:                   /* needs 88240 */
-    case 12:                   /* needs 96432 */
-       hsize = 5003;
-       hshift = 4;
-       break;
-    case 13:                   /* needs 176784 */
-       hsize = 9001;
-       hshift = 5;
-       break;
-    case 14:                   /* needs 353744 */
-       hsize = 18013;
-       hshift = 6;
-       break;
-    case 15:                   /* needs 691440 */
-       hsize = 35023;
-       hshift = 7;
-       break;
-    case 16:                   /* needs 1366160--far too much, */
-       /* hsize = 69001; */    /* and 69001 is too big for cptr */
-       /* hshift = 8; */       /* in struct bsd_db */
-       /* break; */
-    default:
-       return NULL;
-    }
-
-    maxmaxcode = MAXCODE(bits);
-    newlen = sizeof(*db) + (hsize-1) * (sizeof(db->dict[0]));
-    {
-    unsigned long kret;
-    kret = (unsigned long) kalloc(Z_EXTRA + newlen);
-    if (!kret)
-       return NULL;
-    db = (struct bsd_db *) ALIGN(kret);
-    bzero(db, sizeof(*db) - sizeof(db->dict));
-    db->kbase = (void *)kret;
-    }
-
-    if (!decomp) {
-       db->lens = NULL;
-    } else {
-        unsigned long kret;
-       kret = (unsigned long) kalloc(Z_EXTRA +
-                               ((maxmaxcode+1) * sizeof(db->lens[0])));
-       if (!kret) {
-           kfree(db->kbase, newlen + Z_EXTRA);
-           return NULL;
-       }
-       db->lens = (u_int16_t *) ALIGN(kret);
-       db->klens = (void *) kret;
-    }
-
-    db->totlen = newlen;
-    db->hsize = hsize;
-    db->hshift = hshift;
-    db->maxmaxcode = maxmaxcode;
-    db->maxbits = bits;
-
-    return (void *) db;
-}
-
-static void
-bsd_free(state)
-    void *state;
-{
-    struct bsd_db *db = (struct bsd_db *) state;
-
-    if (db->lens)
-       kfree(db->klens, ((db->maxmaxcode+1) * sizeof(db->lens[0])) + Z_EXTRA);
-    kfree(db->kbase, db->totlen + Z_EXTRA);
-}
-
-static void *
-bsd_comp_alloc(options, opt_len)
-    u_char *options;
-    int opt_len;
-{
-    return bsd_alloc(options, opt_len, 0);
-}
-
-static void *
-bsd_decomp_alloc(options, opt_len)
-    u_char *options;
-    int opt_len;
-{
-    return bsd_alloc(options, opt_len, 1);
-}
-
-/*
- * Initialize the database.
- */
-static int
-bsd_init(db, options, opt_len, unit, hdrlen, mru, debug, decomp)
-    struct bsd_db *db;
-    u_char *options;
-    int opt_len, unit, hdrlen, mru, debug, decomp;
-{
-    int i;
-
-    if (opt_len < CILEN_BSD_COMPRESS || options[0] != CI_BSD_COMPRESS
-       || options[1] != CILEN_BSD_COMPRESS
-       || BSD_VERSION(options[2]) != BSD_CURRENT_VERSION
-       || BSD_NBITS(options[2]) != db->maxbits
-       || decomp && db->lens == NULL)
-       return 0;
-
-    if (decomp) {
-       i = LAST+1;
-       while (i != 0)
-           db->lens[--i] = 1;
-    }
-    i = db->hsize;
-    while (i != 0) {
-       db->dict[--i].codem1 = BADCODEM1;
-       db->dict[i].cptr = 0;
-    }
-
-    db->unit = unit;
-    db->hdrlen = hdrlen;
-    db->mru = mru;
-#ifndef        DEBUG
-    if (debug)
-#endif
-       db->debug = 1;
-
-    bsd_reset(db);
-
-    return 1;
-}
-
-static int
-bsd_comp_init(state, options, opt_len, unit, hdrlen, debug)
-    void *state;
-    u_char *options;
-    int opt_len, unit, hdrlen, debug;
-{
-    return bsd_init((struct bsd_db *) state, options, opt_len,
-                   unit, hdrlen, 0, debug, 0);
-}
-
-static int
-bsd_decomp_init(state, options, opt_len, unit, hdrlen, mru, debug)
-    void *state;
-    u_char *options;
-    int opt_len, unit, hdrlen, mru, debug;
-{
-    return bsd_init((struct bsd_db *) state, options, opt_len,
-                   unit, hdrlen, mru, debug, 1);
-}
-
-
-/*
- * compress a packet
- *     One change from the BSD compress command is that when the
- *     code size expands, we do not output a bunch of padding.
- */
-int                                    /* new slen */
-bsd_compress(state, mret, mp, slen, maxolen)
-    void *state;
-    NETBUF_T *mret;            /* return compressed netbuf here */
-    NETBUF_T mp;               /* from here */
-    int slen;                  /* uncompressed length */
-    int maxolen;               /* max compressed length */
-{
-    struct bsd_db *db = (struct bsd_db *) state;
-    int hshift = db->hshift;
-    u_int max_ent = db->max_ent;
-    u_int n_bits = db->n_bits;
-    u_int bitno = 32;
-    u_int32_t accm = 0, fcode;
-    struct bsd_dict *dictp;
-    u_char c;
-    int hval, disp, ent, ilen;
-    u_char *rptr, *wptr;
-    u_char *cp_end;
-    int olen;
-    NETBUF_T m;
-
-#define PUTBYTE(v) {                                   \
-    ++olen;                                            \
-    if (wptr) {                                                \
-       *wptr++ = (v);                                  \
-       if (wptr >= cp_end)                             \
-           wptr = NULL;                                \
-    }                                                  \
-}
-
-#define OUTPUT(ent) {                                  \
-    bitno -= n_bits;                                   \
-    accm |= ((ent) << bitno);                          \
-    do {                                               \
-       PUTBYTE(accm >> 24);                            \
-       accm <<= 8;                                     \
-       bitno += 8;                                     \
-    } while (bitno <= 24);                             \
-}
-
-    /*
-     * If the protocol is not in the range we're interested in,
-     * just return without compressing the packet.  If it is,
-     * the protocol becomes the first byte to compress.
-     */
-    rptr = mtod(mp, u_char *);
-    ent = PPP_PROTOCOL(rptr);
-    if (ent < CI_BSD_COMPRESS || ent > 0xf9) {
-       *mret = NULL;
-       return slen;
-    }
-
-    /* Don't generate compressed packets which are larger than
-       the uncompressed packet. */
-    if (maxolen > slen)
-       maxolen = slen;
-
-    /* Allocate one mbuf to start with. (don't forget space for the FCS!) */
-    m = NB_ALLOC(maxolen + db->hdrlen + PPP_FCSLEN);
-    *mret = m;
-    if (m != NULL) {
-      if (db->hdrlen > 0)
-       NB_SHRINK_TOP(m, db->hdrlen);
-      NB_SHRINK_BOT(m, PPP_FCSLEN);  /* grown by pppstart() */
-       wptr = mtod(m, u_char *);
-       cp_end = wptr + maxolen;
-    } else
-       wptr = cp_end = NULL;
-
-    /*
-     * Copy the PPP header over, changing the protocol,
-     * and install the 2-byte packet sequence number.
-     */
-    if (wptr) {
-       *wptr++ = PPP_ADDRESS(rptr);    /* assumes the ppp header is */
-       *wptr++ = PPP_CONTROL(rptr);    /* all in one mbuf */
-       *wptr++ = 0;                    /* change the protocol */
-       *wptr++ = PPP_COMP;
-       *wptr++ = db->seqno >> 8;
-       *wptr++ = db->seqno;
-    }
-    ++db->seqno;
-
-    olen = 0;
-    rptr += PPP_HDRLEN;
-    slen = NB_SIZE(mp) - PPP_HDRLEN;
-    ilen = slen + 1;
-    while (slen > 0) {
-       slen--;
-       c = *rptr++;
-       fcode = BSD_KEY(ent, c);
-       hval = BSD_HASH(ent, c, hshift);
-       dictp = &db->dict[hval];
-
-       /* Validate and then check the entry. */
-       if (dictp->codem1 >= max_ent)
-           goto nomatch;
-       if (dictp->f.fcode == fcode) {
-           ent = dictp->codem1+1;
-           continue;   /* found (prefix,suffix) */
-       }
-
-       /* continue probing until a match or invalid entry */
-       disp = (hval == 0) ? 1 : hval;
-       do {
-           hval += disp;
-           if (hval >= db->hsize)
-               hval -= db->hsize;
-           dictp = &db->dict[hval];
-           if (dictp->codem1 >= max_ent)
-               goto nomatch;
-       } while (dictp->f.fcode != fcode);
-       ent = dictp->codem1 + 1;        /* finally found (prefix,suffix) */
-       continue;
-
-    nomatch:
-       OUTPUT(ent);            /* output the prefix */
-
-       /* code -> hashtable */
-       if (max_ent < db->maxmaxcode) {
-           struct bsd_dict *dictp2;
-           /* expand code size if needed */
-           if (max_ent >= MAXCODE(n_bits))
-               db->n_bits = ++n_bits;
-
-           /* Invalidate old hash table entry using
-            * this code, and then take it over.
-            */
-           dictp2 = &db->dict[max_ent+1];
-           if (db->dict[dictp2->cptr].codem1 == max_ent)
-               db->dict[dictp2->cptr].codem1 = BADCODEM1;
-           dictp2->cptr = hval;
-           dictp->codem1 = max_ent;
-           dictp->f.fcode = fcode;
-
-           db->max_ent = ++max_ent;
-       }
-       ent = c;
-    }
-
-    OUTPUT(ent);               /* output the last code */
-    db->bytes_out += olen;
-    db->in_count += ilen;
-    if (bitno < 32)
-       ++db->bytes_out;        /* count complete bytes */
-
-    if (bsd_check(db))
-       OUTPUT(CLEAR);          /* do not count the CLEAR */
-
-    /*
-     * Pad dribble bits of last code with ones.
-     * Do not emit a completely useless byte of ones.
-     */
-    if (bitno != 32)
-       PUTBYTE((accm | (0xff << (bitno-8))) >> 24);
-
-    /*
-     * Increase code size if we would have without the packet
-     * boundary and as the decompressor will.
-     */
-    if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode)
-       db->n_bits++;
-
-    db->uncomp_bytes += ilen;
-    ++db->uncomp_count;
-    if (olen + PPP_HDRLEN + BSD_OVHD > maxolen || wptr == NULL) {
-       /* throw away the compressed stuff if it is longer than uncompressed */
-       if (*mret != NULL) {
-           NB_FREE(*mret);
-           *mret = NULL;
-       }
-       ++db->incomp_count;
-       db->incomp_bytes += ilen;
-    } else {
-       NB_SHRINK_BOT(m, NB_SIZE(m) - (wptr - mtod(m, u_char *)));
-       ++db->comp_count;
-       db->comp_bytes += olen + BSD_OVHD;
-    }
-
-    return olen + PPP_HDRLEN + BSD_OVHD;
-#undef OUTPUT
-#undef PUTBYTE
-}
-
-
-/*
- * Update the "BSD Compress" dictionary on the receiver for
- * incompressible data by pretending to compress the incoming data.
- */
-static void
-bsd_incomp(state, dmsg)
-    void *state;
-    NETBUF_T dmsg;
-{
-    struct bsd_db *db = (struct bsd_db *) state;
-    u_int hshift = db->hshift;
-    u_int max_ent = db->max_ent;
-    u_int n_bits = db->n_bits;
-    struct bsd_dict *dictp;
-    u_int32_t fcode;
-    u_char c;
-    u_int32_t hval, disp;
-    int slen, ilen;
-    u_int bitno = 7;
-    u_char *rptr;
-    u_int ent;
-
-    /*
-     * If the protocol is not in the range we're interested in,
-     * just return without looking at the packet.  If it is,
-     * the protocol becomes the first byte to "compress".
-     */
-    rptr = mtod(dmsg, u_char *);
-    ent = PPP_PROTOCOL(rptr);
-    if (ent < CI_BSD_COMPRESS || ent > 0xf9)
-       return;
-
-    db->incomp_count++;
-    db->seqno++;
-    ilen = 1;          /* count the protocol as 1 byte */
-    rptr += PPP_HDRLEN;
-    slen = NB_SIZE(dmsg) - PPP_HDRLEN;
-    ilen += slen;
-
-    do {
-       c = *rptr++;
-       fcode = BSD_KEY(ent, c);
-       hval = BSD_HASH(ent, c, hshift);
-       dictp = &db->dict[hval];
-
-       /* validate and then check the entry */
-       if (dictp->codem1 >= max_ent)
-           goto nomatch;
-       if (dictp->f.fcode == fcode) {
-           ent = dictp->codem1+1;
-           continue;   /* found (prefix,suffix) */
-       }
-
-       /* continue probing until a match or invalid entry */
-       disp = (hval == 0) ? 1 : hval;
-       do {
-           hval += disp;
-           if (hval >= db->hsize)
-               hval -= db->hsize;
-           dictp = &db->dict[hval];
-           if (dictp->codem1 >= max_ent)
-               goto nomatch;
-       } while (dictp->f.fcode != fcode);
-       ent = dictp->codem1+1;
-       continue;       /* finally found (prefix,suffix) */
-
-    nomatch:           /* output (count) the prefix */
-       bitno += n_bits;
-
-       /* code -> hashtable */
-       if (max_ent < db->maxmaxcode) {
-           struct bsd_dict *dictp2;
-           /* expand code size if needed */
-           if (max_ent >= MAXCODE(n_bits))
-               db->n_bits = ++n_bits;
-
-           /* Invalidate previous hash table entry
-            * assigned this code, and then take it over.
-            */
-           dictp2 = &db->dict[max_ent+1];
-           if (db->dict[dictp2->cptr].codem1 == max_ent)
-               db->dict[dictp2->cptr].codem1 = BADCODEM1;
-           dictp2->cptr = hval;
-           dictp->codem1 = max_ent;
-           dictp->f.fcode = fcode;
-
-           db->max_ent = ++max_ent;
-           db->lens[max_ent] = db->lens[ent]+1;
-       }
-       ent = c;
-    } while (--slen != 0);
-    bitno += n_bits;           /* output (count) the last code */
-    db->bytes_out += bitno/8;
-    db->in_count += ilen;
-    (void)bsd_check(db);
-
-    ++db->incomp_count;
-    db->incomp_bytes += ilen;
-    ++db->uncomp_count;
-    db->uncomp_bytes += ilen;
-
-    /* Increase code size if we would have without the packet
-     * boundary and as the decompressor will.
-     */
-    if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode)
-       db->n_bits++;
-}
-
-
-/*
- * Decompress "BSD Compress".
- *
- * Because of patent problems, we return DECOMP_ERROR for errors
- * found by inspecting the input data and for system problems, but
- * DECOMP_FATALERROR for any errors which could possibly be said to
- * be being detected "after" decompression.  For DECOMP_ERROR,
- * we can issue a CCP reset-request; for DECOMP_FATALERROR, we may be
- * infringing a patent of Motorola's if we do, so we take CCP down
- * instead.
- *
- * Given that the frame has the correct sequence number and a good FCS,
- * errors such as invalid codes in the input most likely indicate a
- * bug, so we return DECOMP_FATALERROR for them in order to turn off
- * compression, even though they are detected by inspecting the input.
- */
-int
-bsd_decompress(state, cmp, dmpp)
-    void *state;
-    NETBUF_T cmp, *dmpp;
-{
-    struct bsd_db *db = (struct bsd_db *) state;
-    u_int max_ent = db->max_ent;
-    u_int32_t accm = 0;
-    u_int bitno = 32;          /* 1st valid bit in accm */
-    u_int n_bits = db->n_bits;
-    u_int tgtbitno = 32-n_bits;        /* bitno when we have a code */
-    struct bsd_dict *dictp;
-    int explen, seq, len;
-    u_int incode, oldcode, finchar;
-    u_char *p, *rptr, *wptr;
-    NETBUF_T dmp, mret;
-    int adrs, ctrl, ilen;
-    int space, codelen, extra, maxilen;
-
-    /*
-     * Save the address/control from the PPP header
-     * and then get the sequence number.
-     */
-    *dmpp = NULL;
-    rptr = mtod(cmp, u_char *);
-    adrs = PPP_ADDRESS(rptr);
-    ctrl = PPP_CONTROL(rptr);
-    rptr += PPP_HDRLEN;
-    len = NB_SIZE(cmp) - PPP_HDRLEN;
-    seq = (rptr[0] << 8) + rptr[1];
-    rptr += BSD_OVHD;
-    len -= BSD_OVHD;
-
-    /*
-     * Check the sequence number and give up if it differs from
-     * the value we're expecting.
-     */
-    if (seq != db->seqno) {
-       IOLogDbg("bsd_decomp%d: bad sequence # %d, expected %d\n",
-                  db->unit, seq, db->seqno - 1);
-       return DECOMP_ERROR;
-    }
-    ++db->seqno;
-
-    /*
-     * Allocate an netbuf large enough for all the data.
-     */
-    maxilen = db->mru + db->hdrlen + PPP_HDRLEN;       /* no FCS */
-    dmp = NB_ALLOC(maxilen);                   /* XXX */
-    if (dmp == NULL)
-       return DECOMP_ERROR;
-    if (db->hdrlen > 0)
-       NB_SHRINK_TOP(dmp, db->hdrlen);
-    mret = dmp;
-    wptr = mtod(dmp, u_char *);
-    space = NB_SIZE(dmp) - PPP_HDRLEN + 1;
-
-    /*
-     * Fill in the ppp header, but not the last byte of the protocol
-     * (that comes from the decompressed data).
-     */
-    wptr[0] = adrs;
-    wptr[1] = ctrl;
-    wptr[2] = 0;
-    wptr += PPP_HDRLEN - 1;
-
-    ilen = len;
-    oldcode = CLEAR;
-    explen = 0;
-    while (len > 0) {
-       /*
-        * Accumulate bytes until we have a complete code.
-        * Then get the next code, relying on the 32-bit,
-        * unsigned accm to mask the result.
-        */
-       bitno -= 8;
-       accm |= *rptr++ << bitno;
-       --len;
-       if (tgtbitno < bitno)
-           continue;
-       incode = accm >> tgtbitno;
-       accm <<= n_bits;
-       bitno += n_bits;
-
-       if (incode == CLEAR) {
-           /*
-            * The dictionary must only be cleared at
-            * the end of a packet.  But there could be an
-            * empty mbuf at the end.
-            */
-           if (len > 0) {
-               NB_FREE(mret);
-               IOLogDbg("bsd_decomp%d: bad CLEAR\n", db->unit);
-               return DECOMP_FATALERROR;       /* probably a bug */
-           }
-           bsd_clear(db);
-           explen = ilen = 0;
-           break;
-       }
-
-       if (incode > max_ent + 2 || incode > db->maxmaxcode
-           || incode > max_ent && oldcode == CLEAR) {
-           NB_FREE(mret);
-           IOLogDbg("bsd_decomp%d: bad code 0x%x oldcode=0x%x max_ent=0x%x explen=%d seqno=%d\n",
-                    db->unit, incode, oldcode, max_ent, explen, db->seqno);
-           return DECOMP_FATALERROR;   /* probably a bug */
-       }
-
-       /* Special case for KwKwK string. */
-       if (incode > max_ent) {
-           finchar = oldcode;
-           extra = 1;
-       } else {
-           finchar = incode;
-           extra = 0;
-       }
-
-       codelen = db->lens[finchar];
-       explen += codelen + extra;
-       if (explen > db->mru + 1) {
-           NB_FREE(mret);
-           IOLogDbg("bsd_decomp%d: ran out of mru\n  len=%d, finchar=0x%x, codelen=%d, explen=%d\n",
-                      db->unit, len, finchar, codelen, explen);
-           return DECOMP_FATALERROR;
-       }
-
-       /*
-        * If we have no space left, then we've overflowed...
-        */
-       if ((space -= codelen + extra) < 0) {
-           IOLog("bsd_decompress%d: no space left in netbuf (need %d bytes)\n",
-                 db->unit, (codelen + extra) - space);
-           NB_FREE(mret);
-           return DECOMP_ERROR;
-       }
-
-       /*
-        * Decode this code and install it in the decompressed buffer.
-        */
-       p = (wptr += codelen);
-       while (finchar > LAST) {
-           dictp = &db->dict[db->dict[finchar].cptr];
-#ifdef DEBUG
-           if (--codelen <= 0 || dictp->codem1 != finchar-1)
-               goto bad;
-#endif
-           *--p = dictp->f.hs.suffix;
-           finchar = dictp->f.hs.prefix;
-       }
-       *--p = finchar;
-
-#ifdef DEBUG
-       if (--codelen != 0)
-           IOLog("bsd_decomp%d: short by %d after code 0x%x, max_ent=0x%x\n",
-                  db->unit, codelen, incode, max_ent);
-#endif
-
-       if (extra)              /* the KwKwK case again */
-           *wptr++ = finchar;
-
-       /*
-        * If not first code in a packet, and
-        * if not out of code space, then allocate a new code.
-        *
-        * Keep the hash table correct so it can be used
-        * with uncompressed packets.
-        */
-       if (oldcode != CLEAR && max_ent < db->maxmaxcode) {
-           struct bsd_dict *dictp2;
-           u_int32_t fcode;
-           u_int32_t hval, disp;
-
-           fcode = BSD_KEY(oldcode,finchar);
-           hval = BSD_HASH(oldcode,finchar,db->hshift);
-           dictp = &db->dict[hval];
-
-           /* look for a free hash table entry */
-           if (dictp->codem1 < max_ent) {
-               disp = (hval == 0) ? 1 : hval;
-               do {
-                   hval += disp;
-                   if (hval >= db->hsize)
-                       hval -= db->hsize;
-                   dictp = &db->dict[hval];
-               } while (dictp->codem1 < max_ent);
-           }
-
-           /*
-            * Invalidate previous hash table entry
-            * assigned this code, and then take it over
-            */
-           dictp2 = &db->dict[max_ent+1];
-           if (db->dict[dictp2->cptr].codem1 == max_ent) {
-               db->dict[dictp2->cptr].codem1 = BADCODEM1;
-           }
-           dictp2->cptr = hval;
-           dictp->codem1 = max_ent;
-           dictp->f.fcode = fcode;
-
-           db->max_ent = ++max_ent;
-           db->lens[max_ent] = db->lens[oldcode]+1;
-
-           /* Expand code size if needed. */
-           if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode) {
-               db->n_bits = ++n_bits;
-               tgtbitno = 32-n_bits;
-           }
-       }
-       oldcode = incode;
-    }
-    NB_SHRINK_BOT(dmp, NB_SIZE(dmp) - (wptr - mtod(dmp, u_char *)));
-
-    /*
-     * Keep the checkpoint right so that incompressible packets
-     * clear the dictionary at the right times.
-     */
-    db->bytes_out += ilen;
-    db->in_count += explen;
-    if (bsd_check(db)) {
-       IOLogDbg("bsd_decomp%d: peer should have cleared dictionary\n",
-              db->unit);
-    }
-
-    ++db->comp_count;
-    db->comp_bytes += ilen + BSD_OVHD;
-    ++db->uncomp_count;
-    db->uncomp_bytes += explen;
-
-    *dmpp = mret;
-    return DECOMP_OK;
-
-#ifdef DEBUG
- bad:
-    if (codelen <= 0) {
-       IOLog("bsd_decomp%d: fell off end of chain 0x%x at 0x%x by 0x%x, max_ent=0x%x\n",
-             db->unit, incode, finchar, db->dict[finchar].cptr, max_ent);
-    } else if (dictp->codem1 != finchar-1) {
-       IOLog("bsd_decomp%d: bad code chain 0x%x finchar=0x%x oldcode=0x%x cptr=0x%x codem1=0x%x\n",
-             db->unit, incode, finchar, oldcode, db->dict[finchar].cptr,
-             dictp->codem1);
-    }
-    NB_FREE(mret);
-    return DECOMP_FATALERROR;
-#endif /* DEBUG */
-}
-#endif /* DO_BSD_COMPRESS */
diff --git a/NeXT/hppa/README.hppa b/NeXT/hppa/README.hppa
deleted file mode 100755 (executable)
index daf140f..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-NeXTSTEP on HP-PA OS 3.2 has a few problems that require special
-installation procedures.
-
-There seem to be two major problems.  The first is related to the use
-of FAT binaries on HPPA Lodable Kernel Servers and the second seems to
-be kernel bugs. NeXT says they will be fixed in 3.3.  I guess we will
-have to wait and see. 
-
-Problem 1
-=========
-
-For some reason, the HPPA kernel loading utility kl_util is unable to
-load FAT LKS modules.  So before you try to load a FAT LKS onto an
-HPPA machine, you will need to use lipo to thin it down. You may use a
-command similar to:
-    lipo ppp_reloc -thin hppa -output ppp_reloc.hppa
-to get a thin version named ppp_reloc.hppa. 
-
-
-
-Problem 2
-=========
-
-Alain Fauconnet managed to get PPP-2.1.2 working
-on HPPA.  He graciously allowed me to incorporate his changes into
-PPP-2.2.  I have included part of his original instructions for
-getting the serial driver patch installed.  You should follow these
-procedures for PPP-2.2.  Also, you may wish to send him a short thank
-you for his excellent work.
-
-Please note, that you only need these instructions to install the
-SerialDriverPatch.  After that is installed, you may install PPP-2.2
-as specified in the README.NeXT file at the top level directory.
-
-Here are the original instructions:
-
-Temporary PPP 2.1.2 kit for HP-PA systems running NeXTSTEP 3.2
-==============================================================
-
-                                                       14-Nov-1994
-                                                       Alain Fauconnet
-                                                       <af@biomath.jussieu.fr>
-
-
-INSTALLATION FOR A HP-PA/NEXSTEP MACHINE
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-       1) Serial driver patch
-
-This tarfile includes a ./hppaSerialPatch tree that is a temporary
-work-around for a severe bug in the HP-PA serial tty driver. I have
-been allowed to include it here provided that it is clearly stated that
-it is *not* an official patch from NeXT and that it should *not* be
-installed on machines that do not absolutely require it. The problem
-will be corrected in NeXTSTEP 3.3, according to the NeXT people.
-
-As I understand it, the problem is about the select() call on a file
-descriptor opened on a tty line. This affect emacs (hangs when run from
-a remote tty session), MicroEMACS (arrow keys don't work), PPP (protocol
-hangs) and probably other programs as well.
-
-I felt the need to add some installation instructions, since I've lost
-some hair in that process myself.
-
-Install it as follows :
-
-a) go to the hppaSerialPatch directory
-
-b) type `make'. Compilation should complete with a few warnings about
-`linesw'
-
-c) type `make install' (YOU DON'T NEED TO BE root FOR THAT, the
-installed tree will be created in /tmp/hppaSerialPatch.*
-
-d) as root, bring up  /NextAdmin/Configure.app, choose Configuration ->
-Install driver... and select
-/tmp/hppaSerialPatch.bproj/usr/Devices/hppaSerialPatch.config from the
-file selection box.
-
-e) reboot the system. As root, bring up /NextAdmin/Configure.app again
-and look if "hppaSerialPatch" appears on the "Other" line. If not, click
-the "Other" icon. Click "Add". The correct driver will probably appear
-as "Long Name" in the list of drivers. Select it and click "Add".
-Go back to "Summary" and click "Save". Reboot the system.
-Check the file /usr/Devices/System.config/Instance0.table,
-"hppaSerialPatch" should appear in the line of "Active Drivers".
-
-f) the /tmp/hppaSerialPatch trees may be deleted now.
-
-
-GOOD LUCK !
-
-Thanks to:
-               Jean Michel LUNATI <Jean_Michel_Lunati@NeXT.COM>
-               Philip Prindeville <philipp@res.enst.fr>
diff --git a/NeXT/if_ppp.c b/NeXT/if_ppp.c
deleted file mode 100644 (file)
index c10a6ca..0000000
+++ /dev/null
@@ -1,1697 +0,0 @@
-/*
- * if_ppp.c - Point-to-Point Protocol (PPP) Asynchronous driver.
- *
- * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The name "Carnegie Mellon University" must not be used to
- *    endorse or promote products derived from this software without
- *    prior written permission. For permission or any legal
- *    details, please contact
- *      Office of Technology Transfer
- *      Carnegie Mellon University
- *      5000 Forbes Avenue
- *      Pittsburgh, PA  15213-3890
- *      (412) 268-4387, fax: (412) 268-7395
- *      tech-transfer@andrew.cmu.edu
- *
- * 4. Redistributions of any form whatsoever must retain the following
- *    acknowledgment:
- *    "This product includes software developed by Computing Services
- *     at Carnegie Mellon University (http://www.cmu.edu/computing/)."
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Drew D. Perkins
- * Carnegie Mellon University
- * 4910 Forbes Ave.
- * Pittsburgh, PA 15213
- * (412) 268-8576
- * ddp@andrew.cmu.edu
- *
- * Based on:
- *     @(#)if_sl.c     7.6.1.2 (Berkeley) 2/15/89
- *
- * Copyright (c) 1987 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley.  The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Serial Line interface
- *
- * Rick Adams
- * Center for Seismic Studies
- * 1300 N 17th Street, Suite 1450
- * Arlington, Virginia 22209
- * (703)276-7900
- * rick@seismo.ARPA
- * seismo!rick
- *
- * Pounded on heavily by Chris Torek (chris@mimsy.umd.edu, umcp-cs!chris).
- * Converted to 4.3BSD Beta by Chris Torek.
- * Other changes made at Berkeley, based in part on code by Kirk Smith.
- *
- * Converted to 4.3BSD+ 386BSD by Brad Parker (brad@cayman.com)
- * Added VJ tcp header compression; more unified ioctls
- *
- * Extensively modified by Paul Mackerras (paulus@cs.anu.edu.au).
- * Cleaned up a lot of the mbuf-related code to fix bugs that
- * caused system crashes and packet corruption.  Changed pppstart
- * so that it doesn't just give up with a collision if the whole
- * packet doesn't fit in the output ring buffer.
- *
- * Added priority queueing for interactive IP packets, following
- * the model of if_sl.c, plus hooks for bpf.
- * Paul Mackerras (paulus@cs.anu.edu.au).
- *
- * Rewritten for NextStep's funky kernel functions, I/O threads,
- * and netbufs (instead of real mbufs).  Also, ifnets don't install
- * into the kernel under NS as they do under BSD.  We have tried to
- * make the code remain as similar to the NetBSD version without
- * incurring too much hassle.  This code is the merge of 
- * Philip Prindeville's <philipp@res.enst.fr>/Pete French's <pete@ohm.york.ac.uk>
- * and Stephen Perkins'  <perkins@cps.msu.edu> independent ports.
- *
- */
-
-/* from if_sl.c,v 1.11 84/10/04 12:54:47 rick Exp */
-
-#if !defined(lint)
-static char sccsid[] = "$Revision: 1.13 $ ($Date: 2002/12/06 09:49:15 $)";
-#endif /* not lint*/
-
-#define KERNEL 1
-#define KERNEL_FEATURES 1
-#define INET 1
-
-#if NS_TARGET >= 40
-#if NS_TARGET >= 41
-#include <kernserv/clock_timer.h>
-#include <kernserv/lock.h>
-#else
-#include <kern/lock.h>
-#endif /* NS_TARGET */
-#endif /* NS_TARGET */
-
-#include <sys/param.h>
-#if NS_TARGET >= 41
-typedef simple_lock_data_t lock_data_t;                /* XXX */
-#endif /* NS_TARGET */
-#include <sys/proc.h>
-#include "netbuf.h"
-#include <sys/socket.h>
-#include <sys/conf.h>
-#include <sys/time.h>
-#include <sys/ioctl.h>
-#include <sys/errno.h>
-#if !(NS_TARGET >= 40)
-#include <kernserv/prototypes.h>
-#endif
-#if defined(m68k)
-#import "spl.h"
-#else
-#include <driverkit/generalFuncs.h>
-#import <kernserv/machine/spl.h>
-#endif
-#if defined(sparc) || defined(m68k)
-#include <machine/psl.h>
-#endif
-#include <kernserv/kern_server_types.h>
-
-#include <net/if.h>
-#include <net/route.h>
-
-#if INET
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/in_var.h>
-#include <netinet/ip.h>
-#include <netinet/tcp.h>
-#endif
-
-#include <net/ppp_defs.h>
-#ifdef VJC
-#include <net/vjcompress.h>
-#endif
-#include <net/if_ppp.h>
-#include "NeXT_Version.h"
-#include "if_pppvar.h"
-
-
-struct ppp_softc ppp_softc[NUM_PPP];
-
-
-#ifdef PPP_COMPRESS
-#define        PACKETPTR       NETBUF_T
-#include <net/ppp-comp.h>
-#endif
-
-/*
- * The max number of NETBUF_Ts we wish to compress and cache for
- * sending.
- */
-#define COMPRESS_CACHE_LEN 1
-
-#include "inlines.h"
-
-/*
- * Necessary to avoid redefinition warnings or bogus type casts later.
- */
-int    pppoutput __P((netif_t ifp, netbuf_t m, void *arg));
-int    pppsioctl __P((netif_t ifp, int cmd, caddr_t data));
-int    pppcontrol __P((netif_t ifp, const char *cmd, void *data));
-void   pppintr_comp __P((void *arg));
-void   pppintr_decomp __P((void *arg));
-void   pppfillfreeq __P((void *arg));
-void   pppgetm __P((register struct ppp_softc *sc));
-
-static void    ppp_requeue __P((struct ppp_softc *));
-static void    ppp_outpkt __P((struct ppp_softc *));
-static void    ppp_ccp __P((struct ppp_softc *, NETBUF_T, int rcvd));
-static void    ppp_ccp_closed __P((struct ppp_softc *));
-static void    ppp_inproc __P((struct ppp_softc *, NETBUF_T));
-static void    pppdumpm __P((NETBUF_T));
-
-extern int     install_ppp_ld __P((void));
-extern int     tty_ld_remove __P((int));
-
-/*
- * We steal two bits in the mbuf m_flags, to mark high-priority packets
- * for output, and received packets following lost/corrupted packets.
- */
-#define        M_HIGHPRI       0x2000  /* output packet for sc_fastq */
-#define        M_ERRMARK       0x4000  /* steal a bit in mbuf m_flags */
-
-/*
- * The following disgusting hack gets around the problem that IP TOS
- * can't be set yet.  We want to put "interactive" traffic on a high
- * priority queue.  To decide if traffic is interactive, we check that
- * a) it is TCP and b) one of its ports is telnet, rlogin or ftp control.
- */
-static u_short interactive_ports[8] = {
-       0,      513,    0,      0,
-       0,      21,     0,      23,
-};
-
-enum { QFREE, QRAW, QFAST, QSLOW, QIN, QNP, QCACHE };
-
-static struct qparms qparms[] = {
-       {20, 40, 50, "free"},           /* freeq */
-       {5, 20, 25, "raw"},             /* rawq */
-       {5, 20, 25, "fast"},            /* fastq */
-       {5, 20, 25, "slow"},            /* slowq */
-       {5, 20, 25, "in"},              /* inq */
-       {5, 20, 25, "np"},              /* npq */
-       {0, COMPRESS_CACHE_LEN, COMPRESS_CACHE_LEN, "cache"}    /* cache */
-};
-
-#define INTERACTIVE(p) (interactive_ports[(p) & 7] == (p))
-
-#ifndef        IPTOS_LOWDELAY
-#define        IPTOS_LOWDELAY  0x10
-#endif
-
-#ifdef PPP_COMPRESS
-/*
- * List of compressors we know about.
- * We leave some space so maybe we can modload compressors.
- */
-
-extern struct compressor ppp_bsd_compress;
-
-struct compressor *ppp_compressors[8] = {
-#if DO_BSD_COMPRESS
-    &ppp_bsd_compress,
-#endif
-    NULL
-};
-#endif /* PPP_COMPRESS */
-
-/* yeah, we sometimes have to change the MTU after having created the
- * device.  Let's hope this doesn't break anything!!!
- */
-#define        if_mtu_set(ifn,mtu)  (((struct ifnet *)ifn)->if_mtu = mtu)
-
-extern int ipforwarding;
-extern int ipsendredirects;
-
-kern_server_t instance;
-
-/*
- * Sigh.  Should be defined in <net/if.h> but isn't...
- */
-union ifr_ifru {
-       short   ifru_flags;
-       short   ifru_mtu;
-       u_long  ifru_asyncmap;
-       int     ifru_metric;
-       caddr_t ifru_data;
-};
-
-
-/*
- * Returns a new "outgoing" netbuf.
- *  
- * Must return an actual netbuf_t since other protocols
- * use this to get our buffers.  Before releasing, save
- * any space we may need when the buffer returns.
- */
-
-netbuf_t
-pppgetbuf(netif_t ifp)
-{
-    NETBUF_T nb;
-
-    int len = MAX(if_mtu(ifp), PPP_MTU) + PPP_HDRLEN + PPP_FCSLEN;
-    nb = NB_ALLOC(len);
-    if (nb != NULL)
-      {
-       NB_SHRINK_TOP(nb, PPP_HDRLEN);
-       NB_SHRINK_BOT(nb, PPP_FCSLEN);          /* grown by pppstart() */
-      }
-    return NB_TO_nb(nb);
-}
-
-/*
- * Called from boot code to establish ppp interfaces.
- */
-void
-pppattach()
-{
-    register struct ppp_softc *sc;
-    register int i = 0;
-    
-    IOLog("\nPPP version 2.3.11-%s for NeXTSTEP and OPENSTEP\n", PPPVERSION);
-    IOLog("by  Stephen Perkins, Philip Prindeville, and Pete French\n");
-    if (install_ppp_ld() < 0) {
-       IOLog("ppp: Could not install line discipline\n");
-    }
-    
-    for (sc = ppp_softc; i < NUM_PPP; sc++, i++) {
-       sc->sc_if = if_attach(NULL, NULL, pppoutput, 
-                             pppgetbuf, pppcontrol, "ppp", i, "Serial line PPP", 
-                             PPP_MTU, IFF_POINTOPOINT, NETIFCLASS_VIRTUAL, (void *) sc);
-       nbq_init(&sc->sc_freeq, &qparms[QFREE]);
-       nbq_init(&sc->sc_rawq, &qparms[QRAW]);
-       nbq_init(&sc->sc_fastq, &qparms[QFAST]);
-       nbq_init(&sc->sc_slowq, &qparms[QSLOW]);
-       nbq_init(&sc->sc_inq, &qparms[QIN]);
-       nbq_init(&sc->sc_npq, &qparms[QNP]);
-       nbq_init(&sc->sc_compq, &qparms[QCACHE]);
-       IOLog("     ppp%d successfully attached.\n", i);
-    }
-
-    ipforwarding = 1;
-    ipsendredirects = 1;
-
-    IOLog("PPP Successfully Installed.\n\n");
-}
-
-int
-pppdetach()
-{
-    struct ppp_softc *sc;
-    int i;
-
-    IOLog("Removing PPP on Line Discipline %d\n", PPPDISC);
-    if (!tty_ld_remove(PPPDISC))
-       IOLog("ppp: Could not remove line discipline\n");
-
-    IOLog("Removing interfaces:\n");
-    for (sc = ppp_softc, i = 0; i < NUM_PPP; sc++, i++) {
-       nbq_free(&sc->sc_freeq);
-       nbq_free(&sc->sc_rawq);
-       nbq_free(&sc->sc_fastq);
-       nbq_free(&sc->sc_slowq);
-       nbq_free(&sc->sc_inq);
-       nbq_free(&sc->sc_npq);
-       nbq_free(&sc->sc_compq);
-       if_detach(sc->sc_if);
-       /* no idea why we need this, but... */
-       bzero(sc->sc_if, sizeof(netif_t));
-       IOLog("     ppp%d successfully detached.\n", i);
-    }
-    IOLog("PPP-2.3 Successfully Removed.\n\n");
-    return 0;
-}
-
-/*
- * Allocate a ppp interface unit and initialize it.
- */
-struct ppp_softc *
-pppalloc(pid)
-    pid_t pid;
-{
-    int nppp, i;
-    struct ppp_softc *sc;
-#if NS_TARGET >= 40
-    struct timeval tv_time;
-#endif /* NS_TARGET */
-
-    for (nppp = 0, sc = ppp_softc; nppp < NUM_PPP; nppp++, sc++)
-       if (sc->sc_xfer == pid) {
-           IOLogDbg("ppp%d: alloc'ing unit %d to proc %d\n", nppp, nppp, pid);
-           sc->sc_xfer = 0;
-           return sc;
-       }
-    for (nppp = 0, sc = ppp_softc; nppp < NUM_PPP; nppp++, sc++)
-       if (sc->sc_devp == NULL)
-           break;
-    if (nppp >= NUM_PPP)
-       return NULL;
-
-    sc->sc_flags = 0;
-    sc->sc_mru = PPP_MRU;
-    sc->sc_relinq = NULL;
-#ifdef VJC
-    vj_compress_init(&sc->sc_comp, -1);
-#endif
-#ifdef PPP_COMPRESS
-    sc->sc_xc_state = NULL;
-    sc->sc_rc_state = NULL;
-#endif /* PPP_COMPRESS */
-    for (i = 0; i < NUM_NP; ++i)
-       sc->sc_npmode[i] = NPMODE_ERROR;
-    /* XXX - I'm not sure why the npqueue was zapped here... */
-
-#if NS_TARGET >= 40
-    ns_time_to_timeval(clock_value(System), &tv_time);
-    sc->sc_last_sent = sc->sc_last_recv = tv_time.tv_sec;
-#else
-    sc->sc_last_sent = sc->sc_last_recv = time.tv_sec;
-#endif
-
-    sc->sc_compsched = 0;
-    sc->sc_decompsched = 0;
-
-    /*
-     * XXX -- We need to get packets here, and we don't care if we do block...
-     * We do this after we set the sc_mru.
-     */
-    pppfillfreeq((void *) sc);
-
-    return sc;
-}
-
-/*
- * Deallocate a ppp unit.  Must be called at splnet or higher.
- */
-void
-pppdealloc(sc)
-    struct ppp_softc *sc;
-{
-
-    if_flags_set(sc->sc_if, if_flags(sc->sc_if) & ~(IFF_UP|IFF_RUNNING));
-    sc->sc_devp = NULL;
-    sc->sc_xfer = 0;
-    nbq_flush(&sc->sc_freeq);
-    nbq_flush(&sc->sc_rawq);
-    nbq_flush(&sc->sc_inq);
-    nbq_flush(&sc->sc_fastq);
-    nbq_flush(&sc->sc_slowq);
-    nbq_flush(&sc->sc_npq);
-    nbq_flush(&sc->sc_compq);
-#ifdef PPP_COMPRESS
-    ppp_ccp_closed(sc);
-    sc->sc_xc_state = NULL;
-    sc->sc_rc_state = NULL;
-#endif /* PPP_COMPRESS */
-
-
-}
-
-/*
- * Ioctl routine for generic ppp devices.
- */
-int
-pppioctl(sc, cmd, data, flag)
-    struct ppp_softc *sc;
-    void *data;
-    u_long cmd;
-    int flag;
-{
-    struct proc *p = curproc;
-    int s, error, flags, mru, nb, npx, oldflags;
-    struct ppp_option_data *odp;
-    struct compressor **cp;
-    struct npioctl *npi;
-    time_t t;
-#ifdef PPP_COMPRESS
-    u_char ccp_option[CCP_MAX_OPTION_LENGTH];
-#endif
-    NETBUF_T m;
-#ifdef HAS_BROKEN_TIOCSPGRP
-    struct tty *tp = sc->sc_devp;
-#endif
-#if NS_TARGET >= 40
-       struct timeval tv_time;
-#endif /* NS_TARGET */
-
-
-    switch (cmd) {
-    case FIONREAD:
-       s = splimp();           /* paranoid; splnet probably ok */
-       if ((m = nbq_peek(&sc->sc_inq)) != NULL)
-           *(int *)data = NB_SIZE(m);
-       else
-           *(int *)data = 0;
-       splx(s);
-       break;
-
-    case PPPIOCGUNIT:
-       *(int *)data = if_unit(sc->sc_if);
-       break;
-
-     case PPPIOCGFLAGS:
-       *(u_int *)data = sc->sc_flags;
-       break;
-
-    case PPPIOCSFLAGS:
-       if (! suser())
-           return EPERM;
-       flags = *(int *)data & SC_MASK;
-       s = splnet();
-#ifdef PPP_COMPRESS
-       if (sc->sc_flags & SC_CCP_OPEN && !(flags & SC_CCP_OPEN))
-           ppp_ccp_closed(sc);
-#endif
-       splimp();
-       oldflags = sc->sc_flags;
-       sc->sc_flags = (sc->sc_flags & ~SC_MASK) | flags;
-       splx(s);
-       break;
-
-    case PPPIOCSMRU:
-       if (! suser())
-           return EPERM;
-       mru = *(int *)data;
-
-       IOLogDbg("ppp%d: setting mru %d\n", if_unit(sc->sc_if), mru);
-
-       if (mru >= PPP_MRU && mru <= PPP_MAXMRU) {
-
-           /* To make sure we handle the received packet
-            * correctly, we do two things.  First, we
-            * empty out the free_q.  We then remove
-            * the current input buffer, set the input length
-            * to zero, and set the flush flag.
-            */
-           s = splimp();
-           nbq_flush(&sc->sc_freeq);   /* get rid of old buffers */
-           sc->sc_mru = mru;
-           if (sc->sc_m){
-             NB_FREE(sc->sc_m);
-             sc->sc_m = NULL;
-             if (sc->sc_ilen != 0)
-               sc->sc_flags |= SC_FLUSH;
-           }
-           sc->sc_ilen = 0;
-           splx(s);
-           pppfillfreeq((void *) sc);  /* and make a queue of new ones */
-           pppgetm(sc);
-       }
-       break;
-
-    case PPPIOCGMRU:
-       *(int *)data = sc->sc_mru;
-       break;
-
-#ifdef VJC
-    case PPPIOCSMAXCID:
-       if (! suser())
-           return EPERM;
-       s = splnet();
-       vj_compress_init(&sc->sc_comp, *(int *)data);
-       splx(s);
-       break;
-#endif
-
-    case PPPIOCXFERUNIT:
-       if (! suser())
-           return EPERM;
-       sc->sc_xfer = p->p_pid;
-       break;
-
-#ifdef PPP_COMPRESS
-    case PPPIOCSCOMPRESS:
-       if (! suser())
-           return EPERM;
-       odp = (struct ppp_option_data *) data;
-       nb = odp->length;
-       if (nb > sizeof(ccp_option))
-           nb = sizeof(ccp_option);
-       if (error = copyin(odp->ptr, ccp_option, nb))
-           return (error);
-       if (ccp_option[1] < 2)  /* preliminary check on the length byte */
-           return (EINVAL);
-       for (cp = ppp_compressors; *cp != NULL; ++cp)
-           if ((*cp)->compress_proto == ccp_option[0]) {
-               /*
-                * Found a handler for the protocol - try to allocate
-                * a compressor or decompressor.
-                */
-               error = 0;
-               s = splnet();
-               if (odp->transmit) {
-                   if (sc->sc_xc_state != NULL)
-                       (*sc->sc_xcomp->comp_free)(sc->sc_xc_state);
-                   sc->sc_xcomp = *cp;  /* entry points for compressor */
-                   sc->sc_xc_state = (*cp)->comp_alloc(ccp_option, nb);
-                   if (sc->sc_xc_state == NULL) {
-                       IOLogDbg("ppp%d: comp_alloc failed", if_unit(sc->sc_if));
-                       error = ENOBUFS;
-                   }
-                   splimp();
-                   sc->sc_flags &= ~SC_COMP_RUN;
-               } else {
-                   if (sc->sc_rc_state != NULL)
-                       (*sc->sc_rcomp->decomp_free)(sc->sc_rc_state);
-                   sc->sc_rcomp = *cp; /* entry points for compressor */
-                   sc->sc_rc_state = (*cp)->decomp_alloc(ccp_option, nb);
-                   if (sc->sc_rc_state == NULL) {
-                       IOLogDbg("ppp%d: decomp_alloc failed", if_unit(sc->sc_if));
-                       error = ENOBUFS;
-                   }
-                   splimp();
-                   sc->sc_flags &= ~SC_DECOMP_RUN;
-               }
-               splx(s);
-               return (error);
-           }
-       IOLogDbg("ppp%d: no compressor for [%x %x %x], %x", if_unit(sc->sc_if),
-                ccp_option[0], ccp_option[1], ccp_option[2], nb);
-       return (EINVAL);        /* no handler found */
-#endif /* PPP_COMPRESS */
-
-#ifdef HAS_BROKEN_TIOCSPGRP
-    case TIOCSPGRP:
-       tp->t_pgrp = *(int *)data;
-       break;
-#endif
-
-    case PPPIOCGNPMODE:
-    case PPPIOCSNPMODE:
-       npi = (struct npioctl *) data;
-       switch (npi->protocol) {
-       case PPP_IP:
-           npx = NP_IP;
-           break;
-       default:
-           return EINVAL;
-       }
-       if (cmd == PPPIOCGNPMODE) {
-           npi->mode = sc->sc_npmode[npx];
-       } else {
-           if (! suser())
-               return EPERM;
-           if (npi->mode != sc->sc_npmode[npx]) {
-               s = splimp();
-               sc->sc_npmode[npx] = npi->mode;
-               if (npi->mode != NPMODE_QUEUE) {
-                   ppp_requeue(sc);
-                   (*sc->sc_start)(sc);
-               }
-               splx(s);
-           }
-       }
-       break;
-
-    case PPPIOCGIDLE:
-       s = splimp();
-#if NS_TARGET >= 40
-       ns_time_to_timeval(clock_value(System), &tv_time);
-       t = tv_time.tv_sec;
-#else
-       t = time.tv_sec;
-#endif /* NS_TARGET */
-       ((struct ppp_idle *)data)->xmit_idle = t - sc->sc_last_sent;
-       ((struct ppp_idle *)data)->recv_idle = t - sc->sc_last_recv;
-       splx(s);
-       break;
-
-    default:
-       return (-1);
-    }
-    return (0);
-}
-
-int
-pppcontrol(ifp, cmd, data)
-    netif_t ifp;
-    const char *cmd;
-    void *data;
-{
-
-    if (!strcmp(cmd, IFCONTROL_UNIXIOCTL)) {
-       if_ioctl_t* ctl = (if_ioctl_t*)data;
-       return pppsioctl(ifp,
-                       ctl->ioctl_command,
-                       ctl->ioctl_data);
-    } else if (!strcmp(cmd, IFCONTROL_SETADDR)) {
-       struct sockaddr_in *sin = (struct sockaddr_in *)data;
-       if (sin->sin_family != AF_INET)
-               return EAFNOSUPPORT;
-       if_flags_set(ifp, if_flags(ifp) | IFF_UP);
-       return 0;
-    }
-    /*
-     * We implement this to allow iftab
-     * to contain -AUTOMATIC- entries
-     * without generating errors at boot time.
-     * We do not, however, mark it as UP.
-     */
-    else if (!strcmp(cmd, IFCONTROL_AUTOADDR)) {
-       struct sockaddr_in *sin = (struct sockaddr_in *) data;
-       if (sin->sin_family != AF_INET)
-           return EAFNOSUPPORT;
-       return 0;
-    } else if (!strcmp(cmd, IFCONTROL_SETFLAGS)) {
-       register union ifr_ifru *ifr = (union ifr_ifru *)data;
-       if (!suser())
-           return EPERM;
-       if_flags_set(ifp, ifr->ifru_flags);
-       return 0;
-    }
-    /*
-     * Under 3.2 developer, I don't know the symbol for this
-     * new 3.3 command.  So it is a constant for now. I don't
-     * believe I need to do anything to support this at the moment.
-     */
-    else if (strcmp(cmd, "add-multicast") == 0) {
-      struct sockaddr_in *sin = (struct sockaddr_in *) data;
-      if (sin->sin_family != AF_INET)
-       return EAFNOSUPPORT;
-    } else {
-       IOLog("ppp%d: Invalid ppp control %s\n", if_unit(ifp), cmd);
-       return EINVAL;
-    }
-}
-
-/*
- * Process an ioctl request to the ppp network interface.
- */
-int
-pppsioctl(ifp, cmd, data)
-    register netif_t ifp;
-    int cmd;
-    caddr_t data;
-{
-    register struct ppp_softc *sc = &ppp_softc[if_unit(ifp)];
-    register struct ifaddr *ifa = (struct ifaddr *)data;
-    register struct ifreq *ifr = (struct ifreq *)data;
-    struct ppp_stats *psp;
-#ifdef PPP_COMPRESS
-    struct ppp_comp_stats *pcp;
-#endif
-    int s = splimp(), error = 0;
-
-    switch (cmd) {
-    case SIOCSIFFLAGS:
-       IOLog("ppp%d: pppioctl: SIOCSIFFLAGS called!\n", if_unit(ifp));
-       break;
-
-    case SIOCSIFADDR:
-       if (ifa->ifa_addr.sa_family != AF_INET)
-           error = EAFNOSUPPORT;
-       break;
-
-    case SIOCSIFDSTADDR:
-       if (ifa->ifa_addr.sa_family != AF_INET)
-           error = EAFNOSUPPORT;
-       break;
-
-    case SIOCSIFMTU:
-       if (!suser()) {
-           error = EPERM;
-           break;
-       }
-       if_mtu_set(sc->sc_if, ifr->ifr_mtu);
-       nbq_flush(&sc->sc_freeq);               /* get rid of old buffers */
-       pppsched(pppfillfreeq, sc);             /* and make a queue of new ones */
-       pppgetm(sc);
-       break;
-
-    case SIOCGIFMTU:
-       ifr->ifr_mtu = if_mtu(sc->sc_if);
-       break;
-
-    case SIOCGPPPSTATS:
-       psp = &((struct ifpppstatsreq *) data)->stats;
-       bzero(psp, sizeof(*psp));
-       psp->p.ppp_ibytes = sc->sc_bytesrcvd;
-       psp->p.ppp_ipackets = if_ipackets(sc->sc_if);
-       psp->p.ppp_ierrors = if_ierrors(sc->sc_if);
-       psp->p.ppp_obytes = sc->sc_bytessent;
-       psp->p.ppp_opackets = if_opackets(sc->sc_if);
-       psp->p.ppp_oerrors = if_oerrors(sc->sc_if);
-#ifdef VJC
-       psp->vj.vjs_packets = sc->sc_comp.stats.vjs_packets;
-       psp->vj.vjs_compressed = sc->sc_comp.stats.vjs_compressed;
-       psp->vj.vjs_searches = sc->sc_comp.stats.vjs_searches;
-       psp->vj.vjs_misses = sc->sc_comp.stats.vjs_misses;
-       psp->vj.vjs_uncompressedin = sc->sc_comp.stats.vjs_uncompressedin;
-       psp->vj.vjs_compressedin = sc->sc_comp.stats.vjs_compressedin;
-       psp->vj.vjs_errorin = sc->sc_comp.stats.vjs_errorin;
-       psp->vj.vjs_tossed = sc->sc_comp.stats.vjs_tossed;
-#endif /* VJC */
-       break;
-
-#ifdef PPP_COMPRESS
-    case SIOCGPPPCSTATS:
-       pcp = &((struct ifpppcstatsreq *) data)->stats;
-       bzero(pcp, sizeof(*pcp));
-       if (sc->sc_xc_state != NULL)
-           (*sc->sc_xcomp->comp_stat)(sc->sc_xc_state, &pcp->c);
-       if (sc->sc_rc_state != NULL)
-           (*sc->sc_rcomp->decomp_stat)(sc->sc_rc_state, &pcp->d);
-       break;
-#endif /* PPP_COMPRESS */
-
-    default:
-       error = EINVAL;
-    }
-    splx(s);
-    return (error);
-}
-
-/*
- * Queue a packet.  Start transmission if not active.
- * Packet is placed in Information field of PPP frame.
- *
- * This procedure MUST take an actual netbuf_t as input
- * since it may be called by procedures outside of us.
- * The buffer received must be in the same format as that
- * returned by pppgetbuf().
- */
-int
-pppoutput(ifp, in_nb, arg)
-    netif_t ifp;
-    netbuf_t in_nb;
-    void *arg;
-{
-    register struct ppp_softc *sc = &ppp_softc[if_unit(ifp)];
-    struct sockaddr *dst = (struct sockaddr *) arg;
-    int protocol, address, control;
-    u_char *cp;
-    int s, error;
-    mark_t flags = 0;
-    struct ip *ip;
-    struct nb_queue *ifq;
-    enum NPmode mode;
-    NETBUF_T m0;
-
-    m0 = nb_TO_NB(in_nb);
-
-    if (sc->sc_devp == NULL || (if_flags(ifp) & IFF_RUNNING) == 0
-       || (if_flags(ifp) & IFF_UP) == 0 && dst->sa_family != AF_UNSPEC) {
-       error = ENETDOWN;       /* sort of */
-       goto bad;
-    }
-
-
-    /*
-     * Compute PPP header.
-     */
-    flags &= ~M_HIGHPRI;
-    switch (dst->sa_family) {
-#ifdef INET
-    case AF_INET:
-       address = PPP_ALLSTATIONS;
-       control = PPP_UI;
-       protocol = PPP_IP;
-       mode = sc->sc_npmode[NP_IP];
-
-       /*
-        * If this packet has the "low delay" bit set in the IP header,
-        * or TCP and to an interactive port, put it on the fastq instead
-        */
-       ip = mtod(m0, struct ip *);
-       if (ip->ip_tos & IPTOS_LOWDELAY || ip->ip_p == IPPROTO_ICMP)
-           goto urgent;
-       else if (ip->ip_p == IPPROTO_TCP) {
-           register u_short *p = (u_short *) &(((caddr_t) ip)[ip->ip_hl << 2]);
-           if (INTERACTIVE(ntohs(p[0])) || INTERACTIVE(ntohs(p[1])))
-urgent:                flags |= M_HIGHPRI;
-       }
-       break;
-#endif
-#ifdef NS
-    case AF_NS:
-       address = PPP_ALLSTATIONS;
-       control = PPP_UI;
-       protocol = PPP_XNS;
-       mode = NPMODE_PASS;
-       break;
-#endif
-    case AF_UNSPEC:
-       address = PPP_ADDRESS(dst->sa_data);
-       control = PPP_CONTROL(dst->sa_data);
-       protocol = PPP_PROTOCOL(dst->sa_data);
-       mode = NPMODE_PASS;
-       break;
-    default:
-       IOLog("ppp%d: af%d not supported\n", if_unit(ifp), dst->sa_family);
-       error = EAFNOSUPPORT;
-       goto bad;
-    }
-
-    /*
-     * Drop this packet, or return an error, if necessary.
-     */
-    if (mode == NPMODE_ERROR) {
-       error = ENETDOWN;
-       goto bad;
-    }
-    if (mode == NPMODE_DROP) {
-       error = 0;
-       goto bad;
-    }
-
-    /*
-     * Add PPP header.
-     */
-    NB_GROW_TOP(m0, PPP_HDRLEN);
-
-    cp = mtod(m0, u_char *);
-    *cp++ = address;
-    *cp++ = control;
-    *cp++ = protocol >> 8;
-    *cp++ = protocol & 0xff;
-
-
-    if (sc->sc_flags & SC_LOG_OUTPKT) {
-       IOLog("ppp%d: output:\n", if_unit(ifp));        /* XXX */
-       pppdumpm(m0);
-    }
-
-
-    /*
-     * Put the packet on the appropriate queue.
-     */
-    s = splimp();              /* splnet should be OK now */
-    if (mode == NPMODE_QUEUE) {
-       NB_SET_MARK(m0,flags);                  /* save priority */
-       /* XXX we should limit the number of packets on this queue */
-       nbq_enqueue(&sc->sc_npq, m0);           /* XXX is this correct? */
-    } else {
-       ifq = (flags & M_HIGHPRI)? &sc->sc_fastq: &sc->sc_slowq;
-       if (nbq_full(ifq) < 0) {
-           nbq_drop(ifq);
-           IOLog("ppp%d: output queue full\n", if_unit(sc->sc_if));
-           splx(s);
-           incr_cnt(sc->sc_if, if_oerrors);
-           error = ENOBUFS;
-           goto bad;
-       }
-       nbq_enqueue(ifq, m0);
-    }
-
-    /*
-     * If we don't have some compressed packets already
-     * and we are not at interrupt priority, then do some compression. 
-     *
-     * We need to be especially careful here.  pppouput() is typically
-     * called at 2 different priority levels.  On a NeXT, neither of these
-     * is the interrupt priority level.  However, on Intel, one of them is.
-     * I don't know about HPPA or Sparc. Simple fix is to just check.
-     */
-    
-    if(!sc->sc_compsched && s != ipltospl(IPLIMP)) {
-       sc->sc_compsched = 1;
-       splx(s);
-       pppintr_comp(sc);    /* Calls pppstart() */
-    }
-    else {
-      (*sc->sc_start)(sc);
-      splx(s);
-    }
-
-    return (0);
-
-bad:
-    NB_FREE(m0);
-    return (error);
-}
-
-/*
- * After a change in the NPmode for some NP, move packets from the
- * npqueue to the send queue or the fast queue as appropriate.
- * Should be called at splimp (actually splnet would probably suffice).
- * Due to some of the uglies in the packet queueing system I have
- * implemented this without the mpp stuff.
- * PCF
- */
-
-static void
-ppp_requeue(sc)
-    struct ppp_softc *sc;
-{
-    NETBUF_T m, lm, nm;
-    struct nb_queue *ifq;
-    enum NPmode mode;
-    mark_t flags;
-
-    lm = nm = NULL;
-    for (m = sc->sc_npq.head; m; ) {
-       NB_GET_NEXT(m,&nm);
-
-       switch (PPP_PROTOCOL(mtod(m, u_char *))) {
-       case PPP_IP:
-           mode = sc->sc_npmode[NP_IP];
-           break;
-       default:
-           mode = NPMODE_PASS;
-       }
-
-       switch (mode) {
-       case NPMODE_PASS:
-           /*
-            * This packet can now go on one of the queues to be sent.
-            */
-           if(lm)
-               NB_SET_NEXT(lm,nm);
-           else
-               sc->sc_npq.head = nm;
-           NB_SET_NEXT(m,NULL);
-           NB_GET_MARK(m,&flags);
-           ifq = (flags & M_HIGHPRI)? &sc->sc_fastq: &sc->sc_slowq;
-           if (nbq_full(ifq)) {
-               nbq_drop(ifq);
-               incr_cnt(sc->sc_if, if_oerrors);
-               NB_FREE(m);
-           } else 
-               nbq_enqueue(ifq, m);
-           sc->sc_npq.len--;
-           break;
-
-       case NPMODE_DROP:
-       case NPMODE_ERROR:
-           sc->sc_npq.len--;
-           NB_FREE(m);
-           break;
-
-       case NPMODE_QUEUE:
-           lm = m;
-           break;
-       }
-       m = nm;
-    }
-    sc->sc_npq.tail = lm;      /*  anything further on has been sent ! */
-}
-
-/*
- * Get a packet to send.  This procedure is intended to be called
- * at spltty()/splimp(), so it takes little time.  If there isn't
- * a packet waiting to go out, it schedules a software interrupt
- * to prepare a new packet; the device start routine gets called
- * again when a packet is ready.
- */
-NETBUF_T
-ppp_dequeue(sc)
-    struct ppp_softc *sc;
-{
-  NETBUF_T m;
-  int error;
-  
-  m = nbq_dequeue(&sc->sc_compq);
-
-
-  if (!sc->sc_compsched && 
-      (! nbq_empty(&sc->sc_slowq) || ! nbq_empty(&sc->sc_fastq)))
-    {
-      
-      if ((error = pppsched(pppintr_comp, sc)) == KERN_SUCCESS)
-       sc->sc_compsched = 1;
-      else
-       {
-         IOLogDbg("ppp%d: compression callout failed returning %d\n",
-                  if_unit(sc->sc_if), error);
-       }
-    }
-  
-  return m;
-}
-
-/*
- * Takes all received input packets and uncompresses/hands_off.
- * Must not be reentrant and is called at normal priority.
- * Guaranteed Non-Reentrancy means we don't need to be at splnet().
- *
- */
-
-void
-pppintr_decomp(arg)
-    void *arg;
-{
-    struct ppp_softc *sc = (struct ppp_softc *)arg;
-    int s;
-    NETBUF_T m;
-
-    if (nbq_low(&sc->sc_freeq))
-      pppfillfreeq((void *) sc);
-
-  decomp:
-    for (;;) {
-      m = nbq_dequeue(&sc->sc_rawq);
-      if (m == NULL)
-       break;
-      ppp_inproc(sc, m);
-    }
-
-  /*
-   * Now we have aparently emptied the queue.  So, we try to reset the
-   * synchronization flag that schedules callbacks.  We check for the
-   * possibility that an interrupt occurred before we finish this check.
-   */
-  s = splimp();
-  if (!nbq_empty(&sc->sc_rawq))
-    {
-      splx(s);
-      goto decomp;
-    }
-  else
-    {
-      sc->sc_decompsched = 0;
-      splx(s);
-    }
-}
-
-
-
-/*
- * Readies the next few output packet from
- * the sc_fastq/sc_slowq.  Will try to
- * precompress all packets on the fast
- * queue and at most one from the slow queue.
- */
-void
-pppintr_comp(arg)
-    void *arg;
-{
-  struct ppp_softc *sc = (struct ppp_softc *)arg;
-  int s;
-  NETBUF_T m;
-  
-  if (nbq_low(&sc->sc_freeq))
-    pppfillfreeq((void *) sc);
-
-  
-  while (!nbq_full(&sc->sc_compq) && !nbq_empty(&sc->sc_fastq))
-    ppp_outpkt(sc);
-
-  if (!nbq_full(&sc->sc_compq) && !nbq_empty(&sc->sc_slowq))
-    ppp_outpkt(sc);
-      
-  sc->sc_compsched = 0;
-}
-
-/*
- * Grab another packet off a queue and apply VJ compression,
- * packet compression, address/control and/or protocol compression
- * if enabled.  Should be called at splnet.
- */
-static void
-ppp_outpkt(sc)
-    struct ppp_softc *sc;
-{
-    int s;
-    NETBUF_T m;
-    u_char *cp;
-    int address, control, protocol;
-#if NS_TARGET >= 40
-    struct timeval tv_time;
-#endif
-
-    /*
-     * Grab a packet to send: first try the fast queue, then the
-     * normal queue.
-     */
-    m = nbq_dequeue(&sc->sc_fastq);
-    if (m == NULL)
-       m = nbq_dequeue(&sc->sc_slowq);
-    if (m == NULL)
-       return;
-
-    /*
-     * Extract the ppp header of the new packet.
-     * The ppp header will be in one netbuf.
-     */
-    cp = mtod(m, u_char *);
-    address = PPP_ADDRESS(cp);
-    control = PPP_CONTROL(cp);
-    protocol = PPP_PROTOCOL(cp);
-
-#if NS_TARGET >= 40
-       ns_time_to_timeval(clock_value(System), &tv_time);
-#endif /* NS_TARGET */
-
-    switch (protocol) {
-    case PPP_IP:
-       /*
-        * Update the time we sent the most recent packet.
-        */
-#if NS_TARGET >= 40
-       sc->sc_last_sent = tv_time.tv_sec;
-#else
-        sc->sc_last_sent = time.tv_sec;
-#endif /* NS_TARGET */
-
-#ifdef VJC
-       /*
-        * If the packet is a TCP/IP packet, see if we can compress it.
-        */
-       if (sc->sc_flags & SC_COMP_TCP) {
-           struct ip *ip;
-           int type;
-           u_char *vjhdr;
-
-           ip = (struct ip *) (cp + PPP_HDRLEN);
-           /* this code assumes the IP/TCP header is in one netbuf */
-           if (ip->ip_p == IPPROTO_TCP) {
-               type = vj_compress_tcp(ip, NB_SIZE(m) - PPP_HDRLEN,
-                                      &sc->sc_comp,
-                                      !(sc->sc_flags & SC_NO_TCP_CCID), &vjhdr);
-               switch (type) {
-               case TYPE_UNCOMPRESSED_TCP:
-                   protocol = PPP_VJC_UNCOMP;
-                   break;
-               case TYPE_COMPRESSED_TCP:
-                   NB_SHRINK_TOP(m, vjhdr - (u_char *) ip);
-                   protocol = PPP_VJC_COMP;
-                   cp = mtod(m, u_char *);
-                   cp[0] = address;    /* header has moved */
-                   cp[1] = control;
-                   cp[2] = 0;
-                   break;
-               }
-               cp[3] = protocol;       /* update protocol in PPP header */
-           }
-       }
-
-#endif /* VJC */
-
-       break;
-
-#ifdef PPP_COMPRESS
-    case PPP_CCP:
-       ppp_ccp(sc, m, 0);
-       break;
-#endif /* PPP_COMPRESS */
-    }
-
-
-#ifdef PPP_COMPRESS
-    if (protocol != PPP_LCP && protocol != PPP_CCP
-       && sc->sc_xc_state && (sc->sc_flags & SC_COMP_RUN)) {
-       NETBUF_T mcomp;
-       int slen, clen;
-
-       slen = NB_SIZE(m);
-
-       clen = (*sc->sc_xcomp->compress)
-           (sc->sc_xc_state, &mcomp, m, slen,
-            sc->sc_flags & SC_CCP_UP? if_mtu(sc->sc_if): 0);
-
-
-       if (mcomp && (NB_SIZE(mcomp) >= slen))
-           IOLog("BSD Warning... packet growth: Orig=%d New=%d.\n",
-                 slen, NB_SIZE(mcomp));
-
-       if (mcomp != NULL) {
-
-           NB_FREE(m);
-           m = mcomp;
-           cp = mtod(m, u_char *);
-           protocol = cp[3];
-       }
-    }
-#endif /* PPP_COMPRESS */
-
-    /*
-     * Compress the address/control and protocol, if possible.
-     */
-    if (sc->sc_flags & SC_COMP_AC && address == PPP_ALLSTATIONS &&
-       control == PPP_UI && protocol != PPP_ALLSTATIONS &&
-       protocol != PPP_LCP) {
-       /* can compress address/control */
-       NB_SHRINK_TOP(m, 2);
-    }
-    if (sc->sc_flags & SC_COMP_PROT && protocol < 0xFF) {
-       /* can compress protocol */
-       if (mtod(m, u_char *) == cp) {
-           cp[2] = cp[1];      /* move address/control up */
-           cp[1] = cp[0];
-       }
-       NB_SHRINK_TOP(m, 1);
-    }
-
-
-    s = splimp();
-    nbq_enqueue(&sc->sc_compq, m);
-    (*sc->sc_start)(sc);
-    splx(s);
-}
-
-#ifdef PPP_COMPRESS
-/*
- * Handle a CCP packet.  `rcvd' is 1 if the packet was received,
- * 0 if it is about to be transmitted.
- */
-static void
-ppp_ccp(sc, m, rcvd)
-    struct ppp_softc *sc;
-    NETBUF_T m;
-    int rcvd;
-{
-    u_char *dp, *ep;
-    int slen, s;
-
-    /*
-     * Get a pointer to the data after the PPP header.
-     */
-    dp = mtod(m, u_char *) + PPP_HDRLEN;
-
-    ep = mtod(m, u_char *) + NB_SIZE(m);
-    if (dp + CCP_HDRLEN > ep)
-       return;
-    slen = CCP_LENGTH(dp);
-    if (dp + slen > ep) {
-       IOLogDbg("ppp%d: ccp: not enough data in netbuf (%x+%x > %x+%x)\n",
-                if_unit(sc->sc_if), dp, slen, mtod(m, u_char *), NB_SIZE(m));
-       return;
-    }
-
-    switch (CCP_CODE(dp)) {
-    case CCP_CONFREQ:
-    case CCP_TERMREQ:
-    case CCP_TERMACK:
-       /* CCP must be going down - disable compression */
-       if (sc->sc_flags & SC_CCP_UP) {
-           s = splimp();
-           sc->sc_flags &= ~(SC_CCP_UP | SC_COMP_RUN | SC_DECOMP_RUN);
-           splx(s);
-       }
-       break;
-
-    case CCP_CONFACK:
-       if (sc->sc_flags & SC_CCP_OPEN && !(sc->sc_flags & SC_CCP_UP)
-           && slen >= CCP_HDRLEN + CCP_OPT_MINLEN
-           && slen >= CCP_OPT_LENGTH(dp + CCP_HDRLEN) + CCP_HDRLEN) {
-           if (!rcvd) {
-               /* we're agreeing to send compressed packets. */
-               if (sc->sc_xc_state != NULL
-                   && (*sc->sc_xcomp->comp_init)
-                       (sc->sc_xc_state, dp + CCP_HDRLEN, slen - CCP_HDRLEN,
-                        if_unit(sc->sc_if), 0, sc->sc_flags & SC_DEBUG)) {
-                   s = splimp();
-                   sc->sc_flags |= SC_COMP_RUN;
-                   splx(s);
-               }
-           } else {
-               /* peer is agreeing to send compressed packets. */
-               if (sc->sc_rc_state != NULL
-                   && (*sc->sc_rcomp->decomp_init)
-                       (sc->sc_rc_state, dp + CCP_HDRLEN, slen - CCP_HDRLEN,
-                        if_unit(sc->sc_if),
-#ifdef VJC
-                        VJ_HDRLEN +
-#endif
-                        0, sc->sc_mru, sc->sc_flags & SC_DEBUG)) {
-                   s = splimp();
-                   sc->sc_flags |= SC_DECOMP_RUN;
-                   sc->sc_flags &= ~(SC_DC_ERROR | SC_DC_FERROR);
-                   splx(s);
-               }
-           }
-       }
-       break;
-
-    case CCP_RESETACK:
-       if (sc->sc_flags & SC_CCP_UP) {
-           if (!rcvd) {
-               if (sc->sc_xc_state && (sc->sc_flags & SC_COMP_RUN)) {
-                   (*sc->sc_xcomp->comp_reset)(sc->sc_xc_state);
-                   nbq_flush(&sc->sc_compq);  /* Flush pre-compressed packets */
-                 }
-           } else {
-               if (sc->sc_rc_state && (sc->sc_flags & SC_DECOMP_RUN)) {
-                   (*sc->sc_rcomp->decomp_reset)(sc->sc_rc_state);
-                   s = splimp();
-                   sc->sc_flags &= ~SC_DC_ERROR;
-                   splx(s);
-               }
-           }
-       }
-       break;
-    }
-}
-
-/*
- * CCP is down; free (de)compressor state if necessary.
- */
-static void
-ppp_ccp_closed(sc)
-    struct ppp_softc *sc;
-{
-    if (sc->sc_xc_state) {
-       (*sc->sc_xcomp->comp_free)(sc->sc_xc_state);
-       sc->sc_xc_state = NULL;
-    }
-    if (sc->sc_rc_state) {
-       (*sc->sc_rcomp->decomp_free)(sc->sc_rc_state);
-       sc->sc_rc_state = NULL;
-    }
-}
-#endif /* PPP_COMPRESS */
-
-/*
- * PPP packet input routine.
- * The caller has checked and removed the FCS and has inserted
- * the address/control bytes and the protocol high byte if they
- * were omitted.
- */
-void
-ppppktin(sc, m, lost)
-    struct ppp_softc *sc;
-    NETBUF_T m;
-    int lost;
-{
-  int error, s = splimp();
-  
-  NB_SET_MARK(m,(lost ? M_ERRMARK : 0));
-  
-  /* XXX - we should check for the raw queue overflowing... */
-  nbq_enqueue(&sc->sc_rawq, m);
-  if (!sc->sc_decompsched)
-    {
-      if ((error = pppsched(pppintr_decomp, sc)) == KERN_SUCCESS)
-       sc->sc_decompsched = 1;
-      else
-       IOLogDbg("ppp%d: decompression callout failed returning %d\n",
-                if_unit(sc->sc_if), error);
-    }
-  
-  splx(s);
-}
-
-/*
- * Process a received PPP packet, doing decompression as necessary.
- */
-#define COMPTYPE(proto)        ((proto) == PPP_VJC_COMP? TYPE_COMPRESSED_TCP: \
-                        TYPE_UNCOMPRESSED_TCP)
-
-static void
-ppp_inproc(sc, m)
-    struct ppp_softc *sc;
-    NETBUF_T m;
-{
-    struct nb_queue *inq;
-    int s, ilen, xlen, proto, rv;
-    mark_t flags;
-    u_char *cp, adrs, ctrl;
-    NETBUF_T dmp;
-    u_char *iphdr;
-    u_int hlen;
-#if NS_TARGET >= 40
-    struct timeval tv_time;
-#endif /* NS_TARGET */
-
-
-    incr_cnt(sc->sc_if, if_ipackets);
-
-    NB_GET_MARK(m,&flags);
-
-    if (sc->sc_flags & SC_LOG_INPKT) {
-       IOLog("ppp%d: got %d bytes\n", if_unit(sc->sc_if), NB_SIZE(m));
-       pppdumpm(m);
-    }
-
-    cp = mtod(m, u_char *);
-    adrs = PPP_ADDRESS(cp);
-    ctrl = PPP_CONTROL(cp);
-    proto = PPP_PROTOCOL(cp);
-
-    if (flags & M_ERRMARK) {
-       s = splimp();
-       sc->sc_flags |= SC_VJ_RESET;
-       splx(s);
-    }
-
-#ifdef PPP_COMPRESS
-    /*
-     * Decompress this packet if necessary, update the receiver's
-     * dictionary, or take appropriate action on a CCP packet.
-     */
-    if (proto == PPP_COMP && sc->sc_rc_state && (sc->sc_flags & SC_DECOMP_RUN)
-       && !(sc->sc_flags & SC_DC_ERROR) && !(sc->sc_flags & SC_DC_FERROR)) {
-       /* decompress this packet */
-       rv = (*sc->sc_rcomp->decompress)(sc->sc_rc_state, m, &dmp);
-       if (rv == DECOMP_OK){
-
-         NB_FREE(m);
-         if (dmp == NULL){
-           /* No error, but no decompressed packet returned */
-           return;
-         }
-           m = dmp;
-           cp = mtod(m, u_char *);
-           proto = PPP_PROTOCOL(cp);
-       } else {
-           /*
-            * An error has occurred in decompression.
-            * Pass the compressed packet up to pppd, which may take
-            * CCP down or issue a Reset-Req.
-            */
-           IOLogDbg("ppp%d: decompress failed %d\n", if_unit(sc->sc_if), rv);
-           s = splimp();
-           sc->sc_flags |= SC_VJ_RESET;
-
-           if (rv == DECOMP_ERROR)
-             sc->sc_flags |= SC_DC_ERROR;
-           else
-             sc->sc_flags |= SC_DC_FERROR;
-           splx(s);
-       }
-
-    } else {
-       if (sc->sc_rc_state && (sc->sc_flags & SC_DECOMP_RUN))
-         {
-
-           (*sc->sc_rcomp->incomp)(sc->sc_rc_state, m);
-       }
-       if (proto == PPP_CCP) {
-           ppp_ccp(sc, m, 1);
-       }
-    }
-#endif
-
-    ilen = NB_SIZE(m);
-
-#ifdef VJC
-    if (sc->sc_flags & SC_VJ_RESET) {
-       /*
-        * If we've missed a packet, we must toss subsequent compressed
-        * packets which don't have an explicit connection ID.
-        */
-
-/*     IOLog("SC_VJ_RESET was set!\n"); */
-
-       vj_uncompress_err(&sc->sc_comp);
-       s = splimp();
-       sc->sc_flags &= ~SC_VJ_RESET;
-       splx(s);
-    }
-
-    /*
-     * See if we have a VJ-compressed packet to uncompress.
-     */
-    if (proto == PPP_VJC_COMP) {
-       if (sc->sc_flags & SC_REJ_COMP_TCP)
-           goto bad;
-
-
-       xlen = vj_uncompress_tcp(cp + PPP_HDRLEN, ilen - PPP_HDRLEN,
-                                ilen - PPP_HDRLEN,
-                                &sc->sc_comp, &iphdr, &hlen);
-
-       if (xlen <= 0) {
-/*
-   IOLogDbg("ppp%d: VJ uncompress failed on type comp\n", 
-                       if_unit(sc->sc_if));
-*/
-           goto bad;
-       }
-
-       /*
-        * Write the IP/TCP header back into the datagram.
-        * The pointers point to the stored copy in the VJ
-        * compression table.
-        */
-   
-       NB_GROW_TOP(m, hlen - xlen);
-       NB_WRITE(m, PPP_HDRLEN, hlen, iphdr);
-
-       cp = mtod(m, u_char *);
-
-#ifdef TCP_CHECKSUM
-    {
-#define getip_hl(base) ((base).ip_hl)
-
-      u_short mytcpcksum (struct ip *pip);
-      struct tcphdr *ptcp;
-      struct ip *iphdr;
-      u_short thecksum;
-      u_long hlen;
-
-      iphdr = (struct ip*) (cp + PPP_HDRLEN);
-      hlen = getip_hl(*iphdr) << 2;  /* Length is in words */
-      ptcp = (struct tcphdr *)&((u_char *)iphdr)[hlen];
-
-      thecksum = (u_short)mytcpcksum(iphdr);
-
-      if(ptcp->th_sum != thecksum)
-       {
-#ifdef NEWVJ_RESYNC
-         set_newvj_error_mode();
-#endif
-         IOLog("NEWVJ: Warning... TCP checksum failed Received=%u, Calculated=%u)\n",
-               (ptcp->th_sum)&0xffff, thecksum&0xffff);
-       }
-    }              
-#endif
-
-
-       cp[0] = adrs;
-       cp[1] = ctrl;
-       cp[2] = 0;
-       cp[3] = PPP_IP;
-       proto = PPP_IP;
-
-       ilen += hlen - xlen;
-
-    } else if (proto == PPP_VJC_UNCOMP) {
-       if (sc->sc_flags & SC_REJ_COMP_TCP)
-           goto bad;
-
-
-       vj_uncompress_uncomp(cp + PPP_HDRLEN, ilen-PPP_HDRLEN, &sc->sc_comp);
-
-       proto = PPP_IP;
-       cp[3] = PPP_IP;
-    }
-#endif /* VJC */
-
-
-    rv = 0;
-    switch (proto) {
-#ifdef INET
-    case PPP_IP:
-       /*
-        * IP packet - take off the ppp header and pass it up to IP.
-        */
-       if ((if_flags(sc->sc_if) & IFF_UP) == 0
-           || sc->sc_npmode[NP_IP] != NPMODE_PASS) {
-           /* interface is down - drop the packet. */
-           NB_FREE(m);
-           IOLogDbg("ppp%d: IP packed dropped (NPmode)\n", if_unit(sc->sc_if));
-           return;
-       }
-       NB_SHRINK_TOP(m, PPP_HDRLEN);
-       inet_queue(sc->sc_if, NB_TO_nb(m));
-#if NS_TARGET >= 40
-       /*  I am assuming the time is different here than above. */
-       ns_time_to_timeval(clock_value(System), &tv_time);
-       sc->sc_last_recv = tv_time.tv_sec; /* update time of last pkt rcvd */
-#else
-       sc->sc_last_recv = time.tv_sec; /* update time of last pkt rcvd */
-#endif
-       return;
-#endif
-
-    default:
-       /*
-        * Some other protocol - place on input queue for read().
-        */
-       inq = &sc->sc_inq;
-       rv = 1;
-       break;
-    }
-
-    /*
-     * Put the packet on the appropriate input queue.
-     */
-    s = splimp();
-    if (nbq_full(inq)) {
-       nbq_drop(inq);
-       splx(s);
-       IOLog("ppp%d: input queue full\n", if_unit(sc->sc_if));
-       goto bad;
-    }
-    nbq_enqueue(inq, m);
-    splx(s);
-
-    if (rv)
-       (*sc->sc_ctlp)(sc);
-
-    return;
-
- bad:
-    NB_FREE(m);
-    incr_cnt(sc->sc_if, if_ierrors);
-}
-
-#define MAX_DUMP_BYTES 128
-
-static void
-pppdumpm(m0)
-    NETBUF_T m0;
-{
-    char buf[3*MAX_DUMP_BYTES+4];
-    char *bp = buf;
-    static char digits[] = "0123456789abcdef";
-    int l = NB_SIZE(m0);
-    u_char *rptr = mtod(m0, u_char *);
-
-    while (l--) {
-       if (bp > buf + sizeof(buf) - 4)
-           goto done;
-       *bp++ = digits[*rptr >> 4]; /* convert byte to ascii hex */
-       *bp++ = digits[*rptr++ & 0xf];
-    }
-
-    *bp++ = ' ';
-done:
-    if (l)
-       *bp++ = '>';
-    *bp = 0;
-    IOLog("%s\n", buf);
-}
-
-
diff --git a/NeXT/if_pppvar.h b/NeXT/if_pppvar.h
deleted file mode 100644 (file)
index 55f2250..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * if_ppp.h - Point-to-Point Protocol definitions.
- *
- * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The name "Carnegie Mellon University" must not be used to
- *    endorse or promote products derived from this software without
- *    prior written permission. For permission or any legal
- *    details, please contact
- *      Office of Technology Transfer
- *      Carnegie Mellon University
- *      5000 Forbes Avenue
- *      Pittsburgh, PA  15213-3890
- *      (412) 268-4387, fax: (412) 268-7395
- *      tech-transfer@andrew.cmu.edu
- *
- * 4. Redistributions of any form whatsoever must retain the following
- *    acknowledgment:
- *    "This product includes software developed by Computing Services
- *     at Carnegie Mellon University (http://www.cmu.edu/computing/)."
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/* Portions Copyright (C) 1990 Brad K. Clements (streams support)
- */
-
-#if !(NS_TARGET >= 40)
-#import <kernserv/prototypes.h>
-#endif /* NS_TARGET */
-
-/*
- * Supported network protocols.  These values are used for
- * indexing sc_npmode.
- */
-#define NP_IP  0               /* Internet Protocol */
-#define NUM_NP 1               /* Number of NPs. */
-
-#include "nbq.h"
-
-
-/* only defined in the posix universe... */
-/*typedef      int pid_t; */
-
-struct ppp_softc {
-       netif_t sc_if;          /* network-visible interface */
-       u_int   sc_flags;       /* control/status bits; see if_ppp.h */
-       struct  tty *sc_devp;   /* pointer to device-dep structure */
-       void    (*sc_start) __P((struct ppp_softc *));  /* start output proc */
-       void    (*sc_ctlp) __P((struct ppp_softc *));   /* rcvd control pkt */
-       void    (*sc_relinq) __P((struct ppp_softc *)); /* relinquish ifunit */
-       u_int16_t sc_mru;       /* max receive unit */
-       pid_t   sc_xfer;        /* used in transferring unit */
-       NETBUF_T sc_m;          /* Current TTY input netbuf */
-       struct nb_queue sc_freeq; /* reserve netbufs */
-       struct nb_queue sc_rawq;  /* Raw input buffers */
-       struct nb_queue sc_fastq; /* For telnet, rlogin, and ftp control */
-       struct nb_queue sc_slowq; /* Everything else */
-       struct nb_queue sc_inq; /* Input available to user ppp */
-       struct nb_queue sc_npq; /* output packets not to be sent yet */
-       struct nb_queue sc_compq; /* Cache of compressed bufs to be sent */
-#ifdef VJC
-       struct vjcompress sc_comp;
-#endif
-       u_int   sc_bytessent;   /* count of octets sent */
-       u_int   sc_bytesrcvd;   /* count of octets received */
-       enum NPmode sc_npmode[NUM_NP]; /* what to do with each NP */
-#ifdef PPP_COMPRESS
-       struct compressor *sc_xcomp; /* transmit compressor */
-       void    *sc_xc_state;   /* transmit compressor state */
-       struct compressor *sc_rcomp; /* receive decompressor */
-       void    *sc_rc_state;   /* receive decompressor state */
-#endif
-       time_t  sc_last_sent;   /* time (secs) last NP pkt sent */
-       time_t  sc_last_recv;   /* time (secs) last NP pkt rcvd */
-
-       short sc_compsched;     /* synchronize compression callouts */
-       short sc_decompsched;   /* synchronize decompression callouts */
-
-       /* Device-dependent part for async lines. */
-       ext_accm sc_asyncmap;   /* async control character map */
-       u_int32_t sc_rasyncmap; /* receive async control char map */
-       NETBUF_T sc_outm;       /* netbuf currently being output */
-       char    *sc_mp;         /* ptr to next char in input netbuf */
-       u_int16_t sc_ilen;      /* length of input packet so far */
-       u_int16_t sc_fcs;       /* FCS so far (input) */
-       u_int16_t sc_outfcs;    /* FCS so far for output packet */
-       u_char  sc_rawin[16];   /* chars as received */
-       int     sc_rawin_count; /* # in sc_rawin */
-};
-
-extern struct  ppp_softc ppp_softc[];
-
-struct ppp_softc *pppalloc __P((pid_t pid));
-void   pppdealloc __P((struct ppp_softc *sc));
-int    pppioctl __P((struct ppp_softc *sc, u_long cmd, void *data, int flag));
-void   ppppktin __P((struct ppp_softc *sc, NETBUF_T m, int lost));
-NETBUF_T ppp_dequeue __P((struct ppp_softc *sc));
-
-#define t_sc T_LINEP
-
-#define incr_cnt(ifp,field) field##_set(ifp, field(ifp) + 1)
-
-#ifdef VJC
-#define VJ_HDRLEN      128
-#endif
diff --git a/NeXT/inlines.h b/NeXT/inlines.h
deleted file mode 100644 (file)
index 88e155a..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Netbufs don't come with nifty queuing functions
- * like mbufs. We therefore make our own quques by
- * squirreling away an extra pointer before the data
- * in a netbuf. As we can't guarantee that this will
- * be aligned to anything in particular I use bcopy to
- * read and write it. bcopy can use 32 bit if it really
- * feels like it...
- * PCF
- *
-
-#if defined(m68k)
-#import "spl.h"
-#else
-#import <kernserv/machine/spl.h>
-#endif
-#include <kernserv/kern_server_types.h>
-#include <kernserv/kalloc.h>
-#include "nbq.h"
-
-/*
- * There is no driver kit for the Moto release.
- */
-#ifndef IOLog
-#define IOLog printf
-#define        IOLogDbg                if (sc->sc_flags & SC_DEBUG) printf
-#else
-#define        IOLogDbg                if (sc->sc_flags & SC_DEBUG) IOLog
-#endif
-
-extern kern_server_t instance;
-
-/*
- * Careful about using this function.  Some places
- * in the code drop packets based on this count
- * but they never free them.
- */
-
-static inline int
-nbq_full(struct nb_queue* nbq)
-{
-    int rv;
-    rv = (nbq->len >= nbq->max);
-    return rv;
-}
-
-static inline int
-nbq_empty(struct nb_queue* nbq)
-{
-    int rv;
-    rv = (!nbq->head);
-    return rv;
-}
-
-static inline int
-nbq_low(struct nb_queue* nbq)
-{
-    int rv;
-    rv = (nbq->len <= nbq->low);
-    return rv;
-}
-
-static inline int
-nbq_high(struct nb_queue* nbq)
-{
-    int rv;
-    rv = (nbq->len >= nbq->high);
-    return rv;
-}
-
-static inline NETBUF_T
-nbq_peek(struct nb_queue* nbq)
-{
-    int s;
-    NETBUF_T nb;
-
-    s = splimp();
-    nb = nbq->head;
-    splx(s);
-    return nb;
-}
-
-static inline NETBUF_T
-nbq_dequeue(struct nb_queue* nbq)
-{
-  int s;
-  NETBUF_T nb;
-
-  if (!nbq->head)
-      return NULL;
-
-  s = splimp();
-  nb = nbq->head;
-  NB_GET_NEXT(nb,&nbq->head);
-  if (!nbq->head)
-       nbq->tail = NULL;
-  --nbq->len;
-  splx(s);
-
-  return nb;
-}
-
-/*
- * One simple note about nbq_enqueue: it will enqueue packets even if
- * it is full, so the caller is responsible for checking this first...
- *
- * We return 1 if we added, else we return 0
- * if there was a problem. We leave it up to the caller
- * to detect an error return value (0) and print
- * an appropriate message/update stats.  However, in the spirit of
- * keeping the code as close to the netbsd version as is possible,
- * WE WILL FREE a packet that can't be enqueued.  This should be the
- * responsibility of the caller but that is currently not the case.
- *
- * Actually, now I'm using the hidden pointer arrangement then theres
- * no circumstances under which this can return 0, oh well...
- * PCF
- */
-
-static inline int
-nbq_enqueue(struct nb_queue* nbq, NETBUF_T nb)
-{
-  int s;
-
-  NB_SET_NEXT(nb,NULL);
-  s = splimp();
-  if (nbq->tail)
-    NB_SET_NEXT(nbq->tail,nb);
-  else
-    nbq->head = nb;
-  nbq->tail = nb;
-  ++nbq->len;
-  splx(s);
-  return 1;
-}
-
-static inline void
-nbq_flush(struct nb_queue *nbq)
-{
-    NETBUF_T nb,temp;
-    int s;
-
-    s  = splimp();
-    nb = nbq->head;
-    while(nb) {
-       temp=nb;
-       NB_GET_NEXT(nb,&nb);
-       NB_FREE(temp);
-    }
-
-    nbq->head = nbq->tail = NULL;
-    nbq->len = 0;
-    nbq->dropped = 0;
-    splx(s);
-}
-
-/*
- * Must not be called at interrupt priority
- */
-
-static inline void
-nbq_init(struct nb_queue *nbq, struct qparms *qp)
-{
-  nbq->name = qp->q_name;
-  nbq->head = nbq->tail = NULL;
-  nbq->low = qp->q_low;
-  nbq->high = qp->q_high;
-  nbq->max = qp->q_max;
-  nbq->len = 0;
-  nbq->dropped = 0;
-}
-
-static inline void
-nbq_free(struct nb_queue *nbq)
-{
-  nbq_flush(nbq);
-}
-
-static inline void
-nbq_drop(struct nb_queue *nbq)
-{
-    ++nbq->dropped;
-}
-
-/*
- * Not very pretty, but it makes for less "diffs"...
- */
-#define mtod(m,type)   ((type) NB_MAP(m))
-
-typedef void (*pfv)(void *);
-
-/* used by both ppp_tty.c and if_ppp.c */
-static inline kern_return_t
-pppsched(pfv func, struct ppp_softc *sc)
-{
-    extern kern_server_t instance;
-    kern_return_t result;
-
-    if ((result = kern_serv_callout(&instance, func, (void *)sc)) != KERN_SUCCESS)
-      IOLog("kern_serv_callout failed: ret = %x\n", result);
-
-    return result;
-}
-
-#undef u
-
-static inline thread_t
-current_thread(void)
-{
-       extern thread_t active_threads[];
-
-       return active_threads[0];
-}
-
-extern struct proc *proc_from_thread(thread_t);
-extern struct uthread *uthread_from_thread(thread_t);
-
-#define        curproc         (proc_from_thread(current_thread()))
-
diff --git a/NeXT/libposix/Makefile b/NeXT/libposix/Makefile
deleted file mode 100644 (file)
index d4c9188..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# libposix makefile
-# $Id: Makefile,v 1.1 1998/03/26 02:52:03 paulus Exp $
-#
-
-ARCHFLAGS = 
-
-SRCS = libposix.c
-OBJS = libposix.o
-
-CFLAGS = -O -D_POSIX_SOURCE $(ARCHFLAGS)
-
-all: $(OBJS)
-
-clean:
-       rm -f *.o *~ core
-
diff --git a/NeXT/libposix/libposix.c b/NeXT/libposix/libposix.c
deleted file mode 100644 (file)
index a9a5887..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-/*  Yes, that's right:  of all the platforms supported by ppp, 
-    only Mach OpenStep 4.x doesn't support POSIX.  Sheesh.
-
-    Stranger still, the POSIX declatations are still in the 4.x header files,
-    and the gcc -posix still defines _POSIX_SOURCE.  So... 
-    we emulate (sometimes badly) the missing POSIX functions.  This
-    is by no means a complete or general POSIX emulation.  Just enough 
-    to get us by for ppp, so we don't have to pollute the rest of the 
-    sources of every other (non-braindead) platform.  Much of the
-    code was snarfed from NeXT's 4.0 ppp port, the rest inspired by
-    "POSIX Programmers Guide" by Donald Lewine.
-    
-    Maybe if we complain NeXT will upgrade to BSD4.4 libs like the rest of
-    the free world (and maybe pink elephants will fly out of my...  -KC)
- */
-
-#include <signal.h>
-#include <termios.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include <sys/time.h>
-#include <errno.h>
-
-int sigemptyset(sigset_t *set)
-{
-       *set = 0;
-       return 0;
-}
-
-int sigaddset(sigset_t *set, int signo)
-{
-       *set |= 1<<signo;
-       return 0;
-}
-
-int sigprocmask(int how, const sigset_t *set, sigset_t *oset)
-{
-       switch(how) {
-       case SIG_BLOCK:
-               *oset = sigblock(*set);
-               break;
-       case SIG_UNBLOCK:
-               /* XXX How does one emulate this with ancient BSD? (KC) */
-               break;
-       case SIG_SETMASK:
-               *oset = sigsetmask(*set);
-               break;
-       }
-       return 0;
-}
-
-int sigsuspend(const sigset_t *sigmask)
-{
-       sigpause(*sigmask);
-}
-
-int sigaction(int sig, const struct sigaction *act, struct sigaction *oact)
-{
-       struct sigvec vec, ovec;
-       int st;
-
-       vec.sv_handler = act->sa_handler;
-       vec.sv_mask = act->sa_mask;
-       vec.sv_flags = act->sa_flags;
-       
-       st = sigvec(sig, &vec, &ovec);
-
-       if (oact) {
-               oact->sa_handler = ovec.sv_handler;
-               oact->sa_mask = ovec.sv_mask;
-               oact->sa_flags = ovec.sv_flags;
-       }
-
-       return st;
-}
-
-int tcgetattr(int fildes, struct termios *tp)
-{
-       return ioctl(fildes, TIOCGETA, tp);
-}
-
-int tcsetattr(int fd, int opt, const struct termios *t)
-{
-       int st;
-
-       switch(opt) {
-       case TCSANOW:
-               st = ioctl(fd, TIOCSETA, t);
-               break;
-       case TCSADRAIN:
-               st = ioctl(fd, TIOCSETAW, t);
-               break;
-       case TCSAFLUSH:
-               st = ioctl(fd, TIOCSETAF, t);
-               break;
-       default:
-               st = -1;
-               errno = EINVAL;
-               break;
-       }
-       return st;
-}
-
-/*  XXX we ignore duration (which is 0 in chat.c anyway).
- */
-int tcsendbreak(int fildes, int duration)
-{
-       struct timeval sleepytime;
-
-       sleepytime.tv_sec = 0;
-       sleepytime.tv_usec = 400000;
-       if (ioctl(fildes, TIOCSBRK, 0) != -1)
-       {
-           select(0, 0, 0, 0, &sleepytime);
-           (void) ioctl(fildes, TIOCCBRK, 0);
-       }
-}
-
-/*  XXX This is the implementation of cfgetospeed from NeXT's ppp-5
-    pppd/sys-NeXT.c.  I don't know whether returning c_ispeed instead
-    of c_ospeed is deliberate or a type-o.
- */
-speed_t cfgetospeed(const struct termios *t)
-{
-       return t->c_ispeed;
-}
-
-int cfsetospeed(struct termios *t, int speed)
-{ 
-       t->c_ospeed = speed; 
-       return 0; 
-}
-
-speed_t cfgetispeed(const struct termios *t)
-{
-       return t->c_ispeed;
-}
-
-int cfsetispeed(struct termios *t, int speed)
-{ 
-       t->c_ispeed = speed; 
-       return 0; 
-}
-
-int setsid(void)
-{
-    int fd;
-
-    setpgrp(0, getpid());
-    
-    if ( (fd = open("/dev/tty", O_RDWR | O_NDELAY)) < 0)
-           return -1;
-    ioctl(fd, TIOCNOTTY, NULL);
-    close(fd);
-
-    return 0;
-}
-
-int waitpid(pid_t pid, int *stat_loc, int options)
-{
-    if (pid == -1) 
-       pid = 0;
-    return wait4(pid, (union wait *) stat_loc, options, NULL);
-}
-
diff --git a/NeXT/linedisc.h b/NeXT/linedisc.h
deleted file mode 100644 (file)
index a7147ef..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * linedisc.h -- includes for use with loadable line disciplines
- */
-#define        KERNEL          1
-#define        KERNEL_FEATURES 1
-
-#ifdef m68k
-#import <machine/reg.h>
-#endif
-
-#import <sys/param.h>
-/*
-#import <sys/systm.h>
-*/
-#import <sys/user.h>
-#import <sys/ioctl.h>
-#import <sys/tty.h>
-#import <sys/proc.h>
-/*
-#import <sys/vnode.h>
-#import <sys/file.h>
-*/
-#import <sys/conf.h>
-#import <sys/buf.h>
-#import <sys/dk.h>
-#import <sys/uio.h>
-#import <sys/kernel.h>
-
-/*
-#import <machine/spl.h>
-*/
-#ifdef m68k
-#include "spl.h"
-#endif
-
-#if    NeXT
-/*
-#import <next/cons.h>
-#import <nextdev/kmreg.h>
-*/
-#endif NeXT
-
-/*
- * Line discipline "kind"
- * NORMAL_LDISC -- Normal line disciplines use tty struct clists in
- *                     standard manner
- * SPECIAL_LDISC -- Special line disciplines have private buffering
- *                     strategy
- */
-#define        NORMAL_LDISC    0
-#define        SPECIAL_LDISC   1
-
-extern int tty_ld_install(
-       int ld_number,
-       int ld_kind,
-       int (*ld_open)(dev_t dev, struct tty *tp),
-       void (*ld_close)(struct tty *tp),
-       int (*ld_read)(struct tty *tp, struct uio *uiop),
-       int (*ld_write)(struct tty *tp, struct uio *uiop),
-       int (*ld_ioctl)(struct tty *tp, int command, void *dataptr, int flag),
-       void (*ld_rint)(int c, struct tty *tp),
-       void (*ld_rend)(char *cp, u_int n, struct tty *tp),
-       void (*ld_start)(struct tty *tp),
-       int (*ld_modem)(struct tty *tp, int dcd_on),
-       int (*ld_select)(struct tty *tp, int rw)
-);
-extern int tty_ld_remove(int ld_number);
-extern void ttydevstart(struct tty *tp);
-extern void ttydevstop(struct tty *tp);
-extern void ttyselwait(struct tty *tp, int rw);
-extern void ttselwakeup(struct tty *tp);
-
diff --git a/NeXT/mach/features.h b/NeXT/mach/features.h
deleted file mode 100644 (file)
index e2efd55..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- * NeXTStep 3.3 Developer for m68k is missing this file.
- * Some needed headers try to include it:
- *    proc.h includes user.h
- *    user.h includes cpu.h
- *    m68k cpu.h tries in include features.h
- *
- */
diff --git a/NeXT/nbq.h b/NeXT/nbq.h
deleted file mode 100644 (file)
index 0fd632c..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * All very trivial - the simpler the better I say. We try and keep
- * quqes of netbufs by squirreling a pointer away below the data area.
- * This is done by the ppp_nb_alloc function. As long as everyone
- * uses the ppp shrink and grow functions we should be o.k. This code
- * has now been modified to keep the mark_t stuff nhere as well since
- * we probably shafted that good and proper in the last version. oops !
- * PCF
- */
-
-#ifndef __NBQ_H__
-#define __NBQ_H__
-
-#define KERNEL 1
-
-#include <sys/types.h>
-#if !(NS_TARGET >= 40)
-#include <kernserv/prototypes.h>
-#endif /* NS_TARGET */
-
-#include "netbuf.h"
-typedef u_int mark_t;
-
-#define NETBUF_T netbuf_t
-#define NB_ALLOC ppp_nb_alloc
-#define NB_FREE nb_free
-#define NB_MAP nb_map
-#define NB_SIZE nb_size
-#define NB_SHRINK_TOP ppp_nb_shrink_top
-#define NB_GROW_TOP ppp_nb_grow_top
-#define NB_SHRINK_BOT nb_shrink_bot
-#define NB_GROW_BOT nb_grow_bot
-#define NB_READ nb_read
-#define NB_WRITE nb_write
-#define NB_GET_MARK nb_get_mark
-#define NB_SET_MARK nb_set_mark
-#define NB_GET_NEXT nb_get_next
-#define NB_SET_NEXT nb_set_next
-#define nb_TO_NB(nb) (nb)
-#define NB_TO_nb(NB) (NB)
-
-
-struct qparms {
-    u_char     q_low, q_high, q_max;
-    char       *q_name;
-};
-
-struct nb_queue {
-    char       *name;
-    int                low, high, max, len, dropped;
-    NETBUF_T   head, tail;
-};
-
-#define NB_EXTRA (sizeof(mark_t)+sizeof(netbuf_t))
-
-static inline void
-nb_set_next(netbuf_t nb, netbuf_t ptr)
-{
-if(nb) bcopy(&ptr,NB_MAP(nb)-sizeof(netbuf_t),sizeof(netbuf_t));
-}
-
-static inline void
-nb_get_next(netbuf_t nb, netbuf_t *ptr)
-{
-if(nb && ptr) bcopy(NB_MAP(nb)-sizeof(netbuf_t),ptr,sizeof(netbuf_t));
-}
-
-static inline void
-nb_set_mark(netbuf_t nb, mark_t ptr)
-{
-if(nb) bcopy(&ptr,NB_MAP(nb)-NB_EXTRA,sizeof(mark_t));
-}
-
-static inline void
-nb_get_mark(netbuf_t nb, mark_t *ptr)
-{
-if(nb && ptr) bcopy(NB_MAP(nb)-NB_EXTRA,ptr,sizeof(mark_t));
-}
-
-static inline void
-ppp_nb_shrink_top(netbuf_t nb, unsigned int size)
-{
-    netbuf_t ptr;
-    mark_t   mark;
-    NB_GET_NEXT(nb,&ptr);
-    NB_GET_MARK(nb,&mark);
-    nb_shrink_top(nb,size);
-    NB_SET_MARK(nb,mark);
-    NB_SET_NEXT(nb,ptr);
-}
-
-static inline void
-ppp_nb_grow_top(netbuf_t nb, unsigned int size)
-{
-    netbuf_t ptr;
-    mark_t   mark;
-    NB_GET_NEXT(nb,&ptr);
-    NB_GET_MARK(nb,&mark);
-    nb_grow_top(nb,size);
-    NB_SET_MARK(nb,mark);
-    NB_SET_NEXT(nb,ptr);
-}
-
-
-static inline netbuf_t
-ppp_nb_alloc(unsigned int size)
-{
-    netbuf_t nb;
-
-    size+=NB_EXTRA;
-    nb=nb_alloc(size);
-    if(nb) {
-       nb_shrink_top(nb,NB_EXTRA);
-       NB_SET_NEXT(nb,NULL);
-       NB_SET_MARK(nb,0);
-    }
-    return nb;
-}
-#endif /* __NBQ_H__ */
-
diff --git a/NeXT/netbuf.h b/NeXT/netbuf.h
deleted file mode 100644 (file)
index 578ac8f..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* 
- * Copyright (C) 1990 by NeXT, Inc., All Rights Reserved
- *
- */
-
-/* 
- * Network Buffer API (for kernel use only)
- *
- * HISTORY
- * 09-Apr-90  Bradley Taylor (btaylor) at NeXT, Inc.
- *     Created. 
- */
-#ifndef _NETBUF_
-#define _NETBUF_
-
-/*
- * We know only that the first entry in the structure is a
- * pointer that isn't used while the netbuf is allocated.
- * (that is, until an nb_free() or an inet_queue() of course!)
- */
-typedef struct netbuf { struct netbuf *m_nextpkt; } *netbuf_t;
-
-#ifdef KERNEL
-
-extern char *nb_map(netbuf_t nb);
-extern netbuf_t nb_alloc(unsigned size);
-extern netbuf_t nb_alloc_wrapper(void *data, unsigned size,
-                                void freefunc(void *), void *freefunc_arg);
-
-extern void nb_free(netbuf_t nb);
-extern void nb_free_wrapper(netbuf_t nb);
-extern unsigned nb_size(netbuf_t nb);
-extern int nb_read(netbuf_t nb, unsigned offset, unsigned size, void *target);
-extern int nb_write(netbuf_t nb, unsigned offset, unsigned size, void *source);
-extern int nb_shrink_top(netbuf_t nb, unsigned size);
-extern int nb_grow_top(netbuf_t nb, unsigned size);
-extern int nb_shrink_bot(netbuf_t nb, unsigned size);
-extern int nb_grow_bot(netbuf_t nb, unsigned size);
-
-#endif /* KERNEL */
-#endif /* _NETBUF_ */
diff --git a/NeXT/ppp_tty.c b/NeXT/ppp_tty.c
deleted file mode 100644 (file)
index 280ba19..0000000
+++ /dev/null
@@ -1,1220 +0,0 @@
-/*     $ID: ppp_tty.c,v 1.4 1994/12/13 03:42:17 paulus Exp paulus $    */
-
-/*
- * ppp_tty.c - Point-to-Point Protocol (PPP) driver for asynchronous
- *            tty devices.
- *
- * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The name "Carnegie Mellon University" must not be used to
- *    endorse or promote products derived from this software without
- *    prior written permission. For permission or any legal
- *    details, please contact
- *      Office of Technology Transfer
- *      Carnegie Mellon University
- *      5000 Forbes Avenue
- *      Pittsburgh, PA  15213-3890
- *      (412) 268-4387, fax: (412) 268-7395
- *      tech-transfer@andrew.cmu.edu
- *
- * 4. Redistributions of any form whatsoever must retain the following
- *    acknowledgment:
- *    "This product includes software developed by Computing Services
- *     at Carnegie Mellon University (http://www.cmu.edu/computing/)."
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Drew D. Perkins
- * Carnegie Mellon University
- * 4910 Forbes Ave.
- * Pittsburgh, PA 15213
- * (412) 268-8576
- * ddp@andrew.cmu.edu
- *
- * Based on:
- *     @(#)if_sl.c     7.6.1.2 (Berkeley) 2/15/89
- *
- * Copyright (c) 1987 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley.  The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Serial Line interface
- *
- * Rick Adams
- * Center for Seismic Studies
- * 1300 N 17th Street, Suite 1450
- * Arlington, Virginia 22209
- * (703)276-7900
- * rick@seismo.ARPA
- * seismo!rick
- *
- * Pounded on heavily by Chris Torek (chris@mimsy.umd.edu, umcp-cs!chris).
- * Converted to 4.3BSD Beta by Chris Torek.
- * Other changes made at Berkeley, based in part on code by Kirk Smith.
- *
- * Converted to 4.3BSD+ 386BSD by Brad Parker (brad@cayman.com)
- * Added VJ tcp header compression; more unified ioctls
- *
- * Extensively modified by Paul Mackerras (paulus@cs.anu.edu.au).
- * Cleaned up a lot of the mbuf-related code to fix bugs that
- * caused system crashes and packet corruption.  Changed pppstart
- * so that it doesn't just give up with a collision if the whole
- * packet doesn't fit in the output ring buffer.
- *
- * Added priority queueing for interactive IP packets, following
- * the model of if_sl.c, plus hooks for bpf.
- * Paul Mackerras (paulus@cs.anu.edu.au).
- *
- * Rewritten for NextStep's funky kernel functions, I/O threads,
- * and netbufs (instead of real mbufs).  Also, ifnets don't install
- * into the kernel under NS as they do under BSD.  We have tried to
- * make the code remain as similar to the NetBSD version without
- * incurring too much hassle.  This code is the merge of 
- * Philip Prindeville's <philipp@res.enst.fr>/Pete French's <pete@ohm.york.ac.uk>
- * and Stephen Perkins'  <perkins@cps.msu.edu> independent ports.
- *
- */
-
-/* from if_sl.c,v 1.11 84/10/04 12:54:47 rick Exp */
-/* from NetBSD: if_ppp.c,v 1.15.2.2 1994/07/28 05:17:59 cgd Exp */
-
-/* #include "ppp.h" */
-#if NUM_PPP > 0
-
-#define KERNEL 1
-#define KERNEL_FEATURES 1
-#define INET 1
-
-#if NS_TARGET >= 40
-#if NS_TARGET >= 41
-#include <kernserv/lock.h>
-#else
-#include <kern/lock.h>
-#endif /* NS_TARGET */
-#endif /* NS_TARGET */
-
-#include <sys/param.h>
-#if NS_TARGET >= 41
-typedef simple_lock_data_t lock_data_t;                /* XXX */
-#endif /* NS_TARGET */
-#include <sys/proc.h>
-#include <sys/user.h>
-#include "netbuf.h"
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <sys/file.h>
-#include <sys/tty.h>
-#include <sys/conf.h>
-#include <sys/dk.h>
-#include <sys/uio.h>
-#include <sys/errno.h>
-#if !(NS_TARGET >= 40)
-/*  XXX what happened to this header file? */
-#include <machine/param.h>
-#endif
-
-#include <kernserv/prototypes.h>
-/* NeXT broke spl.h in 3.2/m68k. Thanks EPS! */
-
-#if defined(m68k)
-#import "spl.h"
-#else
-#include <driverkit/generalFuncs.h>
-#import <kernserv/machine/spl.h>
-#endif
-
-#include <kernserv/kern_server_types.h>
-
-#include <net/if.h>
-#include <net/route.h>
-
-#ifdef VJC
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#endif
-
-#include <net/ppp_defs.h>
-#ifdef VJC
-#include <net/vjcompress.h>
-#endif
-#include <net/if_ppp.h>
-#include "if_pppvar.h"
-
-#include "inlines.h"
-
-int    pppopen __P((dev_t dev, struct tty *tp));
-void   pppclose __P((struct tty *tp));
-int    pppread __P((struct tty *tp, struct uio *uio));
-int    pppwrite __P((struct tty *tp, struct uio *uio));
-int    ppptioctl __P((struct tty *tp, int cmd, void *data, int flag));
-void   pppinput __P((int c, struct tty *tp));
-void   pppstart __P((struct tty *tp));
-
-/*
- * Must return an actual netbuf_t since other protocols
- * use this to get our buffers.
- */
-netbuf_t       pppgetbuf __P((netif_t));
-
-/*
- * Must accept an actual netbuf_t since others use this
- * Procedure to access our output routine.
- */
-int            pppoutput __P((netif_t ifp, netbuf_t m, void *arg));
-
-static u_int16_t pppfcs __P((u_int16_t fcs, u_char *cp, int len));
-static void    pppasyncstart __P((struct ppp_softc *));
-static void    pppasyncctlp __P((struct ppp_softc *));
-static void    pppasyncrelinq __P((struct ppp_softc *));
-static int     ppp_timeout __P((void *));
-void           pppgetm __P((struct ppp_softc *sc));
-static void    pppdumpb __P((u_char *b, int l));
-void           ppplogchar __P((struct ppp_softc *, int));
-
-extern kern_server_t instance;
-
-/*
- * Does c need to be escaped?
- */
-#define        ESCAPE_P(c)     (sc->sc_asyncmap[(c) >> 5] & (1 << ((c) & 0x1F)))
-
-#define CCOUNT(q)      ((q)->c_cc)
-
-#define        PPP_HIWAT       400     /* Don't start a new packet if HIWAT on que */
-
-#include "linedisc.h"  
-
-
-extern int ttymodem(struct tty*, int);
-extern int ttselect(struct tty *tp, int rw);
-
-
-static NETBUF_T
-pppgetinbuf(netif_t ifp)
-{
-    register struct ppp_softc *sc = &ppp_softc[if_unit(ifp)];
-    NETBUF_T nb;
-    int len = MAX(sc->sc_mru, PPP_MTU) + sizeof (struct ifnet *) +
-#ifdef VJC
-             VJ_HDRLEN +
-#endif
-             PPP_HDRLEN + PPP_FCSLEN;
-    nb =  NB_ALLOC(len);
-    if (nb != NULL)
-      {
-#ifdef VJC
-       NB_SHRINK_TOP(nb, VJ_HDRLEN + PPP_HDRLEN);
-#else
-       NB_SHRINK_TOP(nb, PPP_HDRLEN);
-#endif
-      }
-
-    return nb;
-}
-
-/*
- * I was a bit worried about reentrancy here.  +++SJP
- */
-
-void
-pppfillfreeq(void *arg)
-{
-    struct ppp_softc *sc = (struct ppp_softc *)arg;
-    NETBUF_T nb;
-    volatile static int in = 0;
-
-    if (in)
-      return;
-    in = 1;
-
-    while(!nbq_high(&sc->sc_freeq)) {
-       nb = pppgetinbuf(sc->sc_if);
-       if (! nb) break;
-       nbq_enqueue(&sc->sc_freeq, nb);
-    }
-
-    in = 0;
-}
-
-/*
- * Line specific open routine for async tty devices.
- * Attach the given tty to the first available ppp unit.
- */
-/* ARGSUSED */
-int
-pppopen(dev, tp)
-    dev_t dev;
-    register struct tty *tp;
-{
-    struct proc *p = curproc;          /* XXX */
-    register struct ppp_softc *sc;
-    int s;
-
-    if (! suser())
-       return EPERM;
-
-    if (tp->t_line == PPPDISC) {
-       sc = (struct ppp_softc *) tp->t_sc;
-       if (sc != NULL && sc->sc_devp == (void *) tp)
-           return (0);
-    }
-
-    if ((sc = pppalloc(p->p_pid)) == NULL)
-       return ENXIO;
-
-    if (sc->sc_relinq)
-       (*sc->sc_relinq)(sc);   /* get previous owner to relinquish the unit */
-
-    pppfillfreeq((void *) sc);   /* fill the free queue - we may block */
-
-    s = splimp();
-    sc->sc_ilen = 0;
-    sc->sc_m = NULL;
-    bzero(sc->sc_asyncmap, sizeof(sc->sc_asyncmap));
-    sc->sc_asyncmap[0] = 0xffffffff;
-    sc->sc_asyncmap[3] = 0x60000000;    /* 0x7D and 0x7E */
-    sc->sc_rasyncmap = 0;
-    sc->sc_devp = (void *) tp;
-    sc->sc_start = pppasyncstart;
-    sc->sc_ctlp = pppasyncctlp;
-    sc->sc_relinq = pppasyncrelinq;
-    sc->sc_outm = NULL;
-    pppgetm(sc);
-    if_flags_set(sc->sc_if, if_flags(sc->sc_if) | IFF_RUNNING);
-
-    tp->t_sc = (caddr_t) sc;
-    ttyflush(tp, FREAD | FWRITE);
-    splx(s);
-
-    return (0);
-}
-
-/*
- * Line specific close routine.
- * Detach the tty from the ppp unit.
- * Mimics part of ttyclose().
- */
-void
-pppclose(tp)
-    struct tty *tp;
-{
-    register struct ppp_softc *sc;
-    int s;
-
-    ttywflush(tp);
-    s = splimp();              /* paranoid; splnet probably ok */
-    tp->t_line = 0;
-    sc = (struct ppp_softc *) tp->t_sc;
-    if (sc != NULL) {
-       tp->t_sc = NULL;
-       if (tp == (struct tty *) sc->sc_devp) {
-           pppasyncrelinq(sc);
-           pppdealloc(sc);
-       }
-    }
-    splx(s);
-    return;
-}
-
-/*
- * Relinquish the interface unit to another device.
- */
-static void
-pppasyncrelinq(sc)
-    struct ppp_softc *sc;
-{
-    int s;
-
-    s = splimp();
-    if (sc->sc_outm) {
-       NB_FREE(sc->sc_outm);
-       sc->sc_outm = NULL;
-    }
-    if (sc->sc_m) {
-       NB_FREE(sc->sc_m);
-       sc->sc_m = NULL;
-    }
-    if (sc->sc_flags & SC_TIMEOUT) {
-       ns_untimeout(ppp_timeout, (void *) sc);
-       sc->sc_flags &= ~SC_TIMEOUT;
-    }
-    splx(s);
-}
-
-/*
- * Line specific (tty) read routine.
- */
-int
-pppread(tp, uio)
-    register struct tty *tp;
-    struct uio *uio;
-{
-    register struct ppp_softc *sc = (struct ppp_softc *)tp->t_sc;
-    NETBUF_T m;
-    register int s;
-    int error = 0;
-    struct nty *np = ttynty(tp);
-
-#ifdef NEW_CLOCAL
-    if ((tp->t_state & TS_CARR_ON) == 0 && (np->t_pflags & TP_CLOCAL) == 0)
-       return 0;               /* end of file */
-
-#else
-
-    if ((tp->t_state & TS_CARR_ON) == 0 && (tp->t_flags & CLOCAL) == 0)
-       return 0;               /* end of file */
-
-#endif /* NEW_CLOCAL */
-
-    if (sc == NULL || tp != (struct tty *) sc->sc_devp)
-       return 0;
-    s = splimp();
-    while (nbq_empty(&sc->sc_inq) && tp->t_line == PPPDISC) {
-       if (tp->t_state & (TS_ASYNC | TS_NBIO)) {
-           splx(s);
-           return (EWOULDBLOCK);
-       }
-       sleep((caddr_t)&tp->t_rawq, TTIPRI);
-    }
-    if (tp->t_line != PPPDISC) {
-       splx(s);
-       return (-1);
-    }
-
-    /* Pull place-holder byte out of canonical queue */
-    getc(&tp->t_canq);
-
-    /* Get the packet from the input queue */
-    m = nbq_dequeue(&sc->sc_inq);
-    splx(s);
-    if (nbuf == NULL){
-      if (sc->sc_flags & SC_DEBUG)
-       IOLogDbg("Read didn't get a buffer at %s %d\n", __FILE__, __LINE__);
-      return -1;
-    }
-    error = uiomove(NB_MAP(m), NB_SIZE(m), UIO_READ, uio);
-    NB_FREE(m);
-    return (error);
-}
-
-/*
- * Line specific (tty) write routine.
- */
-int
-pppwrite(tp, uio)
-    register struct tty *tp;
-    struct uio *uio;
-{
-    register struct ppp_softc *sc = (struct ppp_softc *)tp->t_sc;
-    NETBUF_T m;
-    struct sockaddr dst;
-    int len, error;
-    struct nty *np = ttynty(tp);
-
-#ifdef NEW_CLOCAL
-
-    if ((tp->t_state & TS_CARR_ON) == 0 && (np->t_pflags & TP_CLOCAL) == 0)
-       return 0;               /* wrote 0 bytes */
-
-#else
-
-    if ((tp->t_state & TS_CARR_ON) == 0 && (tp->t_flags & CLOCAL) == 0)
-       return 0;               /* wrote 0 bytes */
-
-#endif /* NEW_CLOCAL */
-
-    if (tp->t_line != PPPDISC)
-       return (EINVAL);
-    if (sc == NULL || tp != (struct tty *) sc->sc_devp)
-       return EIO;
-    if (uio->uio_resid > if_mtu(sc->sc_if) + PPP_HDRLEN ||
-      uio->uio_resid < PPP_HDRLEN)
-       return (EMSGSIZE);
-    m = nb_TO_NB(pppgetbuf(sc->sc_if));
-
-    if (m == NULL){
-      if (sc->sc_flags & SC_DEBUG)
-       IOLogDbg("No buffers available for user level write()\n");
-      return(ENOBUFS);
-    }
-    NB_GROW_TOP(m, PPP_HDRLEN);
-    len = uio->uio_resid;
-    if (error = uiomove(NB_MAP(m), NB_SIZE(m), UIO_WRITE, uio)) {
-       NB_FREE(m);
-       return error;
-    }
-    NB_SHRINK_BOT(m, NB_SIZE(m) - len);
-    dst.sa_family = AF_UNSPEC;
-    bcopy(mtod(m, u_char *), dst.sa_data, PPP_HDRLEN);
-
-    NB_SHRINK_TOP(m, PPP_HDRLEN);
-    return (pppoutput(sc->sc_if, NB_TO_nb(m), &dst));
-}
-
-/*
- * Line specific (tty) ioctl routine.
- * This discipline requires that tty device drivers call
- * the line specific l_ioctl routine from their ioctl routines.
- */
-/* ARGSUSED */
-int
-ppptioctl(tp, cmd, data, flag)
-    struct tty *tp;
-    void *data;
-    int cmd, flag;
-{
-    struct ppp_softc *sc = (struct ppp_softc *) tp->t_sc;
-    int error, s;
-
-    if (sc == NULL || tp != (struct tty *) sc->sc_devp)
-       return -1;
-
-    error = 0;
-    switch (cmd) {
-    case PPPIOCSASYNCMAP:
-       if (! suser())
-           return EPERM;
-
-       sc->sc_asyncmap[0] = *(u_int *)data;
-       break;
-
-    case PPPIOCGASYNCMAP:
-       *(u_int *)data = sc->sc_asyncmap[0];
-       break;
-
-    case PPPIOCSRASYNCMAP:
-       if (! suser())
-           return EPERM;
-       sc->sc_rasyncmap = *(u_int *)data;
-       break;
-
-    case PPPIOCGRASYNCMAP:
-       *(u_int *)data = sc->sc_rasyncmap;
-       break;
-
-    case PPPIOCSXASYNCMAP:
-       if (! suser())
-           return EPERM;
-       s = spltty();
-       bcopy(data, sc->sc_asyncmap, sizeof(sc->sc_asyncmap));
-       sc->sc_asyncmap[1] = 0;                 /* mustn't escape 0x20 - 0x3f */
-       sc->sc_asyncmap[2] &= ~0x40000000;      /* mustn't escape 0x5e */
-       sc->sc_asyncmap[3] |= 0x60000000;       /* must escape 0x7d, 0x7e */
-       splx(s);
-       break;
-
-    case PPPIOCGXASYNCMAP:
-       bcopy(sc->sc_asyncmap, data, sizeof(sc->sc_asyncmap));
-       break;
-
-    default:
-       error = pppioctl(sc, cmd, data, flag);
-       if (error == 0 && cmd == PPPIOCSMRU)
-           pppgetm(sc);
-    }
-
-#ifdef i386
-    if (! error && (cmd & IOC_OUT)) {
-       struct uthread *_u = uthread_from_thread(current_thread());
-
-       /* third arg is destination in ioctl() call... */
-       copyout(data, (caddr_t) _u->uu_arg[2], (cmd >> 16) & IOCPARM_MASK);
-    }
-#endif
-
-    return error;
-}
-
-/*
- * FCS lookup table as calculated by genfcstab.
- */
-static const u_int16_t fcstab[256] = {
-       0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
-       0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
-       0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
-       0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
-       0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
-       0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
-       0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
-       0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
-       0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
-       0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
-       0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
-       0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
-       0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
-       0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
-       0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
-       0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
-       0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
-       0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
-       0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
-       0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
-       0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
-       0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
-       0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
-       0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
-       0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
-       0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
-       0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
-       0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
-       0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
-       0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
-       0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
-       0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
-};
-
-/*
- * Calculate a new FCS given the current FCS and the new data.
- */
-static u_int16_t
-pppfcs(fcs, cp, len)
-    register u_int16_t fcs;
-    register u_char *cp;
-    register int len;
-{
-    while (len--)
-       fcs = PPP_FCS(fcs, *cp++);
-    return (fcs);
-}
-
-/*
- * This gets called from pppoutput when a new packet is
- * put on a queue.
- */
-static void
-pppasyncstart(sc)
-    register struct ppp_softc *sc;
-{
-    register struct tty *tp = (struct tty *) sc->sc_devp;
-    int s;
-
-    s = splimp();
-    pppstart(tp);
-    splx(s);
-}
-
-/*
- * This gets called when a received packet is placed on
- * the inq.
- */
-static void
-pppasyncctlp(sc)
-    struct ppp_softc *sc;
-{
-    struct tty *tp;
-
-    /* Put a placeholder byte in canq for ttselect()/ttnread(). */
-    tp = (struct tty *) sc->sc_devp;
-    putc(0, &tp->t_canq);
-    ttwakeup(tp);
-}
-
-/*
- * Start output on async tty interface.  Get another datagram
- * to send from the interface queue and start sending it.
- */
-void
-pppstart(tp)
-    register struct tty *tp;
-{
-    register struct ppp_softc *sc = (struct ppp_softc *) tp->t_sc;
-    register NETBUF_T m;
-    register int len;
-    register u_char *start, *stop, *cp;
-    int n, ndone, done, idle;
-    struct nty *np = ttynty(tp);
-
-#ifdef NEW_CLOCAL
-
-    if ((tp->t_state & TS_CARR_ON) == 0 && (np->t_pflags & TP_CLOCAL) == 0
-
-#else
-
-    if ((tp->t_state & TS_CARR_ON) == 0 && (tp->t_flags & CLOCAL) == 0 
-
-#endif /* NEW_CLOCAL */
-
-       || sc == NULL || tp != (struct tty *) sc->sc_devp) {
-       if (tp->t_oproc != NULL)
-           (*tp->t_oproc)(tp);
-       return;
-    }
-
-    idle = 0;
-#ifdef OLD_MUX
-    while (CCOUNT(&tp->t_outq) == 0) {
-#else
-    while (CCOUNT(&tp->t_outq) < PPP_HIWAT) {
-#endif
-       /*
-        * See if we have an existing packet partly sent.
-        * If not, get a new packet and start sending it.
-        */
-       m = sc->sc_outm;
-       if (m == NULL) {
-           /*
-            * Get another packet to be sent.
-            */
-           m = ppp_dequeue(sc);
-           if (m == NULL) {
-               idle = 1;
-               break;
-           }
-
-           /*
-            * The extra PPP_FLAG will start up a new packet, and thus
-            * will flush any accumulated garbage.  We do this whenever
-            * the line may have been idle for some time.
-            */
-           if (CCOUNT(&tp->t_outq) == 0) {
-               ++sc->sc_bytessent;
-               (void) putc(PPP_FLAG, &tp->t_outq);
-           }
-
-           /* Calculate the FCS for the first netbuf's worth. */
-           sc->sc_outfcs = pppfcs(PPP_INITFCS, mtod(m, u_char *), NB_SIZE(m));
-           sc->sc_outfcs ^= 0xffff;
-           
-           cp = mtod(m, u_char *) + NB_SIZE(m);
-           NB_GROW_BOT(m, PPP_FCSLEN);
-           *cp++ = sc->sc_outfcs & 0xFF;
-           *cp++ = (sc->sc_outfcs >> 8) & 0xFF;
-       }
-
-       start = mtod(m, u_char *);
-       len = NB_SIZE(m);
-       stop = start + len;
-       while (len > 0) {
-           /*
-            * Find out how many bytes in the string we can
-            * handle without doing something special.
-            */
-           for (cp = start; cp < stop; cp++)
-               if (ESCAPE_P(*cp))
-                   break;
-
-           n = cp - start;
-
-           if (n) {
-               /*
-                * b_to_q returns the number of characters
-                * _not_ sent
-                *
-                * NetBSD (0.9 or later), 4.3-Reno or similar.
-                */
-               ndone = n - b_to_q(start, n, &tp->t_outq);
-               len -= ndone;
-               start += ndone;
-               sc->sc_bytessent += ndone;
-
-               if (ndone < n)
-                   break;      /* packet doesn't fit */
-
-           }
-
-           /*
-            * If there are characters left in the netbuf,
-            * the first one must be special..
-            * Put it out in a different form.
-            */
-           if (len) {
-               if (putc(PPP_ESCAPE, &tp->t_outq))
-                   break;
-               if (putc(*start ^ PPP_TRANS, &tp->t_outq)) {
-                   (void) unputc(&tp->t_outq);
-                   break;
-               }
-               sc->sc_bytessent += 2;
-               start++;
-               len--;
-           }
-       }
-       /*
-        * If we didn't empty this netbuf, remember where we're up to.
-        */
-       done = len == 0;
-
-       if (!done) {
-           /* remember where we got to */
-           NB_SHRINK_TOP(m, start - mtod(m, u_char *));
-           break;      /* can't do any more at the moment */
-       }
-
-       /*
-        * Output trailing PPP flag and finish packet.
-        * We make the length zero in case the flag
-        * cannot be output immediately.
-        */
-       NB_SHRINK_TOP(m, NB_SIZE(m));
-       if (putc(PPP_FLAG, &tp->t_outq))
-           break;
-       sc->sc_bytessent++;
-
-
-       /* Finished with this netbuf; free it and move on. */
-       NB_FREE(m);
-       m = NULL;
-       incr_cnt(sc->sc_if, if_opackets);
-
-       sc->sc_outm = m;
-    }
-
-    /*
-     * If there is stuff in the output queue, send it now.
-     * We are being called in lieu of ttstart and must do what it would.
-     */
-    if (tp->t_oproc != NULL)
-       (*tp->t_oproc)(tp);
-
-    /*
-     * This timeout is needed for operation on a pseudo-tty,
-     * because the pty code doesn't call pppstart after it has
-     * drained the t_outq.
-     */
-    if (!idle && (sc->sc_flags & SC_TIMEOUT) == 0) {
-#if NS_TARGET >= 40
-       timeout(ppp_timeout, (void *) sc, 1);
-#else
-       ns_timeout(ppp_timeout, (void *) sc, 1 * (1000000000L / HZ), CALLOUT_PRI_SOFTINT0);
-#endif /*NS_TARGET */
-       sc->sc_flags |= SC_TIMEOUT;
-    }
-
-    return;
-}
-
-/*
- * Timeout routine - try to start some more output.
- */
-static int
-ppp_timeout(x)
-    void *x;
-{
-    struct ppp_softc *sc = (struct ppp_softc *) x;
-    struct tty *tp = (struct tty *) sc->sc_devp;
-    int s;
-
-    s = splimp();
-    sc->sc_flags &= ~SC_TIMEOUT;
-    pppstart(tp);
-    splx(s);
-    return 0;
-}
-
-/*
- * Allocate enough netbuf to handle current MRU.
- *
- * Warning Will Robinson:  pppgetm() can get called at interrupt-level!
- */
-void
-pppgetm(sc)
-    register struct ppp_softc *sc;
-{
-    int s;
-
-    s = splimp();
-    /*
-     * When the MRU is being changed, we could conceivably end up
-     * nuking a packet being received, but I doubt it, since the
-     * hand-shake is lock-step (ie. single packet).
-     */
-    if (sc->sc_m != NULL)
-       NB_FREE(sc->sc_m);
-    sc->sc_m = nbq_dequeue(&sc->sc_freeq);
-    splx(s);
-}
-
-/*
- * 4.3 says this is an unused function.  However,
- * it appears to be returning a NULL terminated string
- * of several characters.  My guess is that the serial
- * driver is doing a little buffering so that we don't
- * get burdend with interrupts.
- *
- * This function gets called when you use the NeXT
- * supplied serial drivers.  It does not get called
- * with the MuX driver.  
- *
- * In order to expedite the work done here, we
- * handle most things here that don't require
- * processing of a PPP_FLAG.
- *
- */
-
-void
-ppprend(cp, n, tp)
-    unsigned char *cp;
-    int n;
-    struct tty *tp;
-{
-
-#ifndef OPTIMIZE_PPPREND       
-#warning PPPREND Not optimized!!!
-  while (n--) pppinput((u_char) *cp++, tp);
-#else
-
-
-  register struct ppp_softc *sc = (struct ppp_softc *)tp->t_sc;
-  register int ret;
-
-  if (sc == NULL || tp != (struct tty *) sc->sc_devp)
-    {
-      printf("Warning, bad softc structure at %s %d\n", __FILE__, __LINE__);
-      return;
-    }
-
-  /*
-   * We can handle FLUSHs, ESCAPES, and non PPP_FLAG characters
-   */
-  
-  while (n)
-    {
-      if (sc->sc_flags & SC_FLUSH)
-       {
-         do
-           {
-             if (*(cp++) == PPP_FLAG)
-               {
-                 pppinput(PPP_FLAG, tp);
-                 --n;
-                 break;
-               }
-             else if (sc->sc_flags & SC_LOG_FLUSH)
-               ppplogchar(sc, *cp);
-           }
-         while(--n);
-       }
-      else if (sc->sc_ilen > 3 &&
-              (NB_SIZE(sc->sc_m) - sc->sc_ilen) > n &&
-              *cp != PPP_FLAG &&
-              *cp != PPP_ESCAPE)        /* Dont really handle escapes properly...should */
-       {
-         unsigned char* cp1 = cp;
-         if (sc->sc_flags & SC_ESCAPED)
-           {
-             sc->sc_flags &= ~SC_ESCAPED;
-             *cp ^= PPP_TRANS;
-           }
-         
-         do
-           {
-             sc->sc_fcs = PPP_FCS(sc->sc_fcs, *(cp++));
-             if (sc->sc_flags & SC_LOG_RAWIN)
-               ppplogchar(sc, *cp);
-             
-           } while(--n && *cp != PPP_FLAG && *cp != PPP_ESCAPE);
-         
-         
-         bcopy(cp1, sc->sc_mp, (cp-cp1));
-         
-         sc->sc_bytesrcvd += (cp - cp1);
-         sc->sc_ilen += (cp-cp1);
-         sc->sc_mp += (cp-cp1);
-         
-       }
-      else
-       {
-         --n;
-         pppinput(*(cp++), tp);
-       }
-    }
-  
-#endif /* OPTIMIZE_PPPREND */
-}
-
-/*
- * tty interface receiver interrupt.
- */
-static const unsigned paritytab[8] = {
-    0x96696996, 0x69969669, 0x69969669, 0x96696996,
-    0x69969669, 0x96696996, 0x96696996, 0x69969669
-};
-
-void
-pppinput(c, tp)
-    int c;
-    register struct tty *tp;
-{
-    register struct ppp_softc *sc;
-    NETBUF_T m;
-    int ilen, s;
-
-    sc = (struct ppp_softc *) tp->t_sc;
-    if (sc == NULL || tp != (struct tty *) sc->sc_devp)
-       return;
-
-    ++tk_nin;
-    ++sc->sc_bytesrcvd;
-
-    if (c & TTY_FE) {
-       /* framing error or overrun on this char - abort packet */
-       IOLogDbg("ppp%d: bad char 0x%x\n", if_unit(sc->sc_if), c);
-       goto flush;
-    }
-
-    c &= 0xff;
-
-    if (c & 0x80)
-       sc->sc_flags |= SC_RCV_B7_1;
-    else
-       sc->sc_flags |= SC_RCV_B7_0;
-    if (paritytab[c >> 5] & (1 << (c & 0x1F)))
-       sc->sc_flags |= SC_RCV_ODDP;
-    else
-       sc->sc_flags |= SC_RCV_EVNP;
-
-    if (sc->sc_flags & SC_LOG_RAWIN)
-       ppplogchar(sc, c);
-
-    if (c == PPP_FLAG) {
-
-      if (sc->sc_ilen == 0)
-       return;
-
-       ilen = sc->sc_ilen;
-       sc->sc_ilen = 0;
-
-       if (sc->sc_rawin_count > 0)
-           ppplogchar(sc, -1);
-
-       /*
-        * From the RFC:
-        *  Each Control Escape octet is also
-         *  removed, and the following octet is exclusive-or'd with hexadecimal
-         *  0x20, unless it is the Flag Sequence (which aborts a frame).
-         *
-        * So, if SC_ESCAPED is set, then we've seen the packet
-        * abort sequence "}~".
-        */
-       if ((sc->sc_flags & (SC_FLUSH | SC_ESCAPED)) ||
-           ((ilen > 0) && (sc->sc_fcs != PPP_GOODFCS)))
-         {
-           sc->sc_flags |= SC_PKTLOST; /* note the dropped packet */
-           if ((sc->sc_flags & (SC_FLUSH | SC_ESCAPED)) == 0)
-             {
-               IOLog("ppp%d: bad fcs 0x%04x\n", if_unit(sc->sc_if), sc->sc_fcs);
-               incr_cnt(sc->sc_if, if_ierrors);
-             }
-           else
-             {
-               IOLog("ppp%d: bad packet flushed...\n", if_unit(sc->sc_if));
-               sc->sc_flags &= ~(SC_FLUSH | SC_ESCAPED);
-             }
-           return;
-         }
-       
-       if (ilen < (PPP_HDRLEN + PPP_FCSLEN))
-         {
-           if (ilen)
-             {
-               IOLogDbg("ppp%d: too short (%d)\n", if_unit(sc->sc_if), ilen);
-               incr_cnt(sc->sc_if, if_ierrors);
-               sc->sc_flags |= SC_PKTLOST;
-             }
-           return;
-         }
-       
-       /*
-        * Remove FCS trailer.  Set packet length...
-        */
-       ilen -= PPP_FCSLEN;
-       NB_SHRINK_BOT(sc->sc_m, NB_SIZE(sc->sc_m) - ilen);
-
-       /* excise this netbuf */
-       m = sc->sc_m;
-       sc->sc_m = NULL;
-
-       ppppktin(sc, m, sc->sc_flags & SC_PKTLOST);
-       sc->sc_flags &= ~SC_PKTLOST;
-
-       pppgetm(sc);
-       return;
-    }
-
-    if (sc->sc_flags & SC_FLUSH) {
-       if (sc->sc_flags & SC_LOG_FLUSH)
-           ppplogchar(sc, c);
-       return;
-    }
-
-/*
- * From the RFC:
- *  On reception, prior to FCS computation, each octet with value less
- *  than hexadecimal 0x20 is checked.  If it is flagged in the receiving
- *  ACCM, it is simply removed (it may have been inserted by intervening
- *  data communications equipment).  Each Control Escape octet is also
- *  removed, and the following octet is exclusive-or'd with hexadecimal
- *  0x20, unless it is the Flag Sequence (which aborts a frame).
- */
-    if (c < 0x20 && (sc->sc_rasyncmap & (1 << c))) {
-       return;
-    }
-
-    if (sc->sc_flags & SC_ESCAPED) {
-       sc->sc_flags &= ~SC_ESCAPED;
-       c ^= PPP_TRANS;
-    } else if (c == PPP_ESCAPE) {
-       sc->sc_flags |= SC_ESCAPED;
-       return;
-    }
-
-    /*
-     * Initialize buffer on first octet received.
-     * First octet could be address or protocol (when compressing
-     * address/control).
-     * Second octet is control.
-     * Third octet is first or second (when compressing protocol)
-     * octet of protocol.
-     * Fourth octet is second octet of protocol.
-     */
-    if (sc->sc_ilen == 0) {
-
-       /* reset the input netbuf */
-       if (sc->sc_m == NULL) {
-           pppgetm(sc);
-           if (sc->sc_m == NULL) {
-               /*
-                * We schedule a call here as pppindrain will
-                * not get scheduled and we need the free buffers
-                */
-               IOLog("ppp%d: no input netbufs!\n", if_unit(sc->sc_if));
-               (void)pppsched(pppfillfreeq, sc);
-               goto flush;
-           }
-       }
-       m = sc->sc_m;
-       sc->sc_mp = mtod(m, char *);
-       sc->sc_fcs = PPP_INITFCS;
-
-       if (c != PPP_ALLSTATIONS) {
-           if (sc->sc_flags & SC_REJ_COMP_AC) {
-               IOLogDbg("ppp%d: garbage received: 0x%02x (need 0x%02x)\n",
-                          if_unit(sc->sc_if), c, PPP_ALLSTATIONS);
-               goto flush;
-           }
-           *sc->sc_mp++ = PPP_ALLSTATIONS;
-           *sc->sc_mp++ = PPP_UI;
-           sc->sc_ilen += 2;
-       }
-    }
-
-
-    if (sc->sc_ilen == 1 && c != PPP_UI) {
-       IOLogDbg("ppp%d: missing UI (0x%02x), got 0x%02x\n",
-                  if_unit(sc->sc_if), PPP_UI, c);
-       goto flush;
-    }
-
-    if (sc->sc_ilen == 2 && (c & 1) == 1) {
-       /* a compressed protocol */
-       *sc->sc_mp++ = 0;
-       sc->sc_ilen++;
-    }
-
-    if (sc->sc_ilen == 3 && (c & 1) == 0) {
-       IOLogDbg("ppp%d: bad protocol %x\n", if_unit(sc->sc_if),
-                  (sc->sc_mp[-1] << 8) + c);
-       goto flush;
-    }
-
-    /* packet beyond configured mru? */
-    if (++sc->sc_ilen > sc->sc_mru + PPP_HDRLEN + PPP_FCSLEN) {
-       IOLogDbg("ppp%d: packet too big (%d bytes)\n", if_unit(sc->sc_if),
-               sc->sc_ilen);
-       goto flush;
-    }
-
-    /* ilen was incremented above... */
-    *sc->sc_mp++ = c;
-    sc->sc_fcs = PPP_FCS(sc->sc_fcs, c);
-    return;
-
- flush:
-    if (!(sc->sc_flags & SC_FLUSH)) {
-       incr_cnt(sc->sc_if, if_ierrors);
-       sc->sc_flags |= SC_FLUSH;
-       if (sc->sc_flags & SC_LOG_FLUSH)
-           ppplogchar(sc, c);
-    }
-    return;
-}
-
-int
-install_ppp_ld(void)
-{
-    return tty_ld_install(PPPDISC, NORMAL_LDISC, pppopen,
-                         pppclose, pppread, pppwrite, ppptioctl,
-                         pppinput, ppprend, pppstart, ttymodem,
-                         ttselect);
-}
-
-#define MAX_DUMP_BYTES 128
-
-void
-ppplogchar(sc, c)
-    struct ppp_softc *sc;
-    int c;
-{
-    if (c >= 0)
-       sc->sc_rawin[sc->sc_rawin_count++] = c;
-    if (sc->sc_rawin_count >= sizeof(sc->sc_rawin)
-       || c < 0 && sc->sc_rawin_count > 0) {
-       IOLog("ppp%d input:\n", if_unit(sc->sc_if));
-       pppdumpb(sc->sc_rawin, sc->sc_rawin_count);
-       sc->sc_rawin_count = 0;
-    }
-}
-
-static void
-pppdumpb(b, l)
-    u_char *b;
-    int l;
-{
-    char buf[3*MAX_DUMP_BYTES+4];
-    char *bp = buf;
-    static char digits[] = "0123456789abcdef";
-
-    while (l--) {
-       if (bp >= buf + sizeof(buf) - 3) {
-           *bp++ = '>';
-           break;
-       }
-       *bp++ = digits[*b >> 4]; /* convert byte to ascii hex */
-       *bp++ = digits[*b++ & 0xf];
-       *bp++ = ' ';
-    }
-
-    *bp = 0;
-    IOLog("%s\n", buf);
-}
-#endif /* NUM_PPP > 0 */
diff --git a/NeXT/spl.h b/NeXT/spl.h
deleted file mode 100644 (file)
index 120f480..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- *     File:   spl.h
- *     Author: Avadis Tevanian, Jr.
- *
- *     Define inline macros for spl routines.
- *     
- * HISTORY
- *
- * 14-May-90  Gregg Kellogg (gk) at NeXT
- *     Changed SPLCLOCK from 6 to 3, as much scheduling code expects
- *     splclock() == splsched().  Added splusclock().
- *
- * 19-Jun-89  Mike DeMoney (mike) at NeXT
- *     Modified to allow spl assertions in spl_measured.h
- */
-
-#ifndef        _KERNSERV_M68K_SPL_H_
-#define        _KERNSERV_M68K_SPL_H_
-
-#ifdef KERNEL_BUILD
-#import <iplmeas.h>
-#else  KERNEL_BUILD
-/* #import <mach/features.h> */
-#endif KERNEL_BUILD
-
-#import <bsd/m68k/psl.h>
-
-#if    NIPLMEAS && !defined(NO_IPLMEAS)
-#import <machdep/m68k/spl_measured.h>
-#endif NIPLMEAS && !defined(NO_IPLMEAS)
-
-#ifndef        SPLU_MACRO
-
-#ifdef ASSEMBLER
-#define        SPLU_MACRO(ipl) \
-       movw    sr,d0; \
-       movw    \#((ipl)*256 + 0x2000),sr;
-
-#define        splx(nsr) \
-       movw    sr,d0; \
-       movw    nsr,sr;
-
-#else  ASSEMBLER
-
-#define SPLU_MACRO(x) \
-({ register short ret; \
-       asm volatile ("movw     sr,%0" : "=dm" (ret)); \
-       asm volatile ("movw     %1,sr" : "=m" (*(char *)0): "Jdm" ((short)(x)*256+0x2000)); \
-       ret; \
-})
-
-#define splx(x) \
-({ register short ret; \
-       asm volatile ("movw     sr,%0" : "=dm" (ret)); \
-       asm volatile ("movw     %1,sr" : "=m" (*(char *)0): "Jdm" ((short)x)); \
-       ret; \
-})
-
-#endif ASSEMBLER
-
-#define        SPLD_MACRO(ipl) SPLU_MACRO(ipl)
-#define        spln(x)         splx(x)
-
-#endif SPLU_MACRO
-
-#define ipltospl(ipl)  (SR_SUPER | ((ipl) << 8))
-
-/*
- *     Define spls as the usual numbers (which should never be used
- *     directly.
- */
-
-#define spl0() SPLD_MACRO(0)
-#define spl1() SPLU_MACRO(1)
-#define spl2() SPLU_MACRO(2)
-#define spl3() SPLU_MACRO(3)
-#define spl4() SPLU_MACRO(4)
-#define spl5() SPLU_MACRO(5)
-#define spl6() SPLU_MACRO(6)
-#define spl7() SPLU_MACRO(7)
-
-/*
- *     Define spl mnemonics.
- */
-#define IPLHIGH                7
-#define IPLDMA         6
-#define IPLUSCLOCK     6
-#define IPLSCC         5
-#define IPLCLOCK       3
-#define IPLBIO         3
-#define IPLSCHED       3
-#define IPLIMP         3
-#define IPLVM          3
-#define IPLNET         2
-#define IPLTTY         1
-#define IPLSOFTCLOCK   1
-
-#define splhigh()      SPLU_MACRO(IPLHIGH)
-#define splusclock()   SPLU_MACRO(IPLUSCLOCK)
-#define spldma()       SPLU_MACRO(IPLDMA)
-#define splscc()       SPLU_MACRO(IPLSCC)
-#define splclock()     SPLU_MACRO(IPLCLOCK)
-#define splbio()       SPLU_MACRO(IPLBIO)
-#define splsched()     SPLU_MACRO(IPLSCHED)
-#define splimp()       SPLU_MACRO(IPLIMP)
-#define splvm()                SPLU_MACRO(IPLVM)
-#define splnet()       SPLU_MACRO(IPLNET)
-#define spltty()       SPLU_MACRO(IPLTTY)
-#define splsoftclock() SPLU_MACRO(IPLSOFTCLOCK)
-
-#endif _KERNSERV_M68K_SPL_H_
diff --git a/NeXT/vjcompress.c b/NeXT/vjcompress.c
deleted file mode 100644 (file)
index cbbab89..0000000
+++ /dev/null
@@ -1,587 +0,0 @@
-/*
- * Routines to compress and uncompess tcp packets (for transmission
- * over low speed serial lines.
- *
- * Copyright (c) 1989 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley.  The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- *     Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989:
- *     - Initial distribution.
- *
- * Modified June 1993 by Paul Mackerras, paulus@cs.anu.edu.au,
- * so that the entire packet being decompressed doesn't have
- * to be in contiguous memory (just the compressed header).
- */
-
-/*
- * This version is used under SunOS 4.x, Digital UNIX, AIX 4.x,
- * and SVR4 systems including Solaris 2.
- *
- * $Id: vjcompress.c,v 1.3 1997/04/30 05:39:44 paulus Exp $
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-
-#ifdef SVR4
-#ifndef __GNUC__
-#include <sys/byteorder.h>     /* for ntohl, etc. */
-#else
-/* make sure we don't get the gnu "fixed" one! */
-#include "/usr/include/sys/byteorder.h"
-#endif
-#endif
-
-#ifdef __osf__
-#include <net/net_globals.h>
-#endif
-#include <netinet/in.h>
-
-#ifdef AIX4
-#define _NETINET_IN_SYSTM_H_
-typedef u_long  n_long;
-#else
-#include <netinet/in_systm.h>
-#endif
-
-#include <netinet/ip.h>
-#include <netinet/tcp.h>
-
-#include <net/ppp_defs.h>
-#include <net/vjcompress.h>
-
-#ifndef VJ_NO_STATS
-#define INCR(counter) ++comp->stats.counter
-#else
-#define INCR(counter)
-#endif
-
-#define BCMP(p1, p2, n) bcmp((char *)(p1), (char *)(p2), (int)(n))
-#undef  BCOPY
-#define BCOPY(p1, p2, n) bcopy((char *)(p1), (char *)(p2), (int)(n))
-#ifndef KERNEL
-#define ovbcopy bcopy
-#endif
-
-#ifdef __osf__
-#define getip_hl(base) (((base).ip_vhl)&0xf)
-#define getth_off(base)        ((((base).th_xoff)&0xf0)>>4)
-
-#else
-#define getip_hl(base) ((base).ip_hl)
-#define getth_off(base)        ((base).th_off)
-#endif
-
-void
-vj_compress_init(comp, max_state)
-    struct vjcompress *comp;
-    int max_state;
-{
-    register u_int i;
-    register struct cstate *tstate = comp->tstate;
-
-    if (max_state == -1)
-       max_state = MAX_STATES - 1;
-    bzero((char *)comp, sizeof(*comp));
-    for (i = max_state; i > 0; --i) {
-       tstate[i].cs_id = i;
-       tstate[i].cs_next = &tstate[i - 1];
-    }
-    tstate[0].cs_next = &tstate[max_state];
-    tstate[0].cs_id = 0;
-    comp->last_cs = &tstate[0];
-    comp->last_recv = 255;
-    comp->last_xmit = 255;
-    comp->flags = VJF_TOSS;
-}
-
-
-/* ENCODE encodes a number that is known to be non-zero.  ENCODEZ
- * checks for zero (since zero has to be encoded in the long, 3 byte
- * form).
- */
-#define ENCODE(n) { \
-       if ((u_short)(n) >= 256) { \
-               *cp++ = 0; \
-               cp[1] = (n); \
-               cp[0] = (n) >> 8; \
-               cp += 2; \
-       } else { \
-               *cp++ = (n); \
-       } \
-}
-#define ENCODEZ(n) { \
-       if ((u_short)(n) >= 256 || (u_short)(n) == 0) { \
-               *cp++ = 0; \
-               cp[1] = (n); \
-               cp[0] = (n) >> 8; \
-               cp += 2; \
-       } else { \
-               *cp++ = (n); \
-       } \
-}
-
-#define DECODEL(f) { \
-       if (*cp == 0) {\
-               u_int32_t tmp = ntohl(f) + ((cp[1] << 8) | cp[2]); \
-               (f) = htonl(tmp); \
-               cp += 3; \
-       } else { \
-               u_int32_t tmp = ntohl(f) + (u_int32_t)*cp++; \
-               (f) = htonl(tmp); \
-       } \
-}
-
-#define DECODES(f) { \
-       if (*cp == 0) {\
-               u_short tmp = ntohs(f) + ((cp[1] << 8) | cp[2]); \
-               (f) = htons(tmp); \
-               cp += 3; \
-       } else { \
-               u_short tmp = ntohs(f) + (u_int32_t)*cp++; \
-               (f) = htons(tmp); \
-       } \
-}
-
-#define DECODEU(f) { \
-       if (*cp == 0) {\
-               (f) = htons((cp[1] << 8) | cp[2]); \
-               cp += 3; \
-       } else { \
-               (f) = htons((u_int32_t)*cp++); \
-       } \
-}
-
-u_int
-vj_compress_tcp(ip, mlen, comp, compress_cid, vjhdrp)
-    register struct ip *ip;
-    u_int mlen;
-    struct vjcompress *comp;
-    int compress_cid;
-    u_char **vjhdrp;
-{
-    register struct cstate *cs = comp->last_cs->cs_next;
-    register u_int hlen = getip_hl(*ip);
-    register struct tcphdr *oth;
-    register struct tcphdr *th;
-    register u_int deltaS, deltaA;
-    register u_int changes = 0;
-    u_char new_seq[16];
-    register u_char *cp = new_seq;
-
-    /*
-     * Bail if this is an IP fragment or if the TCP packet isn't
-     * `compressible' (i.e., ACK isn't set or some other control bit is
-     * set).  (We assume that the caller has already made sure the
-     * packet is IP proto TCP).
-     */
-    if ((ip->ip_off & htons(0x3fff)) || mlen < 40)
-       return (TYPE_IP);
-
-    th = (struct tcphdr *)&((int *)ip)[hlen];
-    if ((th->th_flags & (TH_SYN|TH_FIN|TH_RST|TH_ACK)) != TH_ACK)
-       return (TYPE_IP);
-    /*
-     * Packet is compressible -- we're going to send either a
-     * COMPRESSED_TCP or UNCOMPRESSED_TCP packet.  Either way we need
-     * to locate (or create) the connection state.  Special case the
-     * most recently used connection since it's most likely to be used
-     * again & we don't have to do any reordering if it's used.
-     */
-    INCR(vjs_packets);
-    if (ip->ip_src.s_addr != cs->cs_ip.ip_src.s_addr ||
-       ip->ip_dst.s_addr != cs->cs_ip.ip_dst.s_addr ||
-       *(int *)th != ((int *)&cs->cs_ip)[getip_hl(cs->cs_ip)]) {
-       /*
-        * Wasn't the first -- search for it.
-        *
-        * States are kept in a circularly linked list with
-        * last_cs pointing to the end of the list.  The
-        * list is kept in lru order by moving a state to the
-        * head of the list whenever it is referenced.  Since
-        * the list is short and, empirically, the connection
-        * we want is almost always near the front, we locate
-        * states via linear search.  If we don't find a state
-        * for the datagram, the oldest state is (re-)used.
-        */
-       register struct cstate *lcs;
-       register struct cstate *lastcs = comp->last_cs;
-
-       do {
-           lcs = cs; cs = cs->cs_next;
-           INCR(vjs_searches);
-           if (ip->ip_src.s_addr == cs->cs_ip.ip_src.s_addr
-               && ip->ip_dst.s_addr == cs->cs_ip.ip_dst.s_addr
-               && *(int *)th == ((int *)&cs->cs_ip)[getip_hl(cs->cs_ip)])
-               goto found;
-       } while (cs != lastcs);
-
-       /*
-        * Didn't find it -- re-use oldest cstate.  Send an
-        * uncompressed packet that tells the other side what
-        * connection number we're using for this conversation.
-        * Note that since the state list is circular, the oldest
-        * state points to the newest and we only need to set
-        * last_cs to update the lru linkage.
-        */
-       INCR(vjs_misses);
-       comp->last_cs = lcs;
-       hlen += getth_off(*th);
-       hlen <<= 2;
-       if (hlen > mlen)
-           return (TYPE_IP);
-       goto uncompressed;
-
-    found:
-       /*
-        * Found it -- move to the front on the connection list.
-        */
-       if (cs == lastcs)
-           comp->last_cs = lcs;
-       else {
-           lcs->cs_next = cs->cs_next;
-           cs->cs_next = lastcs->cs_next;
-           lastcs->cs_next = cs;
-       }
-    }
-
-    /*
-     * Make sure that only what we expect to change changed. The first
-     * line of the `if' checks the IP protocol version, header length &
-     * type of service.  The 2nd line checks the "Don't fragment" bit.
-     * The 3rd line checks the time-to-live and protocol (the protocol
-     * check is unnecessary but costless).  The 4th line checks the TCP
-     * header length.  The 5th line checks IP options, if any.  The 6th
-     * line checks TCP options, if any.  If any of these things are
-     * different between the previous & current datagram, we send the
-     * current datagram `uncompressed'.
-     */
-    oth = (struct tcphdr *)&((int *)&cs->cs_ip)[hlen];
-    deltaS = hlen;
-    hlen += getth_off(*th);
-    hlen <<= 2;
-    if (hlen > mlen)
-       return (TYPE_IP);
-
-    if (((u_short *)ip)[0] != ((u_short *)&cs->cs_ip)[0] ||
-       ((u_short *)ip)[3] != ((u_short *)&cs->cs_ip)[3] ||
-       ((u_short *)ip)[4] != ((u_short *)&cs->cs_ip)[4] ||
-       getth_off(*th) != getth_off(*oth) ||
-       (deltaS > 5 && BCMP(ip + 1, &cs->cs_ip + 1, (deltaS - 5) << 2)) ||
-       (getth_off(*th) > 5 && BCMP(th + 1, oth + 1, (getth_off(*th) - 5) << 2)))
-       goto uncompressed;
-
-    /*
-     * Figure out which of the changing fields changed.  The
-     * receiver expects changes in the order: urgent, window,
-     * ack, seq (the order minimizes the number of temporaries
-     * needed in this section of code).
-     */
-    if (th->th_flags & TH_URG) {
-       deltaS = ntohs(th->th_urp);
-       ENCODEZ(deltaS);
-       changes |= NEW_U;
-    } else if (th->th_urp != oth->th_urp)
-       /* argh! URG not set but urp changed -- a sensible
-        * implementation should never do this but RFC793
-        * doesn't prohibit the change so we have to deal
-        * with it. */
-       goto uncompressed;
-
-    if (deltaS = (u_short)(ntohs(th->th_win) - ntohs(oth->th_win))) {
-       ENCODE(deltaS);
-       changes |= NEW_W;
-    }
-
-    if (deltaA = ntohl(th->th_ack) - ntohl(oth->th_ack)) {
-       if (deltaA > 0xffff)
-           goto uncompressed;
-       ENCODE(deltaA);
-       changes |= NEW_A;
-    }
-
-    if (deltaS = ntohl(th->th_seq) - ntohl(oth->th_seq)) {
-       if (deltaS > 0xffff)
-           goto uncompressed;
-       ENCODE(deltaS);
-       changes |= NEW_S;
-    }
-
-    switch(changes) {
-
-    case 0:
-       /*
-        * Nothing changed. If this packet contains data and the
-        * last one didn't, this is probably a data packet following
-        * an ack (normal on an interactive connection) and we send
-        * it compressed.  Otherwise it's probably a retransmit,
-        * retransmitted ack or window probe.  Send it uncompressed
-        * in case the other side missed the compressed version.
-        */
-       if (ip->ip_len != cs->cs_ip.ip_len &&
-           ntohs(cs->cs_ip.ip_len) == hlen)
-           break;
-
-       /* (fall through) */
-
-    case SPECIAL_I:
-    case SPECIAL_D:
-       /*
-        * actual changes match one of our special case encodings --
-        * send packet uncompressed.
-        */
-       goto uncompressed;
-
-    case NEW_S|NEW_A:
-       if (deltaS == deltaA && deltaS == ntohs(cs->cs_ip.ip_len) - hlen) {
-           /* special case for echoed terminal traffic */
-           changes = SPECIAL_I;
-           cp = new_seq;
-       }
-       break;
-
-    case NEW_S:
-       if (deltaS == ntohs(cs->cs_ip.ip_len) - hlen) {
-           /* special case for data xfer */
-           changes = SPECIAL_D;
-           cp = new_seq;
-       }
-       break;
-    }
-
-    deltaS = ntohs(ip->ip_id) - ntohs(cs->cs_ip.ip_id);
-    if (deltaS != 1) {
-       ENCODEZ(deltaS);
-       changes |= NEW_I;
-    }
-    if (th->th_flags & TH_PUSH)
-       changes |= TCP_PUSH_BIT;
-    /*
-     * Grab the cksum before we overwrite it below.  Then update our
-     * state with this packet's header.
-     */
-    deltaA = ntohs(th->th_sum);
-    BCOPY(ip, &cs->cs_ip, hlen);
-
-    /*
-     * We want to use the original packet as our compressed packet.
-     * (cp - new_seq) is the number of bytes we need for compressed
-     * sequence numbers.  In addition we need one byte for the change
-     * mask, one for the connection id and two for the tcp checksum.
-     * So, (cp - new_seq) + 4 bytes of header are needed.  hlen is how
-     * many bytes of the original packet to toss so subtract the two to
-     * get the new packet size.
-     */
-    deltaS = cp - new_seq;
-    cp = (u_char *)ip;
-    if (compress_cid == 0 || comp->last_xmit != cs->cs_id) {
-       comp->last_xmit = cs->cs_id;
-       hlen -= deltaS + 4;
-       *vjhdrp = (cp += hlen);
-       *cp++ = changes | NEW_C;
-       *cp++ = cs->cs_id;
-    } else {
-       hlen -= deltaS + 3;
-       *vjhdrp = (cp += hlen);
-       *cp++ = changes;
-    }
-    *cp++ = deltaA >> 8;
-    *cp++ = deltaA;
-    BCOPY(new_seq, cp, deltaS);
-    INCR(vjs_compressed);
-    return (TYPE_COMPRESSED_TCP);
-
-    /*
-     * Update connection state cs & send uncompressed packet (that is,
-     * a regular ip/tcp packet but with the 'conversation id' we hope
-     * to use on future compressed packets in the protocol field).
-     */
- uncompressed:
-    BCOPY(ip, &cs->cs_ip, hlen);
-    ip->ip_p = cs->cs_id;
-    comp->last_xmit = cs->cs_id;
-    return (TYPE_UNCOMPRESSED_TCP);
-}
-
-/*
- * Called when we may have missed a packet.
- */
-void
-vj_uncompress_err(comp)
-    struct vjcompress *comp;
-{
-    comp->flags |= VJF_TOSS;
-    INCR(vjs_errorin);
-}
-
-/*
- * "Uncompress" a packet of type TYPE_UNCOMPRESSED_TCP.
- */
-int
-vj_uncompress_uncomp(buf, buflen, comp)
-    u_char *buf;
-    int buflen;
-    struct vjcompress *comp;
-{
-    register u_int hlen;
-    register struct cstate *cs;
-    register struct ip *ip;
-
-    ip = (struct ip *) buf;
-    hlen = getip_hl(*ip) << 2;
-    if (ip->ip_p >= MAX_STATES
-       || hlen + sizeof(struct tcphdr) > buflen
-       || (hlen += getth_off(*((struct tcphdr *)&((char *)ip)[hlen])) << 2)
-           > buflen
-       || hlen > MAX_HDR) {
-       comp->flags |= VJF_TOSS;
-       INCR(vjs_errorin);
-       return (0);
-    }
-    cs = &comp->rstate[comp->last_recv = ip->ip_p];
-    comp->flags &=~ VJF_TOSS;
-    ip->ip_p = IPPROTO_TCP;
-    BCOPY(ip, &cs->cs_ip, hlen);
-    cs->cs_hlen = hlen;
-    INCR(vjs_uncompressedin);
-    return (1);
-}
-
-/*
- * Uncompress a packet of type TYPE_COMPRESSED_TCP.
- * The packet starts at buf and is of total length total_len.
- * The first buflen bytes are at buf; this must include the entire
- * compressed TCP/IP header.  This procedure returns the length
- * of the VJ header, with a pointer to the uncompressed IP header
- * in *hdrp and its length in *hlenp.
- */
-int
-vj_uncompress_tcp(buf, buflen, total_len, comp, hdrp, hlenp)
-    u_char *buf;
-    int buflen, total_len;
-    struct vjcompress *comp;
-    u_char **hdrp;
-    u_int *hlenp;
-{
-    register u_char *cp;
-    register u_int hlen, changes;
-    register struct tcphdr *th;
-    register struct cstate *cs;
-    register u_short *bp;
-    register u_int vjlen;
-    register u_int32_t tmp;
-
-    INCR(vjs_compressedin);
-    cp = buf;
-    changes = *cp++;
-    if (changes & NEW_C) {
-       /* Make sure the state index is in range, then grab the state.
-        * If we have a good state index, clear the 'discard' flag. */
-       if (*cp >= MAX_STATES)
-           goto bad;
-
-       comp->flags &=~ VJF_TOSS;
-       comp->last_recv = *cp++;
-    } else {
-       /* this packet has an implicit state index.  If we've
-        * had a line error since the last time we got an
-        * explicit state index, we have to toss the packet. */
-       if (comp->flags & VJF_TOSS) {
-           INCR(vjs_tossed);
-           return (-1);
-       }
-    }
-    cs = &comp->rstate[comp->last_recv];
-    hlen = getip_hl(cs->cs_ip) << 2;
-    th = (struct tcphdr *)&((u_char *)&cs->cs_ip)[hlen];
-    th->th_sum = htons((*cp << 8) | cp[1]);
-    cp += 2;
-    if (changes & TCP_PUSH_BIT)
-       th->th_flags |= TH_PUSH;
-    else
-       th->th_flags &=~ TH_PUSH;
-
-    switch (changes & SPECIALS_MASK) {
-    case SPECIAL_I:
-       {
-           register u_int32_t i = ntohs(cs->cs_ip.ip_len) - cs->cs_hlen;
-           /* some compilers can't nest inline assembler.. */
-           tmp = ntohl(th->th_ack) + i;
-           th->th_ack = htonl(tmp);
-           tmp = ntohl(th->th_seq) + i;
-           th->th_seq = htonl(tmp);
-       }
-       break;
-
-    case SPECIAL_D:
-       /* some compilers can't nest inline assembler.. */
-       tmp = ntohl(th->th_seq) + ntohs(cs->cs_ip.ip_len) - cs->cs_hlen;
-       th->th_seq = htonl(tmp);
-       break;
-
-    default:
-       if (changes & NEW_U) {
-           th->th_flags |= TH_URG;
-           DECODEU(th->th_urp);
-       } else
-           th->th_flags &=~ TH_URG;
-       if (changes & NEW_W)
-           DECODES(th->th_win);
-       if (changes & NEW_A)
-           DECODEL(th->th_ack);
-       if (changes & NEW_S)
-           DECODEL(th->th_seq);
-       break;
-    }
-    if (changes & NEW_I) {
-       DECODES(cs->cs_ip.ip_id);
-    } else {
-       cs->cs_ip.ip_id = ntohs(cs->cs_ip.ip_id) + 1;
-       cs->cs_ip.ip_id = htons(cs->cs_ip.ip_id);
-    }
-
-    /*
-     * At this point, cp points to the first byte of data in the
-     * packet.  Fill in the IP total length and update the IP
-     * header checksum.
-     */
-    vjlen = cp - buf;
-    buflen -= vjlen;
-    if (buflen < 0)
-       /* we must have dropped some characters (crc should detect
-        * this but the old slip framing won't) */
-       goto bad;
-
-    total_len += cs->cs_hlen - vjlen;
-    cs->cs_ip.ip_len = htons(total_len);
-
-    /* recompute the ip header checksum */
-    bp = (u_short *) &cs->cs_ip;
-    cs->cs_ip.ip_sum = 0;
-    for (changes = 0; hlen > 0; hlen -= 2)
-       changes += *bp++;
-    changes = (changes & 0xffff) + (changes >> 16);
-    changes = (changes & 0xffff) + (changes >> 16);
-    cs->cs_ip.ip_sum = ~ changes;
-
-    *hdrp = (u_char *) &cs->cs_ip;
-    *hlenp = cs->cs_hlen;
-    return vjlen;
-
- bad:
-    comp->flags |= VJF_TOSS;
-    INCR(vjs_errorin);
-    return (-1);
-}
diff --git a/README.NeXT b/README.NeXT
deleted file mode 100644 (file)
index 41fb9e1..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-#  $Id: README.NeXT,v 1.4 1998/03/26 02:54:17 paulus Exp $
-#
-
-This distribution contains a port of PPP-2.3 for NeXT.  The full
-source code is available as well as an MAB installer package.  Since
-this project is a continuing effort, you are encouraged to check out
-the "PPP-2.3 for NeXTSTEP" web page to see if you have the latest
-software.  This is especially true if you find you have problems with
-the version you presently use.  The web site contains a comprehensive
-NeXT specific FAQ, mailing list information, and a bug submission
-form.  Please see:
-
-  WWW site:     http://www.peak.org/next/ppp/
-  WWW mirror:   http://www.thoughtport.com:8080/PPP/
-
-  FTP site:     ftp://next-ftp.peak.org/pub/next/apps/internet/ppp/dev
-  FTP Mirror:   ftp://ftp.NMR.EMBL-Heidelberg.DE/pub/next/ppp/
-
-If you use this software and are pleased with its performance, you are
-encouraged to make a donation to support continued development.  50%
-of all donations go to charity.  For more information, please see:
-  http://www.thoughtport.com:8080/cgi-bin/PPP/donation
-
-It is recommended that you use the PPP installer package to install
-the latest version of PPP.  This installer package has been designed
-to make installation of PPP exceedingly easy and includes all the
-documentation you need.  However, if you want to manually compile and
-configure PPP, the subdirectory 'NeXT' contains the documentation and
-information you need.  You do NOT need to look at these files if you
-use the installer package.
-
-   INSTALL -     A file giving specific directions for installing
-                 ppp-2.3 on a NeXT computer.
-
-   Examples -    This directory provides more examples of
-                 scripts and other helpful utilities.
-
-   NeXT_Version - This file describes what NeXT specific version of
-                  PPP-2.3 you have.
-
-   ChangeLog.rtf - A history of development and bug fixes for ppp-2.3
-
-   TODO.NeXT -   A wishlist for features.
diff --git a/README.aix4 b/README.aix4
deleted file mode 100644 (file)
index b01bfc9..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-
-AIX 4.1 support is ported from the SunOS code for ppp 2.2. It requires
-a streams-based tty and will not work on AIX 3.2. This is the first
-release of this package for AIX. It is provided free and without warranty
-of any kind.
-
-Introduction
-
-  PPP implements TCP/IP through serial connections. In ppp 2.2, an
-  interface is established by running the program 'pppd'. pppd opens
-  a serial connection, negotiates link attributes with the peer and
-  configures a TCP/IP interface. The interface remains up as long as
-  the peer stays up and 'pppd' remains running. There are no SMIT menus
-  and ppp interfaces can not be defined through ifconfig. An interface 
-  can be brought down by killing pppd.
-
-  The program 'chat' processes send-expect sequences similar to UUCP
-  Dialers commands or a Systems chat string. It can be used to dial
-  a modem.
-
-  'pppstats' prints interface statistics similar to netstat. Some of the
-  statistics are the same as netstat but pppstat also provides additional
-  info specific to ppp interfaces. 
-
-Installation
-
-  First execute the following commands in the ppp-2.2 directory:
-
-       ./configure
-       make install            (you need to be root for this)
-
-  By default, pppd, chat and pppstats are placed in /usr/sbin and the
-  streams modules in /usr/lib/drivers. The modules are loaded by the following
-  'strload' commands.
-  
-  strload -m /usr/lib/drivers/ppp_if
-  strload -m /usr/lib/drivers/ppp_comp
-  strload -m /usr/lib/drivers/ppp_async
-  
-  'make install' appends the strloads to /etc/rc.tcpip so the modules
-  will be loaded at boot.  A 'pppd' command can be added to start
-  up an interface.
-  
-  'make install' will also create /etc/ppp/options containing the option
-  'lock' only (lock tty device when in use). Any other options which will
-  always be used should be added by hand.
-  
-  Man pages for pppd and pppstats are installed.
-
-Examples
-
-  To answer a modem and accept connections, use something like
-
-    pppd tty1 myhostname:remotehostname persist
-
-  This will wait for calls on tty1 and establish a connection with any
-  ppp caller. The server will use myhostname and tell the caller
-  to use remotehostname. The persist option tells pppd to remain 
-  active and accept another connection after the call terminates.
-  You can use the 'auth' option to force callers to authenticate
-  themselves. See pppd man page for details of authentication protocols.
-
-  To dial in to a user account and start PPP, use something like
-
-    pppd tty1 myhostname: connect 'chat -f /etc/ppp/chat-script'
-
-  where the file /etc/ppp/chat-script should contain something like
-
-    "" ATDT5551212 CONNECT "" ogin: myname sword: mypassword $ pppd
-
-  This command uses the chat program to dial the modem, log in and
-  start pppd on the server. No ttyname is needed when starting pppd on the
-  server side because pppd will attach to the current terminal (the tty line),
-  if no device is specified. Any pppd options needed can be set in ~/.ppprc
-  on the called system.
-
-  The chat -v option may be helpful in debugging connection failures. The
-  chat output and other debug messages are sent to syslog. You may need
-  to edit /etc/syslog.conf and "refresh -s syslogd" to see the debug messages.
-
-  The simplest way to allow a remote dial-in host to use your network is
-  to use the 'proxyarp' option on the server. This will cause the
-  server to publish an arp entry with the remote's IP address and the 
-  server's hardware address. The remote will then appear to be part of
-  local network to other hosts. The address/netmask used by the remote
-  must be suitable for the subnet you wish to connect to.  If the remote
-  is a standalone system, or has no other default route, use the
-  'defaultroute' option when dialing in. This will create a default route
-  on the remote system through the server. If the remote is on another
-  local network, you might not want this because it could conflict with
-  an existing default route.
-
-  These are just a few examples to help the new user get started. The
-  man page for pppd describes all the options in detail.
-
-       Charlie Wick
-
diff --git a/README.bsd b/README.bsd
deleted file mode 100644 (file)
index c62619a..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-Installation instructions for installing ppp-2.4 on FreeBSD.
-
-This package supports NetBSD-current, NetBSD-1.2, NetBSD-1.1,
-FreeBSD-2.1, and FreeBSD-2.0.  Modloading is not supported.  I have
-code which may work on earlier systems; contact me if you need it.
-
-To install PPP, you need to rebuild your kernel to include the latest
-version of the PPP driver, as well as compiling and installing the
-user-level applications: pppd, pppstats and chat.  The user-level
-applications can be compiled and installed either before or after you
-reboot with the new kernel (you'll have to reboot with the new kernel
-before you can run them, of course).
-
-The following commands should compile and install the user-level
-applications (in the ppp-2.3 directory):
-
-       ./configure
-       make
-       make install            (you need to be root for this)
-
-The process of updating the kernel source files is now largely
-automated.  In the ppp-2.3 directory, issue the command:
-
-       make kernel
-
-(you probably need to be root for this).  This will copy new versions
-of several files into /sys, patch other files, and finally give you
-instructions about modifying your kernel configuration file (if
-necessary), rebuilding the kernel and rebooting.
-
-If you want to do the process by hand, read the next section.
-
-
-Updating the kernel ppp code.
-*****************************
-
-You need to update several files in the /sys/net directory, and patch
-some other files under /sys.  The details depend on which operating
-system you're running.
-
-
-NetBSD.
-=======
-
-Copy the following files to /sys/net:
-
-       net/if_ppp.h
-       net/ppp-comp.h
-       net/ppp_defs.h
-       netbsd-1.1/bsd-comp.c
-       netbsd-1.1/if_ppp.c
-       netbsd-1.1/if_pppvar.h
-       netbsd-1.1/ppp-deflate.c
-       netbsd-1.1/ppp_tty.c
-       netbsd-1.1/slcompress.c
-       netbsd-1.1/slcompress.h
-       common/zlib.c
-       common/zlib.h
-
-You may need to edit /sys/conf/files to make sure it contains entries
-for if_ppp.c, ppp_tty.c, bsd-comp.c, ppp-deflate.c and zlib.c.
-Depending on whether your port uses the old-style or new-style config
-files, these entries will look like this (new-style):
-
-       file net/if_ppp.c               ppp             needs-count
-       file net/ppp_tty.c              ppp
-       file net/bsd-comp.c             ppp
-       file net/ppp-deflate.c          ppp
-       file net/zlib.c                 ppp
-
-or this (old-style):
-
-       net/if_ppp.c            optional ppp device-driver
-       net/ppp_tty.c           optional ppp
-       net/bsd-comp.c          optional ppp
-       net/ppp-deflate.c       optional ppp
-       net/zlib.c              optional ppp
-
-If you use config.old or config.new, you will need to edit
-/sys/conf/files.oldconf or /sys/conf/files.newconf respectively.
-
-
-FreeBSD.
-========
-
-Copy the following files to /sys/net:
-
-       net/if_ppp.h
-       net/ppp-comp.h
-       net/ppp_defs.h
-       freebsd-2.0/bsd-comp.c
-       freebsd-2.0/if_ppp.c
-       freebsd-2.0/if_pppvar.h
-       freebsd-2.0/ppp-deflate.c
-       freebsd-2.0/ppp_tty.c
-       freebsd-2.0/pppcompress.c
-       freebsd-2.0/pppcompress.h
-       common/zlib.c
-       common/zlib.h
-
-You then need to edit /sys/conf/files to make sure it contains entries
-for if_ppp.c, ppp_tty.c, bsd-comp.c, ppp-deflate.c and zlib.c.  These
-entries should look like this:
-
-       net/if_ppp.c            optional ppp device-driver
-       net/ppp_tty.c           optional ppp
-       net/bsd-comp.c          optional ppp
-       net/ppp-deflate.c       optional ppp
-       net/zlib.c              optional ppp
-
-
-Configuring and making the new kernel.
-**************************************
-
-First, make sure that the configuration file you are using includes a
-line something like
-
-       pseudo-device ppp 2
-
-If it doesn't, add one.  The `2' is the number of ppp interfaces to
-configure, that is, the maximum number of simultaneous ppp connections
-you will be able to have; change it as required.
-
-Next, run config (or config.old or config.new) in the directory
-containing the configuration file, giving the configuration file name
-as an argument.  Then cd to the compilation directory and make the
-kernel.  For the i386 port of NetBSD, with a configuration file called
-CONF, this involves the following commands:
-
-       cd /sys/arch/i386/conf
-       /usr/sbin/config CONF
-       cd ../compile/CONF
-       make
-
-For FreeBSD, the commands are similar except for different
-directories:
-
-       cd /sys/i386/conf
-       /usr/sbin/config CONF
-       cd ../../compile/CONF
-       make
-
-The result should be a new kernel image (usually called `netbsd' under
-NetBSD, `kernel' under FreeBSD).  Save a copy of the kernel image
-you're currently using, copy the new kernel image file to /, and
-reboot.
diff --git a/README.osf b/README.osf
deleted file mode 100644 (file)
index 74d74ab..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-This file (README.osf) contains instructions for installing ppp-2.3 on a
-Compaq Alpha-based system running Tru64 Unix (formerly Digital UNIX aka
-DEC OSF/1) version 4.0. Please note that  PPP is an integral
-component of Tru64 UNIX version 3.2G and beyond (documented in the
-Guide to Network Administration),  and though it *is* possible to install 
-this software on V3.2G and later of Tru64 UNIX, you are likely
-to have problems with the "update install" feature of Tru64
-UNIX and while installing some OS patches. (See the note on 
-de-installation below). 
-
-Tru64 Unix versions Version 3.X and earlier are no longer supported
-in this package.  Please use ppp-2.3.5 on these systems.
-
-INSTALLATION.
-
-If you encounter bugs while using this PPP package under Tru64
-UNIX then please let me (varadhan@zk3.dec.com) know.  I can't promise
-quick turnaround but I should be able to address issues eventually.
-
-Below are the steps for installing PPP on Tru64 UNIX.
-You must do all of the following as "root".
-
-1.  back up /usr/sys/BINARY, /usr/sys/include/net,
-    /usr/sys/conf/files, /sys/kern/lockinfo.c  and /sys/BINARY/ppp.mod
-       # mkdir -p /usr/tmp/ppp
-       # cd /usr/sys
-       # tar cvf /usr/tmp/ppp/BINARY.tar ./BINARY
-        # cd /usr/sys/include
-       # tar cvf /usr/tmp/ppp/usr_sys_include_net.tar  ./net
-       # cp /usr/sys/conf/files /usr/tmp/ppp/files
-       # cp /sys/kern/lockinfo.c /usr/tmp/ppp/lockinfo.c
-       # cp /sys/BINARY/ppp.mod /usr/tmp/ppp/ppp.mod
-
-2.  Edit /usr/sys/conf/files- search for the string: "MODULE/STATIC/ppp"
-comment out the existing entries, and change it to look like:
-
-MODULE/STATIC/ppp               optional ppp Binary
-#streamsm/ppp_init.c            module ppp
-#streamsm/ppp_if.c              module ppp
-#streamsm/ppp_async.c           module ppp
-#streamsm/ppp_comp.c            module ppp
-#streamsm/vjcompress.c          module ppp
-#streamsm/bsd_comp.c            module ppp
-streamsm/if_ppp.c         module ppp
-streamsm/ppp_comp.c       module ppp
-streamsm/ppp_init.c       module ppp
-streamsm/vjcompress.c     module ppp
-streamsm/bsd-comp.c       module ppp
-streamsm/deflate.c        module ppp
-streamsm/ppp.c            module ppp
-streamsm/ppp_ahdlc.c      module ppp
-streamsm/zlib.c           module ppp
-
-3.  Make the kernel sources, daemon, chat, and pppstat program by typing 
-
-        ./configure
-        make install
-
-    in the directory that this file unpacked into.  This installs the
-    binaries for the PPP daemon and the statistics program in 
-    /usr/local/etc/ppp.  If you want them somewhere else, just change 
-    the definition of BINDIR in the top level Makefile.osf. If you plan
-    to over-write exisiting pppd executables in /usr/sbin/, it's advisable
-    that you create back-up copies of these first, before doing the
-    'make install'
-
-    Note that BINDIR and MANDIR/man8 must exist before you do a 
-    'make install'
-
-
-4.  Edit /sys/kern/lockinfo.c, and conditionally compile out the lines:
-
-#if PPP
-        SLI("ppp_if_table_lock", ppp_if_table_lock_info, SPLNONE, DEFAULT);
-        SLI("ppp_if_info.ppp_if_element_lock", ppp_if_element_lock_info, SPLNONE
-, DEFAULT);
-        SLI("ppp_comp_table_lock", ppp_comp_table_lock_info, SPLNONE, DEFAULT);
-        SLI("ppp_comp_info.ppp_comp_element_lock", ppp_comp_element_lock_info, S
-PLNONE, DEFAULT);
-        SLI("ppp_async_table_lock", ppp_async_table_lock_info, SPLNONE, DEFAULT)
-;
-        SLI("ppp_async_info.ppp_async_element_lock", ppp_async_element_lock_info
-, SPLNONE, DEFAULT);
-#endif  /* PPP */
-
-by changing the line
-
-#if PPP 
-
-to be
-
-#if 0 
-
-5.  Find your system's configuration file.  This should be called
-    /sys/conf/SYSNAME, where SYSNAME is replaced by the name of your
-    host.  For example, on my machine (zaphod.csci.unt.edu) it it called
-    /sys/conf/ZAPHOD.  I will refer to this file from now on as 
-    /sys/conf/SYSNAME.
-
-6.  Add the following line at the end of /sys/conf/SYSNAME:
-
-       options         PPP
-
-7.  Build a new kernel by using the command
-
-       doconfig -c SYSNAME
-
-    (say "n" to "Do you want to edit...").
-
-8.  Copy the new kernel to /vmunix --- I'm usually pretty nervous about
-    writing over a perfectly good kernel with one that I'm not sure
-    about, so I will usually "mv /vmunix /vmunix.old" first.  To put
-    the new kernel in place, do a "cp /sys/SYSNAME/vmunix /vmunix".
-
-9.  Make sure your system is set up so that it can act like a gateway
-    for messages to your new connection.  In particular, check the file
-    /etc/rc.config for the line define ROUTER, and make sure it is
-    defined as "yes".
-
-10.  Reboot and you're ready to go!
-
-Hopefully, that should work with no hitches.  If you find any bugs, or
-errors in these instructions, contact Sowmini Varadhan<varadhan@zk3.dec.com>.
-
-
-DEINSTALLATION
-
-It is advisable to retrace your steps and restore the system
-to its normal state before installing patches or running update_install.
-Here's how you can retrace..
-
-1. Restore /usr/sys/BINARY, /usr/sys/include/net, /usr/sys/conf/files
-   and /sys/kern/lockinfo.c and /sys/BINARY/ppp.mod. For example,
-   if you followed the instructions in step 1 verbatim, you would do
-
-       # cd /usr/sys/
-       # rm -rf ./BINARY
-       # tar xvf /usr/tmp/ppp/BINARY.tar
-        # cd /usr/sys/include
-        # rm -rf ./net
-       # tar xvf /usr/tmp/ppp/usr_sys_include_net.tar
-       # cp  /usr/tmp/ppp/files /usr/sys/conf/files
-       # cp /usr/tmp/ppp/lockinfo.c /sys/kern/lockinfo.c
-       # cp /usr/tmp/ppp/ppp.mod /sys/BINARY/ppp.mod
-
-Now redo steps 5-10 and install the patch after you have rebooted.
diff --git a/README.sunos4 b/README.sunos4
deleted file mode 100644 (file)
index b48aec3..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-This file describes the installation process for ppp-2.3 on systems
-running SunOS 4.1.x (or the equivalent).
-
-The STREAMS modules in the sunos4 directory provide kernel support for
-PPP on SunOS 4.1.x systems.  They have been tested under SunOS 4.1.3
-on a SparcStation 1+.  They should work under earlier SunOS 4.1.x
-systems, but no guarantees are given.
-
-These modules are designed to be loaded into the running kernel using
-the `modload' command.
-
-
-Installation.
-*************
-
-1. Run the configure script and make the user-level programs and the
-kernel modules.
-
-       ./configure
-       make
-
-If you wish to compile using gcc instead of cc, edit the
-sunos4/Makedefs file and uncomment the line saying "CC = gcc".  You
-can also change the C compiler options by editing the COPTS
-definition.
-
-2. Install the pppd, pppstats and chat programs and the loadable
-module object files (you need to be root to do this):
-
-       make install
-
-By default, the programs and the loadable module object files go into
-/usr/local/etc.  Doing `make install' also copies a script called
-ppp.INSTALL into /dev, and makes ppp.LOAD, ppp.UNLOAD, ppp.MKDEV and
-ppp.RMDEV links to it.  You can change the installation directories by
-editing sunos4/Makedefs.
-
-3. Load the ppp modules (you need to be root for this too):
-
-       /dev/ppp.LOAD
-
-You will want to do this in your /etc/rc.local file once you have
-everything installed.  I suggest you put something like the following
-in /etc/rc.local (or /etc/loadable, if you have one):
-
-       if [ -f /dev/ppp.AUTOLOAD ]; then
-               /dev/ppp.LOAD
-       fi
-
-and then create a /dev/ppp.AUTOLOAD file with the command
-
-       touch /dev/ppp.AUTOLOAD
-
-It is not advisable to unload the "if_ppp" module, because it creates
-network interface units, and SunOS does not provide any way to destroy
-network interfaces once created.  If you do unload it, the system will
-probably crash at some later stage.
-
-If you have previously had ppp-2.2 installed, you may have statements
-in your /etc/rc.local to load the ppp module.  You will need to remove
-those.  Having done this, you will need to reboot to remove the old
-ppp module and load the new modules.
diff --git a/README.svr4 b/README.svr4
deleted file mode 100644 (file)
index 86942bb..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-This file describes the installation process for ppp-2.3 on systems
-running standard System V Release 4 and using the Lachman TCP/IP
-protocol code.  The STREAMS kernel modules and driver for SVR4 are in
-the svr4 directory (and use some code from the modules directory).
-
-Installation.
-*************
-
-1. Run the configure script and make the user-level programs and the
-kernel modules.
-
-       ./configure
-       make
-
-If you wish to use gcc instead of cc, edit the svr4/Makedefs file and
-uncomment the definition of CC.  You can also change the options
-passed to the C compiler by editing the COPTS definition.
-
-2. Install the programs and kernel modules: as root, do
-
-       make install
-
-This installs pppd, chat and pppstats in /usr/local/bin and adds the
-ppp STREAMS modules and driver to the system configuration.  You can
-change the installation directories by editing svr4/Makedefs.
-
-3. Rebuild your kernel (with /etc/conf/bin/idbuild) and reboot.
-
-Bug reports.
-************
-
-If you find a bug in this software, please send email to Matthias
-Apitz (Matthias.Apitz@sisis.de) describing the bug and, if possible, a
-workaround or fix for the bug.
diff --git a/README.ultrix b/README.ultrix
deleted file mode 100644 (file)
index b6a80d8..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-
-Installing PPP on an Ultrix system requires rebuilding the kernel and
-rebooting, in addition to making and installing the pppd and chat
-programs.  These instructions apply to RISC (MIPS) systems.  This
-software should work under Ultrix 4.2, 4.3 or 4.4 (this release has
-not been tested yet).
-
-
-Kernel installation procedure.
-******************************
-
-If you have not previously had an earlier version of this package
-installed in the kernel, follow these steps:
-
-1. Become root.
-
-2. Apply the patches in the file ultrix/patches using the command:
-
-       patch -p -N <ultrix/patches
-
-This will edit the following files, saving the original versions in a
-file with `.orig' appended to the name:
-
-       /usr/sys/h/ioctl.h
-       /usr/sys/net/net/if.h
-       /usr/sys/net/net/netisr.h
-       /usr/sys/net/net/conf_net.c
-       /usr/sys/data/pseudo_data.c
-       /usr/sys/data/tty_conf_data.c
-       /usr/sys/conf/mips/files.mips
-
-Alternatively, edit these files according to the differences shown in
-ultrix/patches.
-
-3. Copy the following files to /usr/sys/io/netif:
-
-       net/ppp-comp.h
-       net/ppp_defs.h
-       ultrix/bsd-comp.c
-       ultrix/ppp-deflate.c
-       ultrix/if_ppp.c
-       ultrix/if_ppp.h
-       ultrix/if_pppvar.h
-       ultrix/ppp_tty.c
-       ultrix/slcompress.c
-       ultrix/slcompress.h
-       common/zlib.c
-       common/zlib.h
-
-4. Add a line like this to the configuration file for your kernel:
-
-       pseudo-device ppp       2
-
-The `2' indicates the number of interfaces desired.  The configuration
-file should be in /usr/sys/conf/mips.
-
-5. Rebuild your kernel.  The simplest way to do this is with the
-`doconfig' command, like this:
-
-       /etc/doconfig -c kernel-name
-
-where `kernel-name' should be replaced by the name of your kernel
-configuration file.  Alternatively, run config, cd to the compilation
-directory, and run make.
-
-6. Copy the new /vmunix to /.  It would be a good idea to keep a copy
-of your old /vmunix in / under a different name.
-
-7. Reboot the system.
-
-********
-
-If you have ppp-2.2 already installed in your kernel, most files will
-already have been modified as required.  You will need to add some
-entries to /usr/sys/conf/mips/files.mips.  You can do this with a
-command like this (as root):
-
-       patch -p -N <ultrix/upgrade
-
-Alternatively, edit /usr/sys/conf/mips/files.mips according to the
-differences shown in ultrix/upgrade.
-
-Then, proceed with steps 3, 5, 6, 7 above (step 4 should have been
-done already).
-
-
-Installing pppd and chat.
-*************************
-
-1. cd to the ppp-2.2 directory and do:
-
-       ./configure
-       make
-
-2. Become root, and do:
-
-       make install
-
-
-Credits.
-********
-
-The original port to Ultrix was done by:
-
-       Per Sundstrom 
-       DEC, Sweden
-       email: sundstrom@stkhlm.enet.dec.com
-
-and
-
-       Robert Olsson 
-       Swedish University of Agricultural Sciences
-       and also RO Komm. & Konsult
-       email: robert@robur.slu.se
-
-It was updated to ppp-2.3 by
-
-       Paul Mackerras
-       Dept. of Computer Science
-       Australian National University
-       paulus@cs.anu.edu.au
diff --git a/TODO b/TODO
deleted file mode 100644 (file)
index fed1f31..0000000
--- a/TODO
+++ /dev/null
@@ -1,16 +0,0 @@
-* Things to do *
-
-- How should we handle the case where MTU > MRU?
-  Should we reduce the IP MTU to the link MRU (so TCP MSS is correct)?
-
-- Provide ways to:
-  + set the IP address, possibly based on the peer's identity
-  + have external checking of PAP user/password, CHAP response
-  + supply the PAP user/password, CHAP secret
-  + decide which tty to use (locking, DTR issues)
-
-- Integrate callback stuff?
-
-- Implement link quality monitoring
-
-- Implement other network control protocols
diff --git a/aix4/Makefile b/aix4/Makefile
deleted file mode 100644 (file)
index fbca3e6..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# Makefile for AIX 4.1
-#
-#
-# $Id: Makefile,v 1.5 1998/03/25 03:18:06 paulus Exp $
-#
-#ifndef DRIVERS
-DRIVERS=/usr/lib/drivers
-#endif
-
-CC=xlc
-IFLAGS = -I../include
-DFLAGS = -D_KERNEL -DINET -DPPP_VD -DNUM_PPP=5 -DDEBUGS -DPPP_STATS -DVJC -D__aix4__ -DAIX4
-CFLAGS = $(DFLAGS) $(IFLAGS)
-
-KIMP = -bI:/lib/pse.exp -bI:/lib/kernex.exp -bI:/lib/syscalls.exp
-NETIMP = -bI:/lib/netinet.exp
-KLIBS = /lib/libsys.a /lib/libcsys.a
-
-
-OBJ = vjcompress.o ppp_if.o ppp_async.o bsd-comp.o ppp_comp.o
-
-all: ppp_if ppp_async ppp_comp
-
-ppp_if: ppp_if.o vjcompress.o
-       ld -o ppp_if ppp_if.o -e ppp_load -bE:ppp_if.exp vjcompress.o ${KIMP} ${NETIMP} ${KLIBS}
-
-ppp_async: ppp_async.o
-       ld -o ppp_async ppp_async.o -e ppp_async_load -bE:ppp_async.exp ${KIMP} ${NETIMP} ${KLIBS}
-
-ppp_comp: ppp_comp.o bsd-comp.o
-       ld -o ppp_comp ppp_comp.o -e pppcomp_load bsd-comp.o ${KIMP} ${NETIMP} ${KLIBS}
-
-vjcompress.o: ../modules/vjcompress.c
-       $(CC) $(CFLAGS) -c $?
-bsd-comp.o: ../modules/bsd-comp.c
-       $(CC) $(CFLAGS) -c $?
-ppp_if.o: ppp_if.c
-ppp_async.o: ppp_async.c
-ppp_comp.o: ppp_comp.c
-
-install: all
-       install -f ${DRIVERS} -M 500 ppp_if
-       install -f ${DRIVERS} -M 500 ppp_async
-       install -f ${DRIVERS} -M 500 ppp_comp
-       grep "strload -m ${DRIVERS}/ppp_if" /etc/rc.tcpip || { \
-           echo strload -m ${DRIVERS}/ppp_if; \
-           echo strload -m ${DRIVERS}/ppp_async; \
-           echo strload -m ${DRIVERS}/ppp_comp; \
-       } >>/etc/rc.tcpip
-
-clean:
-       rm -f $(OBJ) ppp_if ppp_async ppp_comp
diff --git a/aix4/Makefile.top b/aix4/Makefile.top
deleted file mode 100644 (file)
index 1fc37e3..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# ppp top level makefile
-#
-
-BINDIR = /usr/sbin
-DRIVERS = /usr/lib/drivers
-MANDIR = /usr/man
-
-all:
-       cd chat; $(MAKE) all
-       cd pppd; $(MAKE) all
-       cd pppstats; $(MAKE) all
-       cd aix4; $(MAKE) all
-
-install:
-       cd chat; $(MAKE) BINDIR=$(BINDIR) MANDIR=$(MANDIR) install
-       cd pppd; $(MAKE) BINDIR=$(BINDIR) MANDIR=$(MANDIR) install
-       cd pppstats; $(MAKE) BINDIR=$(BINDIR) MANDIR=$(MANDIR) install
-       cd aix4; $(MAKE) BINDIR=$(BINDIR) install
-       [ -d /etc/ppp ] || { mkdir /etc/ppp; echo lock > /etc/ppp/options; }
-
-clean:
-       rm -f *~
-       cd chat; $(MAKE) clean
-       cd pppd; $(MAKE) clean
-       cd pppstats; $(MAKE) clean
-       cd aix4; $(MAKE) clean
-
diff --git a/aix4/load b/aix4/load
deleted file mode 100644 (file)
index af6b750..0000000
--- a/aix4/load
+++ /dev/null
@@ -1,4 +0,0 @@
-
-strload -m ppp_async
-strload -m ppp_if
-strload -m ppp_comp
diff --git a/aix4/ppp_async.c b/aix4/ppp_async.c
deleted file mode 100644 (file)
index d079e3f..0000000
+++ /dev/null
@@ -1,902 +0,0 @@
-/*
-  ppp_async.c - Streams async functions Also does FCS
-
-  Copyright (C) 1990  Brad K. Clements, All Rights Reserved
-  fcstab and some ideas nicked from if_ppp.c from cmu.
-  See copyright notice in if_ppp.h and NOTES
-
-  $Id: ppp_async.c,v 1.3 1995/04/26 04:15:48 paulus Exp $
-*/
-
-#include <sys/types.h>
-
-#ifndef PPP_VD
-#include "ppp.h"
-#endif
-
-#if NUM_PPP > 0
-
-#define        STREAMS 1
-#define        DEBUGS  1
-#include <net/net_globals.h>
-#include <sys/param.h>
-#include <sys/stream.h>
-#include <sys/stropts.h>
-#include <sys/strconf.h>
-#include <sys/device.h>
-#include <sys/dir.h>
-#include <sys/signal.h>
-#include <sys/user.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-#include <net/ppp_defs.h>
-#include <net/ppp_str.h>
-
-/* how big of a buffer block to allocate for each chunk of the input chain */
-#define       ALLOCBSIZE      64
-
-#ifdef DEBUGS
-#include <sys/syslog.h>
-#define        DLOG(s,a) if (p->pai_flags&PAI_FLAGS_DEBUG) bsdlog(LOG_INFO, s, a)
-
-int    ppp_async_max_dump_bytes = 28;
-#define MAX_DUMP_BYTES 1504
-
-static void ppp_dump_frame();
-
-#else
-#define        DLOG(s) {}
-#endif
-
-static int     ppp_async_open(), ppp_async_close(), ppp_async_rput(),
-       ppp_async_wput(), ppp_async_wsrv(), ppp_async_rsrv();
-
-static         struct  module_info     minfo ={
-       0xabcd,"ppp_async",0, INFPSZ, 16384, 4096
-};
-
-static struct  qinit   r_init = {
-       ppp_async_rput, ppp_async_rsrv, ppp_async_open, ppp_async_close,
-       NULL, &minfo, NULL
-};
-static struct  qinit   w_init = {
-       ppp_async_wput, ppp_async_wsrv, ppp_async_open, ppp_async_close,
-       NULL, &minfo, NULL
-};
-struct streamtab       ppp_asyncinfo = {
-       &r_init, &w_init, NULL, NULL
-};
-
-/*
- * FCS lookup table as calculated by genfcstab.
- */
-static u_short fcstab[256] = {
-       0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
-       0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
-       0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
-       0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
-       0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
-       0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
-       0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
-       0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
-       0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
-       0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
-       0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
-       0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
-       0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
-       0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
-       0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
-       0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
-       0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
-       0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
-       0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
-       0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
-       0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
-       0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
-       0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
-       0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
-       0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
-       0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
-       0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
-       0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
-       0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
-       0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
-       0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
-       0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
-};
-
-
-struct  ppp_async_info {
-    u_int      pai_flags;
-    int                pai_buffsize;   /* how big of an input buffer to alloc */
-    int                pai_buffcount;  /* how many chars currently in input buffer */
-    u_short    pai_fcs;        /* the current fcs */
-    mblk_t     *pai_buffer;    /* pointer to the current buffer list */
-    mblk_t     *pai_bufftail;  /* pointer to the current input block */
-    ext_accm   pai_asyncmap;   /* current outgoing asyncmap */
-    u_int32_t  pai_rasyncmap;  /* current receive asyncmap */
-};
-
-/* Values for pai_flags */
-#define        PAI_FLAGS_INUSE         0x1
-#define        PAI_FLAGS_FLUSH         0x2
-#define        PAI_FLAGS_ESCAPED       0x4
-#define        PAI_FLAGS_COMPPROT      0x8
-#define        PAI_FLAGS_COMPAC        0x10
-#define        PAI_FLAGS_RCV_COMPPROT  0x20
-#define        PAI_FLAGS_RCV_COMPAC    0x40
-
-#define PAI_FLAGS_DEBUG                0x1000
-#define PAI_FLAGS_LOG_INPKT    0x2000
-#define PAI_FLAGS_LOG_OUTPKT   0x4000
-#define PAI_FLAGS_ALL_DEBUG    0x7000
-
-typedef        struct ppp_async_info   PAI;
-
-static PAI pai[NUM_PPP*2];             /* our private cache of async ctrl structs */
-
-static strconf_t pppasync_conf = {
-        "pppasync", &ppp_asyncinfo, STR_NEW_OPEN, 0, SQLVL_DEFAULT, (void *) 0
-};
-
-int ppp_async_load(int cmd, struct uio *uiop)
-{
-    int rc;
-
-    switch (cmd) {
-        case CFG_INIT:
-            rc = str_install(STR_LOAD_MOD, &pppasync_conf);
-            break;
-        case CFG_TERM:
-            rc = str_install(STR_UNLOAD_MOD, &pppasync_conf);
-            break;
-        default:
-            rc = EINVAL;
-            break;
-    }
-    return(rc);
-}
-
-/* open might fail if we don't have any more pai elements left free */
-static int
-ppp_async_open(q, dev, flag, sflag)
-    queue_t    *q;
-    dev_t      dev;
-    int        flag;
-    int sflag;
-{
-    register PAI *p;
-    register int x;
-    int        s;
-  
-    /* only let the superuser or setuid root ppl open this module */
-    if (!suser()) {
-       return(EPERM);  
-    }
-
-    if (!q->q_ptr) {
-       for (x=0; x < NUM_PPP; x++)     /* search for an empty PAI */
-           if (!(pai[x].pai_flags & PAI_FLAGS_INUSE))
-               break;
-       if (x == NUM_PPP) {             /* all buffers in use */
-           return(ENOBUFS);
-       }
-       p = &pai[x];
-       DLOG("ppp_async%d: opening\n",x);
-
-       /* initialize the unit to default values */
-       WR(q)->q_ptr = q->q_ptr =  (caddr_t) p;
-       bzero(p, sizeof(*p));
-       p->pai_flags = PAI_FLAGS_INUSE | PAI_FLAGS_RCV_COMPAC
-           | PAI_FLAGS_RCV_COMPPROT;
-       p->pai_asyncmap[0] = 0xffffffff;        /* default async map */
-       p->pai_asyncmap[3] = 0x60000000;        /* escape 7d, 7e */
-       p->pai_buffsize = PPP_MTU + PPP_HDRLEN + PPP_FCSLEN;
-    }
-    else {
-       p = (PAI *) q->q_ptr;
-       DLOG("ppp_async%d: reopen\n", p - pai);
-    }
-    return(0);
-}
-
-static int
-ppp_async_close(q)
-    queue_t    *q;                     /* queue info */
-{
-    int        s;
-    register PAI *p;
-  
-    if ((p = (PAI *) q->q_ptr) != NULL) {
-       p->pai_flags = 0;               /* clear all flags */
-       if (p->pai_buffer) {
-           /* currently receiving some chars, discard the buffer */
-           freemsg(p->pai_buffer);
-           p->pai_buffer = NULL;
-       }
-       DLOG("ppp_async%d: closing\n", p - pai);
-    }
-    return(0);                 
-}
-
-
-/* M_IOCTL processing is performed at this level. There is some 
-   weirdness here, but I couldn't think of an easier way to handle it.
-   
-   SIOC{G,S}IF{,R,X}ASYNCMAP are handled here.
-   
-   SIOCSIFCOMPAC and SIOCSIFCOMPPROT are both handled here. 
-   
-   SIOCSIFMRU and SIOCGIFMRU (Max Receive Unit) are both handled here.
-   Rather than using the MTU to set the MRU, we have a seperate IOCTL for it.
-*/
-
-static int
-ppp_async_wput(q, mp)
-    queue_t  *q;
-    register mblk_t *mp;
-{
-    register struct iocblk     *i;
-    register PAI       *p;
-    int        x, flags;
-  
-    switch (mp->b_datap->db_type) {
-    case M_CTL:
-        switch (*(u_char *)mp->b_rptr) {
-        case IF_GET_CSTATS:
-            /* trap this and remove it */
-            freemsg(mp);
-            break;
-        default:
-            putnext(q, mp);
-        }
-        break;
-   
-    case M_FLUSH :
-       if (*mp->b_rptr & FLUSHW)
-           flushq(q, FLUSHDATA);
-       putnext(q, mp);                 /* send it along too */
-       break;
-    
-    case M_DATA :
-       putq(q, mp);                    /* queue it for my service routine */
-       break;
-    
-    case M_IOCTL :
-       i = (struct iocblk *) mp->b_rptr;
-       p = (PAI *) q->q_ptr;
-       switch ((unsigned int)i->ioc_cmd) {
-      
-       case SIOCSIFCOMPAC :    /* enable or disable AC compression */
-           if (i->ioc_count != TRANSPARENT) {
-               i->ioc_error = EINVAL;
-               goto iocnak;
-           }
-           x = *(u_int *) mp->b_cont->b_rptr;
-           DLOG("ppp_async: SIFCOMPAC %d\n", x);
-           flags = (x & 2)? PAI_FLAGS_RCV_COMPAC: PAI_FLAGS_COMPAC;
-           if (x & 1) 
-               p->pai_flags |= flags;
-           else
-               p->pai_flags &= ~flags;
-           i->ioc_count = 0;
-           goto iocack;
-
-       case SIOCSIFCOMPPROT:   /* enable or disable PROT  compression */
-           if (i->ioc_count != TRANSPARENT) {
-               i->ioc_error = EINVAL;
-               goto iocnak;
-           }
-           x = *(u_int *) mp->b_cont->b_rptr;
-           DLOG("ppp_async: SIFCOMPPROT %d\n", x);
-           flags = (x & 2)? PAI_FLAGS_RCV_COMPPROT: PAI_FLAGS_COMPPROT;
-           if (x & 1) 
-               p->pai_flags |= flags;
-           else
-               p->pai_flags &= ~flags;
-           i->ioc_count = 0;
-           goto iocack;
-      
-      
-       case SIOCSIFMRU :
-           if ((i->ioc_count != TRANSPARENT) &&
-               (i->ioc_count != sizeof(int))) {
-               i->ioc_error = EINVAL;
-               goto iocnak;
-           }
-           x = *(int *) mp->b_cont->b_rptr;
-           if (x < PPP_MTU)
-               x = PPP_MTU;
-           x += PPP_HDRLEN + PPP_FCSLEN;
-           if (x > 4096) {     /* couldn't allocb something this big */
-               i->ioc_error = EINVAL;
-               goto iocnak;
-           }
-           p->pai_buffsize = x;
-           i->ioc_count  = 0;
-           goto iocack;
-
-       case SIOCGIFMRU :
-           if ((mp->b_cont = allocb(sizeof(int), BPRI_MED)) != NULL) {
-               *(int *) mp->b_cont->b_wptr = 
-                   p->pai_buffsize - (PPP_HDRLEN + PPP_FCSLEN);
-               mp->b_cont->b_wptr += i->ioc_count  = sizeof(int);
-               goto iocack;
-           }
-           i->ioc_error = ENOSR;
-           goto iocnak;
-      
-       case SIOCGIFASYNCMAP :
-           if ((mp->b_cont = allocb(sizeof(u_int32_t), BPRI_MED)) != NULL) {
-               *(u_int32_t *) mp->b_cont->b_wptr = p->pai_asyncmap[0];
-               mp->b_cont->b_wptr += i->ioc_count = sizeof(u_int32_t);
-               goto iocack;
-           }
-           i->ioc_error = ENOSR;
-           goto iocnak;
-
-       case SIOCSIFASYNCMAP :
-           if ((i->ioc_count != TRANSPARENT) &&
-               (i->ioc_count != sizeof(u_int32_t))) {
-               i->ioc_error = EINVAL;
-               goto iocnak;    /* ugh, goto */
-           }
-           p->pai_asyncmap[0] = *(u_int32_t *) mp->b_cont->b_rptr;
-           DLOG("ppp_async: SIFASYNCMAP %lx\n", p->pai_asyncmap[0]);
-           i->ioc_count = 0;
-           goto iocack;
-
-       case SIOCGIFRASYNCMAP :
-           if ((mp->b_cont = allocb(sizeof(u_int32_t), BPRI_MED)) != NULL) {
-               *(u_int32_t *) mp->b_cont->b_wptr = p->pai_rasyncmap;
-               mp->b_cont->b_wptr += i->ioc_count = sizeof(u_int32_t);
-               goto iocack;
-           }
-           i->ioc_error = ENOSR;
-           goto iocnak;
-
-       case SIOCSIFRASYNCMAP :
-           if ((i->ioc_count != TRANSPARENT) &&
-               (i->ioc_count != sizeof(u_int32_t))) {
-               i->ioc_error = EINVAL;
-               goto iocnak;    /* ugh, goto */
-           }
-           p->pai_rasyncmap = *(u_int32_t *) mp->b_cont->b_rptr;
-           DLOG("ppp_async: SIFRASYNCMAP %lx\n", p->pai_rasyncmap);
-           i->ioc_count = 0;
-           goto iocack;
-
-       case SIOCGIFXASYNCMAP :
-           if ((mp->b_cont = allocb(sizeof(ext_accm), BPRI_MED)) != NULL) {
-               bcopy(p->pai_asyncmap, mp->b_cont->b_wptr, sizeof(ext_accm));
-               mp->b_cont->b_wptr += i->ioc_count = sizeof(ext_accm);
-               goto iocack;
-           }
-           i->ioc_error = ENOSR;
-           goto iocnak;
-
-       case SIOCSIFXASYNCMAP :
-           if ((i->ioc_count != TRANSPARENT) &&
-               (i->ioc_count != sizeof(ext_accm))) {
-               i->ioc_error = EINVAL;
-               goto iocnak;    /* ugh, goto */
-           }
-           bcopy(*mp->b_cont->b_rptr, p->pai_asyncmap, sizeof(ext_accm));
-           p->pai_asyncmap[1] = 0;             /* can't escape 20-3f */
-           p->pai_asyncmap[2] &= ~0x40000000;  /* can't escape 5e */
-           p->pai_asyncmap[3] |= 0x60000000;   /* must escape 7d, 7e */
-           i->ioc_count = 0;
-           goto iocack;
-
-       case SIOCGIFDEBUG :
-           if ((mp->b_cont = allocb(sizeof(int), BPRI_MED)) != NULL) {
-               *(int *)mp->b_cont->b_wptr =
-                   (unsigned)(p->pai_flags & PAI_FLAGS_ALL_DEBUG)
-                       / PAI_FLAGS_DEBUG |
-                   (p->pai_flags & PAI_FLAGS_HIBITS);
-               mp->b_cont->b_wptr += i->ioc_count = sizeof(int);
-               goto iocack;
-           }
-           i->ioc_error = ENOSR;
-           goto iocnak;
-
-       case SIOCSIFDEBUG :
-           if ((i->ioc_count != TRANSPARENT) &&
-               (i->ioc_count != sizeof(int))) {
-               i->ioc_error = EINVAL;
-               goto iocnak;    /* ugh, goto */
-           }
-           flags = *(int *)mp->b_cont->b_rptr;
-           DLOG("ppp_async: SIFIFDEBUG %x\n", flags);
-           p->pai_flags &= ~PAI_FLAGS_ALL_DEBUG | PAI_FLAGS_HIBITS;
-           p->pai_flags |= ((unsigned) flags * PAI_FLAGS_DEBUG)
-               & PAI_FLAGS_ALL_DEBUG;
-           i->ioc_count = 0;
-           goto iocack;
-
-       iocack:;
-           mp->b_datap->db_type = M_IOCACK;
-           qreply(q,mp);
-           break;
-       iocnak:;
-           i->ioc_count = 0;
-           mp->b_datap->db_type = M_IOCNAK;
-           qreply(q, mp);
-           break;
-       default:                                /* unknown IOCTL call */
-           putnext(q,mp);              /* pass it along */
-       }
-       break;
-
-    default:
-       putnext(q, mp); /* don't know what to do with this, so send it along*/
-    }
-}
-
-static int
-ppp_async_wsrv(q)
-    queue_t    *q;
-{
-    register u_char    *cp, *wp;
-    register PAI       *p;
-    register u_short   fcs;
-    register mblk_t    *mp, *m0;
-    mblk_t     *cop, *outgoing;
-    int proto, len, olen, c;
-
-    p = (PAI *) q->q_ptr;
-
-    while ((mp = getq(q)) != NULL) {
-       /*
-        * we can only get M_DATA types into our Queue,
-        * due to our Put function
-        */
-       if (!canput(q->q_next)) {
-           putbq(q, mp);
-           return;
-       }
-
-       /* at least a header required */
-       len = msgdsize(mp);
-       if (len < PPP_HDRLEN
-           || (mp->b_wptr - mp->b_rptr < PPP_HDRLEN
-               && !pullupmsg(mp, PPP_HDRLEN))) {       
-           freemsg(mp);                /* discard the message */
-           DLOG("ppp_async: short message (%d)\n", len);
-           /* indicate output err */
-           putctl1(OTHERQ(q), M_CTL, IF_OUTPUT_ERROR);
-           continue;
-       }
-
-       /* Do address/control and protocol compression */
-       proto = (mp->b_rptr[2] << 8) + mp->b_rptr[3];
-       if (p->pai_flags & PAI_FLAGS_COMPAC && proto != PPP_LCP
-           && mp->b_rptr[0] == PPP_ALLSTATIONS && mp->b_rptr[1] == PPP_UI) {
-           mp->b_rptr += 2;
-           if (p->pai_flags & PAI_FLAGS_COMPPROT && proto < 0xff)
-               ++mp->b_rptr;
-       } else if (p->pai_flags & PAI_FLAGS_COMPPROT && proto < 0xff) {
-           mp->b_rptr[2] = mp->b_rptr[1];
-           mp->b_rptr[1] = mp->b_rptr[0];
-           ++mp->b_rptr;
-       }
-
-       m0 = mp;                /* remember first message block */
-       fcs = PPP_INITFCS;
-
-       /*
-        * Estimate the required buffer length as 1.25 * message length
-        * to allow for escaped characters.  If this isn't enough, we
-        * allocate another buffer later.
-        */
-       olen = len + (len >> 2) + 5;
-       if (olen < 32)
-           olen = 32;
-       else if (olen > 2048)
-           olen = 2048;
-       outgoing = cop = allocb(olen, BPRI_MED);
-       if (outgoing == NULL) {
-           DLOG("allocb(%d) failed!\n", olen);
-           /* should do something tricky here */
-           goto nobuffs;
-       }
-       wp = cop->b_wptr;
-
-       /* Put the initial flag in (we'll take it out later if we don't
-          need it). */
-       *wp++ = PPP_FLAG;
-       --olen;
-
-#define        SPECIAL(p, c)   (p->pai_asyncmap[(c) >> 5] & (1 << ((c) & 0x1F)))
-
-       /*
-        * Copy the message to the output block, escaping characters
-        * as needed.
-        */
-       while (mp) {
-           for (cp = mp->b_rptr; cp < mp->b_wptr; ) {
-               c = *cp++;
-               if (olen < 2) {
-                   /* grab another message block and put it on the end */
-                   cop->b_wptr = wp;
-                   olen = 256;
-                   cop = allocb(olen, BPRI_MED);
-                   if (cop == NULL)
-                       goto nobuffs;
-                   linkb(outgoing, cop);
-                   wp = cop->b_wptr;
-               }
-               if (SPECIAL(p, c)) {
-                   *wp++ = PPP_ESCAPE;
-                   *wp++ = c ^ PPP_TRANS;
-                   olen -= 2;
-               } else {
-                   *wp++ = c;
-                   --olen;
-               }
-               fcs = PPP_FCS(fcs, c);
-           }
-           mp = mp->b_cont; /* look at the next block */
-       }                                       /* end while(mp) */
-
-       /*
-        * Add the FCS and the trailing flag.
-        */
-       if (olen < 5) {
-           /* grab another message block for FCS and trailing flag */
-           cop->b_wptr = wp;
-           cop = allocb(5, BPRI_MED);
-           if (cop == NULL)
-               goto nobuffs;
-           linkb(outgoing, cop);
-           wp = cop->b_wptr;
-       }
-       fcs ^= 0xffff;                          /* XOR the resulting FCS */
-       c = fcs & 0xff;
-       if (SPECIAL(p, c)) {
-           *wp++ = PPP_ESCAPE;
-           *wp++ = c ^ PPP_TRANS;
-       } else
-           *wp++ = c;
-       c = fcs >> 8;
-       if (SPECIAL(p, c)) {
-           *wp++ = PPP_ESCAPE;
-           *wp++ = c ^ PPP_TRANS;
-       } else
-           *wp++  = c;
-       *wp++ = PPP_FLAG;       /* add trailing PPP_FLAG */
-
-       cop->b_wptr = wp;
-       freemsg(m0);
-
-       /*
-        * now we check to see if the lower queue has entries, if so,
-        * we assume that we don't need a leading PPP_FLAG because
-        * these packets will be sent back to back.
-        */
-       if (qsize(q->q_next) > 0) {
-           /* entries in next queue, remove the leading PPP_FLAG */
-           ++outgoing->b_rptr;
-       }
-
-#if DEBUGS
-       if (p->pai_flags & PAI_FLAGS_LOG_OUTPKT)
-           ppp_dump_frame(p, outgoing, " sent output");
-#endif
-       putnext(q, outgoing);
-       continue;
-
-    nobuffs:   /* well, we ran out of memory somewhere */
-       if (outgoing)
-           freemsg(outgoing);          /* throw away what we have already */
-       putbq(q, m0);                   /* put back the original message */
-       putctl1(OTHERQ(q), M_CTL, IF_OUTPUT_ERROR);
-       qenable(q);                     /* reschedule ourselves for later */
-       return;
-    } /* end while(getq()) */
-}      /* end function */                                      
-
-static int
-ppp_async_rput(q, mp)
-    queue_t *q;
-    register mblk_t *mp;
-{
-    switch (mp->b_datap->db_type) {
-    
-    case M_FLUSH:
-       if(*mp->b_rptr & FLUSHR)
-           flushq(q, FLUSHDATA);
-       putnext(q, mp);         /* send it along too */
-       break;
-    
-    case M_DATA:
-       putq(q, mp);            /* queue it for my service routine */
-       break;
-    
-    default:
-       putnext(q,mp);  /* don't know what to do with this, so send it along */
-    }
-}
-
-static u_int32_t paritytab[8] = {
-    0x96696996, 0x69969669, 0x69969669, 0x96696996,
-    0x69969669, 0x96696996, 0x96696996, 0x69969669,
-};
-