DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦ce8df3c55⟧ Ada Source

    Length: 26624 (0x6800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Tcp, seg_02538f

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



with Io_Exceptions;
with Mac_Types;
package Tcp is


    type B_16 is range 0 .. 65535;
    subtype B_32 is Mac_Types.Longint;

    subtype Ip_Addr is B_32;     -- IP address is 32-bits

    type Wdsentry is
        record
            Length : B_16;      -- length of buffer
            Ptr : Mac_Types.Ptr;    -- pointer to buffer
        end record;

    type Rdsentry is
        record
            Length : B_16;      -- length of buffer
            Ptr : Mac_Types.Ptr;    -- pointer to buffer
        end record;

    type Stream_Ptr is private;

    subtype Ip_Port is B_16;

-- ICMPMsgType
    Netunreach : constant := 0;
    Hostunreach : constant := 1;
    Protocolunreach : constant := 2;
    Portunreach : constant := 3;
    Fragreqd : constant := 4;
    Sourceroutefailed : constant := 5;
    Timeexceeded : constant := 6;
    Parmproblem : constant := 7;
    Missingoption : constant := 8;
    Lasticmpmsgtype : constant := 65535;

    type Icmpreport is
        record
            Streamptr : Stream_Ptr;
            Localhost : Ip_Addr;
            Localport : Ip_Port;
            Remotehost : Ip_Addr;
            Remoteport : Ip_Port;
            Reporttype : B_32;   -- ICMPMsgType
            Optionaladdlinfo : B_16;
            Optionaladdlinfoptr : B_32;
        end record;


-- typedef OSErr (*OSErrProcPtr)(...);
-- typedef Ptr (*PtrProcPtr)();
-- typedef Boolean (*BooleanProcPtr)();
-- typedef void (*voidProcPtr)();


-- TCPEventCode
    Tcpclosing : constant := 1;
    Tcpulptimeout : constant := 2;
    Tcpterminate : constant := 3;
    Tcpdataarrival : constant := 4;
    Tcpurgent : constant := 5;
    Tcpicmpreceived : constant := 6;
    Lastevent : constant := 65535;


-- TCPTerminationReason
    Tcpremoteabort : constant := 2;
    Tcpnetworkfailure : constant := 3;
    Tcpsecprecmismatch : constant := 4;
    Tcpulptimeoutterminate : constant := 5;
    Tcpulpabort : constant := 6;
    Tcpulpclose : constant := 7;
    Tcpserviceerror : constant := 8;
    Lastreason : constant := 65535;

-- typedef pascal void (*TCPNotifyProc) (
--  stream_ptr tcpStream,
--  unsigned short eventCode,
--  Ptr userDataPtr,
--  unsigned short terminReason,
--  struct ICMPReport *icmpMsg);

-- typedef void (*TCPIOCompletionProc) (struct TCPiopb *iopb);

    subtype Tcp_Port is B_16;

-- ValidityFlags
    Timeoutvalue : constant := 16#80#;
    Timeoutaction : constant := 16#40#;
    Typeofservice : constant := 16#20#;
    Precedence : constant := 16#10#;

-- TOSFlags
    Lowdelay : constant := 16#01#;
    Throughput : constant := 16#02#;
    Reliability : constant := 16#04#;

    type Other_Options is array (1 .. 40) of Mac_Types.Byte;

    type Tcpopenpb is
        record
            Fill1 : Mac_Types.Longint;
            Fill2 : Mac_Types.Longint;
            Fill3 : Mac_Types.Longint;
            Iocompletion : Mac_Types.Procptr;  -- TCPIOCompletionProc;
            Ioresult : Mac_Types.Integer;
            Ionameptr : Mac_Types.Stringptr;
            Iovrefnum : Mac_Types.Integer;
            Iocrefnum : Mac_Types.Integer;
            Cscode : Mac_Types.Integer;
            Tcpstream : Stream_Ptr;
            Ulptimeoutvalue : Mac_Types.Byte;
            Ulptimeoutaction : Mac_Types.Byte;
            Validityflags : Mac_Types.Byte;
            Commandtimeoutvalue : Mac_Types.Byte;
            Remotehost : Ip_Addr;
            Remoteport : Tcp_Port;
            Localhost : Ip_Addr;
            Localport : Tcp_Port;
            Tosflags : Mac_Types.Byte;
            Precedence : Mac_Types.Byte;
            Dontfrag : Boolean;
            Timetolive : Mac_Types.Byte;
            Security : Mac_Types.Byte;
            Optioncnt : Mac_Types.Byte;
            Options : Other_Options;
            Userdataptr : Mac_Types.Ptr;
        end record;
    type Tcpopenpbptr is access Tcpopenpb;

    type Tcpsendpb is
        record
            Fill1 : Mac_Types.Longint;
            Fill2 : Mac_Types.Longint;
            Fill3 : Mac_Types.Longint;
            Iocompletion : Mac_Types.Procptr;  -- TCPIOCompletionProc;
            Ioresult : Mac_Types.Integer;
            Ionameptr : Mac_Types.Stringptr;
            Iovrefnum : Mac_Types.Integer;
            Iocrefnum : Mac_Types.Integer;
            Cscode : Mac_Types.Integer;
            Tcpstream : Stream_Ptr;
            Ulptimeoutvalue : Mac_Types.Byte;
            Ulptimeoutaction : Mac_Types.Byte;
            Validityflags : Mac_Types.Byte;
            Pushflag : Boolean;
            Urgentflag : Boolean;
            Wdsptr : Mac_Types.Ptr;
            Sendfree : Mac_Types.Longint;
            Sendlength : B_16;
            Userdataptr : Mac_Types.Ptr;
        end record;
    type Tcpsendpbptr is access Tcpsendpb;

    type Tcpreceivepb is
        record  -- for receive and return rcv buff calls
            Fill1 : Mac_Types.Longint;
            Fill2 : Mac_Types.Longint;
            Fill3 : Mac_Types.Longint;
            Iocompletion : Mac_Types.Procptr;  -- TCPIOCompletionProc;
            Ioresult : Mac_Types.Integer;
            Ionameptr : Mac_Types.Stringptr;
            Iovrefnum : Mac_Types.Integer;
            Iocrefnum : Mac_Types.Integer;
            Cscode : Mac_Types.Integer;
            Tcpstream : Stream_Ptr;
            Commandtimeoutvalue : Mac_Types.Byte;
            Filler : Mac_Types.Byte;
            Markflag : Boolean;
            Urgentflag : Boolean;
            Rcvbuff : Mac_Types.Ptr;
            Rcvbufflen : B_16;
            Rdsptr : Mac_Types.Ptr;
            Rdslength : B_16;
            Secondtimestamp : B_16;
            Userdataptr : Mac_Types.Ptr;
        end record;
    type Tcpreceivepbptr is access Tcpreceivepb;

    type Histobucket is
        record
            Value : B_16;
            Counter : Mac_Types.Longint;
        end record;

    Numofhistobuckets : constant := 7;
    type Histobuckets is array (1 .. Numofhistobuckets) of Histobucket;

    type Tcpconnectionstats is
        record
            Datapktsrcvd : Mac_Types.Longint;
            Datapktssent : Mac_Types.Longint;
            Datapktsresent : Mac_Types.Longint;
            Bytesrcvd : Mac_Types.Longint;
            Bytesrcvddup : Mac_Types.Longint;
            Bytesrcvdpastwindow : Mac_Types.Longint;
            Bytessent : Mac_Types.Longint;
            Bytesresent : Mac_Types.Longint;
            Numhistobuckets : B_16;
            Sentsizehisto : Histobuckets;
            Lastrtt : B_16;
            Tmrsrtt : B_16;
            Rttvariance : B_16;
            Tmrrto : B_16;
            Sendtries : Mac_Types.Byte;
            Sourchquenchrcvd : Mac_Types.Byte;
        end record;
    type Tcpconnectionstatsptr is access Tcpconnectionstats;

    type Tcpstatuspb is
        record
            Fill1 : Mac_Types.Longint;
            Fill2 : Mac_Types.Longint;
            Fill3 : Mac_Types.Longint;
            Iocompletion : Mac_Types.Procptr;  -- TCPIOCompletionProc;
            Ioresult : Mac_Types.Integer;
            Ionameptr : Mac_Types.Stringptr;
            Iovrefnum : Mac_Types.Integer;
            Iocrefnum : Mac_Types.Integer;
            Cscode : Mac_Types.Integer;
            Tcpstream : Stream_Ptr;
            Ulptimeoutvalue : Mac_Types.Byte;
            Ulptimeoutaction : Mac_Types.Byte;
            Unused : Mac_Types.Longint;
            Remotehost : Ip_Addr;
            Remoteport : Tcp_Port;
            Localhost : Ip_Addr;
            Localport : Tcp_Port;
            Tosflags : Mac_Types.Byte;
            Precedence : Mac_Types.Byte;
            Connectionstate : Mac_Types.Byte;
            Sendwindow : B_16;
            Rcvwindow : B_16;
            Amtunackeddata : B_16;
            Amtunreaddata : B_16;
            Securitylevelptr : Mac_Types.Ptr;
            -- HEMS-HEMP stats
            Sendunacked : Mac_Types.Longint;
            Sendnext : Mac_Types.Longint;
            Congestionwindow : Mac_Types.Longint;
            Rcvnext : Mac_Types.Longint;
            Srtt : Mac_Types.Longint;
            Lastrtt : Mac_Types.Longint;
            Sendmaxsegsize : Mac_Types.Longint;
            Connstatptr : Tcpconnectionstatsptr;
            Userdataptr : Mac_Types.Ptr;
        end record;
    type Tcpstatuspbptr is access Tcpstatuspb;

    type Tcpparam is
        record
            Tcprtoa : Mac_Types.Longint;
            Tcprtomin : Mac_Types.Longint;
            Tcprtomax : Mac_Types.Longint;
            Tcpmaxsegsize : Mac_Types.Longint;
            Tcpmaxconn : Mac_Types.Longint;
            Tcpmaxwindow : Mac_Types.Longint;
        end record;
    type Tcpparamptr is access Tcpparam;

    type Tcpstats is
        record
            Tcpconnattempts : Mac_Types.Longint;
            Tcpconnopened : Mac_Types.Longint;
            Tcpconnaccepted : Mac_Types.Longint;
            Tcpconnclosed : Mac_Types.Longint;
            Tcpconnaborted : Mac_Types.Longint;
            Tcpoctetsin : Mac_Types.Longint;
            Tcpoctetsout : Mac_Types.Longint;
            Tcpoctetsindup : Mac_Types.Longint;
            Tcpoctetsretrans : Mac_Types.Longint;
            Tcpinputpkts : Mac_Types.Longint;
            Tcpoutputpkts : Mac_Types.Longint;
            Tcpduppkts : Mac_Types.Longint;
            Tcpretranspkts : Mac_Types.Longint;
        end record;
    type Tcpstatsptr is access Tcpstats;


-- Opens the MacTCP driver.
-- Can raise Device_Error, Timeout_Error
    procedure Open_Tcp_Driver;

-- Creates a new TCP stream in preparation for initiating a connection.
-- A buffer must be provided for storing incoming data waiting to be processed
-- Can raise Device_Error, Timeout_Error
    procedure Low_Tcp_Create_Stream (A_Stream : out Stream_Ptr;
                                     Connectionbuffer : Mac_Types.Ptr;
                                     Connbufferlen : Natural;
                                     Notify_Proc : Mac_Types.Procptr;
                                     Userdataptr : Mac_Types.Ptr);

-- If TCPWaitForConnection is called asynchronously, this command retrieves the
-- result of the call.  It should be called when the above command completes.
-- Can raise Device_Error, Timeout_Error
    procedure Low_Finish_Tcp_Wait_For_Connection (Pb : in out Tcpopenpbptr;
                                                  Remotehost : out Ip_Addr;
                                                  Remoteport : out Tcp_Port;
                                                  Localhost : out Ip_Addr;
                                                  Localport : out Tcp_Port);

-- Waits for a connection to be opened on a specified port from a specified address.
-- It completes when a connection is made, or a timeout value is reached.  This call
-- may be made asynchronously.
-- Can raise Device_Error, Timeout_Error
    procedure Low_Tcp_Wait_For_Connection (A_Stream : Stream_Ptr;
                                           Timeout : Mac_Types.Byte;
                                           Remotehost : in out Ip_Addr;
                                           Remoteport : in out Tcp_Port;
                                           Localhost : out Ip_Addr;
                                           Localport : in out Tcp_Port;
                                           Async : Boolean;
                                           Userdataptr : Mac_Types.Ptr;
                                           Returnblock : out Tcpopenpbptr);

-- Attempts to initiate a connection with a host specified by host and port.
-- Can raise Device_Error, Timeout_Error
    procedure Low_Tcp_Open_Connection (A_Stream : Stream_Ptr;
                                       Timeout : Mac_Types.Byte;
                                       Remotehost : Ip_Addr;
                                       Remoteport : Tcp_Port;
                                       Localhost : out Ip_Addr;
                                       Localport : in out Tcp_Port;
                                       Userdataptr : Mac_Types.Ptr);

-- This routine should be called when a TCPSendData call completes.  It returns the
-- error code generated upon completion of the CallTCPSend.
-- Can raise Device_Error, Timeout_Error
    procedure Low_Finish_Tcp_Send (Pb : in out Tcpsendpbptr);

-- Sends data through an open connection stream.  Note that the connection must be
-- open before any data is sent. This call may be made asynchronously.
-- Can raise Device_Error, Timeout_Error
    procedure Low_Tcp_Send_Data (A_Stream : Stream_Ptr;
                                 Timeout : Mac_Types.Byte;
                                 Push : Boolean;
                                 Urgent : Boolean;
                                 Wdsptr : Mac_Types.Ptr;
                                 Async : Boolean;
                                 Userdataptr : Mac_Types.Ptr;
                                 Returnblock : out Tcpsendpbptr);

--
-- Can raise Device_Error, Timeout_Error
    procedure Low_Finish_Tcp_No_Copy_Rcv (Pb : in out Tcpreceivepbptr;
                                          Urgent : out Boolean;
                                          Mark : out Boolean);

--
-- Can raise Device_Error, Timeout_Error
    procedure Low_Tcp_No_Copy_Rcv (A_Stream : Stream_Ptr;
                                   Timeout : Mac_Types.Byte;
                                   Urgent : out Boolean;
                                   Mark : out Boolean;
                                   Rdsptr : Mac_Types.Ptr;
                                   Numentry : B_16;
                                   Async : Boolean;
                                   Userdataptr : Mac_Types.Ptr;
                                   Returnblock : out Tcpreceivepbptr);

--
-- Can raise Device_Error, Timeout_Error
    procedure Low_Tcp_Bfr_Return
                 (A_Stream : Stream_Ptr; Rdsptr : Mac_Types.Ptr);

-- If the below is called asynchronously, this routine returns the data that was
-- received from the remote host.
-- Can raise Device_Error, Timeout_Error
    procedure Low_Finish_Tcp_Recv (Pb : in out Tcpreceivepbptr;
                                   Urgent : out Boolean;
                                   Mark : out Boolean;
                                   Rcvlen : out B_16);

-- Attempts to pull data out of the incoming stream for a connection. If data is
-- not present, the routine waits a specified amout of time before returning with
-- a timeout error.  This call may be made asynchronously.
-- Can raise Device_Error, Timeout_Error
    procedure Low_Tcp_Recv_Data (A_Stream : Stream_Ptr;
                                 Timeout : Mac_Types.Byte;
                                 Urgent : out Boolean;
                                 Mark : out Boolean;
                                 Rcvbuff : Mac_Types.Ptr;
                                 Rcvlen : in out B_16;
                                 Async : Boolean;
                                 Userdataptr : Mac_Types.Ptr;
                                 Returnblock : out Tcpreceivepbptr);

-- Gracefully closes a connection with a remote host.  This is not always possible,
-- and the programmer might have to resort to CallTCPAbort, described next.
-- Can raise Device_Error, Timeout_Error
    procedure Low_Tcp_Close (A_Stream : Stream_Ptr; Timeout : Mac_Types.Byte);

-- Should be called if a CallTCPClose fails to close a connection properly.
-- This call should not normally be used to terminate connections.
-- Can raise Device_Error, Timeout_Error
    procedure Low_Tcp_Abort (A_Stream : Stream_Ptr);

--
-- Can raise Device_Error, Timeout_Error
    procedure Low_Tcp_Status (A_Stream : Stream_Ptr;
                              Thestatus : out Tcpstatuspb);

-- Deallocates internal buffers used to hold connection data. This should be
-- called after a connection has been closed.
-- Can raise Device_Error, Timeout_Error
    procedure Low_Tcp_Release (A_Stream : Stream_Ptr;
                               Recvptr : out Mac_Types.Ptr;
                               Recvlen : out Mac_Types.Longint);

--
-- Can raise Device_Error, Timeout_Error
    procedure Low_Tcp_Global_Info
                 (Tcpparam : out Tcpparamptr; Tcpstat : out Tcpstatsptr);

-- Returns the IP address of the local computer.
-- Can raise Device_Error, Timeout_Error
    procedure Get_My_Ip (Ipnum : out Ip_Addr);

-- Kills any pending calls to the TCP driver
-- Can raise Device_Error, Timeout_Error
    procedure Low_Kill_Tcp (Pb : Tcpopenpbptr);
    procedure Low_Kill_Tcp (Pb : Tcpsendpbptr);
    procedure Low_Kill_Tcp (Pb : Tcpreceivepbptr);

    Device_Error : exception renames Io_Exceptions.Device_Error;
    Timeout_Error : exception;

private

    type Stream_Ptr is new Mac_Types.Longint;

end Tcp;

E3 Meta Data

    nblk1=19
    nid=16
    hdr6=24
        [0x00] rec0=26 rec1=00 rec2=01 rec3=04e
        [0x01] rec0=23 rec1=00 rec2=12 rec3=056
        [0x02] rec0=23 rec1=00 rec2=02 rec3=01e
        [0x03] rec0=18 rec1=00 rec2=03 rec3=016
        [0x04] rec0=1b rec1=00 rec2=04 rec3=01c
        [0x05] rec0=1a rec1=00 rec2=06 rec3=018
        [0x06] rec0=1a rec1=00 rec2=05 rec3=078
        [0x07] rec0=1a rec1=00 rec2=07 rec3=044
        [0x08] rec0=1c rec1=00 rec2=09 rec3=00c
        [0x09] rec0=18 rec1=00 rec2=13 rec3=03e
        [0x0a] rec0=10 rec1=00 rec2=14 rec3=076
        [0x0b] rec0=10 rec1=00 rec2=0b rec3=06e
        [0x0c] rec0=12 rec1=00 rec2=08 rec3=034
        [0x0d] rec0=15 rec1=00 rec2=10 rec3=048
        [0x0e] rec0=15 rec1=00 rec2=11 rec3=038
        [0x0f] rec0=12 rec1=00 rec2=0f rec3=034
        [0x10] rec0=1a rec1=00 rec2=15 rec3=014
        [0x11] rec0=0b rec1=00 rec2=0e rec3=000
        [0x12] rec0=08 rec1=08 rec2=08 rec3=040
        [0x13] rec0=40 rec1=40 rec2=40 rec3=202
        [0x14] rec0=02 rec1=02 rec2=02 rec3=010
        [0x15] rec0=10 rec1=10 rec2=10 rec3=080
        [0x16] rec0=80 rec1=80 rec2=80 rec3=404
        [0x17] rec0=04 rec1=04 rec2=04 rec3=020
        [0x18] rec0=20 rec1=20 rec2=20 rec3=101
    tail 0x217202d6a83a23ec6eda1 0x42a00088462060003
Free Block Chain:
  0x16: 0000  00 0d 00 1f 00 1c 20 20 20 20 20 20 20 20 20 20  ┆                ┆
  0xd: 0000  00 17 03 fb 00 3c 20 20 20 20 20 20 20 20 20 20  ┆     <          ┆
  0x17: 0000  00 0c 00 1f 80 1c 20 20 20 54 69 6d 65 6f 75 74  ┆         Timeout┆
  0xc: 0000  00 18 03 fc 80 43 68 65 6e 20 61 20 63 6f 6e 6e  ┆     Chen a conn┆
  0x18: 0000  00 0a 00 12 80 0f 20 49 74 20 63 6f 6d 70 6c 65  ┆       It comple┆
  0xa: 0000  00 19 03 fc 80 2d 54 63 70 5f 43 72 65 61 74 65  ┆     -Tcp_Create┆
  0x19: 0000  00 00 00 21 80 09 6f 75 74 5f 45 72 72 6f 72 09  ┆   !  out_Error ┆