(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED "15-Oct-87 18:56:42" {SAFE}</B/JFINGER/RPC/X>RPCLOWLEVEL.LSP;10 4831
changes to%: (VARS RPCLOWLEVELCOMS)
previous date%: "15-Oct-87 09:49:11"
{SAFE}</B/JFINGER/RPC/X>RPCLOWLEVEL.LSP;8)
(PRETTYCOMPRINT RPCLOWLEVELCOMS)
(RPAQQ RPCLOWLEVELCOMS
((* "Copyright (c) 1987 by the Leland Stanford Junior University. All rights reserved."
)
(* "Written by Jeff Finger at the SUMEX-AIM Computing Resource at Stanford University"
"under support from National Institutes of Health Grant NIH 5P41 RR00785."
)
(* "Compiling this file requires several definitions from EXPORTS.ALL."
)
(CONSTANTS (BYTESPERCELL 4))
(FNS TCP.STREAM.SOCKET TCP.SOCKET.EVENT STRING.ZEROBYTES STRING.BOUTS
STRING.BINS \IP.APPEND.BYTES UDP.APPEND.BYTES UDP.GET.BYTES
UDP.MYGET.STRING \UDP.SET.CHECKSUM.ZERO)
(P (CHANGENAME 'UDP.SEND '\UDP.SET.CHECKSUM '\UDP.SET.CHECKSUM.ZERO))))
(*
"Copyright (c) 1987 by the Leland Stanford Junior University. All rights reserved."
)
(*
"Written by Jeff Finger at the SUMEX-AIM Computing Resource at Stanford University"
"under support from National Institutes of Health Grant NIH 5P41 RR00785.")
(* "Compiling this file requires several definitions from EXPORTS.ALL.")
(DECLARE%: EVAL@COMPILE
(RPAQQ BYTESPERCELL 4)
(CONSTANTS (BYTESPERCELL 4))
)
(DEFINEQ
(TCP.STREAM.SOCKET
(LAMBDA (STREAM) (* ; "Edited 8-Oct-87 16:08 by jjf")
(* * "Return IPSOCKET of a TCP Stream")
(fetch TCB.IPSOCKET of (fetch F1 of STREAM))))
(TCP.SOCKET.EVENT
(LAMBDA (IPSOCKET) (* ; "Edited 8-Oct-87 16:14 by jjf")
(* * "For some reason Eric did not include this function, but it is identical to UDP.SOCKET.NUMBER, anyway.")
(fetch (IPSOCKET IPSEVENT) of IPSOCKET)))
(STRING.ZEROBYTES
(LAMBDA (STRING FIRST NBYTES) (* ; "Edited 11-Oct-87 09:49 by jjf")
(* * "Zero bytes of a string")
(\ZEROBYTES (fetch (STRINGP BASE) of STRING)
FIRST
(SUB1 (IPLUS FIRST NBYTES)))))
(STRING.BOUTS
(LAMBDA (STREAM STRING FIRST NBYTES) (* ; "Edited 11-Oct-87 10:22 by jjf")
(* * "Write substring to stream")
(\BOUTS STREAM (fetch (STRINGP BASE) of STRING)
FIRST NBYTES)))
(STRING.BINS
(LAMBDA (STREAM STRING FIRST NBYTES) (* ; "Edited 11-Oct-87 13:58 by jjf")
(* * "Read substring from stream")
(\BINS STREAM (fetch (STRINGP BASE) of STRING)
FIRST NBYTES)))
(\IP.APPEND.BYTES
(LAMBDA (IP ADDR OFFSET LENGTH) (* ; "Edited 30-Jul-87 17:13 by jjf")
(* * "Append bytes (not necessarily a string) to IPPACKET. ")
(\MOVEBYTES ADDR OFFSET (fetch (IP IPBASE) of IP)
(fetch (IP IPTOTALLENGTH) of IP)
LENGTH)
(add (ffetch (IP IPTOTALLENGTH) of IP)
LENGTH)))
(UDP.APPEND.BYTES
(LAMBDA (UDP ADDR OFFSET NBYTES) (* ; "Edited 30-Jul-87 17:14 by jjf")
(* * "Append bytes (not necessarily a string) to UDP Packet")
(\IP.APPEND.BYTES UDP ADDR OFFSET NBYTES)
(add (fetch (UDP UDPLENGTH) of UDP)
NBYTES)))
(UDP.GET.BYTES
(LAMBDA (UDP SOFFSET DEST DOFFSET NBYTES)
(* ; "Edited 30-Jul-87 17:14 by jjf")
(* *
"Move bytes out of UDP Packet to another buffer without string creation")
(\MOVEBYTES (fetch (UDP UDPCONTENTS) of UDP)
SOFFSET DEST DOFFSET NBYTES)
DEST))
(UDP.MYGET.STRING
(LAMBDA (UDP OFFSET LENGTH) (* ; "Edited 30-Jul-87 17:17 by jjf")
(* * "Fetch string from packet. String does not go to end of packet as in UDP.GET.STRING.")
(OR (SMALLP OFFSET)
(SETQ OFFSET 0))
(LET* ((STRING (ALLOCSTRING LENGTH)))
(\MOVEBYTES (fetch (UDP UDPCONTENTS) of UDP)
OFFSET
(fetch (STRINGP BASE) of STRING)
(fetch (STRINGP OFFST) of STRING)
LENGTH)
STRING)))
(\UDP.SET.CHECKSUM.ZERO
(LAMBDA (UDP) (* ; "Edited 30-Jul-87 17:18 by jjf")
(* * "Avoid doing a UDP checksum. Packet already gets IP Checksum.")
(replace (UDP UDPCHECKSUM) of UDP with 0)))
)
(CHANGENAME 'UDP.SEND '\UDP.SET.CHECKSUM '\UDP.SET.CHECKSUM.ZERO)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1501 4742 (TCP.STREAM.SOCKET 1511 . 1749) (TCP.SOCKET.EVENT 1751
. 2045) (STRING.ZEROBYTES 2047 . 2324) (STRING.BOUTS 2326 . 2573) (STRING.BINS
2575 . 2821) (\IP.APPEND.BYTES 2823 . 3222) (UDP.APPEND.BYTES 3224 . 3537) (
UDP.GET.BYTES 3539 . 3909) (UDP.MYGET.STRING 3911 . 4473) (
\UDP.SET.CHECKSUM.ZERO 4475 . 4740)))))
STOP