(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) (FILECREATED " 2-Apr-87 13:04:14" ("compiled on " {ERIS}LIBRARY>TCPLLIP.;42) "31-Mar-87 21:33:35" brecompiled changes%: \IPNETADDRESS \IP.READ.STRING.ADDRESS in "Xerox Lisp 31-Mar-87 ..." dated "31-Mar-87 21:58:30") (FILECREATED " 2-Apr-87 12:57:31" {ERIS}LIBRARY>TCPLLIP.;42 129634 changes to%: (FILES TCPHTE TCPLLAR) (VARS TCPLLIPCOMS) (FNS \IPNETADDRESS \IP.READ.STRING.ADDRESS) previous date%: "18-Mar-87 15:51:28" {ERIS}LIBRARY>TCPLLIP.;41) DODIP.HOSTP :D4 (I 0 NAME) @d3 (7 IPHOSTADDRESS) NIL () IPHOSTADDRESS :D4 (P 1 ADDRESS P 0 ENTRY I 0 NAME) 3@ ` H@ I` I@`I(36 SASSOC 19 \IP.READ.STRING.ADDRESS 9 GETHASH 3 U-CASE) (47 \IP.HOSTNUMBERS 43 \IP.HOSTNUMBERS 33 \IP.HOSTNUMBERS 23 HOSTS.TXT.ENTRY 6 \IP.HOSTNAMES) () IPHOSTNAME :D4 (I 0 IPADDRESS) @`  @ (16 MKATOM 13 \IP.ADDRESS.TO.STRING 6 SASSOC) (3 \IP.HOSTNUMBERS) () IPTRACEA0001 :D4 NIL hdNIL (7 IPTRACEFILE 3 IPTRACEFLG) () IPTRACE :D4 (I 0 MODE) P` ` ;o g` o` `gg `gg @(72 PUTWINDOWPROP 59 PUTWINDOWPROP 46 DSPFONT 35 DSPSCROLL 22 CREATEW 13 OPENW 5 WINDOWP) (77 IPTRACEFLG 69 IPTRACEA0001 66 CLOSEFN 63 IPTRACEFILE 56 IPTRACEWINDOW.BUTTONFN 53 BUTTONEVENTFN 50 IPTRACEFILE 43 IPTRACEFILE 32 IPTRACEFILE 29 ON 25 IPTRACEFILE 10 IPTRACEFILE 2 IPTRACEFILE) ( 40 (GACHA 8) 19 "IP Trace File") IPTRACEWINDOW.BUTTONFN :D4 (I 0 WINDOW) s`lHj HH T`idiggh@ o@ `diogoo@ o@ @ h(110 TERPRI 106 PRIN1 98 PRIN1 67 PRIN1 59 TERPRI 26 \FZEROP 2 GETMOUSESTATE) (83 PEEK 70 IPTRACEFLG 55 IPTRACEFLG 48 PEEK 44 PEEK 32 IPTRACEFLG 6 LASTMOUSEBUTTONS) ( 102 "]" 94 "off" 89 "peek" 79 "on" 63 "[Tracing ") PRINTIPA0001 :D4 (NAME SI::*UNWIND-PROTECT* I 0 SI::*CLEANUP-FORMS* F 0 IP F 1 FILE F 2 MACRO) PQlRNIL NIL () PRINTIP :D4 (P 3 SI::*RESETFORMS* P 2 LENGTH P 1 MACRO P 0 PROTOCOL I 4 DOFILTER I 3 PRE.NOTE I 2 FILE I 1 CALLER I 0 IP F 4 IPPROTOCOLTYPES) 8B`b@"!DD`H`h`3H`,AgAdgggAgggB CB CB oB @ll B oB @ll B B H`YroB @ZB oB oB JlB oB B oB HTB B JloB @IohB B @gB hhhg  (309 CL:VALUES-LIST 305 SI::RESETUNWIND 302 \MVLIST 299 PRINTIPA0001 283 OUTPUT 271 TERPRI 266 PRINTIPDATA 252 PRIN1 238 TERPRI 234 PRINTCONSTANT 228 PRIN1 219 TERPRI 214 PRIN1 205 PRIN2 196 PRIN1 187 PRIN1 178 PRIN2 169 PRIN1 152 TERPRI 147 PRIN1 143 \IP.ADDRESS.TO.STRING 140 \GETBASEFIXP 130 PRIN1 121 PRIN1 117 \IP.ADDRESS.TO.STRING 114 \GETBASEFIXP 104 PRIN1 95 PRIN1 89 TERPRI 82 PRIN1) (296 SI::RESETUNWIND 279 OUTPUT 156 IPPRINTMACROS 78 ? 74 + 69 RAWGET 63 GET 58 ! 52 RAWPUT 45 PUT 38 IPIGNORETYPES 32 IPIGNORETYPES 25 IPONLYTYPES 20 IPONLYTYPES 4 IPTRACEFILE) ( 261 (BYTES 12 |...|) 248 "Contents: " 224 "Protocol = " 210 ")" 192 " (header + " 183 " bytes" 165 "Length = " 126 " to " 100 "From ") PRINTIPDATA :D4 (P 2 LENGTH P 1 DATA I 3 FILE I 2 OFFSET I 1 MACRO I 0 IP) -@HlHC@HHCIBAJC h(41 PRINTPACKETDATA) NIL () \IPADDRESSCLASS :D4 (L (0 IPADDRESS)) &@dlgdlgjgNIL (35 \IP.CLASS.A 26 \IP.CLASS.B 16 \IP.CLASS.C) () \IPEVENTFN :D4 (I 0 EVENT) `@ (8 \IPINIT) (2 \IPFLG) () \IPHOSTADDRESS :D4 (P 0 NETFIELD I 0 IPADDRESS) :@Hdln@ Xdln@ jn@ j(53 LDB 41 LDB 25 LDB) NIL () \IPNETADDRESS :D4 (P 0 NETFIELD I 0 IPADDRESS) :@Hdln@ Xdln@ jn@ j(53 LDB 41 LDB 25 LDB) NIL () \IP.ADDRESS.TO.STRINGA0001 :D4 (NAME SI::*UNWIND-PROTECT* I 0 SI::*CLEANUP-FORMS* F 0 IPADDRESS) +PmloPmloPmloPl (40 CONCAT) NIL ( 32 "." 21 "." 10 ".") \IP.ADDRESS.TO.STRING :D4 (P 0 SI::*RESETFORMS* I 0 IPADDRESS) $gl hhhg  (33 CL:VALUES-LIST 29 SI::RESETUNWIND 26 \MVLIST 23 \IP.ADDRESS.TO.STRINGA0001 7 RADIX) (20 SI::RESETUNWIND 2 RADIX) () \IP.BROADCAST.ADDRESS :D4 (P 0 HOSTADDRESS I 0 IPADDRESS) 9@ Hj-@ dgHo dgHngHl(30 EQP 15 \IPADDRESSCLASS 3 \IPHOSTADDRESS) (47 \IP.CLASS.C 35 \IP.CLASS.B 19 \IP.CLASS.A) ( 27 16777215) \IP.LEGAL.ADDRESS :D4 (L (0 ADDRESS)) .@jh'@mh@bl@bl@jNIL NIL () \IP.MAKE.BROADCAST.ADDRESS :D4 (I 0 IPADDRESS) .@ dg@odg@ng@l(43 SHOULDNT 3 \IPADDRESSCLASS) (33 \IP.CLASS.C 21 \IP.CLASS.B 7 \IP.CLASS.A) ( 15 16777215) \IP.PRINT.ADDRESSA0001 :D4 (NAME SI::*UNWIND-PROTECT* I 0 SI::*CLEANUP-FORMS* F 0 FILE F 1 IPADDRESS) DQmlP oP QmlP oP QmlP oP QlP Q(64 PRIN1 56 PRIN1 48 PRIN1 37 PRIN1 29 PRIN1 18 PRIN1 10 PRIN1) NIL ( 52 "." 33 "." 14 ".") \IP.PRINT.ADDRESS :D4 (P 0 SI::*RESETFORMS* I 1 FILE I 0 IPADDRESS) $gl hhhg  (33 CL:VALUES-LIST 29 SI::RESETUNWIND 26 \MVLIST 23 \IP.PRINT.ADDRESSA0001 7 RADIX) (20 SI::RESETUNWIND 2 RADIX) () \IP.READ.STRING.ADDRESS :D4 (P 4 CHAR P 2 TEMP P 1 INDEX P 0 CELL I 0 STRING.OR.ATOM)  lgjd jd@ d Kdj kپKdj _NKؽKdj lD_Nk^MVOONON¼IlAJdl;Ll.HHIJǿjIkԹl0LLl9Jl Ll0غJlHHIJǿIlRl_dHHjHHkOHHlHHl(69 %%ARRAY-TYPE-NUMBER 46 %%ARRAY-BASE 29 %%ARRAY-OFFSET 15 MKSTRING 9 ARRAY) (270 ARRAYP 264 ARRAYP 253 ARRAYP 247 ARRAYP 232 ARRAYP 226 ARRAYP 216 ARRAYP 210 ARRAYP 187 ARRAYP 181 ARRAYP 132 ARRAYP 126 ARRAYP 4 BYTE) () STOPIP :D4 NIL g g g h(17 DEL.PROCESS 11 \DEL.PACKET.FILTER 5 \DEL.PACKET.FILTER) (24 \IPFLG 21 \IP.READY 14 \IPLISTENER 8 \HANDLE.RAW.AR 2 \HANDLE.RAW.IP) () \IPINIT :D4 (P 30 NETADDRESS P 29 MASK P 28 LOCALADDR P 21 NDB P 20 NET P 19 TYPE P 18 ADDRESS P 17 NDB P 16 NET.AND.TYPE P 10 ADDR P 6 STREAM P 5 NAME P 2 ADDRESS.STRING P 1 NDB P 0 PROC I 0 EVENT F 31 \3MBLOCALNDB F 32 \10MBLOCALNDB F 33 \AR.IP.TO.10MB.ALIST) @d(g!@g@g@g@gmhdddhhhddcBg @ g Ai ` g o ]M`-`gg Nd N  o ``o ] M`d `,` `o `d8@ `"d_ _O Oh__Oh_O"` ` ho ZJ h`dz`dgd``hdKdgg%dggdgggggdLdgdo ` `` `` ``rO_ O O_$O _&O  O&dlW>l W@O*O(O*O$O(O*_OOh__O_O_Oh_`k .` W@W>YhI`I``oo ```cO0_8O._:O,ZO2g @ ig g kggg H#oggg` i` h _ for no name): " 200 "Please supply the name of a HOSTS.TXT file, or to ignore this: " 174 "Problem with local IP init file" 118 "Please enter the name of the IP initialization file for this host: ") \IPLISTENER :D4 (P 0 \AR.WAKEUP.TIMER) Gl n:l n``n: H HHl n`(62 \CLOCK0 48 \AR.DAEMON 43 TIMEREXPIRED? 38 \IP.CHECK.REASSEMBLY.TIMEOUTS 34 AWAIT.EVENT 18 \CLOCK0 5 \CLOCK0) (53 FIXP 28 \IP.WAKEUP.EVENT 12 \IP.WAKEUP.TIMER) () \HANDLE.RAW.IP :D4 (P 0 NDB I 1 TYPE I 0 IP F 2 \ICMP.TRANSIT.TIME.EXCEEDED) @ Ho@ Hdl AnhlAnhoH `@ @dl@Cl `@g`o @ p@"YjI@ \@ @ P @R @ ?@ 0@ b1`&i@g`hi o` `@ ii@g`hi o` (259 PRIN1 246 PRINTIP 228 \IP.HAND.TO.PROTOCOL 217 PRIN1 204 PRINTIP 177 \HANDLE.RAW.IP.FRAGMENT 171 \IP.FRAGMENTED.PACKET 165 \RELEASE.ETHERPACKET 160 \ICMP.TIME.EXCEEDED 153 \FZEROP 148 \FORWARD.IP 142 \IP.LOCAL.DESTINATION 136 \IP.PROCESS.OPTIONS 116 \RELEASE.ETHERPACKET 111 PRINTPACKET 91 \IP.CHECKSUM.OK 88 \IPCHECKSUM 70 \RELEASE.ETHERPACKET 61 ERROR 18 ERROR) (256 IPTRACEFILE 240 IPTRACEFILE 237 GET 222 IPTRACEFLG 214 IPTRACEFILE 198 IPTRACEFILE 195 GETFRAGMENT 184 IPTRACEFLG 104 IPTRACEFILE 101 GET 96 IPTRACEFLG 65 \IP.READY 9 NDB) ( 253 "+" 211 "+" 108 "[Packet dropped--bad IP header checksum]" 54 "Unknown net type" 14 "No NDB in ETHERPACKET!") \FORWARD.IP :D4 (P 7 FORWARDING.FUNCTION P 6 ROUTE P 5 SUBNETINUSE P 4 SUBNETMASK P 3 SOURCEADDRESS P 2 NDB P 1 NETADDRESS P 0 DESTADDRESS I 0 IP F 8 \ICMP.REDIRECT.NET) `@ll H !@ Z[` 1JLKLHL iJI` ^$JS@g@ldmMHL ` ZHd mYd` _@JINlO@ @W @ (172 \RELEASE.ETHERPACKET 167 \ICMP.REDIRECT 160 \RELEASE.ETHERPACKET 141 SASSOC 129 \IPHOSTADDRESS 120 SASSOC 114 \IPNETADDRESS 73 SASSOC 61 EQP 44 SASSOC 22 \IPNETADDRESS 15 \GETBASEFIXP) (138 \IP.GATEWAY.FORWARDING.FUNCTIONS 117 \IP.LOCAL.NETWORKS 87 FREE 84 ETHERPACKET 70 \IP.ROUTING.TABLE 41 \IP.SUBNET.MASKS 35 NDB 29 ETHERPACKET 2 \IP.GATEWAY.FLG) () \IP.LOCAL.DESTINATION :D4 (P 3 I P 1 LOCALNETADDRESS P 0 \INTERRUPTABLE I 0 IP) `@l&l@ `` ` I` v` h` j bI dl`jIǿJNHInANn\[ILذInAN\[IL؂IKٹNk^INIL NIL () \IP.CHECKSUM.OK :D4 (L (0 CHECKSUM)) @n@jNIL NIL () \IP.SET.CHECKSUM :D4 (I 3 CHECKSUMWORD I 2 NBYTES I 1 CHECKSUMBASE I 0 PACKET) @ABC CHdnmnh(6 \IPCHECKSUM) NIL () \IP.HAND.TO.PROTOCOL :D4 (P 2 IPSOCKET P 1 PROTOCOLCHAIN P 0 PROTOCOL I 0 IP) P@"AH` Y@ll 0@l '@I ZI@kKJI @JlLh(44 \IP.FIND.PROTOCOL.SOCKET 36 \ICMP.DEST.UNREACHABLE 28 \IP.BROADCAST.ADDRESS 25 \GETBASEFIXP 13 \IP.FIND.PROTOCOL) (62 IPSOCKET 10 \IP.PROTOCOLS) () \IP.DEFAULT.INPUTFN :D4 (P 0 \INTERRUPTABLE I 1 IPSOCKET I 0 IP) 9AA@ A@ AAkA (54 NOTIFY.EVENT 31 \ENQUEUE 17 \RELEASE.ETHERPACKET) (49 IPSOCKET 39 IPSOCKET 35 IPSOCKET 25 IPSOCKET 9 IPSOCKET 3 IPSOCKET) () \IP.DEFAULT.NOSOCKETFN :D4 (I 0 IP) W@l&HdjH#lHHlHoH j@ll @l @ (84 \RELEASE.ETHERPACKET 79 \ICMP.DEST.UNREACHABLE 72 \IP.BROADCAST.ADDRESS 69 \GETBASEFIXP 56 ERROR) NIL ( 52 "Illegal address class") \IP.ADD.PROTOCOL :D4 (P 0 SOCKET I 4 ICMPFN I 3 INPUTFN I 2 NOSOCKETFN I 1 SOCKETCOMPAREFN I 0 PROTOCOL) `dH@hi`d@dACgIdJ BgIdJDgIdJIdJ dl`IdJ`(93 CREATE.EVENT) (130 \IP.PROTOCOLS 126 \IP.PROTOCOLS 112 |SYSQUEUETYPE#| 80 \RELEASE.ETHERPACKET 64 \IP.DEFAULT.NOSOCKETFN 48 \IP.DEFAULT.INPUTFN 30 |IPSOCKETTYPE#| 13 IPSOCKET 2 \IP.PROTOCOLS) () \IP.DELETE.PROTOCOL :D4 (P 0 PROTOCOLCHAIN I 0 PROTOCOL) 1@ H'HH@ H` i(42 DREMOVE 32 \IP.CLOSE.SOCKET 3 \IP.FIND.PROTOCOL) (45 \IP.PROTOCOLS 39 \IP.PROTOCOLS 26 IPSOCKET 21 IPSOCKET 13 IPSOCKET) () \IP.FIND.PROTOCOL :D4 (L (0 PROTOCOL)) `d@hNIL (2 \IP.PROTOCOLS) () \IP.FIND.PROTOCOL.SOCKET :D4 (P 0 RESULT I 1 PROTOCOLCHAIN I 0 IP) /A@" b Ad@AlIX AbiHA(8 \IP.FIND.PROTOCOL) NIL () \IP.FIND.SOCKET :D4 (L (1 SOCKETCHAIN 0 SOCKET#)) A@AAAbhANIL NIL () \IP.OPEN.SOCKET :D4 (P 2 NewSocket P 1 OldSocket P 0 MasterSocket I 5 INPUTFN I 4 NOSOCKETFN I 3 DESTSOCKETCOMPAREFN I 2 NOERRORFLG I 1 SOCKET I 0 PROTOCOL) @ HAH YBIoI `HdKdAd@CHdLDHdMEH dN dg_dO dl`_dOZHJJ(118 CREATE.EVENT 35 ERROR 21 \IP.FIND.SOCKET 3 \IP.FIND.PROTOCOL) (151 IPSOCKET 136 |SYSQUEUETYPE#| 112 \RELEASE.ETHERPACKET 100 IPSOCKET 85 IPSOCKET 70 IPSOCKET 44 IPSOCKET 39 |IPSOCKETTYPE#| 10 IPSOCKET) ( 31 "Attempt to open an existing socket") \IP.CLOSE.SOCKET :D4 (P 0 SOCKETCHAIN I 2 NOERRORFLG I 1 PROTOCOL I 0 SOCKET) KA HHBo@ h$@HHHhHX(21 ERROR 3 \IP.FIND.PROTOCOL) (68 IPSOCKET 58 IPSOCKET 53 IPSOCKET 49 IPSOCKET 40 IPSOCKET 35 IPSOCKET 26 IPSOCKET) ( 17 "Socket not found") \HANDLE.RAW.IP.FRAGMENTA0001 :D4 (NAME SI::*UNWIND-PROTECT* P 0 AssemblyRecord I 0 SI::*CLEANUP-FORMS* F 1 IP) `hg Q HQ hQ (29 \IP.ADD.FRAGMENT 23 \IP.NEW.FRAGMENT.LST 13 \IP.FIND.MATCHING.FRAGMENTS 9 OBTAIN.MONITORLOCK) (6 WITH.MONITOR 2 \IP.FRAGMENT.LOCK) () \HANDLE.RAW.IP.FRAGMENT :D4 (P 1 SI::*RESETFORMS* P 0 SI::*LOCKED-MONITOR* I 0 IP)  g  (18 CL:VALUES-LIST 14 SI::MONITOR-UNWIND 11 \MVLIST 8 \HANDLE.RAW.IP.FRAGMENTA0001) (5 SI::MONITOR-UNWIND) () \IP.NEW.FRAGMENT.LST :D4 (P 7 AssemblyRecord P 6 AssemblyPacket P 5 FragmentRecord P 4 NewFragmentID P 3 ID P 2 Protocol P 1 Dest P 0 Source I 0 IP) @ll @ll @"@ t @I_J_K_H_jl @"n_@!<@@Chd]hOh_OOOO\`id@` O^d@ N_lOCM@_lOCM@ L`h(179 \RELEASE.ETHERPACKET 140 \IP.COPY.FRAGMENT.HEADER.TO.PACKET.HEADER 130 \IP.PRINT.FRAGMENT 56 \CLOCK0 49 \ALLOCATE.ETHERPACKET 17 \GETBASEFIXP 8 \GETBASEFIXP) (187 \IP.FRAGMENT.LIST 183 \IP.FRAGMENT.LIST 127 IPTRACEFILE 119 IPTRACEFLG) () \IP.COPY.FRAGMENT.HEADER.TO.PACKET.HEADER :D4 (I 1 Fragment I 0 Packet) Alj@ljAC (19 \MOVEBYTES) NIL () \IP.ADD.FRAGMENT :D4 (P 14 Status P 13 End P 12 FragTail P 10 OldFragTail P 8 Status P 4 AssemblyPacket P 3 NextHole P 2 Fragments P 1 NewFrag P 0 AssemblyRecord I 1 NewIP I 0 FragmentID) @qA!@lHAmlǿ@lHkAmlǿ@lHlAmlǿ@lHlAlǿ@ldlZJYB@ldCkCI(21 \PUTBASEFIXP) NIL () \IP.APPEND.STRING :D4 (P 0 LENGTH I 1 STRING I 0 IP) ?AAjA AAjA A@l@H @ldHYI(47 \MOVEBYTES 31 %%ARRAY-OFFSET 16 %%ARRAY-BASE) NIL () \IP.APPEND.WORD :D4 (P 1 NEWLENGTH P 0 OFFSET I 2 INHEADER I 1 WORD I 0 IP) O@!Hkj@HA@lHAmlǿ@lHkAlǿ@ldlZJYB@IlCINIL NIL () \IP.GET.BYTE :D4 (I 2 INHEADER I 1 BYTE I 0 IP) B@lЎ@HlHCANIL NIL () \IP.GET.CELL :D4 (I 2 INHEADER I 1 CELL I 0 IP) B@lЎ@HlHCA (25 \GETBASEFIXP) NIL () \IP.GET.STRING :D4 (I 3 INHEADER I 2 NCHARS I 1 BYTEOFFSET I 0 IP) C@lЎ@HlHCAB (26 \GETBASESTRING) NIL () \IP.GET.WORD :D4 (L (2 INHEADER 1 WORD 0 IP)) B@lЎ@HlHCANIL NIL () \IP.PUT.BYTE :D4 (I 3 INHEADER I 2 VALUE I 1 BYTE I 0 IP) C@lЎ@HlHCABNIL NIL () \IP.PUT.CELL :D4 (I 3 INHEADER I 2 VALUE I 1 CELL I 0 IP) C@lЎ@HlHCAB (26 \PUTBASEFIXP) NIL () \IP.PUT.STRING :D4 (I 3 INHEADER I 2 STRING I 1 BYTEOFFSET I 0 IP) C@lЎ@HlHCAB (26 \PUTBASESTRING) NIL () \IP.PUT.WORD :D4 (L (3 INHEADER 2 VALUE 1 WORD 0 IP)) C@lЎ@HlHCABBNIL NIL () (PRETTYCOMPRINT TCPLLIPCOMS) (RPAQQ TCPLLIPCOMS ((COMS (* ;; "IP definitions and addressing") (DECLARE%: DONTCOPY (EXPORT (RECORDS IP IPSOCKET IPADDRESS) (CONSTANTS \IPOVLEN \MAX.IPDATALENGTH \IP.PROTOCOLVERSION \IP.MAX.EPKTS.ON.QUEUE \IP.DEFAULT.TIME.TO.LIVE \IP.WAKEUP.INTERVAL) (CONSTANTS * IPPACKETTYPES) ( CONSTANTS * ICMPUNREACHABLES) (MACROS \IPDATABASE \IPDATALENGTH))) (INITVARS (IPONLYTYPES) ( IPIGNORETYPES) (IPPRINTMACROS) (IPTRACEFLG) (IPTRACEFILE) (\IP.INIT.FILE) (\IP.DEFAULT.CONFIGURATION) (\IP.HOSTNAMES (HASHARRAY 40 1.1)) (\IP.HOSTNUMBERS)) (INITRECORDS IP IPSOCKET IPADDRESS) (GLOBALVARS IPTRACEFILE IPTRACEFLG IPIGNORETYPES IPONLYTYPES IPPRINTMACROS \IP.HOSTNAMES \IP.INIT.FILE \IP.DEFAULT.CONFIGURATION \IP.HOSTNUMBERS) (FILES (SYSLOAD) TCPHTE TCPLLICMP TCPLLAR) (ADDVARS ( \PACKET.PRINTERS (2048 . PRINTIP))) (FNS DODIP.HOSTP IPHOSTADDRESS IPHOSTNAME IPTRACE IPTRACEWINDOW.BUTTONFN PRINTIP PRINTIPDATA \IPADDRESSCLASS \IPEVENTFN \IPHOSTADDRESS \IPNETADDRESS \IP.ADDRESS.TO.STRING \IP.BROADCAST.ADDRESS \IP.LEGAL.ADDRESS \IP.MAKE.BROADCAST.ADDRESS \IP.PRINT.ADDRESS \IP.READ.STRING.ADDRESS)) (COMS (* ;; "Startup and shutdown") (INITVARS (\IPFLG) ( \IP.READY) (\IP.READY.EVENT (CREATE.EVENT "IP Ready")) (\IP.WAKEUP.TIMER) (IPTRACEFLG) ( \IP.WAKEUP.EVENT (CREATE.EVENT "IP Wakeup"))) (GLOBALVARS \IPFLG \IP.READY \IP.READY.EVENT \IP.WAKEUP.TIMER \IP.WAKEUP.EVENT) (FNS STOPIP \IPINIT \IPLISTENER) (ADDVARS (AROUNDEXITFNS \IPEVENTFN ) (RESTARTETHERFNS \IPEVENTFN))) (COMS (* ;; "Early IP reception functions") (DECLARE%: DONTCOPY ( EXPORT (CONSTANTS * IPADDRESSTYPES))) (INITVARS (\IP.LOCAL.ADDRESSES) (\IP.SUBNET.MASKS) ( \IP.GATEWAY.FLG)) (VARS (\IP.ADDRESS.BOX (\CREATECELL \FIXP))) (GLOBALVARS \IP.LOCAL.ADDRESSES \IP.SUBNET.MASKS \IP.GATEWAY.FLG \IP.ADDRESS.BOX) (MACROS \IP.FIX.DEST.HOST \IP.FIX.DEST.NET \IP.FIX.SOURCE.HOST \IP.FIX.SOURCE.NET) (FNS \HANDLE.RAW.IP \FORWARD.IP \IP.LOCAL.DESTINATION \IPCHECKSUM \IP.CHECKSUM.OK \IP.SET.CHECKSUM)) (COMS (* ;; "Protocol Distribution") (DECLARE%: DONTCOPY (EXPORT (CONSTANTS * IPPROTOCOLTYPES))) (INITVARS (\IP.PROTOCOLS)) (GLOBALVARS \IP.PROTOCOLS) (FNS \IP.HAND.TO.PROTOCOL \IP.DEFAULT.INPUTFN \IP.DEFAULT.NOSOCKETFN \IP.ADD.PROTOCOL \IP.DELETE.PROTOCOL \IP.FIND.PROTOCOL \IP.FIND.PROTOCOL.SOCKET \IP.FIND.SOCKET \IP.OPEN.SOCKET \IP.CLOSE.SOCKET)) (COMS (* ;; "Fragmentation Handling") (DECLARE%: DONTCOPY (EXPORT (RECORDS AssemblyRecord FragmentRecord FragmentID))) (INITVARS (\IP.FRAGMENT.LIST) (\IP.FRAGMENT.LOCK ( CREATE.MONITORLOCK "IP Fragment Processing Lock"))) (GLOBALVARS \IP.FRAGMENT.LIST \IP.FRAGMENT.LOCK) ( CONSTANTS (\IP.FRAGMENTATION.UNIT 8)) (FNS \HANDLE.RAW.IP.FRAGMENT \IP.NEW.FRAGMENT.LST \IP.COPY.FRAGMENT.HEADER.TO.PACKET.HEADER \IP.ADD.FRAGMENT \IP.FIND.MATCHING.FRAGMENTS \IP.FRAGMENTED.PACKET \IP.CHECK.REASSEMBLY.TIMEOUTS \IP.DELETE.FRAGMENT \IP.PRINT.FRAGMENT)) (COMS (* ;; "Option Processing") (DECLARE%: DONTCOPY (EXPORT (CONSTANTS * IPOPTIONTYPES) (CONSTANTS ( IP.OPTION.NUMBER.BYTESPEC (BYTE 5 0))))) (FNS \IP.PROCESS.OPTIONS)) (COMS (* ;; "Packet Transmission and routing") (INITVARS (\IP.ROUTING.TABLE (CONS)) (\IP.DEFAULT.GATEWAY) ( \IP.LOCAL.NETWORKS) (\IP.GATEWAY.FORWARDING.FUNCTIONS)) (GLOBALVARS \IP.ROUTING.TABLE \IP.DEFAULT.GATEWAY \IP.LOCAL.NETWORKS \IP.GATEWAY.FORWARDING.FUNCTIONS) (FNS \IP.SETUPIP \IP.TRANSMIT \IP.ROUTE.PACKET) (FNS IP.GET IP.SEND IP.PACKET.WATCHER) (MACROS IP.SEND)) (COMS (* ;; "Client functions for building packets") (FNS \IP.APPEND.BYTE \IP.APPEND.CELL \IP.APPEND.STRING \IP.APPEND.WORD \IP.GET.BYTE \IP.GET.CELL \IP.GET.STRING \IP.GET.WORD \IP.PUT.BYTE \IP.PUT.CELL \IP.PUT.STRING \IP.PUT.WORD) (MACROS \IP.GET.BYTE \IP.GET.CELL \IP.GET.STRING \IP.GET.WORD \IP.PUT.BYTE \IP.PUT.CELL \IP.PUT.STRING \IP.PUT.WORD)) (ADVISE \CANONICAL.HOSTNAME))) (RPAQ? IPONLYTYPES) (RPAQ? IPIGNORETYPES) (RPAQ? IPPRINTMACROS) (RPAQ? IPTRACEFLG) (RPAQ? IPTRACEFILE) (RPAQ? \IP.INIT.FILE) (RPAQ? \IP.DEFAULT.CONFIGURATION) (RPAQ? \IP.HOSTNAMES (HASHARRAY 40 1.1)) (RPAQ? \IP.HOSTNUMBERS) (/DECLAREDATATYPE (QUOTE IPSOCKET) (QUOTE (BYTE POINTER BYTE POINTER WORD WORD POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE ((IPSOCKET 0 (BITS . 7)) (IPSOCKET 0 POINTER) (IPSOCKET 2 (BITS . 7) ) (IPSOCKET 2 POINTER) (IPSOCKET 4 (BITS . 15)) (IPSOCKET 5 (BITS . 15)) (IPSOCKET 6 POINTER) ( IPSOCKET 8 POINTER) (IPSOCKET 10 POINTER) (IPSOCKET 12 POINTER) (IPSOCKET 14 POINTER) (IPSOCKET 16 POINTER))) (QUOTE 18)) (FILESLOAD (SYSLOAD) TCPHTE TCPLLICMP TCPLLAR) (ADDTOVAR \PACKET.PRINTERS (2048 . PRINTIP)) (RPAQ? \IPFLG) (RPAQ? \IP.READY) (RPAQ? \IP.READY.EVENT (CREATE.EVENT "IP Ready")) (RPAQ? \IP.WAKEUP.TIMER) (RPAQ? IPTRACEFLG) (RPAQ? \IP.WAKEUP.EVENT (CREATE.EVENT "IP Wakeup")) (ADDTOVAR AROUNDEXITFNS \IPEVENTFN) (ADDTOVAR RESTARTETHERFNS \IPEVENTFN) (RPAQ? \IP.LOCAL.ADDRESSES) (RPAQ? \IP.SUBNET.MASKS) (RPAQ? \IP.GATEWAY.FLG) (RPAQ \IP.ADDRESS.BOX (\CREATECELL \FIXP)) (PUTPROPS \IP.FIX.DEST.HOST MACRO (LAMBDA (IP NDB) (* ejs%: "26-Dec-84 15:07") (replace (IP IPDESTINATIONHOST) of IP with (ffetch (NDB NDBIPHOST#) of NDB)))) (PUTPROPS \IP.FIX.DEST.NET MACRO (LAMBDA (IP NDB) (* ejs%: "26-Dec-84 15:08") (* * Put the IP net# corresponding to the given NDB into the destination net field of the dest address of the IP packet) ( replace (IP IPDESTINATIONADDRESS) of IP with (LOGOR (fetch (IP IPDESTINATIONADDRESS) of IP) (LLSH ( fetch (NDB NDBIPNET#) of NDB) (SELECTQ (\IPADDRESSCLASS (fetch (NDB NDBIPHOST#) of NDB)) (\IP.CLASS.A 24) (\IP.CLASS.B 16) (\IP.CLASS.C 8) (SHOULDNT))))))) (PUTPROPS \IP.FIX.SOURCE.HOST MACRO (LAMBDA (IP NDB) (* ejs%: "26-Dec-84 15:07") (replace (IP IPSOURCEHOST) of IP with (ffetch (NDB NDBIPHOST#) of NDB)))) (PUTPROPS \IP.FIX.SOURCE.NET MACRO (LAMBDA (IP NDB) (* ejs%: "26-Dec-84 15:08") (* * Put the IP net# corresponding to the given NDB into the destination net field of the dest address of the IP packet) ( replace (IP IPSOURCENET) of IP with (ffetch (NDB NDBIPNET#) of NDB)))) (RPAQ? \IP.PROTOCOLS) (RPAQ? \IP.FRAGMENT.LIST) (RPAQ? \IP.FRAGMENT.LOCK (CREATE.MONITORLOCK "IP Fragment Processing Lock")) (RPAQQ \IP.FRAGMENTATION.UNIT 8) (CONSTANTS (\IP.FRAGMENTATION.UNIT 8)) (RPAQ? \IP.ROUTING.TABLE (CONS)) (RPAQ? \IP.DEFAULT.GATEWAY) (RPAQ? \IP.LOCAL.NETWORKS) (RPAQ? \IP.GATEWAY.FORWARDING.FUNCTIONS) (PUTPROPS IP.SEND MACRO (LAMBDA (IP) (* ejs%: "31-Mar-86 15:07") (\IP.TRANSMIT IP))) (PUTPROPS \IP.GET.BYTE DMACRO (LAMBDA (IP BYTE INHEADER) (* ejs%: "30-Mar-86 14:49") (* * Retrieve a byte from an IP packet. If INHEADER is T, BYTE is an offset from the start of the packet, else it's an offset from the start of the IP data section) (\GETBASEBYTE (COND (INHEADER (fetch (IP IPBASE) of IP) ) (T (\IPDATABASE IP))) BYTE))) (PUTPROPS \IP.GET.CELL DMACRO (LAMBDA (IP CELL INHEADER) (* ejs%: "30-Mar-86 15:07") (* * Retrieve a cell from an IP packet. If INHEADER is not NIL, the cell is written to the header portion of the IP packet, else it's written to the data portion. CELL is the offset, in 16-bit units) (\GETBASEFIXP ( COND (INHEADER (fetch (IP IPBASE) of IP)) (T (\IPDATABASE IP))) CELL))) (PUTPROPS \IP.GET.STRING DMACRO (LAMBDA (IP BYTEOFFSET NCHARS INHEADER) (* ejs%: "30-Mar-86 15:13") (* * Retrieve a string from an IP packet. If INHEADER is T, BYTEOFFSET is an offset from the start of the packet, else it's an offset from the start of the IP data section) (\GETBASESTRING (COND (INHEADER (fetch (IP IPBASE) of IP)) (T (\IPDATABASE IP))) BYTEOFFSET NCHARS))) (PUTPROPS \IP.GET.WORD DMACRO (LAMBDA (IP WORD INHEADER) (* ejs%: "30-Mar-86 14:51") (* * Retrieve a word from an IP packet. If INHEADER is T, WORD is an offset from the start of the packet, else it's an offset from the start of the IP data section) (\GETBASE (COND (INHEADER (fetch (IP IPBASE) of IP)) (T (\IPDATABASE IP))) WORD))) (PUTPROPS \IP.PUT.BYTE DMACRO (LAMBDA (IP BYTE VALUE INHEADER) (* ejs%: "30-Mar-86 14:52") (* * Store a byte in an IP packet. If INHEADER is T, BYTE is an offset from the start of the packet, else it's an offset from the start of the IP data section) (\PUTBASEBYTE (COND (INHEADER (fetch (IP IPBASE) of IP) ) (T (\IPDATABASE IP))) BYTE VALUE))) (PUTPROPS \IP.PUT.CELL DMACRO (LAMBDA (IP CELL VALUE INHEADER) (* ejs%: "30-Mar-86 15:06") (* * Store a cell in an IP packet. If INHEADER is not NIL, the cell is written to the header portion of the IP packet, else it's written to the data portion. CELL is the offset, in 16-bit units) (\PUTBASEFIXP ( COND (INHEADER (fetch (IP IPBASE) of IP)) (T (\IPDATABASE IP))) CELL VALUE))) (PUTPROPS \IP.PUT.STRING DMACRO (LAMBDA (IP BYTEOFFSET STRING INHEADER) (* ejs%: "30-Mar-86 15:13") (* * Store a string ib an IP packet. If INHEADER is T, BYTEOFFSET is an offset from the start of the packet, else it's an offset from the start of the IP data section) (\PUTBASESTRING (COND (INHEADER ( fetch (IP IPBASE) of IP)) (T (\IPDATABASE IP))) BYTEOFFSET STRING))) (PUTPROPS \IP.PUT.WORD DMACRO (LAMBDA (IP WORD VALUE INHEADER) (* ejs%: "30-Mar-86 14:50") (* * Store a word in an IP packet. If INHEADER is T, WORD is an offset from the start of the packet, else it's an offset from the start of the IP data section) (\PUTBASE (COND (INHEADER (fetch (IP IPBASE) of IP)) (T (\IPDATABASE IP))) WORD VALUE))) (PUTPROPS \CANONICAL.HOSTNAME READVICE (NIL (AROUND NIL (COND ((NUMBERP NAME) (IPHOSTNAME NAME)) (( IPHOSTADDRESS NAME) NAME) (T *))))) (READVISE \CANONICAL.HOSTNAME) (PUTPROPS TCPLLIP COPYRIGHT ("Xerox Corporation" 1985 1986 1987)) NIL