@ B25-TCP-1@ kyOfLCB @ D <;> 8r0=9|P^ $JOB GenInstall $PauseOff $ContinueOnError ; Nationalizable messages DirMsg = 'Creating socket directories.........' InstDoneMsg = 'Installation is complete, please reboot your system.' PMCntnueMsg1 = 'B25TCP-4 contains the installation for Protocol Manager.' PMCntnueMsg2 = 'To install the fourth disk choose Install New Software' PMCntnueMsg3 = 'in the main menu of Installation Manager.' MergeMsg = 'Updating system request file.........' MergeMsg2 = 'Please wait, this may take some time.........' PtrNameMsg = 'Enter your printer name and press GO.' RifViewMsg = 'Do you wish to view the Release Notes at this time?' RifPrintMsg = 'Do you wish to print the Release Notes at this time?' UnAtndMsg1 = ' Unattended floppy installation is not supported.' UnAtndMsg2 = ' INSTALLATION IS CANCELLED' GoMsg = ' Press AEGOAA to Continue.' UserMsg1 = 'Socket directories are and .' UserMsg2 = 'Socket volume is [!sys] for public installation, [sys] otherwise.' UserMsg3 = 'FTP client API directory is ' UserMsg4 = 'FTP client volume is [!sys] for public installation, [sys] otherwise.' Question1 = 'Select the components to be installed.' Choice1 = 'TCP, IP, X.25NGI, SMTP, and FTP servers' Choice2 = 'Telnet, FTP Client, and Log reporter' Choice3 = 'Socket/ClusterShare and FTP Client API libraries' NoSelec = 'No selection was made. Select Yes to see the menu again' RemCmdMsg1 = 'Removing old Data Link Manager commands.........' FloppyFiles = 'Copying files.........' MCF = 'Merge Command Files' ; Non nationalizable messages VidLev = 0 Selected = 0 ServerSpec = '[!sys]' SwdDir = '[Sys]' SwInstal = 0 Sd1of6Msg = 'TCP Distribution Disk 1 of 6' Sd2of6Msg = 'TCP Distribution Disk 2 of 6' Sd3of6Msg = 'TCP Distribution Disk 3 of 6' Sd4of6Msg = 'TCP Distribution Disk 4 of 6' Sd5of6Msg = 'TCP Distribution Disk 5 of 6' Sd6of6Msg = 'TCP Distribution Disk 6 of 6' $RestartLabel $If InstallType = 4; SWD installation From_Sys = SwdDir From_CTOS = SwdDir From_Socket = SwdDir From_cSocket = SwdDir From_fAPI = SwdDir SwInstal = 1 $Else From_Sys = ConcatStrings(DeviceFrom,'') From_CTOS = ConcatStrings(DeviceFrom,'') From_Socket = ConcatStrings(DeviceFrom,'') From_cSocket = ConcatStrings(DeviceFrom,'') From_fAPI = ConcatStrings(DeviceFrom,'') $EndIf $If InstallType = 2; Install from server From_Sys = ServerSpec From_CTOS = ServerSpec From_Socket = ServerSpec From_fAPI = ServerSpec From_cSocket = ServerSpec $EndIf $If Unattended and InstallType = 0; Floppy installation $DisplayLine $DisplayLine $DisplayLine $DisplayLine $DisplayLine $DisplayLine (UnAtndMsg1) $DisplayLine $DisplayLine (UnAtndMsg2) $DisplayLine (GoMsg) $DisplayLine $DisplayLine $DisplayLine $Path,Sys,Sys $DisplayAndWait $Cancel $EndIf $If Unattended and InstallType > 0; unattended and not floppy Ch1 = 1 Ch2 = 1 Ch3 = 1 SWInstal = 1 $EndIf $If PUBLIC CmdFileTo = '[!Sys]Cluster.cmds' Destpath = '[!Sys]' Destpath1 = '[!Sys]' Destpath2 = '[!Sys]' Destpath3 = '[!Sys]' DefVol = '[!Sys]' $Else CmdFileTo = '[Sys]sys.cmds' Destpath = '[Sys]' Destpath1 = '[Sys]' Destpath2 = '[Sys]' Destpath3 = '[Sys]' DefVol = '[Sys]' $EndIf $If VideoLevel > 0 VidLev = 1 $EndIf $If (VideoLevel = 0) and (SWInstal = 0) $PAUSEON $EndIf; of verbosity $If (VideoLevel = 1) $EchoOff $EndIf; of videolevel $If SWInstal = 0; attended installation $RestartLabel RifFile = ConcatStrings(From_Sys,'ReleaseNotes.doc') Temp1 = UserSelectYesNo(RifViewMsg) $If Temp1 i = 0 $While (i < 10) i = i + 1 $DisplayLine $EndWhile $PauseOn $EchoOn $Command Type, RifFile, no $If VidLev > 0 $EchoOff $PauseOff $EndIf $EndIf $DeAssign(RifViewMsg) Temp1 = UserSelectYesNo(RifPrintMsg) $If Temp1 = 1 i = 0 $While (i < 10) i = i + 1 $DisplayLine $EndWhile PrintName = UserEnterValue(PtrNameMsg) P = $ConcatStrings('[',PrintName) P1 = $ConcatStrings(P,']') RifFile = $ConcatStrings(From_Sys,'ReleaseNotes.doc') $Command Copy,RifFile,P1 $EndIf $DeAssign(RifPrintMsg) $DeAssign(PtrNameMsg) ;scroll screen i = 0; $While (i < 20) i = i + 1 $DisplayLine $EndWhile $RestartLabel $While (Selected = 0) Quest = $UserSelectMultiple(Question1, Choice1, Choice2, Choice3) Ch1 =SubString(Choice1, Quest) Ch2 =SubString(Choice2, Quest) Ch3 =SubString(Choice3, Quest) ; 65535 is the value returned if no string is found ; this routine tells the user that no selection was made and repeats ; the menu display $If (Ch1 = 65535) and (Ch2 = 65535) and (Ch3 = 65535) Temp1 = $UserSelectYesNo (NoSelec, 'Yes') $If Temp1 Selected = 0 $Else Temp1 = 0 Selected = 1 DisplayLine (UnatndMsg2) DisplayLine DisplayLine (GoMsg) DisplayLine DisplayLine DisplayLine Path,Sys,Sys DisplayAndWait Cancel $EndIf $Else Temp1 = 255 Selected = 1 $EndIf $EndWhile $DeAssign(UnatndMsg1) $DeAssign(UnatndMsg2) $DeAssign(Question1) $DeAssign(Choice1) $DeAssign(Choice2) $DeAssign(Choice3) $DeAssign(Temp1) $RestartLabel $If Ch3 <> 65535; Sockets chosen $DisplayLine(UserMsg1) $DisplayLine(UserMsg2) $DisplayLine(UserMsg3) $DisplayLine(UserMsg4) $DisplayLine $DisplayLine $DisplayAndWait(GoMsg) i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile $Display(DirMsg) $Command Create Directory, (Destpath,Destpath1,Destpath3) $DisplayLine('DONE') $DisplayLine $DisplayLine $DisplayLine $DisplayLine $EndIf; Sockets chosen i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile $EndIf; SWInstal = 0 $If SWInstal = 1 $Display(DirMsg) $Command Create Directory,(Destpath,Destpath1,Destpath3) $DisplayLine('DONE') $EndIf $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(Fdsys.Version,Install.ctrl,Install.jcl), & From_Sys, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(ReleaseNotes.doc,Request.list) , & From_Sys,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(Request.TCPIP.txt,request.TCPIP.version),& From_Sys,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(tcp/ip1.cmds,TCP/IP2.Cmds),From_Sys, & ServerSpec,,yes,,no $Run [Sys]Lcopy.run,TCP.Telnet.run,From_ctos,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,TCP/IP.Params, From_ctos, ServerSpec,,yes,,no $EndIf; Public $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd2of6Msg) $DeAssign(Sd2of6Msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(echoserver.c,filedesc.h,get_time.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(multecho.c,netdb.h,netinet/in.h), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(sender_udp.c,sftp.c,socket.lib,socklim.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(sys/socket.h,sys/types.h,terminal_1.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(terminal_2.c,terminal_3.c,udp_echo.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(arpa/inet.h,bstring.h,terminal.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(sys/socompat.h), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(Pascal_First_with_BSS.asm), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(Pascal_First_with_BSS.obj), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(CSsocket.lib,IN.h,NETDB.h), & From_csocket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(SFTP.c,SOCKET.h,TYPES.h), & From_csocket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(BSTRING.h,INET.h,SOCOMPAT.h), & From_csocket,ServerSpec,,yes,,no $EndIf; Public $If Ch3 <> 65535 ; Socket/Cluster Share and FTP Client API library selected $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd2of6Msg) $DeAssign(Sd2of6Msg) $EndIf $Run [Sys]Lcopy.run,(echoserver.c,filedesc.h,get_time.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(multecho.c,netdb.h,netinet/in.h), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(sender_udp.c,sftp.c,socket.lib,socklim.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(sys/socket.h,sys/types.h,terminal_1.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(terminal_2.c,terminal_3.c,udp_echo.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(arpa/inet.h,bstring.h,terminal.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(sys/socompat.h), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(Pascal_First_with_BSS.asm), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(Pascal_First_with_BSS.obj), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(CSsocket.lib,IN.h,NETDB.h), & From_csocket,Destpath1,,yes,,no $Run [Sys]Lcopy.run,(SFTP.c,SOCKET.h,TYPES.h), & From_csocket,Destpath1,,yes,,no $Run [Sys]Lcopy.run,(BSTRING.h,INET.h,SOCOMPAT.h), & From_csocket,Destpath1,,yes,,no $EndIf ; Socket/Cluster Share library selected $DisplayLine('DONE') $If Ch2 <> 65535 $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd1of6Msg) $DeAssign(Sd1of6Msg) $EndIf $Run [Sys]Lcopy.run,TCP.Telnet.run,From_ctos,Destpath2,,yes,,no $EndIf $DisplayLine('DONE') $RestartLabel ;Copy tcp/ip.params $If Ch1 <> 65535 ; TCP, IP servers etc. copy TCP/IP.Params $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd1of6Msg) $DeAssign(Sd1of6Msg) $EndIf Temp1 = ConcatStrings(DestPath2,'tcp/ip.params will be saved as save>tcp/ip.params .') Temp1 = ConcatStrings('Existing ',Temp1) $DisplayLine(Temp1) $If SWInstal = 0 $DisplayAndWait(GoMsg) $EndIf Temp1 = ConcatStrings(DestPath2,'TCP/IP.Params') Temp2 = ConcatStrings(DestPath2,'save>') ; $Command Rename,Temp1,Temp2,yes $Run [Sys]Lcopy.run,TCP/IP.Params,DestPath2,Temp2,, & yes,,yes $DeAssign(Temp1) $DeAssign(Temp2) $Run [Sys]Lcopy.run,TCP/IP.Params,From_ctos,DestPath2,, & yes,,yes $EndIf i = 0; $While (i < 6) i = i + 1 $DisplayLine $EndWhile $If (Ch1 <> 65535) or (Ch2 <> 65535) ; servers or clients selected ;Create commands $Display('Creating Commands.........') $If Ch1 <> 65535 ; TCP, IP servers etc. tcp_cmds = ConcatStrings(From_sys,'tcp/ip1.cmds') $Run ([Sys]CmdFileEditor.run,MCF,'MC'), & tcp_cmds, CmdFileTo, yes, DefVol $EndIf $If Ch2 <> 65535 ; Telnet etc. tcp_cmds = ConcatStrings(From_sys,'tcp/ip2.cmds') $Run ([Sys]CmdFileEditor.run,MCF,'MC'), & tcp_cmds, CmdFileTo, yes, DefVol $EndIf $DisplayLine('DONE') $DeAssign(tcp_cmds) $Endif $RestartLabel i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile $DisplayLine $DisplayLine(MergeMsg) $Display(MergeMsg2) ReqFile = ConcatStrings(Destpath2,'Request.sys') TCPReqtxt = ConcatStrings(From_sys,'Request.tcpip.txt') Req_Save = ConcatStrings(Destpath2,'Save>Request.sys') Req_excl = ConcatStrings(From_sys,'Request.List') $Command Copy,ReqFile,Req_save,'yes' $Run [Sys]ListRqSet.run, ReqFile, [scr]<$>req.txt,,@Req_excl $Run [Sys]MakeRqSet.run,([scr]<$>req.txt, TCPReqtxt),ReqFile $DeAssign(ReqFile) $DeAssign(TcpReqtxt) $DeAssign(Req_excl) $DeAssign(Req_Save) $DisplayLine('DONE') i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile DestSpec = ConcatStrings(DefVol,'') $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd3of6Msg) $DeAssign(Sd3of6Msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(NGI.ValidAddress,TCP.ConfigMgr.run, & TCP.Deinstall.run), From_ctos, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(TCP.InstallX25NGI.Run,TCP.InstallIP.run, & TCP.InstallTCP.run), From_ctos, ServerSpec,,yes,,no $EndIf ;Public $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd4of6Msg) $DeAssign(Sd4of6Msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(TCP.FTPCL.run,TCP.IP.run, & TCP.OpManager.help), From_ctos, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(TCP.OpManager.run,TCP.run, & TCP.X25NGI.Run), From_ctos, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(ftp.lib,FTPLib.h,Sample.c,Sample.h), & From_fAPI, ServerSpec,,yes,,no $EndIf ;Public $If Ch1 <> 65535 ; Choice 1 selected ; Copy choice 1 files from disk 3 $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd3of6Msg) $DeAssign(Sd3of6Msg) $EndIf $Run [Sys]Lcopy.run,(TCP.ConfigMgr.run, & TCP.Deinstall.run,TCP.InstallIP.run,TCP.InstallTCP.run, & TCP.InstallX25NGI.Run), From_ctos, Destpath2,,yes,,no $Endif ; Choice 1 selected $If Ch1 <> 65535 ; Choice 1 selected ; Copy choice 1 files from disk 4 $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd4of6Msg) $DeAssign(Sd4of6Msg) $EndIf $Run [Sys]Lcopy.run,(TCP.IP.run,TCP.OpManager.help, & TCP.OPManager.run, TCP.run,TCP.X25NGI.Run), & From_ctos, Destpath2,,yes,,no $Endif ; Choice 1 selected $DisplayLine('DONE') $If Ch2 <> 65535 ; Choice 2 selected $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd4of6Msg) $DeAssign(Sd4of6Msg) $EndIf $Run [Sys]Lcopy.run,TCP.FTPCL.run,From_ctos, Destpath2,,yes,,no $EndIf $DisplayLine('DONE') $If Ch3 <> 65535; Choice 3 selected $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd4of6Msg) $DeAssign(Sd4of6Msg) $EndIf $Run [Sys]Lcopy.run,(ftp.lib,FTPLib.h,Sample.c,Sample.h), & From_fAPI, Destpath3,,yes,,no $EndIf $DisplayLine('DONE') $If Ch1 <> 65535 ; Copy NGI valid address file Temp1 = ConcatStrings(DestPath2,'NGI.ValidAddress will be saved as save>NGI.ValidAddress .') Temp1 = ConcatStrings('Existing ',Temp1) $DisplayLine(Temp1) $If SWInstal = 0 $DisplayAndWait(GoMsg) $EndIf Temp1 = ConcatStrings(DestPath2,'NGI.ValidAddress') Temp2 = ConcatStrings(DestPath2,'save>') ; $Command Rename,Temp1,Temp2,yes $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd3of6Msg) $DeAssign(Sd3of6Msg) $EndIf $Run [Sys]Lcopy.run,NGI.ValidAddress,DestPath2,Temp2,,& yes,,yes $Run [Sys]Lcopy.run,NGI.ValidAddress,From_ctos,DestPath2,, & yes,,yes $DeAssign(Temp1) $DeAssign(Temp2) $EndIf i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile $If Ch1 = 65535 and Ch2 = 65535 ; Only choice 3 selected $GoTo End_JCL $EndIf ;************************************* ; Files from third disk ;************************************* $RestartLabel $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd5of6Msg) $DeAssign(Sd5of6Msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(TCP.FTP.help,TCP.FTPClient.run,& TCP.FTPLogCtl.run), From_ctos, ServerSpec,,yes,,no $EndIf $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd6of6Msg) $DeAssign(Sd6of6Msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(TCP.FTPServer.run,TCP.LogReport.run, & TCP.Telnet.help, TCP.SMTP.run), From_ctos, ServerSpec,,yes,,no $EndIf $If Ch1 <> 65535 ; Choice 1 chosen $Run [Sys]Lcopy.run,(TCP.FTPServer.run,TCP.SMTP.run, & TCP.LogReport.run,TCP.Telnet.help),From_ctos, Destpath2,,yes,,no $EndIf $DisplayLine('DONE') $If Ch2 <> 65535 ; Choice 2 chosen ; Choice 2 chosen files from disk 5 $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd5of6Msg) $DeAssign(Sd5of6Msg) $EndIf $Run [Sys]Lcopy.run,(TCP.FTP.help,TCP.FTPClient.run), & From_ctos, Destpath2,,yes,,no $EndIf $DisplayLine('DONE') $If Ch1 <> 65535 ; Choice 2 chosen $Display('Creating FTP directory.........') ftp_dir = ConcatStrings(DefVol,'') $Command Create Directory, ftp_dir $DeAssign(ftp_dir) $DisplayLine('DONE') $EndIf End_Jcl: ; $DisplayLine(InstDoneMsg) $DisplayLine(PMCntnueMsg1) $DisplayLine(PMCntnueMsg2) $DisplayLine(PMCntnueMsg3) i = 0; $While (i < 5) i = i + 1 $DisplayLine $EndWhile $DeAssign(InstDoneMsg) $DeAssign(PMCntnueMsg1) $DeAssign(PMCntnueMsg2) $DeAssign(PMCntnueMsg3) $If (SWInstal = 0) DisplayAndWait(GoMsg) $EndIf $END Deinstall IPDeinstall SMTP ManagerDeinstall TCPDeinstall TCP FTP ServerDeinstall X.25 NGIInstall IPInstall SMTP ManagerInstall TCPInstall X.25 NGITCP/IP Configuration ManagerTCP/IP FTP ServerTCP/IP Operations Managerip<![Sys]TCP.Deinstall.runDeinstall the IP layer of TCP/IP. ma:[Sys]TCP.Deinstall.runDeinstall the TCP SMTP Manager. tc="[Sys]TCP.Deinstall.runDeinstall the TCP layer of TCP/IP. ft="[Sys]TCP.Deinstall.runDeinstall the TCP layer of TCP/IP. GI:[Sys]TCP.Deinstall.runDeinstall the X.25 NGI runfile.[Processor ID (Default = 0) ][Max X.25 VCs (Default = 10) ][Network Type (Default = DDN) ][DDN Service (Default = Standard)] 00:u[Sys]TCP.InstallIP.runInstall the IP layer of TCP/IP.[Processor ID (Default = 0)][Gateway Internet Address][Address Mask Type][Default Link Interface (Default = EDL)] 00:$[sys]TCP.SMTP.runInstall the TCP/IP SMTP Mail Manager[Name (Default=SMTP)][Password (Default=SMTP)][Inlines (Default=1)][Outlines (Default=1)][Network Name (Default=UNKNOWN)][TCP Node Name (Default=local)][Log File [sys]tcp.smtp.log][Log Level (Default=8010)][Log Size (Default=80Kb)] [Supress Convert-to-Sys( Default=No)][Timeout on Open (Default=20)][Mail ID/Center Separator (Default=|)][Timeout on Reply (Default=1)][Attachment Method (Default=C)][Relay Domains] 00< [Sys]TCP.InstallTCP.RunInstall the TCP layer of TCP/IP.[Processor ID (Default = 0)] 00<[Sys]TCP.InstallX25NGI.runInstall the X.25 NGI runfile.[Processor ID (Default = 0)][Max X.25 VCs (Default = 10)][Network Type (Default = PDN)][DDN Service (Default = Standard)][X.25 Gateway Node Name (Default = Local)] 00H>-[Sys]TCP.ConfigMgr.runInvokes the TCP/IP configuration file Parser.Input file[Listing File (default = [Sys]TCP.Config.lst] 00GV,[Sys]TCP.FTPServer.runInstall TCP/IP File Transfer Protocol Server[TCP Server Node Name(Default = Local)][Logging (Full, Summary, None (Default = S))] 00@%[Sys]TCP.OpManager.runInvoke the TCP/IP Operations Manager.. TCP/IP Clear FTP QueueTCP/IP Delete FilesTCP/IP FTP ClientTCP/IP FTP Log ControlTCP/IP Get FilesTCP/IP Log ReporterTCP/IP Put FilesTCP/IP TELNET060&[sys]TCP.FTPCL.RunCancel any queued copies.[DisplayNquit (N)][Node ( {local} )] 035[sys]TCP.FTPCL.RunDelete files on a remote host. Source File List TCP Host [User ][Password ]^[DisplayNquit (N)][Node ( {local} )][QPriority (9) ]] 00M~2[Sys]TCP.FTPClient.runInvokes TCP/IP file transfer interactive interface[FTP Server Node Name (Default = Local)][Remove Queue Entry (Default = Yes)][Inactivity Timeout Value (Default = 20 secs.)] 007R[sys]tcp.ftplogctl.runControls TCP/IP FTP logging.[FTP Server Node Name (Default = Local)][Logging(Full,Summary,None(Default = S)]01 /[sys]TCP.FTPCL.RunCopy files from TCP Host Source File List TCP Host [User ][Password ]^[Dest Files ][Record Type (A) ][DisplayNquit(N) ][Node ( {local} )][QPriority (9) ](9) ] 00?f$[Sys]TCP.LogReport.RunInvokes TCP/IP Log Reporter program.Input Name[Output Name (def LogPrtyymmdd:hhmm)][Start Time (e.g., 12:00)][Stop Time (e.g., 23:59)] 02 -[Sys]TCP.FTPCL.RunCopy files to TCP Host Source File List TCP Host [User ][Password ]^[Dest Files ][Record Type (A) ][DisplayNquit(N) ][Node ( {Node} ) ][QPriority (9) ] 9) ] 00Di,[sys]TCP.Telnet.runInvoke the TCP/IP Virtual Terminal Emulator.[TCP/IP Node Name(Default = Local) ][Narrow Font (Default = No)][VT100 Test Mode (Default = No)] s2.2.52R2.0.0300/aUS COPY [sys]Tcp/Ip.Params [sys]Tcp/Ip.Params-save  COPY [B25TCP-1]TCP* TCP* YES  %' COPY [kbd] [vid] PF Remove disk 1 of 3 from the diskette drive and insert disk 2 of 3. AEAA Press AE GO AA when Ready AEAA 1%' COPY [B25TCP-2]TCP* TCP* YES %' %' 'Create Directory %' New Directory name(s) ' [sys] %' [Default protection level (def=15)]' %' [Max # of files (Def = 75)] ' %' [Password for new directory] ' %' [Volume Password] ' %' GO'%' copy [B25TCP-2]* [sys]* yes %' 7356h 6497h 6498h 6499h 649Ah 649Bh 649Ch 649Dh 649Eh 649Fh 665Bh 7298h 7299h 729Ah 729Bh 729Ch 729Dh 729Eh 729Fh 72A0h 72A1h 72A2h 72A3h 72A4h 72A5h 72A6h 72A7h 72A8h 72A9h 72E2h 72E3h 72E4h 72E5h 72AAh 7355h %'***************************** H E A D E R ******************************** %'** ** %'** TITLE: Installation of Loadable Requests (BTOS II Only) ** %'** ** %'** FILE ID: [F0]rqInstall.Sub ** %'** ** %'** FUNCTION: This submit file will update the Request.Sys file on ** %'** the given [Vol] in the directory. ** %'** It takes only one parameter (the [Vol] as input. ** %'** ** %'** In the process, it copies the existing Request.Sys to ** %'** Request.Sys-save. ** %'** ** %'** OUTPUT: None. ** %'** ** %'** CALLED BY: [F0]Install.Sub ** %'** [F0]XEInstall.Sub ** %'** ** %'** CALLS/USES: "Install New Requests" ** %'** [Vol]Request.Sys ** %'** [f0]Request.TCPIP.txt ** %'** ** %'** ASSUMPTIONS: %0 will exist and be a valid [Volume] path. ** %'** ** %'** ** %'** HISTORY: ** %'** ** %'** mm/dd/yy Who Description ** %'** -------- --- ----------- ** %'** 06/02/89 SH Created ** %'** ** %'*****************************************************************************%' %' 'Copy %' File from '%0Request.Sys %' File to '%0Request.Sys-Save %' [Overwrite ok?] ' %' [Confirm each?] ' %' GO'%' %' %' 'List Request Set %' Request.n.Sys file(s)' %0Request.Sys %' [Output file]' %0Request.Txt %' [Include padded requests?]' %' [Exclude list]' @[f0]request.list %' GO'%' %' %' 'Copy %' File from '[Kbd] %' File to '[Sys]rqDesc2.tmp %' [Overwrite ok?] 'Yes %' [Confirm each?] ' %' GO'%' %'[Kbd] = '%0Request.Txt [f0]Request.TCPIP.Txt %' %' 'Copy %' File from '[Kbd] %' File to '[Vid] %' [Overwrite ok?] ' %' [Confirm each?] ' %' GO'%' %' %'[Kbd] = ' PF AE Request.Sys Update AA AM The following command may take some time! AA %'CANCEL'%' %' %' 'Make Request Set %' Text file(s) '@[Sys]rqDesc2.tmp %' Binary request file '%0Request.Sys %' [Error file] ' %' [Version] ' %' [Type (WS, SRP, Current) default = Current] ' %' GO'%' %' %' 'Delete %' File list '%0Request.Txt %' [Confirm each?] ' %' GO'%' %' %' 'Append %' File list from '[F0]Request.TCPIP.Version [Kbd] %' File to '%0Sys.Version %' [Confirm each?] ' %' GO'%' %' %'[Kbd] = ' Request.TCPIP.Txt merged with Request.Sys on %d|!*w! !*n! !*d!, !yyyy!, at !*t!:!0m!| %'FINISH'%' %' %' %' 'Copy %' File from '[Kbd] %' File to '[Sys]rqDesc2.tmp %' [Overwrite ok?] 'Yes %' [Confirm each?] ' %' GO'%' %'[Kbd] = PF AEA new Request.Sys has been created.AA Please ensure that you re-boot the master and all cluster workstations immediately after this software installation has been completed. AFPRESS AEGOAF TO CONTINUE SOFTWARE INSTALLATION...AA PN %' 'Copy %' File from '[Sys]rqDesc2.tmp %' File to '[Vid] %' [Overwrite ok?] 'Yes %' [Confirm each?] ' %' GO'%' %' %' Wait for the GO character'1%' %' %' %'**************************************************************************** %'***** ***** %'***** C L E A N - U P ***** %'***** ***** %'**************************************************************************** %' %' 'Delete %' File list '[Sys]rqDesc?.tmp %' [Confirm each?] ' %' GO'%' %' COPY [kbd] [vid] PF AE Start of BTOS TCP/IP COMMANDS CREATION AA ALL COMMANDS WILL BE CREATED IN SYS.CMDS THIS SYSTEM MUST BE RUNNING BTOS II. COPY [kbd] <$>rn.tmp YES %#1[Sys]%1TCP.InstallTCP.Run COPY [kbd] <$>cmd.tmp YES 'Install TCP' COPY [kbd] <$>args.tmp YES '[Processor ID (Default = 0)]' COPY [kbd] <$>desc.tmp YES 'Install the TCP layer of TCP/IP.' NEW COMMAND @<$>cmd.tmp @<$>rn.tmp @<$>args.tmp @<$>desc.tmp YES %0COPY [kbd] <$>rn.tmp YES %#1[sys]%1TCP.Deinstall.run COPY [kbd] <$>cmd.tmp YES 'Deinstall TCP' COPY [kbd] <$>desc.tmp YES 'Deinstall the TCP layer of TCP/IP.' NEW COMMAND @<$>cmd.tmp @<$>rn.tmp @<$>desc.tmp YES '\t\c' %0COPY [kbd] <$>rn.tmp YES %#1[sys]%1TCP.Deinstall.run COPY [kbd] <$>cmd.tmp YES 'Deinstall TCP SMTP Manager' COPY [kbd] <$>desc.tmp YES 'Deinstall the TCP SMTP Manager.' NEW COMMAND @<$>cmd.tmp @<$>rn.tmp @<$>desc.tmp YES '\m\a' %0COPY [kbd] <$>rn.tmp YES %#1[sys]%1TCP.ConfigMgr.run COPY [kbd] <$>cmd.tmp YES 'TCP/IP Configuration Manager' COPY [kbd] <$>args.tmp YES 'Input file' '[Listing File (default = [sys]TCP.Config.lst]' COPY [kbd] <$>desc.tmp YES 'Invokes the TCP/IP configuration file Parser.' NEW COMMAND @<$>cmd.tmp @<$>rn.tmp @<$>args.tmp @<$>desc.tmp YES %0COPY [kbd] <$>rn.tmp YES %#1[sys]%1TCP.InstallIP.run COPY [kbd] <$>cmd.tmp YES 'Install IP' COPY [kbd] <$>args.tmp YES '[Processor ID (Default = 0)]' '[Gateway Internet Address]' '[Address Mask Type]' '[Default Link Interface (Default = EDL)]COPY [kbd] <$>desc.tmp YES 'Install the IP layer of TCP/IP.' NEW COMMAND @<$>cmd.tmp @<$>rn.tmp @<$>args.tmp @<$>desc.tmp YES %0COPY [kbd] <$>rn.tmp YES %#1[sys]%1TCP.InstallX25NGI.run COPY [kbd] <$>cmd.tmp YES 'Install X.25 NGI' COPY [kbd] <$>args.tmp YES '[Processor ID (Default = 0)]' '[Max X.25 VCs (Default = 10)]' '[Network Type (Default = PDN)]' '[DDN Service (Default = Standard)]' '[X.25 Gateway Node Name (Default = Local)]' COPY [kbd] <$>desc.tmp YES 'Install the X.25 NGI runfile.' NEW COMMAND @<$>cmd.tmp @<$>rn.tmp @<$>args.tmp @<$>desc.tmp YES %0COPY [kbd] <$>rn.tmp YES %#1[sys]%1TCP.Deinstall.run COPY [kbd] <$>cmd.tmp YES 'Deinstall X.25 NGI' COPY [kbd] <$>desc.tmp YES 'Deinstall the X.25 NGI runfile.' NEW COMMAND @<$>cmd.tmp @<$>rn.tmp @<$>desc.tmp YES '\G\I' %0COPY [kbd] <$>rn.tmp YES %#1[sys]%1TCP.Deinstall.run COPY [kbd] <$>cmd.tmp YES 'Deinstall IP' COPY [kbd] <$>desc.tmp YES 'Deinstall the IP layer of TCP/IP.' NEW COMMAND @<$>cmd.tmp @<$>rn.tmp @<$>desc.tmp YES '\i\p' %0Copy [KBD] [Scr]<$>args.Tmp Yes '[Name (Default=SMTP)]' '[Password (Default=SMTP)]' '[Inlines (Default=1)]' '[Outlines (Default=1)]' '[Network Name (Default=UNKNOWN)]' '[TCP Node Name (Default=local)]' '[Log File [sys]tcp.smtp.log]' '[Log Level (Default=8010)]' '[Log Size (Default=80Kb)] ' '[Supress Convert-to-Sys( Default=No)]' '[Timeout on Open (Default=20)]' '[Mail ID/Center Separator (Default=|)]' '[Timeout on Reply (Default=1)]' '[Attachment Method (Default=C)]' '[Relay Domains]'G+G+MA??@+G% +N%?@+] +]JjXV@u("lYG+G+MA??@+G; +N;?@+] +]JYXUSQG+G+MA?x=A??@+G; +N;?@+] +]J@u(#lZG+G+MA??@+G +N?@+] +]Jj[ZG+G+MA??@+G; +N;?@+] +]J[G+G+MA?x=A??@+Gg +Ng?@+] +]JG+G+MA??P+G\1 +N 8?P+.g1]5+] +]JG+G+MA?x=A??@+G} +N}?@+] +]JR@u(&G +!+WZ? +? +]i5=d?Gq+qGq+qMA??P+?@O`WZ? +? ?P+] +]JG+G+MA?x=A??@+G +N?@+] +]JG+G+MA??P+WS? +N 8?P+-H?]5+] +]JG+G+MA?x=A??@+G +N?@+] +]JR@u(,tl\G +!+WZ? +? +]i5=d?Gq+qGq+qMA??P+?@O`WZ? +? ?P+] +]J\G+G+MA?x=A??@+G +N?@+] +]J.@u(:.@u(8WZ? +? +]i5=d?Gq+qGq+qMA??P+?@O`WZ? +? ?P+] +]JG+G+MA?x=A??@+G +N?@+] +]J.@u(6.@u(4WZ? +? +]i5=d?Gq+qGq+qMA??P+?@O`WZ? +? ?P+] +]J] ?OE/Pc?o?o?+POT+N:1pl^l]^N:1?@+]B6OE/Pc]N8 =v??1+1+]6Mv?=v?G0 +?0+1x=v?+]?G0 +?+Mv?x=v?+]?G0 +?+Mv?x=v?+]?G0 +?+Mv?x=v?+]?G0 +?+Mv?x=v?+]?G0 +?+Mv?x=v?+]?] ?OE/Pco???+POTM??@T8?O`L?l@_G+G+M??@+G +N?@+] +]Jj`_G+G+M??@+G +N?@+] +]J`M??@T8?O`M@?l@aG+G'+M??@+G +N?@+] +]JjbaG+G'+M??@+G +N?@+] +]JbM??@T8?O`M@?lAdM@?l@cdG+G0+M??@+G +N?@+] +]JjecG+G0+M??@+G +N?@+] +]Je/Pd???+POTN:1lf?@+]B6/PcjgfN@0lAhG\v+]B6jih?+]5?+]5?+]5?+]5?+]5?+]5]5GZ}+]/6igB'0/Pc???+POTB?jN?lk?@O0?>0>@0>@0>@0{?ljkB?lN'xN0?lm?p'ln@'lopGzv+]B6/Pcjq o N0??pN@1'?p00B@0 ? qjrnN0??p'ls@'ltuGzv+]B6/PcjvtN0??pN@1'?p00B0?vjwsGzv+]B6/PcwrjlmB'0 ];!];"N8 >@#?0+1+]6$N@>@%G0 +?0+1x>@+]?&G0 +?+N@x>@+]?'G0 +?+N@x>@+]?(G0 +?+N@x>@+]?)G0 +?+N@x>@+]?*G0 +?+N@x>@+]?+/Pc?,@@+POT+.@1lx/A@jy0x@2lz1A@j{2z@3l|3A@j}4|@4l~5A@j6~7Gu+]B68OE/Pd:}{yN:1l<?@+]B6=OE/Pd?B'0@];A];B-@]7C'0lDW@ +];tlF@1lG-@?+]7 $JOB GenInstall $PauseOff ; Nationalizable messages DirMsg = 'Creating socket directories.........' InstDoneMsg = 'Installation is complete, please reboot your system.' PMCntnueMsg1 = 'B25TCP-4 contains the installation for Protocol Manager.' PMCntnueMsg2 = 'To install the fourth disk choose Install New Software' PMCntnueMsg3 = 'in the main menu of Installation Manager.' MergeMsg = 'Updating system request file.........' MergeMsg2 = 'Please wait, this may take some time.........' PtrNameMsg = 'Enter your printer name and press GO.' RifViewMsg = 'Do you wish to view the Release Notes at this time?' RifPrintMsg = 'Do you wish to print the Release Notes at this time?' UnAtndMsg1 = ' Unattended floppy installation is not supported.' UnAtndMsg2 = ' INSTALLATION IS CANCELLED' GoMsg = ' Press AEGOAA to Continue.' UserMsg1 = 'Socket directories are and .' UserMsg2 = 'Socket volume is [!sys] for public installation, [sys] otherwise.' UserMsg3 = 'FTP client API directory is ' UserMsg4 = 'FTP client volume is [!sys] for public installation, [sys] otherwise.' Question1 = 'Select the components to be installed.' Choice1 = 'TCP, IP, X.25NGI, SMTP, and FTP servers' Choice2 = 'Telnet, FTP Client, and Log reporter' Choice3 = 'Socket/ClusterShare and FTP Client API libraries' NoSelec = 'No selection was made. Select Yes to see the menu again' RemCmdMsg1 = 'Removing old Data Link Manager commands.........' FloppyFiles = 'Copying files.........' MCF = 'Merge Command Files' ; Non nationalizable messages VidLev = 0 Selected = 0 ServerSpec = '[!sys]' SwdDir = '[Sys]' SwInstal = 0 Sd2of3Msg = 'TCP Distribution Disk 2 of 3' Sd3of3Msg = 'TCP Distribution Disk 3 of 3' $RestartLabel $If InstallType = 4; SWD installation From_Sys = SwdDir From_CTOS = SwdDir From_Socket = SwdDir From_cSocket = SwdDir From_fAPI = SwdDir SwInstal = 1 $Else From_Sys = ConcatStrings(DeviceFrom,'') From_CTOS = ConcatStrings(DeviceFrom,'') From_Socket = ConcatStrings(DeviceFrom,'') From_cSocket = ConcatStrings(DeviceFrom,'') From_fAPI = ConcatStrings(DeviceFrom,'') $EndIf $If InstallType = 2; Install from server From_Sys = ServerSpec From_CTOS = ServerSpec From_Socket = ServerSpec From_fAPI = ServerSpec From_cSocket = ServerSpec $EndIf $If Unattended and InstallType = 0; Floppy installation $DisplayLine $DisplayLine $DisplayLine $DisplayLine $DisplayLine $DisplayLine (UnAtndMsg1) $DisplayLine $DisplayLine (UnAtndMsg2) $DisplayLine (GoMsg) $DisplayLine $DisplayLine $DisplayLine $Path,Sys,Sys $DisplayAndWait $Cancel $EndIf $If Unattended and InstallType > 0; unattended and not floppy Ch1 = 1 Ch2 = 1 Ch3 = 1 SWInstal = 1 $EndIf $If PUBLIC CmdFileTo = '[!Sys]Cluster.cmds' Destpath = '[!Sys]' Destpath1 = '[!Sys]' Destpath2 = '[!Sys]' Destpath3 = '[!Sys]' DefVol = '[!Sys]' $Else CmdFileTo = '[Sys]sys.cmds' Destpath = '[Sys]' Destpath1 = '[Sys]' Destpath2 = '[Sys]' Destpath3 = '[Sys]' DefVol = '[Sys]' $EndIf $If VideoLevel > 0 VidLev = 1 $EndIf $If (VideoLevel = 0) and (SWInstal = 0) $PAUSEON $EndIf; of verbosity $If (VideoLevel = 1) $EchoOff $EndIf; of videolevel $If SWInstal = 0; attended installation $RestartLabel RifFile = ConcatStrings(From_Sys,'ReleaseNotes.doc') Temp1 = UserSelectYesNo(RifViewMsg) $If Temp1 i = 0 $While (i < 10) i = i + 1 $DisplayLine $EndWhile $PauseOn $EchoOn $Command Type, RifFile, no $If VidLev > 0 $EchoOff $PauseOff $EndIf $EndIf $DeAssign(RifViewMsg) Temp1 = UserSelectYesNo(RifPrintMsg) $If Temp1 = 1 i = 0 $While (i < 10) i = i + 1 $DisplayLine $EndWhile PrintName = UserEnterValue(PtrNameMsg) P = $ConcatStrings('[',PrintName) P1 = $ConcatStrings(P,']') RifFile = $ConcatStrings(From_Sys,'ReleaseNotes.doc') $Command Copy,RifFile,P1 $EndIf $DeAssign(RifPrintMsg) $DeAssign(PtrNameMsg) ;scroll screen i = 0; $While (i < 20) i = i + 1 $DisplayLine $EndWhile $RestartLabel $While (Selected = 0) Quest = $UserSelectMultiple(Question1, Choice1, Choice2, Choice3) Ch1 =SubString(Choice1, Quest) Ch2 =SubString(Choice2, Quest) Ch3 =SubString(Choice3, Quest) ; 65535 is the value returned if no string is found ; this routine tells the user that no selection was made and repeats ; the menu display $If (Ch1 = 65535) and (Ch2 = 65535) and (Ch3 = 65535) Temp1 = $UserSelectYesNo (NoSelec, 'Yes') $If Temp1 Selected = 0 $Else Temp1 = 0 Selected = 1 DisplayLine (UnatndMsg2) DisplayLine DisplayLine (GoMsg) DisplayLine DisplayLine DisplayLine Path,Sys,Sys DisplayAndWait Cancel $EndIf $Else Temp1 = 255 Selected = 1 $EndIf $EndWhile $DeAssign(UnatndMsg1) $DeAssign(UnatndMsg2) $DeAssign(Question1) $DeAssign(Choice1) $DeAssign(Choice2) $DeAssign(Choice3) $DeAssign(Temp1) $RestartLabel $If Ch3 <> 65535; Sockets chosen $DisplayLine(UserMsg1) $DisplayLine(UserMsg2) $DisplayLine(UserMsg3) $DisplayLine(UserMsg4) $DisplayLine $DisplayLine $DisplayAndWait(GoMsg) i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile $Display(DirMsg) $Command Create Directory, (Destpath,Destpath1,Destpath3) $DisplayLine('DONE') $DisplayLine $DisplayLine $DisplayLine $DisplayLine $EndIf; Sockets chosen i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile $EndIf; SWInstal = 0 $If SWInstal = 1 $Display(DirMsg) $Command Create Directory,(Destpath,Destpath1,Destpath3) $DisplayLine('DONE') $EndIf $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(Fdsys.Version,Install.ctrl,Install.jcl), & From_Sys, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(ReleaseNotes.doc,Request.list) , & From_Sys,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(Request.TCPIP.txt,request.TCPIP.version),& From_Sys,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(tcp/ip1.cmds,TCP/IP2.Cmds),From_Sys, & ServerSpec,,yes,,no $Run [Sys]Lcopy.run,TCP.Telnet.run,From_ctos,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,TCP/IP.Params, From_ctos, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(echoserver.c,filedesc.h,get_time.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(multecho.c,netdb.h,netinet/in.h), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(sender_udp.c,sftp.c,socket.lib,socklim.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(sys/socket.h,sys/types.h,terminal_1.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(terminal_2.c,terminal_3.c,udp_echo.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(arpa/inet.h,bstring.h,terminal.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(sys/socompat.h), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(Pascal_First_with_BSS.asm), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(Pascal_First_with_BSS.obj), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(CSsocket.lib,IN.h,NETDB.h), & From_csocket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(SFTP.c,SOCKET.h,TYPES.h), & From_csocket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(BSTRING.h,INET.h,SOCOMPAT.h), & From_csocket,ServerSpec,,yes,,no $EndIf; Public $If Ch3 <> 65535 ; Socket/Cluster Share and FTP Client API library selected $Run [Sys]Lcopy.run,(echoserver.c,filedesc.h,get_time.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(multecho.c,netdb.h,netinet/in.h), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(sender_udp.c,sftp.c,socket.lib,socklim.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(sys/socket.h,sys/types.h,terminal_1.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(terminal_2.c,terminal_3.c,udp_echo.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(arpa/inet.h,bstring.h,terminal.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(sys/socompat.h), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(Pascal_First_with_BSS.asm), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(Pascal_First_with_BSS.obj), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(CSsocket.lib,IN.h,NETDB.h), & From_csocket,Destpath1,,yes,,no $Run [Sys]Lcopy.run,(SFTP.c,SOCKET.h,TYPES.h), & From_csocket,Destpath1,,yes,,no $Run [Sys]Lcopy.run,(BSTRING.h,INET.h,SOCOMPAT.h), & From_csocket,Destpath1,,yes,,no $EndIf ; Socket/Cluster Share library selected $If Ch2 <> 65535 $Run [Sys]Lcopy.run,TCP.Telnet.run,From_ctos,Destpath2,,yes,,no $EndIf $DisplayLine('DONE') $RestartLabel ;Copy tcp/ip.params $If Ch1 <> 65535 ; TCP, IP servers etc. copy TCP/IP.Params Temp1 = ConcatStrings(DestPath2,'tcp/ip.params will be saved as save>tcp/ip.params .') Temp1 = ConcatStrings('Existing ',Temp1) $DisplayLine(Temp1) $If SWInstal = 0 $DisplayAndWait(GoMsg) $EndIf Temp1 = ConcatStrings(DestPath2,'TCP/IP.Params') Temp2 = ConcatStrings(DestPath2,'save>') ; $Command Rename,Temp1,Temp2,yes $Run [Sys]Lcopy.run,TCP/IP.Params,DestPath2,Temp2,, & yes,,yes $DeAssign(Temp1) $DeAssign(Temp2) $Run [Sys]Lcopy.run,TCP/IP.Params,From_ctos,DestPath2,, & yes,,yes $EndIf i = 0; $While (i < 6) i = i + 1 $DisplayLine $EndWhile $If (Ch1 <> 65535) or (Ch2 <> 65535) ; servers or clients selected ;Create commands $Display('Creating Commands.........') $If Ch1 <> 65535 ; TCP, IP servers etc. tcp_cmds = ConcatStrings(From_sys,'tcp/ip1.cmds') $Run ([Sys]CmdFileEditor.run,MCF,'MC'), & tcp_cmds, CmdFileTo, yes, DefVol $EndIf $If Ch2 <> 65535 ; Telnet etc. tcp_cmds = ConcatStrings(From_sys,'tcp/ip2.cmds') $Run ([Sys]CmdFileEditor.run,MCF,'MC'), & tcp_cmds, CmdFileTo, yes, DefVol $EndIf $DisplayLine('DONE') $DeAssign(tcp_cmds) $Endif $RestartLabel i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile $DisplayLine $DisplayLine(MergeMsg) $Display(MergeMsg2) ReqFile = ConcatStrings(Destpath2,'Request.sys') TCPReqtxt = ConcatStrings(From_sys,'Request.tcpip.txt') Req_Save = ConcatStrings(Destpath2,'Save>Request.sys') Req_excl = ConcatStrings(From_sys,'Request.List') $Command Copy,ReqFile,Req_save,'yes' $Run [Sys]ListRqSet.run, ReqFile, [scr]<$>req.txt,,@Req_excl $Run [Sys]MakeRqSet.run,([scr]<$>req.txt, TCPReqtxt),ReqFile $DeAssign(ReqFile) $DeAssign(TcpReqtxt) $DeAssign(Req_excl) $DeAssign(Req_Save) $DisplayLine('DONE') i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile DestSpec = ConcatStrings(DefVol,'') $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd2of3Msg) $DeAssign(Sd2of3Msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(NGI.ValidAddress,TCP.ConfigMgr.run, & TCP.Deinstall.run), From_ctos, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(TCP.FTPCL.run,TCP.InstallIP.run, & TCP.InstallTCP.run), From_ctos, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(TCP.InstallX25NGI.Run,TCP.IP.run, & TCP.OpManager.help), From_ctos, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(TCP.OpManager.run,TCP.run, & TCP.X25NGI.Run), From_ctos, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(ftp.lib,FTPLib.h,Sample.c,Sample.h), & From_fAPI, ServerSpec,,yes,,no $EndIf ;Public $If Ch1 <> 65535 ; Choice 1 selected ; Copy choice 1 files from disk 2 $Run [Sys]Lcopy.run,(TCP.ConfigMgr.run, & TCP.Deinstall.run,TCP.InstallIP.run,TCP.InstallTCP.run), & From_ctos, Destpath2,,yes,,no $Run [Sys]Lcopy.run,(TCP.InstallX25NGI.Run,TCP.IP.run, & TCP.OpManager.help,TCP.OPManager.run,TCP.run,TCP.X25NGI.Run), & From_ctos, Destpath2,,yes,,no $Endif ; Choice 1 selected $If Ch2 <> 65535 ; Choice 2 selected $Run [Sys]Lcopy.run,TCP.FTPCL.run,From_ctos, Destpath2,,yes,,no $EndIf $If Ch3 <> 65535; Choice 3 selected $Run [Sys]Lcopy.run,(ftp.lib,FTPLib.h,Sample.c,Sample.h), & From_fAPI, Destpath3,,yes,,no $EndIf $DisplayLine('DONE') $If Ch1 <> 65535 ; Copy NGI valid address file Temp1 = ConcatStrings(DestPath2,'NGI.ValidAddress will be saved as save>NGI.ValidAddress .') Temp1 = ConcatStrings('Existing ',Temp1) $DisplayLine(Temp1) $If SWInstal = 0 $DisplayAndWait(GoMsg) $EndIf Temp1 = ConcatStrings(DestPath2,'NGI.ValidAddress') Temp2 = ConcatStrings(DestPath2,'save>') ; $Command Rename,Temp1,Temp2,yes $Run [Sys]Lcopy.run,NGI.ValidAddress,DestPath2,Temp2,,& yes,,yes $Run [Sys]Lcopy.run,NGI.ValidAddress,From_ctos,DestPath2,, & yes,,yes $DeAssign(Temp1) $DeAssign(Temp2) $EndIf i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile $If Ch1 = 65535 and Ch2 = 65535 ; Only choice 3 selected $GoTo End_JCL $EndIf ;************************************* ; Files from third disk ;************************************* $RestartLabel $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd3of3Msg) $DeAssign(Sd3of3Msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(TCP.FTP.help,TCP.FTPClient.run,& TCP.FTPServer.run,TCP.LogReport.run,TCP.Telnet.help,& TCP.SMTP.run), From_ctos, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,TCP.FTPLogCtl.run,From_ctos, & ServerSpec,,yes,,no $EndIf $If Ch1 <> 65535 ; Choice 1 chosen $Run [Sys]Lcopy.run,(TCP.FTPServer.run,TCP.SMTP.run), & From_ctos, Destpath2,,yes,,no $EndIf $If Ch2 <> 65535 ; Choice 2 chosen $Run [Sys]Lcopy.run,(TCP.FTP.help,TCP.FTPClient.run, & TCP.LogReport.run,TCP.Telnet.help), From_ctos, & Destpath2,,yes,,no $Run [Sys]Lcopy.run,TCP.FTPLogCtl.run, From_ctos, & Destpath2,,yes,,no $EndIf $DisplayLine('DONE') $If Ch1 <> 65535 ; Choice 2 chosen $Display('Creating FTP directory.........') ftp_dir = ConcatStrings(DefVol,'') $Command Create Directory, ftp_dir $DeAssign(ftp_dir) $DisplayLine('DONE') $EndIf End_Jcl: ; $DisplayLine(InstDoneMsg) $DisplayLine(PMCntnueMsg1) $DisplayLine(PMCntnueMsg2) $DisplayLine(PMCntnueMsg3) i = 0; $While (i < 5) i = i + 1 $DisplayLine $EndWhile $DeAssign(InstDoneMsg) $DeAssign(PMCntnueMsg1) $DeAssign(PMCntnueMsg2) $DeAssign(PMCntnueMsg3) $If (SWInstal = 0) DisplayAndWait(GoMsg) $EndIf $END %'****************************** H E A D E R ******************************* %'** ** %'** TITLE: RELEASENOTES.Sub ** %'** ** %'** FILE ID: [F0]RELEASENOTES.Sub ** %'** ** %'** FUNCTION: This submit file will display the RELEASENOTES.Doc ** %'** file on the screen for the user and allow him to print it as well. ** %'** ** %'** INPUT: None. ** %'** ** %'** OUTPUT: None. ** %'** ** %'** CALLED BY: Software Installation / Installation Manager ** %'** ** %'** CALLS/USES: [F0]RELEASENOTES.Doc ** %'** ** %'** ASSUMPTIONS: None. ** %'** ** %'** ** %'** HISTORY: ** %'** ** %'** mm/dd/yy Who Description ** %'** -------- --- ----------- ** %'** 12/22/87 MAP Updated from B.Williams original version ** %'** 12/15/90 NC Updated for Installation Manager ** %'**************************************************************************** %' %' 'Screen Setup %' [Reverse video?] 'No %' [Large characters?] 'Yes %' [Screen length (default = full screen)] ' %' [Suppress character attributes?] ' %' [Suppress pause between pages?] 'No %' [Color (e.g., Green)] ' %' [Screen timeout (in minutes)] ' %' GO'%' %' %' 'Copy %' File from '[Kbd] %' File to '[Vid] %' [Overwrite ok?] ' %' [Confirm each?] ' %' GO'%' %' %'[Kbd] = ' CEF To Display the Release Information File (RELEASENOTES.Doc) PRESS AEGOAA, Otherwise PRESS AECANCEL-GOAA %'CANCEL'%' %' %' 'Type %' File list '[F0]RELEASENOTES.Doc %' [Confirm each?] '%'Wait for GO'1 %' GO'%' %' %' 'Copy %' File from '[Kbd] %' File to '[Vid] %' [Overwrite ok?] ' %' [Confirm each?] ' %' GO'%' %' %'[Kbd] = ' CEF To Print the Release Notes File (RELEASENOTES.Doc) Enter your Printer Name in Square Brackets and PRESS AEGOAA If you do not wish to print, PRESS AECANCEL-GOAA %'CANCEL'%' %' %' 'Copy %' File from '[F0]RELEASENOTES.Doc %' File to '%'Wait for GO'1 %' [Overwrite ok?] ' %' [Confirm each?] ' %' GO'%' %' ;CTOS TCP/IP R2.2 :PackageName:CTOS TCP/IP ;The full version number of your product :Version:s2.2.52 ;The memory needed for the installation. :RequiredMemory: 439KB ;The maximum disk space requirement. :RequiredDiskSpace:2900 ;The product commands in single quotes and separated by spaces as indicated. :Commands:'Install TCP' 'Install IP' 'Install SMTP Manager' 'TCP/IP FTP Server' 'TCP/IP FTP Client' 'TCP/IP Telnet' 'TCP/IP Configuration Manager' 'TCP/IP Operations Manager' 'TCP/IP Log Reporter' 'Deinstall TCP' 'Deinstall IP' 'Deinstall TCP FTP Server' 'Deinstall SMTP Manager' 'Install X.25 NGI' 'Deinstall X.25 NGI' 'TCP/IP Clear FTP Queue' 'TCP/IP Delete Files' 'TCP/IP Get Files' 'TCP/IP Put Files' 'TCP/IP FTP Log Control' ;All files associated exclusively with your product :ProductFiles: TCP.ConfigMgr.run TCP.Deinstall.run TCP.InstallIP.run TCP.InstallTCP.run TCP.InstallX25NGI.run TCP.IP.run TCP.OpManager.help TCP.OpManager.run TCP.run TCP.X25NGI.run TCP/IP.params NGI.ValidAddress TCP.FTP.help TCP.FTPclient.run TCP.FTPlogctl.run TCP.FTPserver.run TCP.LogReport.run TCP.SMTP.run TCP.Telnet.help TCP.Telnet.run EchoServer.c netinet/in.h sys/types.h filedesc.h sender_udp.c terminal_1.c get_time.c sftp.c terminal_2.c multecho.c socket.lib terminal.c arpa/inet.h sys/socompat.h terminal_3.c netdb.h sys/socket.h Pascal_First_with_BSS.asm Pascal_First_with_BSS.obj udp_echo.c socklim.c bstring.h bstring.h INET.h socompat.h cssocket.lib sftp.c in.h socket.h netdb.h types.h TCP.ftpcl.run ftp.lib ftplib.h sample.c sample.h ;At last information, this was not yet implemented. ;It will be files such as Request.sys. ;Related Files; %' %' This file will merge TCP/IP request codes and optionally creates the commands %' %' translate the message seen by user (below). COPY [kbd] [vid] PF AE Start of CTOS TCP/IP SOFTWARE Installation. AA THIS SYSTEM MUST BE RUNNING CTOS II. If this is a cluster system and the cluster is not disabled, then power down all cluster workstations. AEAA Press AE GO AA when Ready AEAA 1%' %' %' 'Create Directory %' New Directory name(s) ' %' [Default protection level (def=15)]' %' [Max # of files (Def = 75)] ' %' [Password for new dircetory] ' %' [Volume Password] ' %' GO'%' %' Copy [Kbd] [Vid] PF Volume Status will display the number of unused sectors on your [Sys] volume. AFPRESS AEAA to invoke Volume Status, note the number of unused sectors, then AFPRESS AEAA again to continue. 1Screen Setup yesVolume Status Sys 1Copy [Kbd] [Vid] PF Installation of CTOS TCP/IP R2.2 Approximate disk sector requirements are listed below: TCP/IP 1900 sectors Socket Libraries 275 sectors FTP TCP/IP.FAPI 60 sectors TOTAL 2747 sectors If this system does not have the required space available AFPRESS AEAA to cancel installation. If this system does have the required space available AFPRESS AEAA to continue. Submit %'File list'[B25TCP-1]ReleaseNotes.sub %'[Parameters]' %'[Force Expansion?]' %'[Show Expansion?]' 1 %' 'Copy %' File from '[Kbd] %' File to '[Vid] %' [Overwrite ok?] ' %' [Confirm each?] ' %' GO'%' %' %'[Kbd] = ' CEF IF you want to install the TCP request codes on this system, then PRESS AEGOAA Otherwise, please PRESS AECANCEL-GOAA %'CANCEL'%' %' 'Submit %' File list '[B25TCP-1]rqInstall.Sub %' [Parameters] '[Sys] %' [Force Expansion?] 'Y %' [Show Expansion?] ' %' Wait for GO'1 %' GO'%' %'CANCEL'%' %' Screen Setup Yes Yes %' %' %' 'Copy %' File from '[Kbd] %' File to '[Vid] %' [Overwrite ok?] ' %' [Confirm each?] ' %' GO'%' %' %'[Kbd] = ' CEF IF you want to create all the TCP/IP commands on this system, please PRESS AEGOAA Otherwise, to just install Cluster Commands, please PRESS AECANCEL-GOAA %'CANCEL'%' %' 'Submit %'File list'[B25TCP-1]Installcmds.sub %'[Parameters]' %' [Force Expansion?] 'Yes %' [Show Expansion?] ' %' Wait for GO'1 %' GO'%' %'CANCEL'%' %' COPY [kbd] <$>rn.tmp YES %#1[sys]%1TCP.Telnet.run COPY [kbd] <$>cmd.tmp YES 'TCP/IP TELNET' COPY [kbd] <$>args.tmp YES '[TCP/IP Node Name (Default = Local) ]' '[Narrow Font (Default =No)]' '[VT100 Test Mode (Default =No)]'COPY [kbd] <$>desc.tmp YES 'Invoke the TCP/IP Virtual Terminal Emulator.' NEW COMMAND @<$>cmd.tmp @<$>rn.tmp @<$>args.tmp @<$>desc.tmp YES %0COPY [kbd] <$>rn.tmp YES %#1[sys]%1TCP.FTPClient.Run COPY [kbd] <$>cmd.tmp YES 'TCP/IP FTP Client' COPY [kbd] <$>args.tmp YES '[FTP Server Node Name (Default = Local)]' '[Remove Queue Entry (Default = Yes)]' '[Inactivity Timeout Value (Default = 20 secs.)]'COPY [kbd] <$>desc.tmp YES 'Invokes TCP/IP file transfer interactive interface'NEW COMMAND @<$>cmd.tmp @<$>rn.tmp @<$>args.tmp @<$>desc.tmp YES %0Copy [KBD] [Scr]<$>args.Tmp Yes '[FTP Server Node Name (Default = Local)]' '[Logging (Full, Summary, None (Default = S)]'  Copy [KBD] [Scr]<$>desc.Tmp Yes 'Controls TCP/IP Ftp Logging.' New Command 'TCP/IP FTP Log Control' %#1[Sys]%1TCP.FTPLogCtl.Run @[Scr]<$>args.Tmp @[Scr]<$>desc.Tmp Yes %0COPY [kbd] <$>rn.tmp YES %#1[sys]%1TCP.LogReport.Run COPY [kbd] <$>cmd.tmp YES 'TCP/IP Log Reporter' COPY [kbd] <$>args.tmp YES 'Input Name' '[Output Name (def LogPrtyymmdd:hhmm)]' '[Start Time (e.g., 12:00)]' '[Stop Time (e.g., 23:59)]' COPY [kbd] <$>desc.tmp YES 'Invokes TCP/IP Log Reporter program.' NEW COMMAND @<$>cmd.tmp @<$>rn.tmp @<$>args.tmp @<$>desc.tmp YES %0COPY [kbd] <$>rn.tmp YES %#1[sys]%1TCP.FTPCL.Run  Copy [KBD] [Scr]<$>args.Tmp Yes ' Source File List' ' TCP Host ' '[User ]' '[Password ]^' '[DisplayNquit (N)]' '[Node ( {local} )]' '[QPriority (9) ]'  Copy [KBD] [Scr]<$>desc.Tmp Yes 'Copy files from TCP Host' %' Copy [KBD] [Scr]<$>args.Tmp Yes '[DisplayNquit (N)]'  Copy [KBD] [Scr]<$>desc.Tmp Yes 'Cancel any queued copies.' New Command 'TCP/IP Clear FTP Queue' @<$>rn.tmp @[Scr]<$>args.Tmp @[Scr]<$>desc.Tmp Yes '06'Copy [KBD] [Scr]<$>args.Tmp Yes ' Source File List' ' TCP Host ' '[User ]' '[Password ]^' '[DisplayNquit (N)]' '[Node ( {local} )]' '[QPriority (9) ]'  Copy [KBD] [Scr]<$>desc.Tmp Yes 'Delete files on a remote host.' New Command 'TCP/IP Delete Files' @<$>rn.tmp @[Scr]<$>args.Tmp @[Scr]<$>desc.Tmp Yes '03'%' Copy [KBD] [Scr]<$>args.Tmp Yes ' Source File List' ' TCP Host ' '[User ]' '[Password ]^' '[Dest Files ]' '[Record Type (A) ]' '[DisplayNquit(N) ]' '[Node ( {local} )]' '[QPriority (9) ]'  Copy [KBD] [Scr]<$>desc.Tmp Yes 'Copy files from TCP Host' New Command 'TCP/IP Get Files' @<$>rn.tmp @[Scr]<$>args.Tmp @[Scr]<$>desc.Tmp Yes '01'%' Copy [KBD] [Scr]<$>args.Tmp Yes ' Source File List' ' TCP Host ' '[User ]' '[Password ]^' '[Dest Files ]' '[Record Type (A) ]' '[DisplayNquit(N) ]' '[Node ( {Node} ) ]' '[QPriority (9) ] '  Copy [KBD] [Scr]<$>desc.Tmp Yes 'Copy files to TCP Host' New Command 'TCP/IP Put Files' @<$>rn.tmp @[Scr]<$>args.Tmp @[Scr]<$>desc.Tmp Yes '02' %' COPY [kbd] <$>rn.tmp YES %#1[sys]%1TCP.FTPLogCtl.run COPY [kbd] <$>cmd.tmp YES 'TCP/IP FTP Log Control' COPY [kbd] <$>args.tmp YES '[FTP Server Node Name(Default = Local)]' '[ Logging(Full,Summary,None(Default=S)]' COPY [kbd] <$>desc.tmp YES 'Controls TCP/IP FTP Logging.' NEW COMMAND @<$>cmd.tmp @<$>rn.tmp @<$>args.tmp @<$>desc.tmp YES %0 %' %' 'Copy %' File from '[Kbd] %' File to '[Vid] %' [Overwrite ok?] ' %' [Confirm each?] ' %' GO'%' %' %'[Kbd] = ' CEF IF you want to install the Socket / Cluster Share Socket Libraries and Sample programs - PRESS AEGOAA Otherwise, please PRESS AECANCEL-GOAA %'CANCEL'%' Submit %' File list '[B25TCP-1]InstallSock.Sub %' [Parameters] '[Sys] %' [Force Expansion?] 'Yes1 %' [Show Expansion?] ' %' GO'%' %'CANCEL'%' Screen Setup Yes Yes %' %' %' 'Copy %' File from '[Kbd] %' File to '[Vid] %' [Overwrite ok?] ' %' [Confirm each?] ' %' GO'%' %' %'[Kbd] = ' CEF IF you want to copy all the TCP/IP RUN files on this system, please PRESS AEGOAA Otherwise, please PRESS AECANCEL-GOAA %'CANCEL'%' Submit %'File list'[B25TCP-1]copyfile.sub %'[Parameters]' %' [Force Expansion?] 'Yes1 %' [Show Expansion?] ' %' GO'%' %' %' COPY [kbd] [vid] PF Remove this disk from the diskette drive and insert disk 3 of 3. AEAA Press AE GO AA when Ready AEAA 1%' COPY [B25TCP-3]TCP* TCP* YES %' %' SCREEN SETUP NO YES NO  %' translate the message seen by user (below). COPY [kbd] [vid] PF AE Installation of CTOS TCP/IP SOFTWARE complete AA TCP/IP has now been partly installed on your system. The next floppy contains files for Protocol Manager. To install them insert the floppy in your floppy drive and invoke Software Installation from command line once again. You may continue to install EtherNet Data Link or BNetII. You must reboot the system before resuming with normal operations. PN %' %' 'Create Directory %' New Directory name(s) ' [sys] %' [Default protection level (def=15)]' %' [Max # of files (Def = 75)] ' %' [Password for new directory] ' %' [Volume Password] ' %' GO'%' %' %' %' 'Create Directory %' New Directory name(s) ' [sys] %' [Default protection level (def=15)]' %' [Max # of files (Def = 75)] ' %' [Password for new dircetory] ' %' [Volume Password] ' %' GO'%' COPY [f0]* %1%#1+[Sys]+* YES %' %' COPY [f0]* %1%#1+[Sys]+* YES %' %' $JOB GenInstall $PauseOff $ContinueOnError ; Nationalizable messages DirMsg = 'Creating socket directories.........' InstDoneMsg = 'Installation is complete, please reboot your system.' PMCntnueMsg1 = 'B25TCP-8 contains the installation for Protocol Manager.' PMCntnueMsg2 = 'To install the seventh disk choose Install New Software' PMCntnueMsg3 = 'in the main menu of Installation Manager.' MergeMsg = 'Updating system request file.........' MergeMsg2 = 'Please wait, this may take some time.........' PtrNameMsg = 'Enter your printer name and press GO.' RifViewMsg = 'Do you wish to view the Release Notes at this time?' RifPrintMsg = 'Do you wish to print the Release Notes at this time?' UnAtndMsg1 = ' Unattended floppy installation is not supported.' UnAtndMsg2 = ' INSTALLATION IS CANCELLED' GoMsg = ' Press AEGOAA to Continue.' UserMsg1 = 'Socket directories are and .' UserMsg2 = 'Socket volume is [!sys] for public installation, [sys] otherwise.' UserMsg3 = 'FTP client API directory is ' UserMsg4 = 'FTP client volume is [!sys] for public installation, [sys] otherwise.' Question1 = 'Select the components to be installed.' Choice1 = 'TCP, IP, X.25NGI, SMTP, and FTP servers' Choice2 = 'Telnet, FTP Client, and Log reporter' Choice3 = 'Socket/ClusterShare and FTP Client API libraries' NoSelec = 'No selection was made. Select Yes to see the menu again' RemCmdMsg1 = 'Removing old Data Link Manager commands.........' FloppyFiles = 'Copying files.........' MCF = 'Merge Command Files' ; Non nationalizable messages VidLev = 0 Selected = 0 ServerSpec = '[!sys]' SwdDir = '[Sys]' SwInstal = 0 Sd1of7Msg = 'TCP Distribution Disk 1 of 7' Sd2of7Msg = 'TCP Distribution Disk 2 of 7' Sd3of7Msg = 'TCP Distribution Disk 3 of 7' Sd4of7Msg = 'TCP Distribution Disk 4 of 7' Sd5of7Msg = 'TCP Distribution Disk 5 of 7' Sd6of7Msg = 'TCP Distribution Disk 6 of 7' Sd7of7Msg = 'TCP Distribution Disk 7 of 7' $RestartLabel $If InstallType = 4; SWD installation From_Sys = SwdDir From_CTOS = SwdDir From_Socket = SwdDir From_cSocket = SwdDir From_fAPI = SwdDir SwInstal = 1 $Else From_Sys = ConcatStrings(DeviceFrom,'') From_CTOS = ConcatStrings(DeviceFrom,'') From_Socket = ConcatStrings(DeviceFrom,'') From_cSocket = ConcatStrings(DeviceFrom,'') From_fAPI = ConcatStrings(DeviceFrom,'') $EndIf $If InstallType = 2; Install from server From_Sys = ServerSpec From_CTOS = ServerSpec From_Socket = ServerSpec From_fAPI = ServerSpec From_cSocket = ServerSpec $EndIf $If Unattended and InstallType = 0; Floppy installation $DisplayLine $DisplayLine $DisplayLine $DisplayLine $DisplayLine $DisplayLine (UnAtndMsg1) $DisplayLine $DisplayLine (UnAtndMsg2) $DisplayLine (GoMsg) $DisplayLine $DisplayLine $DisplayLine $Path,Sys,Sys $DisplayAndWait $Cancel $EndIf $If Unattended and InstallType > 0; unattended and not floppy Ch1 = 1 Ch2 = 1 Ch3 = 1 SWInstal = 1 $EndIf $If PUBLIC CmdFileTo = '[!Sys]Cluster.cmds' Destpath = '[!Sys]' Destpath1 = '[!Sys]' Destpath2 = '[!Sys]' Destpath3 = '[!Sys]' DefVol = '[!Sys]' $Else CmdFileTo = '[Sys]sys.cmds' Destpath = '[Sys]' Destpath1 = '[Sys]' Destpath2 = '[Sys]' Destpath3 = '[Sys]' DefVol = '[Sys]' $EndIf $If VideoLevel > 0 VidLev = 1 $EndIf $If (VideoLevel = 0) and (SWInstal = 0) $PAUSEON $EndIf; of verbosity $If (VideoLevel = 1) $EchoOff $EndIf; of videolevel $If SWInstal = 0; attended installation $RestartLabel RifFile = ConcatStrings(From_Sys,'ReleaseNotes.doc') Temp1 = UserSelectYesNo(RifViewMsg) $If Temp1 i = 0 $While (i < 10) i = i + 1 $DisplayLine $EndWhile $PauseOn $EchoOn $Command Type, RifFile, no $If VidLev > 0 $EchoOff $PauseOff $EndIf $EndIf $DeAssign(RifViewMsg) Temp1 = UserSelectYesNo(RifPrintMsg) $If Temp1 = 1 i = 0 $While (i < 10) i = i + 1 $DisplayLine $EndWhile PrintName = UserEnterValue(PtrNameMsg) P = $ConcatStrings('[',PrintName) P1 = $ConcatStrings(P,']') RifFile = $ConcatStrings(From_Sys,'ReleaseNotes.doc') $Command Copy,RifFile,P1 $EndIf $DeAssign(RifPrintMsg) $DeAssign(PtrNameMsg) ;scroll screen i = 0; $While (i < 20) i = i + 1 $DisplayLine $EndWhile $RestartLabel $While (Selected = 0) Quest = $UserSelectMultiple(Question1, Choice1, Choice2, Choice3) Ch1 =SubString(Choice1, Quest) Ch2 =SubString(Choice2, Quest) Ch3 =SubString(Choice3, Quest) ; 65535 is the value returned if no string is found ; this routine tells the user that no selection was made and repeats ; the menu display $If (Ch1 = 65535) and (Ch2 = 65535) and (Ch3 = 65535) Temp1 = $UserSelectYesNo (NoSelec, 'Yes') $If Temp1 Selected = 0 $Else Temp1 = 0 Selected = 1 DisplayLine (UnatndMsg2) DisplayLine DisplayLine (GoMsg) DisplayLine DisplayLine DisplayLine Path,Sys,Sys DisplayAndWait Cancel $EndIf $Else Temp1 = 255 Selected = 1 $EndIf $EndWhile $DeAssign(UnatndMsg1) $DeAssign(UnatndMsg2) $DeAssign(Question1) $DeAssign(Choice1) $DeAssign(Choice2) $DeAssign(Choice3) $DeAssign(Temp1) $RestartLabel $If Ch3 <> 65535; Sockets chosen $DisplayLine(UserMsg1) $DisplayLine(UserMsg2) $DisplayLine(UserMsg3) $DisplayLine(UserMsg4) $DisplayLine $DisplayLine $DisplayAndWait(GoMsg) i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile $Display(DirMsg) $Command Create Directory, (Destpath,Destpath1,Destpath3) $DisplayLine('DONE') $DisplayLine $DisplayLine $DisplayLine $DisplayLine $EndIf; Sockets chosen i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile $EndIf; SWInstal = 0 $If SWInstal = 1 $Display(DirMsg) $Command Create Directory,(Destpath,Destpath1,Destpath3) $DisplayLine('DONE') $EndIf $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(Fdsys.Version,Install.ctrl,Install.jcl), & From_Sys, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(ReleaseNotes.doc,Request.list) , & From_Sys,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(Request.TCPIP.txt,request.TCPIP.version),& From_Sys,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(tcp/ip1.cmds,TCP/IP2.Cmds),From_Sys, & ServerSpec,,yes,,no $Run [Sys]Lcopy.run,TCP.Telnet.run,From_ctos,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,TCP/IP.Params, From_ctos, ServerSpec,,yes,,no $EndIf; Public $If Ch2 <> 65535 $Run [Sys]Lcopy.run,TCP.Telnet.run,From_ctos,Destpath2,,yes,,no $EndIf $DisplayLine('DONE') $RestartLabel ;Copy tcp/ip.params $If Ch1 <> 65535 ; TCP, IP servers etc. copy TCP/IP.Params Temp1 = ConcatStrings(DestPath2,'tcp/ip.params will be saved as save>tcp/ip.params .') Temp1 = ConcatStrings('Existing ',Temp1) $DisplayLine(Temp1) $If SWInstal = 0 $DisplayAndWait(GoMsg) $EndIf Temp1 = ConcatStrings(DestPath2,'TCP/IP.Params') Temp2 = ConcatStrings(DestPath2,'save>') ; $Command Rename,Temp1,Temp2,yes $Run [Sys]Lcopy.run,TCP/IP.Params,DestPath2,Temp2,, & yes,,yes $DeAssign(Temp1) $DeAssign(Temp2) $Run [Sys]Lcopy.run,TCP/IP.Params,From_ctos,DestPath2,, & yes,,yes $EndIf i = 0; $While (i < 6) i = i + 1 $DisplayLine $EndWhile $If (Ch1 <> 65535) or (Ch2 <> 65535) ; servers or clients selected ;Create commands $Display('Creating Commands.........') $If Ch1 <> 65535 ; TCP, IP servers etc. tcp_cmds = ConcatStrings(From_sys,'tcp/ip1.cmds') $Run ([Sys]CmdFileEditor.run,MCF,'MC'), & tcp_cmds, CmdFileTo, yes, DefVol $EndIf $If Ch2 <> 65535 ; Telnet etc. tcp_cmds = ConcatStrings(From_sys,'tcp/ip2.cmds') $Run ([Sys]CmdFileEditor.run,MCF,'MC'), & tcp_cmds, CmdFileTo, yes, DefVol $EndIf $DisplayLine('DONE') $DeAssign(tcp_cmds) $Endif $RestartLabel i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile $DisplayLine $DisplayLine(MergeMsg) $Display(MergeMsg2) ReqFile = ConcatStrings(Destpath2,'Request.sys') TCPReqtxt = ConcatStrings(From_sys,'Request.tcpip.txt') Req_Save = ConcatStrings(Destpath2,'Save>Request.sys') Req_excl = ConcatStrings(From_sys,'Request.List') $Command Copy,ReqFile,Req_save,'yes' $Run [Sys]ListRqSet.run, ReqFile, [scr]<$>req.txt,,@Req_excl $Run [Sys]MakeRqSet.run,([scr]<$>req.txt, TCPReqtxt),ReqFile $DeAssign(ReqFile) $DeAssign(TcpReqtxt) $DeAssign(Req_excl) $DeAssign(Req_Save) $DisplayLine('DONE') DestSpec = ConcatStrings(DefVol,'') $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd2of7msg) $DeAssign(Sd2of7msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(echoserver.c,filedesc.h,get_time.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(multecho.c,netdb.h,netinet/in.h), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(sender_udp.c,sftp.c,socket.lib,socklim.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(sys/socket.h,sys/types.h,terminal_1.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(terminal_2.c,terminal_3.c,udp_echo.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(arpa/inet.h,bstring.h,terminal.c), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(sys/socompat.h), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(Pascal_First_with_BSS.asm), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(Pascal_First_with_BSS.obj), & From_socket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(CSsocket.lib,IN.h,NETDB.h), & From_csocket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(SFTP.c,SOCKET.h,TYPES.h), & From_csocket,ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(BSTRING.h,INET.h,SOCOMPAT.h), & From_csocket,ServerSpec,,yes,,no $EndIf; Public $If Ch3 <> 65535 ; Socket/Cluster Share and FTP Client API library selected ;$If InstallType <> 2 and SWInstal <> 1 ; $NextFloppy(Sd2of7msg) ; $DeAssign(Sd2of7msg) ;$EndIf $Run [Sys]Lcopy.run,(echoserver.c,filedesc.h,get_time.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(multecho.c,netdb.h,netinet/in.h), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(sender_udp.c,sftp.c,socket.lib,socklim.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(sys/socket.h,sys/types.h,terminal_1.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(terminal_2.c,terminal_3.c,udp_echo.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(arpa/inet.h,bstring.h,terminal.c), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(sys/socompat.h), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(Pascal_First_with_BSS.asm), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(Pascal_First_with_BSS.obj), & From_socket,Destpath,,yes,,no $Run [Sys]Lcopy.run,(CSsocket.lib,IN.h,NETDB.h), & From_csocket,Destpath1,,yes,,no $Run [Sys]Lcopy.run,(SFTP.c,SOCKET.h,TYPES.h), & From_csocket,Destpath1,,yes,,no $Run [Sys]Lcopy.run,(BSTRING.h,INET.h,SOCOMPAT.h), & From_csocket,Destpath1,,yes,,no $EndIf ; Socket/Cluster Share library selected $DisplayLine('DONE') i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile DestSpec = ConcatStrings(DefVol,'') $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd3of7msg) $DeAssign(Sd3of7msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(NGI.ValidAddress,TCP.ConfigMgr.run, & TCP.Deinstall.run), From_ctos, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(TCP.InstallX25NGI.Run,TCP.InstallIP.run, & TCP.InstallTCP.run), From_ctos, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(TCP.FTPCL.run,TCP.OpManager.run, & TCP.OpManager.help), From_ctos, ServerSpec,,yes,,no $EndIf ;Public $If Ch1 <> 65535 ; Choice 1 selected ; Copy choice 1 files from disk 3 $Run [Sys]Lcopy.run,(TCP.ConfigMgr.run, & TCP.Deinstall.run,TCP.InstallIP.run,TCP.InstallTCP.run, & TCP.InstallX25NGI.Run), From_ctos, Destpath2,,yes,,no $Run [Sys]Lcopy.run,(TCP.OpManager.help, TCP.OPManager.run ), & From_ctos, Destpath2,,yes,,no $Endif ; Choice 1 selected $DisplayLine('DONE') $If Ch2 <> 65535 ; Choice 2 selected $Run [Sys]Lcopy.run,TCP.FTPCL.run,From_ctos, Destpath2,,yes,,no $EndIf $DisplayLine('DONE') $If Ch1 <> 65535 ; Copy NGI valid address file Temp1 = ConcatStrings(DestPath2,'NGI.ValidAddress will be saved as save>NGI.ValidAddress .') Temp1 = ConcatStrings('Existing ',Temp1) $DisplayLine(Temp1) $If SWInstal = 0 $DisplayAndWait(GoMsg) $EndIf Temp1 = ConcatStrings(DestPath2,'NGI.ValidAddress') Temp2 = ConcatStrings(DestPath2,'save>') ; $Command Rename,Temp1,Temp2,yes $Run [Sys]Lcopy.run,NGI.ValidAddress,DestPath2,Temp2,,& yes,,yes $Run [Sys]Lcopy.run,NGI.ValidAddress,From_ctos,DestPath2,, & yes,,yes $DeAssign(Temp1) $DeAssign(Temp2) $EndIf $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd4of7msg) $DeAssign(Sd4of7msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(TCP.IP.run, TCP.run, TCP.X25NGI.Run), & From_ctos, ServerSpec,,yes,,no $Run [Sys]Lcopy.run,(ftp.lib,FTPLib.h,Sample.c,Sample.h), & From_fAPI, ServerSpec,,yes,,no $EndIf ;Public $If Ch1 <> 65535 ; Choice 1 selected ; Copy choice 1 files from disk 4 $Run [Sys]Lcopy.run,(TCP.IP.run, TCP.run,TCP.X25NGI.Run), & From_ctos, Destpath2,,yes,,no $Endif ; Choice 1 selected $DisplayLine('DONE') $If Ch3 <> 65535; Choice 3 selected $Run [Sys]Lcopy.run,(ftp.lib,FTPLib.h,Sample.c,Sample.h), & From_fAPI, Destpath3,,yes,,no $EndIf $DisplayLine('DONE') i = 0; $While (i < 10) i = i + 1 $DisplayLine $EndWhile $If Ch1 = 65535 and Ch2 = 65535 ; Only choice 3 selected $GoTo End_JCL $EndIf $RestartLabel $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd5of7msg) $DeAssign(Sd5of7msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(TCP.FTP.help,TCP.FTPClient.run, & TCP.FTPLogCtl.run), From_ctos, ServerSpec,,yes,,no $EndIf $If Ch2 <> 65535 ; Choice 2 chosen ; Choice 2 chosen files from disk 5 $Run [Sys]Lcopy.run,(TCP.FTP.help,TCP.FTPClient.run, & TCP.FTPLogCtl.run), From_ctos, Destpath2,,yes,,no $EndIf $DisplayLine('DONE') $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd6of7msg) $DeAssign(Sd6of7msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,(TCP.FTPServer.run,TCP.LogReport.run, & TCP.Telnet.help), From_ctos, ServerSpec,,yes,,no $EndIf $If Ch1 <> 65535 ; Choice 1 chosen $Run [Sys]Lcopy.run,(TCP.FTPServer.run,& TCP.LogReport.run,TCP.Telnet.help),From_ctos, Destpath2,,yes,,no $EndIf $DisplayLine('DONE') $If Ch1 <> 65535 ; Choice 2 chosen $Display('Creating FTP directory.........') ftp_dir = ConcatStrings(DefVol,'') $Command Create Directory, ftp_dir $DeAssign(ftp_dir) $DisplayLine('DONE') $EndIf $If InstallType <> 2 and SWInstal <> 1 $NextFloppy(Sd7of7msg) $DeAssign(Sd7of7msg) $EndIf i = 0; $While (i < 7) i = i + 1 $DisplayLine $EndWhile $Display(FloppyFiles) $If Public $Run [Sys]Lcopy.run,TCP.SMTP.run, From_ctos, ServerSpec,,yes,,no $EndIf $If Ch1 <> 65535 ; Choice 1 chosen $Run [Sys]Lcopy.run,TCP.SMTP.run, From_ctos, Destpath2,,yes,,no $EndIf $DisplayLine('DONE') End_Jcl: ; $DisplayLine(InstDoneMsg) $DisplayLine(PMCntnueMsg1) $DisplayLine(PMCntnueMsg2) $DisplayLine(PMCntnueMsg3) i = 0; $While (i < 5) i = i + 1 $DisplayLine $EndWhile $DeAssign(InstDoneMsg) $DeAssign(PMCntnueMsg1) $DeAssign(PMCntnueMsg2) $DeAssign(PMCntnueMsg3) $If (SWInstal = 0) DisplayAndWait(GoMsg) $EndIf $END ;********************************************** ; Version S2.2.0000/aUs * ; --------------------- * ; * ; Contains fix to allows for request routing * ; over BNET. * ; * ; Fixed by S. Hassan/ Flemington NCG 11/05/89 * ; OGA 11/30/89 - Fixed routing of #6499 * ; OGA 02/12/91 - Added UDP requests * ; NC 05/10/91 - Removed 4 Relay Codes * ; NC 05/10/91 - Added request block for 7356h * ;********************************************** ; * ; This file contains all the request codes for* ; TCP, IP, and DLL request codes for NGI. * ; * ; TCP Request Name Code * ; ---------------- ----- * ; ManageTCP 6497h * ; MapTcpHostNameToAddr 6498h * ; MapTcpAddrToHostName 6499h * ; QueryTcpStatistics 649Ah * ; OpenTcpConnection 649Bh * ; SendTcpMessage 649Ch * ; ReceiveTcpMessage 649Dh * ; CloseTcpConnection 649Eh * ; AbortTcpConnection 649Fh * ; TcpSwapTermAbort 7298h * ; DeinstallTCP 7299h * ; TcpChgUserNumRq 72E2h * ; SwappingRq 7355h * ; * ; IP Request Name Code * ; --------------- ----- * ; SendToIP 729Ah * ; ReceiveFromIP 729Bh * ; StatusIP 729Ch * ; DeInstallIP 729Dh * ; TerminationRq 72A1h * ; WsAbortRq 72A2h * ; ChgUserNumRq 72AAh * ; RecvFromUDP 661Fh + ; SendtoUDP 661Eh + ; SwappingRq 7356h + ; * ; NGI Request Name Code * ; -------------- ----- * ; TerminationRq 729Eh * ; WsAbortRq 729Fh * ; ChgUserNumRq 72A0h * ; OpenStationLL 72A3h * ; CloseStation 72A4h * ; ReadDLFrame 72A5h * ; WriteDLFrame 72A6h * ; DirectStation 72A7h * ; DirectDLL 72A8h * ; DeInstallX25NGI 72A9h * ; * ; FTP Request Name Code * ; -------------- ----- * ; DeinstallFTP 72E3h * ; RqFtpServer 665Bh * ; FTP_TerminateUser 72E4h * ; FTP_SwapUser 72E5h * ; * ; SMTP Request Name Code * ; -------------- ----- * ; MVG 6/25/91 * ; folowing Requests were removed form the list* ; below to supress the B26/NLS hangs * ; :ChgUserNumRq:72A0h * ; :ChgUserNumRq:72A3h * ; :ChgUserNumRq:72AAh * ; :ChgUserNumRq:72E2h * ; * ; DSH 02/11/93 * ; * ; Added TCP Swapping request 7355h. Removed * ; the definition of 7298h as a swapping * ; request. * ; * ; * ; DSH 03/24/93 * ; * ; Modified 72E3h & added 665Bh, 72E4h, and * ; 72E5h for FTP * ; * ; * ; DSH 07/07/93 * ; * ; Modified ServiceExch to exchInstalledMstr * ; for request 7355h (TCP Swapping). * ; * ;********************************************** ;*** "Request.TCPIP.sys" *** :WsAbortRq:7298h :WsAbortRq:729Eh :WsAbortRq:72A2h :WsAbortRq:72E4h :TerminationRq:7298h :TerminationRq:729Fh :TerminationRq:72A1h :TerminationRq:72E4h :SwappingRq:7355h :SwappingRq:7356h :SwappingRq:72E5h :RequestCode:6497h :RequestName:ManageTCP :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:10 :nReqPbCb:2 :nRespPbcb:1 :Params:w(14),w(16),p(28),w(32),p(34),w(38),p(22),w(26) :NetRouting:devSpec :SrpRouting:rRemote :RequestCode:6498h :RequestName:MapTcpHostNameToAddr :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:2 :nReqPbCb:2 :nRespPbcb:1 :Params:p(20),w(24),p(26),c(4,30),p(14),w(18) :NetRouting:devSpec :SrpRouting:rRemote :RequestCode:6499h :RequestName:MapTcpAddrToHostName :Version:22 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:6 :nReqPbCb:1 :nRespPbcb:2 :Params:w(16),w(14),pbcb1,p(30),c(2,34),pbcb0 :NetRouting:devSpec :SrpRouting:rRemote :RequestCode:649Ah :RequestName:QueryTcpStatistics :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:6 :nReqPbCb:1 :nRespPbcb:2 :Params:b(14),b(15),b(16),p(24),c(1,28),pbcb2,pbcb0 :NetRouting:devSpec :SrpRouting:rRemote :RequestCode:649Bh :RequestName:OpenTcpConnection :Version:22 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:14 :nReqPbCb:3 :nRespPbcb:1 :Params:w(14),p(32),w(36),w(16),b(24),w(18),w(20),w(22),p(38),w(42),p(44),c(2,48),p(26),w(30) :NetRouting:OpenFH,devSpec,CloseAtTermination :SrpRouting:rRemote :RequestCode:649Ch :RequestName:SendTcpMessage :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:6 :nReqPbCb:1 :nRespPbcb:0 :Params:w(12),b(16),b(17),pbcb0 :NetRouting:rFH :SrpRouting:rRemote :RequestCode:649Dh :RequestName:ReceiveTcpMessage :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:4 :nReqPbCb:0 :nRespPbcb:4 :Params:w(12),p(16),c(1,20),p(22),c(1,26),p(28),w(32),p(34),c(2,38) :NetRouting:rFH :SrpRouting:rRemote :RequestCode:649Eh :RequestName:CloseTcpConnection :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:4 :nReqPbCb:0 :nRespPbcb:0 :Params:w(12) :NetRouting:CloseFH,rFH :SrpRouting:rRemote :RequestCode:649Fh :RequestName:AbortTcpConnection :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:4 :nReqPbCb:0 :nRespPbcb:0 :Params:w(12) :NetRouting:CloseFH,rFH :SrpRouting:rRemote :RequestCode:7298h :RequestName:TcpSwapTermAbort :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :NetRouting:NoRouting :SrpRouting:rRemote :RequestCode:7299h :RequestName:DeinstallTCP :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:729Ah :RequestName:SendToIP :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :NetRouting:NoRouting :SrpRouting:rRemote :RequestCode:729Bh :RequestName:ReceiveFromIP :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :NetRouting:NoRouting :SrpRouting:rRemote :RequestCode:729Ch :RequestName:StatusIP :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :NetRouting:NoRouting :SrpRouting:rRemote :RequestCode:729Dh :RequestName:DeInstallIP :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :NetRouting:NoRouting :SrpRouting:rRemote :RequestCode:729Eh :RequestName:DeInstallIP :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:729Fh :RequestName:DeInstallIP :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:72A0h :RequestName:DeInstallIP :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:72A1h :RequestName: :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:rRemote :RequestCode:72A2h :RequestName: :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:rRemote :RequestCode:72A3h :RequestName: :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:72A4h :RequestName: :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:72A5h :RequestName: :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:72A6h :RequestName: :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:72A7h :RequestName: :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:72A8h :RequestName: :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:72A9h :RequestName: :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:72E3h :RequestName:DeinstallFtp :Version:22 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :NetRouting:devSpec :SrpRouting:rRemote :RequestCode:72E4h :RequestName:FTP_TerminateUser :Version:1 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:72E5h :RequestName:FTP_SwapUser :Version:1 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:7355h :RequestName:SwappingRq :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:7356h :RequestName:SwappingRq :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledLocal :NetRouting:NoRouting :SrpRouting:NoRouting :RequestCode:661Eh :RequestName:SendtoUDP :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:4 :nReqPbCb:3 :nRespPbcb:1 :Params:p(16),w(20),p(22),w(26),p(28),w(32),p(34),w(38) :NetRouting:devSpec :SrpRouting:rRemote :RequestCode:661Fh :RequestName:RecvFromUDP :Version:21 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:6 :nReqPbCb:2 :nRespPbcb:2 :Params:w(12),p(18),w(22),p(24),w(28),p(30),w(34),p(36),w(40) :NetRouting:devSpec :SrpRouting:rRemote :RequestCode:665Bh :RequestName:RqFtpServer :Version:1 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :NetRouting:devSpec :SrpRouting:rRemote Release Notes Page 1 of 24 CTOS TCP/IP 2.2 December 1993 CONTENTS PAGE Product Interdependencies................................... 2 Restrictions and Known Limitations.......................... 4 Product Improvements........................................ 7 Migration Guidelines........................................ 18 Support..................................................... 19 Product Information Updates................................. 23 Release Notes Page 2 of 24 PRODUCT INTERDEPENDENCIES One of the following operating system levels is required to run CTOS TCP/IP 2.2: - BTOS II 3.0, or higher, for workstations - CTOS/XE II 3.2, or higher, for XE/530 shared resource processor systems - CTOS/XE II 3.0, or higher, for XE520 shared resource processor systems - IDMSS 4.0, or higher, for port expansion modules In addition, CTOS TCP/IP requires the following products: - BNet II 2.0, or higher for Cluster Access - X.25 Gateway 9.0, or higher, for operation over an X.25 network Release Notes Page 3 of 24 PRODUCT INTERDEPENDENCIES (continued) - Context Manager II 3.0, or higher, for TELNET and FTP - OFIS Mail 1.2, or higher, for SMTP - Indexed Sequential Access Method II (ISAM) 1.1.6, or higher, for FTP - CTOS PC Emulator 4.1, or higher, for running the ClusterShare version of the CTOS Socket Library - MS DOS 4, or higher, for running the ClusterShare version of the CTOS Socket Library Release Notes Page 4 of 24 RESTRICTIONS AND KNOWN LIMITATIONS - ISAM files are not copied correctly during FTP transfers. If it is necessary to transfer ISAM files between two CTOS systems, the data file should be transferred to the target system in type 'Image' and then ISAM Reorganize should be invoked on the target system to generate the index file. This procedure should be adopted for ISAM, ISAM II, and ISAM III. - The TCP/IP FTP Client cannot be invoked directly from the Context Manager. It is necessary to execute the Executive from the Context Manager first and then invoke the TCP/IP FTP Client. Release Notes Page 5 of 24 RESTRICTIONS AND KNOWN LIMITATIONS (Continued) - If Telnet is receiving large amounts of data in one context of the Context Manager, applications in another context cannot be loaded. To avoid this problem, ensure applications are executing prior to receiving the Telnet data. - On occassion, after copying a file successfully, the FTP Client will return an error message. - Due to an Ofismail bug, attchments received via SMTP on a password protected disk are scrambled. A future release of Ofismail will correct this problem. - Telnet does not operate under Administrator Cluster View. Release Notes Page 6 of 24 RESTRICTIONS AND KNOWN LIMITATIONS (Continued) - If a file is to be transferred to a remote system via FTP, it is first copied to a temporary file in directory [sys]. If the FTP server cannot copy the file, it is not deleted. - A file with a badly formed specification e.g. 'ba[', will cause the FTP command 'DLIST' or 'FLIST' to return incomplete information. - IP should be deinstalled whenever TCP is deinstalled otherwise IMSP will crash shortly after TCP is reinstalled. Release Notes Page 7 of 24 PRODUCT IMPROVEMENTS FTP Client - New Interactive Client supporting background and foreground operation and many new commands - Command-Form Client for background operation FTP Local Server - Queue Manager dependence replaced by internal queues - FTP log transactions and performance statistics - FTP log transaction trace - FTP log control utility Release Notes Page 8 of 24 PRODUCT IMPROVEMENTS (Continued) FTP Remote Server - FTP support for additional commands (MSend, Mretrieve, CD, etc.) - Improved access security - Support for anonymous remote FTP users - FTP server remote-help support - FTP server implementation of full range of FTP commands - FTP server implementation of multiple commands during single login Release Notes Page 9 of 24 PRODUCT IMPROVEMENTS (Continued) - Improved performance for FTP file transfers SMTP - Accepts inbound mail addressed to IP addresses - Inbound mail with no CTOS center address now addressed to local center - New SMTP status information from OFIS Mail R8.2 Interactive Mail Manager (IMM) - Provides SMTP support for encoded and unencoded mail attachments - Transparent CTOS to CTOS attachments - Choice of UNIX uuencode, normal, or FTP retrieval methods Release Notes Page 10 of 24 PRODUCT IMPROVEMENTS (Continued) - SMTP support for continuation - Support for mail interoperation with CC:Mail IP - Dual-network interface IP address (X.25 and Ethernet) - Support of subnets via Netmask - Routing (Gateway) capabilities between X.25 and Ethernet network interfaces - Configurable default link type - IP broadcast capability from UDP Release Notes Page 11 of 24 PRODUCT IMPROVEMENTS (Continued) - Preconfigurable ARP table option NGI - X.25 NGI support for default X.25 address API - Sockets are compiler independent - Both CTOS C and Microsoft C can be used - Pascal is better supported - Object modules can now be linked with the socket library by customers of third parties (without customers purchasing a C-library license) Release Notes Page 12 of 24 PRODUCT IMPROVEMENTS (Continued) - New functions for: - UDP broadcast - Netmask management - Local IP address management Hardware - Support for XE-530 Ethernet - New hardware - Supported on a shared-resource processor (XE-520/530) Release Notes Page 13 of 24 PRODUCT IMPROVEMENTS (Continued) Miscellaneous - FTP, TELNET, and ping support for unconfigured hosts - Protocol Manager (PM) now replaces Data Link Manager (DLM) - Software Distribution (SWD) supported - 3.5-inch floppy disks supported Release Notes Page 14 of 24 PRODUCT IMPROVEMENTS (Continued) - IP now installs correctly even if a previous installation failed. - Error 2450 no longer occurs wnen running X.25 NGI server. - The Date and time display for TCP utilities is now correct. - NGI now fully recovers following an incorrect X.25 DISC. - TCP/IP SMTP logfile password now remains concealed. - Simultaneous crashes of all network servers no longer occur. - TCP/IP Operations Manager now displays meaningful values. Release Notes Page 15 of 24 PRODUCT IMPROVEMENTS (Continued) - When using TCP/IP over X.25 over switched ISDN connections, the link now opens correctly - Large connection handle values no longer cause server to ERC 23. - Frequent failures to connect to host no longer occur. - Sporadic crashes in IP, due to invalid options, no longer occur. - VAX VMS host no longer reports an error 425 when working with the FTP server. - When running X.25 NGI server, error 2450 no longer occurs when "Max. X.25 VCs' parameter is greater than 10. Release Notes Page 16 of 24 PRODUCT IMPROVEMENTS (Continued) - SMTP mail messages are now correctly deleted after successful delivery - Server running TCP/IP and X.25 no longer crashes with erc 12 when file transfer fails. - When performing file transfer from UNIX to CTOS, FTP now asks for password before opening CTOS .user file. - Reception of IP broadcast frames no longer causes erc 80 crash. - SMTP manager installation no longer fails if the attachment directory is password protected. Release Notes Page 17 of 24 PRODUCT IMPROVEMENTS (Continued) - Socket library no longer crashes with error 58976 following successful usage - Error 60235 no longer occurs when sending UDP datagram smaller than 1042 bytes - Error 60239 no longer occurs when using more than 20 sockets with an equal number of ports - When using TCP/IP over TELNET, and host timeout occurs, CTOS will now close the connection. - When using TCP/IP over X.25 and running the VI editor, the NEXT PAGE key no longer causes IP to crash. Release Notes Page 18 of 24 PRODUCT IMPROVEMENTS (Continued) - CTOS TCP/IP s2.2.05 or higher is required if a socket application needs to increase the number of sockets and the application is compiling with BTOS C. If BTOS C 1.1 is being used, recompile socklim.c with the large memory model and with the option -D__BTOSC__. If BTOS C 1.2 or higher is being used, the option -D__BTOSC__ is no longer needed. - FTP append no longer erases most of the original document. Release Notes Page 19 of 24 MIGRATION GUIDELINES Following are restrictions and recommendations for using CTOS TCP/IP with other Unisys software products: - An existing TCP configuration file (tcp/ip.params) must be rebuilt using the R2.2 TCP/IP Configuration Manager. Release Notes Page 20 of 24 SUPPORT TCP/IP 2.2 is a warranted Unisys software product. Unisys warrants that TCP/IP 2.2, in its unaltered form, will substantially conform to Unisys current published functional specifications when used in Unisys supported configurations. The customer is responsible for reporting suspected deviations using the User Communication Form (UCF) process within ninety (90) days following delivery. The product is neither field repairable nor field modifiable. Corrections to reported deviations are provided to the user via updated code files. This standard warranty is not a substitute for Unisys Service Agreement offerings. Release Notes Page 21 of 24 SUPPORT (continued) Support Category TCP/IP 2.2 is fully supported by Unisys. Support services for TCP/IP 2.2 are offered under the SURETY (United States) or A la Carte (International) support programs and are consistent with the support services offered for the entire CTOS Hardware and Software family of products. Release Notes Page 22 of 24 SUPPORT (continued) Unisys SureNet is an electronic bulletin board service, providing customers in the United States access to technical information seven days a week, 24 hours a day. SureNet Technical Information Services are available at no additional cost to customers with a current Unisys service agreement or software license and include access to system alerts, customer technical bulletins and online UCF entry. Registration is required. SureNet Support Services are available on an annual subscription basis. For more information, contact Unisys Direct at 1-800-448-1424, prompt 5. You may register for Technical Information Services and/or Support Services either online by dialing 1-800-828-8796 (8 data bits, 1 stop bit, no parity, asynchronous, VT100 emulation) or by calling Unisys Direct. Release Notes Page 23 of 24 SUPPORT (continued) If you need further assistance or information regarding support services, please contact your Unisys representative or your local Unisys office. Support Discontinuance Unisys supports the current release level and one level back. Prior levels are not supported. The CTOS TCP/IP software is in Support Category A and Warranty Class 1. It is fully supported and enhanced, and it is warranted for 90 days to conform to Unisys published specifications. Release Notes Page 24 of 24 PRODUCT INFORMATION UPDATES CTOS TCP/IP Administration Guide, Page 4-22 The last parameter of the "Install SMTP Manager" command has been changed from "Mail Relay Parameters" to "Relay Domains". #ifndef __SO_COMPAT__ #define __SO_COMPAT__ /* * DEFINITIONS OF THE COMPATIBILITY MACROS FOR THE THREE SUPPORTED * PLATFORMS; CTOS w/BtosC; CTOS w/MSC; DOS w/MSC */ #if defined (__BTOSC__) /* BtosC on CTOS */ # define PlmFar(name) name plm far # define Cdecl(name) name # define FARPTR * far #elif defined (__CTOS__) /* Microsoft C on CTOS */ # define PlmFar(name) _plm _far name # define Cdecl(name) _cdecl name # define asm _asm # define far _far # define FARPTR _far * #ifndef NULL #if (_MSC_VER >= 600) #define NULL ((void *)0) #elif (defined(M_I86SM) || defined(M_I86MM)) #define NULL 0 #else #define NULL 0L #endif #endif #else /* Microsoft C on DOS */ # define PlmFar(name) pascal far name # define Cdecl(name) _cdecl name # define asm _asm # define far _far # define FARPTR _far * #endif #ifndef _BSD_TYPES_ #define _BSD_TYPES_ typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef struct _quad { long val[2]; } quad; typedef char * caddr_t; #define NBBY 8 /* * Select uses bit masks of file descriptors in longs. These macros * manipulate such bit fields (the filesystem macros use chars). * FD_SETSIZE may be defined by the user, but the default here should * be enough for most uses. */ #ifndef FD_SETSIZE #define FD_SETSIZE 256 #endif typedef long fd_mask; #define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */ #ifndef howmany #define howmany(x, y) (((x)+((y)-1))/(y)) #endif typedef struct fd_set { fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; } fd_set; #define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS))) #define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) #define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) #define FD_ZERO(p) bzero((char *)(p), sizeof(*(p))) #endif #endif /****************************************************** PROPRIETARY PROGRAM MATERIAL THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF UNISYS CORPORATION. COPYRIGHT (C) 1991 Unisys CORPORATION ******************************************************/ /* HISTORY OF CHANGES */ /* 931216 s2.2.05 EFW/RRQ Increasing number of sockets not working when compiling with BTOSC. Eric needed to rename nfds as _nfds for the BTOSC compile environment. MSC environment needs no change because MSC automatically renames nfds to _nfds. */ #include #include "filedesc.h" #ifdef __CTOS__ /* TRUE if compiled under MSC on CTOS or DOS */ int nfds=NFDS; struct filedesc _fdesc_[NFDS]; struct SockDesc sockdata[NFDS]; struct disk_data fd[NFDS]; #else /* for compilation under BtosC */ /* why does MSC need leading underscores anyway? */ int _nfds=NFDS; struct filedesc __fdesc_[NFDS]; struct SockDesc _sockdata[NFDS]; struct disk_data _fd[NFDS]; #endif /* * Usage: get_time hostname [nodename] run in CTOS Read time * from host name expressed in seconds since January 1, 1900 * and repeat 10 times */ #include #include #include #include #include #include #define BUFSZ 512 #define TIMEPORT 37 /* time service port */ #define MYPORT 0 #define TIMERVAL 80 /* set timer value to 8 sec. * for recvfrom */ #define REXMIT 10 /* number of retransmissions */ extern int PlmFar(Delay) (int n); extern char *SockAddrStr(struct sockaddr_in * saddr); /* * FORWARD REFERENCES */ void CheckP(int, char *); char *SockAddrStr(struct sockaddr_in * saddr); int s; /* file descriptor returned by * socket call */ int n; /* return value of function * calls */ struct sockaddr_in server; /* server socket address */ struct sockaddr_in myaddr; /* local address */ struct hostent *hp; /* pointer to structure * containing host address */ char inbuff[BUFSZ]; /* input buffer */ char *sendbuf = "what time do you have?"; char *nodename = "local"; main(int argc, char *argv[]) /*************************** * argv[0] = program name * argv[1] = host name * argv[2] = nodename ***************************/ { int i, serverAddrLen; unsigned long timeval, timebuf; unsigned long seconds, hours, minutes; if (argc < 2 || argc > 3) { /* verify correct number of * args */ printf("usage: get_time hostname [nodename]\n"); exit(0); } /* * AF_INET is communications domain, SOCK_DGRAM specifies * the type of communications IPPROTO_UDP represents the * protocol to be used. */ if (argc >= 3) nodename = argv[2]; n = setctosparams(nodename, 0); CheckP(n, "set ctos params\n"); s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); CheckP(s, "socket"); n = setctosudpparams(s, NULL, TIMERVAL, 0); CheckP(n, "set udp params\n"); hp = gethostbyname("local"); if (hp == NULL) { printf("invalid host argument = local\n"); exit(1); } CheckP((hp == NULL ? -1 : 0), "gethostbyname for local host"); memcpy((char *) &server.sin_addr.s_addr, hp->h_addr, hp->h_length); myaddr.sin_family = AF_INET; myaddr.sin_addr.s_addr = htonl(INADDR_ANY); myaddr.sin_port = htons(MYPORT); memcpy(&myaddr.sin_addr.s_addr, hp->h_addr, hp->h_length); n = bind(s, &myaddr, sizeof(myaddr)); CheckP(n, "BIND"); server.sin_family = AF_INET;/* assign domain */ server.sin_port = htons(TIMEPORT); /* assign remote port */ /* * take the "host name" entered as an argument to this * program and uses it to get the address of the remote * host we connect to. */ hp = gethostbyname(argv[1]); if (hp == NULL) { printf("invalid host argument = %s\n", argv[1]); exit(1); } CheckP((hp == NULL ? -1 : 0), "gethostbyname for servers host"); memcpy((char *) &server.sin_addr.s_addr, hp->h_addr, hp->h_length); serverAddrLen = sizeof(server); printf("Local address : %s\n", SockAddrStr(&myaddr)); printf("Server address: %s\n", SockAddrStr(&server)); for (i = 1; i < REXMIT + 1; i++) { n = recvfrom(s, (char *) &timebuf, 4, MSG_NOBLOCK | MSG_POSTREQ, &server, &serverAddrLen); if (n < 0) if (errno != EWOULDBLOCK) CheckP(n, "non-blocking recvfrom\n"); n = sendto(s, sendbuf, 21, 0, &server, serverAddrLen); CheckP(n, "sendto: requesting time"); n = recvfrom(s, (char *) &timebuf, 4, 0, &server, &serverAddrLen); if (n < 0) { if (errno != E_TIMEOUT) CheckP(n, "recvfrom: waiting response\n"); else printf("recvfrom timeout in count %d\n", i); } else { timeval = ntohl(timebuf); seconds = timeval % (long) 86400L; hours = seconds / 3600; hours = (hours + 19) % 24; /* GMT to EST */ seconds = seconds % 3600; minutes = seconds / 60; seconds = seconds % 60; printf("request %d to remote host\n", i); printf("time from %s is %lu:%2.2lu:%2.2lu\n", argv[1], hours, minutes, seconds); Delay(20); } } sclose(s); return 0; } /* end main */ void CheckP(int n, char *msg) /************** * if n is positive return quietly * else display msg & quit */ { if (n < 0) { printf(" Program terminated: error %u in %s\n", errno, msg); exit(1); } else { #ifdef DEBUG printf("%s successful\n", msg); #endif } } char * SockAddrStr(struct sockaddr_in * saddr) /************************************** * Convert a sockaddr_in structure to * a printable string of the form * (255.255.255.255, 9999) * where; 255.255.255.255 is the * host address, and * 9999 is the port number */ { static saddr_fmt[40]; if (saddr->sin_family == AF_INET) sprintf(saddr_fmt, "(%s, %d)", inet_ntoa(saddr->sin_addr), ntohs(saddr->sin_port)); else saddr_fmt[0] = 0; return saddr_fmt; } /****************************************************** PROPRIETARY PROGRAM MATERIAL THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF UNISYS CORPORATION. COPYRIGHT (C) 1991 Unisys CORPORATION */ #ifdef __CTOS__ /* * If MSC is the compiler in use here this * sys/types is not really needed. But, * just in case it is called we call the * MSC version. */ #include #include #else /* * BtosC is used. This provide many more types * that are related to CTOS or are BSD types. */ #ifndef _BSD_TYPES_ #define _BSD_TYPES_ typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; /* System V compatibility */ typedef unsigned int uint; /* System V compatibility */ typedef struct _quad { long val[2]; } quad; typedef long daddr_t; typedef char * caddr_t; typedef u_long ino_t; typedef long swblk_t; typedef short dev_t; typedef int off_t; typedef long key_t; typedef struct fd_set { int fds_bits[1]; } fd_set; #ifndef NULL #if defined(__SMALL__) || defined(__MEDIUM__) #define NULL 0 #else #define NULL 0L #endif #endif typedef u_int word; typedef char *far pointer; typedef char byte; #ifndef _SIZE_T #define _SIZE_T typedef unsigned size_t; #endif #ifndef __TIME_T #define __TIME_T typedef struct simpleDate { unsigned seconds; unsigned dayTimes2; } time_t; #endif #ifndef __ERCTYPE #define __ERCTYPE #ifdef TYPEDEF typedef unsigned ErcType; #else #define ErcType unsigned #endif #endif #ifdef TYPEDEF typedef unsigned ExchType; typedef unsigned PhType; typedef unsigned RqType; #else #define ExchType unsigned #define PhType unsigned #define RqType unsigned #endif #ifndef __HDWTYPE #define __HDWTYPE #ifdef TYPEDEF typedef unsigned int word; typedef unsigned char byte; typedef char *far pointer; typedef unsigned long quad #else #define word unsigned int #define byte unsigned char #define quad unsigned long #define pointer char *far #endif #endif #ifndef __RQHDR #define __RQHDR typedef struct rqheader { byte sCntInfo; byte RtCode; byte nReqPbCb; byte nRespPbCb; word userNum; word exchResp; word ercRet; word rqCode; } RqHdrType; #endif /* C style synonym */ #define rqhdr_t RqHdrType #ifndef __SD #define __SD typedef struct { byte *far pb; word cb;} sdType; #endif /* C style synonym */ #define sd_t sdType #endif #endif /****************************************************** PROPRIETARY PROGRAM MATERIAL THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF UNISYS CORPORATION. COPYRIGHT (C) 1991 Unisys CORPORATION ******************************************************/ /* Mod: * 3/10/92 Add "Precedence" field to SockDesc structure to support larger * buffer size RK * 03/15/94 s2.2.0700 HSN Fix for crash when using unblocked Connect call * 05/05/94 s2.2.0700 HSN Shyam needs 64 sockets. * */ #ifndef __FILEDESC__ #define __FILEDESC__ #include "sys/socompat.h" #ifndef NFDS /* #define NFDS 20 - HSN 05/05/94 */ #define NFDS 64 /* + HSN 05/05/94 */ #endif #define NODEMAX 29 struct io_ops { int (*read)(); /* read data from resource */ int (*write)(); /* write data to resource */ int (*close)(); /* close this io resource */ long (*seek)(); /* positions the io cursor */ int (*ioctl)(); /* all other io functions */ }; struct filedesc { enum file_type { NOT_USED, DISK, SOCKET, PIPE } type; struct io_ops *op; void *private; unsigned handle; }; struct req_hdrTYPE { unsigned char sCntlInfo; unsigned char rtCode; unsigned char nReqPbCb; unsigned char nRespPbCb; unsigned int UserNum; unsigned int exchResp; unsigned int ercRet; unsigned int rqCode; }; typedef struct tcp_read { char sCntlInfo; char rtCode; char nReqPbCb; char nRespPbCb; int UserNum; int exchResp; int ercRet; int rqCode; int cHandle; int Index; char *pfPush; int sfPush; char *pfUrgent; int sfUrgent; char *pMessageRet; int sMessageRetMax; int *psMessageRet; int sMessageRet; } TCPBLK; typedef struct tcp_openconn { char sCntlInfo; char rtCode; char nReqPbCb; char nRespPbCb; int UserNum; int exchResp; int ercRet; int rqCode; int Index; int localPort; int remotePort; int timeout; int precedence; int security; char fActive; char reserved; char FARPTR pTCPnode; int sTCPnode; char FARPTR pRemoteHost; int sRemoteHost; char FARPTR pOptions; int sOptions; unsigned int FARPTR pcHandleRet; int scHandleRet; } TCPOPENBLK; typedef struct SceAddr_record { unsigned int LocalPort; unsigned char MessageType; unsigned long int SourceAddr; unsigned int SourcePort; } SceAddr_type; typedef struct RcvResp_record { unsigned char Response; unsigned int DatagramSz; unsigned long int SourceAddr; unsigned int SourcePort; unsigned int LocalPort; } RcvResp_type; typedef struct RecvFromUDP_record { struct req_hdrTYPE req_hdr; unsigned int Timeout; struct RecvFromUDP_record *reservd; unsigned char FARPTR pbNodeName; unsigned cbNodeName; SceAddr_type FARPTR pbSourceAddr; unsigned cbSourceAddr; unsigned char FARPTR pbBuff; unsigned cbBuff; RcvResp_type FARPTR pbResp; unsigned cbResp; } RecvFromUDP_type; #define UDPBLK RecvFromUDP_type union Rq_blk { TCPBLK TCP; UDPBLK UDP; TCPOPENBLK TCPOPEN; }; static struct SockDesc { int State; int sMsgRet; char * pBuff; union Rq_blk * pReq; int Exch; int LPort; char fPush; char fUrgent; char pNode[NODEMAX]; char sNode; int Timeout; char * pOptions; int sOptions; union Rq_blk ReadReqBlk; SceAddr_type Address; RcvResp_type Response; char * readbuf; int olastdata; short buff_alloc_flag; short exch_alloc_flag; short socket_req_flag; u_int Precedence; /* + HSN 03/15/94 */ struct { char bar; unsigned long remoteaddr; } remotehost; /* + HSN 03/15/94 */ }; struct disk_data { unsigned long loc; unsigned long eof; unsigned mode; }; extern int _newfd(struct filedesc **pf); extern struct filedesc *_validfd(int fd); #endif /****************************************************** PROPRIETARY PROGRAM MATERIAL THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF UNISYS CORPORATION. COPYRIGHT (C) 1991 Unisys CORPORATION *******************************************************/ #ifndef _INET_H_ #define _INET_H_ #include "sys/socompat.h" /* External definitions for functions in inet(3) */ unsigned long PlmFar(inet_addr) (const char FARPTR); unsigned long PlmFar(inet_aton) (const char FARPTR, struct in_addr FARPTR); unsigned long PlmFar(inet_lnaof) (struct in_addr); struct in_addr Cdecl(inet_makeaddr) (u_long , u_long); void PlmFar(InetMakeaddr) (u_long, u_long, u_long FARPTR); unsigned long PlmFar(inet_netof) (struct in_addr); unsigned long PlmFar(inet_network) (const char FARPTR); char FARPTR PlmFar(inet_ntoa) (struct in_addr); #endif /* !_INET_H_ */ /**** terminal_2.c ****/ /* * Program Name: terminal_2.c * This program demonstrates the use of the second method of using non * blocking features in the socket library - where the user does the wait. * This program runs on CTOS only (not UNIX). * It must be linked with terminal.obj. * * Usage: terminal_2 hostname [remote_port [local_echo [debug level]]] * * The program supports a small subset of the Telnet protocol, which * allows it to act as a very dumb terminal on some unix hosts * - use "hostname 23 n" to log on to unix * * * If the server is echoserver or multecho remote_port is 3000. * local echo: use "y" for yes. * * OGA 09/09/91 - MCsocket.lib build * efw 09/21/93 - TCP 2.2 build * */ #include #include "sys/types.h" #include "sys/socket.h" #include "netinet/in.h" #include "netdb.h" /**** CTOSLIB functions ****/ #ifdef __BTOSC__ int AllocExch plm far(int *exch); int Request plm far(char *rq); int Wait plm far(int ex, char **r); #else #define AllocExch @ #define Request @ #define Wait @ #include #endif /**** defines ****/ #define CR 13 /* ASCII */ #define LF 10 /* ASCII */ #define BUFSZ 512 /* Buffer size for TCP */ #define KBDBUFFSZ 512 /* Keyboard Buffer size */ #define READKBDREQ 54 /* Keyboard Request Code */ /**** functions imported from terminal.c ****/ void CheckArgs(int argc, char *argv[]); /* CheckArgs */ void CheckP(int n, char *msg); /* UNIX style return code check */ void CheckZ(int n, char *msg); /* CTOS Erc check */ void InitTelnet(); /* Telnet startup for unix */ void RecvTelnet(unsigned char *iBf, int iBfSz); /* Telnet input processing for unix */ /**** Global Data ****/ typedef struct kbd_read /* Kbd request block structure */ { char sCntlInfo; char rtCode; char nReqPbCb; char nRespPbCb; int UserNum; int exchResp; int ercRet; int rqCode; int mode; int resv[2]; char *pCharRet; int sCharRet; } READKBD; extern unsigned int errno; /* global error code returned from system calls */ int Debug; /* Debugging level */ int LocalEcho=0; /* False if the host does echo (eg, UNIX) */ int Erc; /* Application Global for CTOS erc's */ char Kbuff[KBDBUFFSZ+1]; /* Keyboard Buffer */ int Ksz=0; /* Keyboard Bufferpointer */ char KeyChar; /* character read stored here */ READKBD KbdReq; /* Keyboard Request Block */ char *pKbdReq; /* pointer to request block */ char *ReqPointer; /* pointer to request block */ char **pReqPointer; /* pointer to request block pointer */ int Exch; /* address of exchange stored here */ int S; /* file descriptor returned by socket call */ int N; /* return value of function calls */ struct sockaddr_in server; /* server socket address */ struct hostent *hp; /* pointer to structure containing host address */ char inbuff[BUFSZ]; /* buffer for data from remote host */ int RemotePort=23; /* Default to the Telnet port */ /**** Local functions ****/ void MakeKbdReq(); /* Make Keyboard Request */ void MakeKbdReq() /**************** * make Keyboard Request */ { memset(&KbdReq, 0, sizeof(KbdReq)); KbdReq.sCntlInfo =6; KbdReq.nRespPbCb =1; KbdReq.exchResp =Exch; KbdReq.rqCode =READKBDREQ; KbdReq.pCharRet =&KeyChar; KbdReq.sCharRet =1; Erc=Request((char*)&KbdReq); CheckZ(Erc, "Request KbdReq"); } main(int argc, char *argv[]) /**************************/ { CheckArgs(argc, argv); Erc = AllocExch(&Exch); /* allocate an exchage */ CheckZ(Erc, "AllocExch"); /* AF_INET is communications domain, SOCK_STREAM specifies the type of * communications, and IPPROTO_TCP represents the protocol to be used. */ S = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); CheckP((int)S, "socket"); server.sin_family = AF_INET; /* assign domain */ server.sin_port = htons(RemotePort); /* assign remote port*/ /* take the "host name" entered as an argument to this program * and uses it to get the address of the remote host we connect to. */ hp = gethostbyname(argv[1]); if (hp == NULL) { printf("invalid host argument = %s\n",argv[1]); exit(1); } CheckP( (hp==NULL ? -1 : 0) , "gethostbyname"); /* take the h_addr field of the hostent structure returned by * gethostbyname and copies it to the server address. */ memcpy((char*)&server.sin_addr.s_addr, hp->h_addr, hp->h_length); /*connect to the remote host. */ N = connect(S, &server, sizeof(server)); checkp (N,"connect"); printf("Method 2 Terminal - connect successful\n"); printf("\nFINISH to Exit\n\n"); if (server.sin_port==23){ InitTelnet(); printf("InitTelnet\n"); } MakeKbdReq(); /* make KBD Request */ /* set up TCPinitial request */ N = setctossockexch (S, Exch, (char***) &pReqPointer); CheckP(N, "setctossockexch"); N = recv(S, inbuff, sizeof(inbuff), MSG_NOBLOCK | MSG_POSTREQ); if (N<0){ if (errno != EWOULDBLOCK) checkp(N,"recv"); } for(;;){ Erc=Wait(Exch, pReqPointer); CheckZ(Erc, "Wait"); if (((READKBD*)*pReqPointer)->rqCode!=READKBDREQ){ N = recv(S, inbuff, sizeof(inbuff), MSG_TCPREQ); if (N > 0) { RecvTelnet((unsigned char*)inbuff, N); /* Make another TCP request */ N = recv(S, inbuff, sizeof(inbuff), MSG_NOBLOCK | MSG_POSTREQ); if (N<0){ if (errno != EWOULDBLOCK) checkp(N,"non-blocking recv"); } }else{ CheckP(N, "recv after wait"); } }else{ CheckZ(KbdReq.ercRet, "recv nz erc"); if (KeyChar==0x04){ sclose(S); exit (0); } if (LocalEcho){ fwrite(&KeyChar, 1, 1, stdout); if (Ksz>=KBDBUFFSZ) Ksz--; Kbuff[Ksz++]=KeyChar; if (KeyChar == LF){ /* CRLF required for SMTP */ Kbuff[Ksz-1]=CR; Kbuff[Ksz++]=LF; N = ssend (S, Kbuff, Ksz, 0); CheckP(N, "ssend"); Ksz=0; } }else{ N = ssend (S, &KeyChar, 1, 0); CheckP(N, "ssend"); /* CRLF not required for Telnet echo */ } MakeKbdReq(); /* Make another KBD request */ } } /*end for */ } /* end main */ errnoCTAsm 12.1.0q??SEG??SEGdatastackdgroup7hH\ errno7ItuerrnoCTAsm 12.1.0q??SEG??SEGdatastackdgroup7hH\ _errno֢IthtonsCTAsm 12.1.0q??SEG??SEG htons_modcodeh .htonsntohsAUF]thtonlCTAsm 12.1.0q??SEG??SEG htonl_modcodeh (ntohlhtonlAUFVĆ֒]Yt tcp.rqlablCTAsm 12.1.0q:??SEG??SEGSTACKSTACK seg0F493H seg0F49BH seg0F61BHlht & n n , SendToUDPlVCloseTcpConnectionlReceiveTcpMessagejAbortTcpConnectionnSendTcpMessagehƐ RecvFromUDPn3 ManageTcp>^OpenTcpConnectionfMapTcpAddrToHostNamebMapTcpHostNameToAddr`QueryTcpStatisticsdItpascal_first_with_bssCTAsm 12.1.0q??SEG??SEGHEAPMEMORYMEMORYMEMORYSTACKSTACKDATADATA_BSSBSSTRANSCONSTCONSTCONSTSTATICSCONSTCOMADSCOMADS COMADS_DATACOMADS COMMONDUMMYCOMMONEINQQQDATACOMMQQCOMMON MODULE_DATADATAZeroDataDATAAQMDATAAQMDATAFAR_DATAFAR_DATADGROUP3hhdtޘh ( "h ޘhژh֘hҘhΘ8X֘xhh h!"H#$Қ"% tbcmp0lOCV72DGROUP BCMP_TEXTCODE_DATADATACONST_BSSBSSHnH H H V @E_bcmpBCMP:_bcmpFBCMPѠrUWV~u+/v t~ tNt^_] UWVvvv v v~v^_]LeVtbcopy0lOCV73DGROUP BCOPY_TEXTCODE_DATADATACONST_BSSBSSHxH H H V @E_bcopyBCOPY`_bcopyPBCOPYѠ|UWVF 9FuF9F sFHHF FHHFv ~Ns^_] UWVvvv v v~v^_]ۜoVtbzero0lOCV73DGROUP BZERO_TEXTCODE_DATADATACONST_BSSBSSHD͘H H H V @E_bzeroBZEROV_bzero"BZERO)ѠHUWV~N^_]UWVvvv ~v^_]];VHtffs0lOCV71DGROUPFFS_TEXTCODE_DATADATACONST_BSSBSSZHdH H H V @E _ffsFFS_ffsDFFSѠhUWVF Fu+'FF~^FVFtFV^_]UWVvv~v^_]ːZV)tindex0lOCV73DGROUP INDEX_TEXTCODE_DATADATACONST_BSSBSSH6ۘH H H V @E _index _indexѠ:UWVF Fu +^_]F^&?t&;F uÌ^_]ːtrindex0lOCV74DGROUP RINDEX_TEXTCODE_DATADATACONST_BSSBSSiH:טH H H V @E _rindexz_rindexqѠ>UWV+FFF^&;F u^F&?uFV^_]ːyt socksupport0lOCV79DGROUPSOCKSUPPORT_TEXTCODE_DATADATACONST_BSSBSSHeH H H V @E2_ERETURN _SOCKETNOTOK_CTOSERC_errnoERRNOg+_ERETURN _SOCKETNOTOK_CTOSERCNѠUWV^ &?t;;$F&_&9u F&+<<^_]UWV~tFFF^ &F^_] UWV~tFF+^_]!ĚVėVfVcV@V:VVVt filedesc0lOCV76DGROUP FILEDESC_TEXTCODE_DATADATACONST_BSSBSSHQH HH V @E._bzero_nfds__fdesc___newfd __validfd __newfdN __validfdѠU VVUWV~|$F&9~&u +^_]ˋ^_]UWVFFF&9~G&uٸ PSǚF Ft ^&7&F^_]˸^_]ː,-̔VċVĀV{kVfFVCV*V%Vߊt reqnode0lOCV75DGROUP REQNODE_TEXTCODE_DATADATACONST_BSSBSS#HHH H V @E_ReqNodeIѠ LOCAL 4;tsocket0lOCV74DGROUP SOCKET_TEXTCODE_DATADATACONST_BSSBSSjH HHH V @ELISTEN_bzero_ERETURNSCLOSE _SOCKETNOTOKSHUTDOWN__newfd_CTOSERCSOCKET __validfdERRNO_nfds _sockdataHTONS__fdesc_% _CloseErroraqNTOHS WHATSOCKETNTOHLSETCTOSTCPPARAMSSETCTOSSOCKEXCH_errno GETHOSTNAME DEALLOCEXCHSETCTOSUDPPARAMSCHECK_ReqNodeREQUESTACCEPTBIND SENDTOUDPCONNECTOPENTCPCONNECTION_bcopy GETSOCKSTATELISTEN SCLOSESOCKET^ WHATSOCKETpSETCTOSTCPPARAMS~ SETCTOSSOCKEXCH GETHOSTNAMESETCTOSUDPPARAMS.ACCEPT~BINDCONNECT GETSOCKSTATE5ѠtU WVFvFV t^&?u&G&WFV;;^&G& GtN& FF^_] DV >VV CU VV pU WVFVFVFFF&9|_؋&u&&NV8;Nu;Vuv&DŽ&&‹ك8&O&W FF^_]U2WVF^+FF~u vFV u^&?t&G&WFV& tv+P~ԉvҚ~ԋvF^&?umF-&GFGP&G/PFP PvvQNQP~ԉvҚ~ԋvF t%P~ԋvkF;;;U^& t8&t0&w ~ԉvҚ~ԋvPvvP+P~ЉvΚ^&^&F^_]MVͭVŇV ŁVmVYV VV įĔV ĎVxVsVnMVHV@V;)V $1Q VV ^U WV~ t%~ t~ tCP~v~v2~uF~t ~tG΃~u~uF~uF~t ~t@롐FPF@u^&PnQP~u &n؎&LJBn؎+&&~&&&PÁSRQ &&/^+&G&G^&w&GFF===^_]U0WVF^F+FFv FV u^&?t&G&WFV^&?uF&FFvvBPPP~҉vК~ҋv tTvvPP~ҋv t6vvPP~ҋv tF;;;UF^&?Pu!v&tvК~ҋv^&G#&GFF+v&tvК~ҋvFFVRP^&G/PFP PvvvNQP~҉vК~ҋvF tPvvv+P~ҋv^&uvݚ~ҋv^&GF&w~ҋv^&G~tYF-FFFVRP^&G/PFP PvvvNQP~҉vК~ҋvF t PZ+^_]U RϚVφV1VVVVΖVjVTVEV ?V&V VVV͏V y_V YVKV >V -V ($V V"V VV V V V V V V М̰VȧV ĤV ̄V&V,WVvFV t ^&?t;;5~~DDPPPDP~v~v u^_]UWVvFV t7^&?u.&G&WFVSDPP~v~v t ;;^&G tPPP~vF |͎&ķvF&`v&D~&Ev&t P+PPP&t0&P&t4&t2&t6 PSDP&D/P~v~vPvvPv~v~v7&u&LJG8&9Gu&9O tFP~v^+&G&G&9G@t&w@ڐPPP~v~vF }^&ķvF&`v&Dv&Dv& & &DŽ Fj&G& Gu&w GP~v~v=u:'FV‹8&9Gt &9W t+&G&G&9G@tPPP~v~vF |&G8&G9&G:&G;&G<&G &G>&G@&GBd&GD&G&GF&GH&G0&GJ&&GL&GN*&GP&GQG&GR>&G/&GV+&GZ&GX&G\&G`&G^&GbF &Gd&Gf&GhG8&GuˣVǙVV ·V`V[VVVD'VV V͏VoV!YVVV5VV V V̰VzV WV@V :V(V "VV  &GP~v~v u^_] U WVFv FV u^&?u|&G&WFV‹&Ƈ@^+&&^&FFvvPP`P~v~v t4vvBP`P~v t;;P^&w&w~~^&&v&t~v~vFF^&G t&wPPv&t~v~vPP^&w0&+P&w4&w2&w6NV RQOQ&G/P~v~vPvvv+P~v~vg&t &LJG8&9Gu&9O tQFPS&G& GtR&w GP~v~v=u:놐FV‹8&9Gu&9W u^+&G&G&w@&G8&G9&G:&G;&G<&G &G>&G@&GBd&GD&G&GFF&GH&G0&GJ&&GL&GN&GP&GQG&GR>&G/&GV&GX&GZ&G\+&G`&G^&GbF  &Gd&Gf&GhG8&G&GP~v~v ux^_]U WVv FV t/^&?u&&G&WFV^&t!<< ;;F &G G^&&O]ǒV njVǃV }VJV VVVVV͢V!ZV-V *VVVV VṾVĉV;V Vt +^_]U WVvFV t ^&?u&G&WFV^&@u;;ZF F tF&?Bu2&G/^&G/^&G/v &8t&^&@<<뭋F ^&G0+^_] U WVvFV t ^&?u&G&WFV^&u;;ZF F tF&?u1&G/^&G/^&G/v &8t&^&@<<뭋F^&G0+^_] UWVF=~Pv v P +^_]&0͇V"łPV JVV VV ĠV ĚVOV IVV dummy*Dlocalttcp0lOCV71DGROUPTCP_TEXTCODE_DATADATACONST_BSSBSSRHVH H H V @ESENDTCPMESSAGE_ERETURNRECVRECEIVETCPMESSAGE _SOCKETNOTOKABORTTCPCONNECTIONSHUTDOWNCLOSETCPCONNECTION_CTOSERC __validfdERRNOSSEND_errno ALLOCEXCHCHECKWAITREQUEST RECVSHUTDOWNSSEND{ѠUWVvFV u;;^&?u~~>>P`PP~v~v u^&w F%=P+Pv v v~v~v=[u FzP^&w&wBPv^_] UWVvFV t ^&?t;;&G&WFV^&@t~}>>vv`PP~v~v t(vvBPP~v u^&G& GtF@tSFV‹8&9Gu&9W tFP~v +&G&G&w@SBP&w~vА^&G& GuF V &9Gu&9WtEsFt:gF t&&w GP~v~vF=uϐ&w GP~v~vFV‹8&9Gu &9W uCFP~v&F u & u&G uAG P~v~vFPvvBP+P~v~^&LJF V ^&G&W&G8*&O9&O:&G;&G<&O &O>&G@&GBdv&L ^&OD&GFO&OH&GJ&GLO&ON&GP&GR>&WVF&GXG&GZ&G\&G^G8P~v~vF t#PvvBP+P~v~vFreϞV wVV ΡVHV"VV ͣVcVHV0V *V V V V V ĪV ħV ̓V\VHV BV %V V V ՠ t:P~vߐF t:^&w GP~v~vF=u2F:::^&w GP~v~vFV‹8&9Gu&9W tFt~u +&G&G^&w@SBP&w1^&w FVRPFRPv v vF@@RP~v~vFPvvBP&4^_] UWVvFV tG^&?u>P`PBP~v~v t0vvBPP~v t ;;uF |H~HtYFAAA^&w ~vF^&G v&w&wBP+P~v~v^&w ^_]^AVV ͲVŤV ŞV ŀV zV fVKV V VgVMV GV -V V؊tudp0lOCV71DGROUPUDP_TEXTCODE_DATADATACONST_BSSBSSPHlH H H V @E RECVFROMUDP_ERETURN _SOCKETNOTOK_CTOSERC __validfdERRNOHTONSNTOHSHTONLNTOHL_errnoSENDTORECVFROM ALLOCEXCHCHECKWAITREQUEST SENDTOUDP`SENDTORECVFROMѠU(WVFvFV t6^&?u-&G&WFVSPP~މvܚ~ދv tF;;;^&GFF@v&t&tvܚFV^&w~ދvFFVRP^&G/PFP PvvvNQP~މvܚ~ދvFPvvPv~ډvؚ^_]UWVFvFV t6^&?u-&G&WFVSPP~v~v t ;;^&G&Gj&Gl@+&Go&Gm&GqF@uG8&9Gu&9O tFP~v~v^+&G&G&9G@t^&w\&t&t~~^ &G&Wv&\\&w~v~v^ &G^&_\&G\^&G& GuFV&9Gu&9WtESFu)F t*&w GP~v~vF=u":&w GP~v~vFV‹8&9Gt&9W t+&G&G&9G@u&w@F u & u&G uDG P~v~vFPvvP+P~v~v^&LJFV^&G&W&G8&G9&O:&O;&G<&O &O>&G@&GBf&O0&ODO&OJ&GL&G/&GNGj&GP&GRoM6VVΪV΀VVV ͿVrVlV YV#VVV̠V̍V eV_V GVV4> FV&GV&WXF&GZGs&G\&G^&G` G8P~v~vF tPvvP+P~vFt:P~vߐF t:^&w GP~v~vF=u2F:::^&w GP~v~vFV‹8&9Gu&9W tFt~u +&G&G^&@t&w@S&w\&t&t~~^ &G&Wv&\\&w~v~v&w0GP&G/PGjP PvvvGsP P~v~vF t^&wx&wv~^ &G&Wv&tz~v^ &G^&Gt^_]l1VͳV ͒VTV/V VĸVIJV ̘VxVYV8VŊt carbonite0lOCV77DGROUPCARBONITE_TEXTCODE_DATADATACONST_BSSBSSHLH HH V @E\_ERETURN _SOCKETNOTOK_CTOSERCSOCKET__fdesc_ FREEZESOCKET THAWSOCKET DEALLOCEXCH! FREEZESOCKET THAWSOCKETѠWV<UWV^ ^F&G&WFVS`PP~v~v t^&G& Gt:tF^&9|>&vv&&w~ ^&unF&F&LJF @F &_~&+^& ^&_~&FF^&9uԋF&)F~tF+F^_]5͸VŊViV+VVļVĶV̙VtVnVfV`V#VɊtswrite0lOCV74DGROUP SWRITE_TEXTCODE_DATADATACONST_BSSBSSUHMH H H V @E+_swrite __validfdERRNOSSEND_errno _swrite]ѠUWVvFV t5^&?u,&G&WFV^&-`t)F<<< ;;^_]ːFV FVF F9vvvF=~P+P~v~vF@tFF)F~F ^_]М̛VZVTVLVFV Vt gethostbyaddr0lOCV7;DGROUPGETHOSTBYADDR_TEXTCODE_DATADATACONST_BSSBSSQH3H H HV V @EN_bcopyMAPTCPADDRTOHOSTNAME GETHOSTBYADDR_ReqNode_errnoERRNONTOHL GETHOSTBYADDRzѠUWV~u~t3Ў+PPv v 66~v~vRPP@PFPQP&6~v~vF t F}^Ƈ+  ڋ؎¸^_]ĜTҟɟƟŸĺĴİĭĨĤĢĝĒVďVyVpVgVdVVHV?;2V't gethostbyname0lOCV7;DGROUPGETHOSTBYNAME_TEXTCODE_DATADATACONST_BSSBSSKH%H H HV V @EF GETHOSTBYNAME_ReqNode_errnoERRNOHTONLMAPTCPHOSTNAMETOADDR GETHOSTBYNAMEtѠU WVvv~3IQPQP&6~v~vF tF3Ў+66~v~3+~IƇ+  ڋ؎¸^_]VןԟПΟȟŸľĻĶIJįī|yuoVfbPVMV7V.V%V"Vފt gethostlist BTOS C V1.2.0Z8 C_GETHOSTLISTCODEDATADGROUPDATADATASTACKDGROUP [ޘH HTX;REQNODE MANAGETCP_ERETURNERRNOFREEMALLOCBCOPY GETHOSTLISTX_UlF-^㋇ t^㋗RPFF;|ʋV F&ҍFVFҍFVFҍFVF~}FF^ &FPvP3PFPLPRP6F t=uh&F^&;|E&;F|6FP&FPP3PFPLPRP6F u=uvӎÍ^^&2PDDVF u u ҍFFRPvvӎÍ^^&2PӎÍ^^&2^&VF&>&U&E&㉗ӎÍ^^&2FF&^&^&&V;} &;F}&F^ &&&F^&;}3] K'+0V?KNRĝĭȰĶ̹VV5VMVc͎VŲŽ %5;t inet_addr0lOCV77DGROUPINET_ADDR_TEXTCODE_DATADATACONST_BSSBSSHtH H H V @E/NLSCASEQMUL16HTONL INET_ADDR INET_ATON INET_ADDR INET_ATON<ѠxUWVvvFP~v~v tFV^_]U$WVFFV+FFF ^ &?0u"F ^ &?xt&?Xu FF F^ &F u<0|7<93vvv~މvܚ~ދvȊF-0ڙډN^몃~ur~0|~9~~a|~f~ ~A|T~FN+PPFPFP*Q~މvܚ~ދvF-WN^ӉFV3^ &?.u7F9Fs ~u~v++FV^F&&WF &?t |&?&? t&? t &? t&? uFN+@FV u'Ht$HtHtOHth~rw~wf*+ FF Ft"vv~މvܚ~ދv^&&WK9Vt@~v7f* F믐9Vt$~vVF VԊ*N+ F V^_]לVV̭VV*t inet_lnaof0lOCV78DGROUPINET_LNAOF_TEXTCODE_DATADATACONST_BSSBSS,HPH H H V @ENTOHL INET_LNAOF͐ INET_LNAOFUѠTUWVvv~v~vFu*%=uF+ F*^_] V't inet_netof0lOCV78DGROUPINET_NETOF_TEXTCODE_DATADATACONST_BSSBSS HXH H H V @ENTOHL INET_NETOF INET_NETOFIѠ\UWVvv~v~vFVu F*+%=uFĊ*^_]FV't inet_makeaddr0lOCV7;DGROUPINET_MAKEADDR_TEXTCODE_DATADATACONST_BSSBSS]HkH H H V @EHTONL INETMAKEADDR_ INETMAKEADDRѠUWVF Fu~u~sF V *n*+ O~wr ~w3r/FN NF2FVԊ*N * ȋډN^F V F VFVvv^&&W^_] ̏Vtinet_makeaddr_btosc BTOS C V1.2.0Z@C_INET_MAKEADDR_BTOSCCODEDATADGROUPDATADATASTACKDGROUP/ ;H H XSCOPY@ INETMAKEADDR INET_MAKEADDR?Uvvv v ҍFRPS^Sێû]ˢV,V5tinet_makeaddr_msc0lOCV7?DGROUPINET_MAKEADDR_MSC_TEXTCODE_DATADATACONST_BSSBSSH2ߘH H H V @E_inet_makeaddr INETMAKEADDR+_inet_makeaddrѠ6UWVvvv v FP~vFV^_]ː Vt inet_network0lOCV7:DGROUPINET_NETWORK_TEXTCODE_DATADATACONST_BSSBSSnH2H H H V @E NLSCASEQMUL16 INET_NETWORKӐ INET_NETWORKѠU"WVFFV+FF ^&?0uF^&?xt&?XuF^&F u<0|6<92vvW~vޚ~vȊF-0ڙډN^봐us~0|~9~~a|~f~ ~A|U~FO+PPFPFP*Q~vޚ~vF-WN^ӉFV=^&?.u)F9FrFV^F&&WF&?t&? t&? t &? t&? uFV^F&&WFN+FV u=w+FF+Fƙ;Vw9r;Fs2FVu*FVF؊*+ F뿐FV^_]M VfVt inet_ntoa0lOCV77DGROUPINET_NTOA_TEXTCODE_DATADATACONST_BSSBSSlHH HH V @E INET_NTOA __ntoaResa* INET_NTOAѠWV?UWVF FV&FF+^N&*F 0^N&ƙ u} ^N&.G|FV@؎‹FV@^_]4 VVwt encryptPLM86 V2.304/29/98 12:25:2͖2STACKMEMORYCODEDATACONST ENCRYPT_CODEDGROUPh@XHH T D K ENCRYPTPSWD D\UQFF<wN^ &^&NuFF< w,N^ &^&Fuދ]tHN($,C1V<[7d_errno inet_netof:_index bzero _bcmp_rindex SHUTDOWNSCLOSE GETHOSTNAMEsread!-encrypt!A socksupport!errno!gethostbyname!2>*"3C;J inet_lnaof9 gethostbyaddr0 GETSOCKSTATE_getdtablesize, gethostbyname2ffs htons! tcp.rqlabl!+3&xL"PCZ=obGETCTOSSOCKPARAMS'ACCEPT_nfds+socket inet_network>SETCTOSTCPPARAMS INET_ATON7SendTcpMessageRECVReceiveTcpMessage setctosparams*pascal_first_with_bss!inet_makeaddr!;gethostbyaddr!0inet_makeaddr_msc!=inet_makeaddr_btosc!<getdtablesize!,},ibzero! udp!!bcmp!setctosparams!* filedesc!3} 'ojHbYAvN]:CONNECTntohlntohs ENCRYPTPSWDAMapTcpAddrToHostName RecvFromUDP WHATSOCKET gethostlist4RECVFROM!CloseTcpConnectionbcopy htonl! gethostlist!4rindex! sockparams!' inet_addr!7ffs! COPYRIGHT "(C)" 1993 Unisys CORPORATION All Rights Reserved UNISYS PROPRIETARY LIBRARY: socket.lib VERSION: s2.2.52 (wednesday april 29, 1998, 12:11) PASCAL_FIRST_with_BSSWCTAsm 12.1.0q??SEG??SEGHEAPMEMORYMEMORYMEMORYSTACKSTACKDATADATA_BSSBSSTRANSCONSTCONSTCONSTSTATICSCONSTCOMADSCOMADS COMADS_DATACOMADS COMMONDUMMYCOMMONEINQQQDATACOMMQQCOMMON MODULE_DATADATAZeroDataDATAAQMDATAAQMDATAFAR_DATAFAR_DATADGROUP3hhdtޘh ( "h ޘhژh֘hҘhΘ8X֘xhh h!"H#$Қ"% t #ifndef _BSTRING_ #define _BSTRING_ #include #ifdef __BTOSC__ /* * PASCAL Binding */ int PlmFar(BCMP) (void *b1, void *b2, unsigned int len); void PlmFar(BCOPY) (const void *src, void *dst, unsigned int len); void PlmFar(BZERO) (const void *b, unsigned int len); long PlmFar(FFS) (long i); #define bcmp BCMP #define bcopy BCOPY #define bzero BZERO #define ffs FFS #elif __CTOS__ /* * C Binding */ int bcmp (void *b1, void *b2, unsigned int len); void bcopy (const void *src, void *dst, unsigned int len); void bzero (const void *b, unsigned int len); long ffs (long i); #endif #endif /****************************************************** PROPRIETARY PROGRAM MATERIAL THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF UNISYS CORPORATION. COPYRIGHT (C) 1991 Unisys CORPORATION @(#)netdb.h 1.2 86/10/07 SMI; from UCB ******************************************************/ #ifndef _NETDB_H #define _NETDB_H #ifndef MAXHOSTNAMELEN #define MAXHOSTNAMELEN 64 #endif #include "sys/socompat.h" #define _PATH_HEQUIV "hosts.equiv" #define _PATH_HOSTS "hosts" #define _PATH_NETWORKS "networks" #define _PATH_PROTOCOLS "protocols" #define _PATH_SERVICES "services" /* * Structures returned by network * data base library. All addresses * are supplied in host order, and * returned in network order (suitable * for use in system calls). */ struct hostent { char FARPTR h_name; /* official name of host */ char FARPTR FARPTR h_aliases; /* alias list */ int h_addrtype; /* host address type */ int h_length; /* length of address */ #if BSD >= 43 char FARPTR FARPTR h_addr_list; #define h_addr h_addr_list[0] #else char FARPTR h_addr; /* address */ #endif }; /* * Assumption here is that a network number * fits in 32 bits -- probably a poor one. */ struct netent { char FARPTR n_name; /* official name of net */ char FARPTR FARPTR n_aliases; /* alias list */ int n_addrtype; /* net address type */ u_long n_net; /* network # */ }; struct servent { char FARPTR s_name; /* official service name */ char FARPTR FARPTR s_aliases; /* alias list */ int s_port; /* port # */ char FARPTR s_proto; /* protocol to use */ }; struct protoent { char FARPTR p_name; /* official protocol name */ char FARPTR FARPTR p_aliases; /* alias list */ int p_proto; /* protocol # */ }; struct rpcent { char FARPTR r_name; /* name of server for this rpc program */ char FARPTR FARPTR r_aliases; /* alias list */ u_long r_number; /* rpc program number */ }; #define MAXHOSTLISTLEN 20 struct hostlist { int total; /* total number of hosts on the list */ char FARPTR host[MAXHOSTLISTLEN];/* array of pointers to host names */ }; /* * Error return codes from gethostbyname() and gethostbyaddr() * (left in extern int h_errno). */ #define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found */ #define TRY_AGAIN 2 /* Non-Authoritive Host not found, or SERVERFAIL */ #define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */ #define NO_DATA 4 /* Valid name, no data record of requested type */ #define NO_ADDRESS NO_DATA /* no address, look for MX record */ int PlmFar(gethostlist) (int FARPTR offset, char FARPTR outbuf, int element); int PlmFar(gethostname) (char FARPTR n, int sz); void PlmFar(sethostent)(int); void PlmFar(endhostent)(); struct hostent FARPTR PlmFar(gethostbyname) (char FARPTR name), FARPTR PlmFar(gethostbyaddr) (char FARPTR , int, int), FARPTR PlmFar(gethostent)(); void PlmFar(setnetent)(int); void PlmFar(endnetent)(); struct netent FARPTR PlmFar(getnetbyname)(char FARPTR name), FARPTR PlmFar(getnetbyaddr)(), FARPTR PlmFar(getnetent)(); void PlmFar(setservent)(int); void PlmFar(endservent)(); struct servent FARPTR PlmFar(getservbyname)(char FARPTR name, char FARPTR proto), FARPTR PlmFar(getservbyport)(), FARPTR PlmFar(getservent)(); void PlmFar(setprotoent)(int); void PlmFar(endprotoent)(); struct protoent FARPTR PlmFar(getprotobyname)(char FARPTR name), FARPTR PlmFar(getprotobynumber)(), FARPTR PlmFar(getprotoent)(); void PlmFar(setrpcent)(); void PlmFar(endrpcent)(); struct rpcent FARPTR PlmFar(getrpcbyname)(char FARPTR name), FARPTR PlmFar(getrpcbynumber)(), FARPTR PlmFar(getrpcent)(); #endif /* * Program Name: echoserver.c * runs on CTOS and UNIX, can be used to test the terminal examples */ #include #include "sys/socket.h" #include "netinet/in.h" /* #include */ #include "netdb.h" /*#include "stdio.h"*/ /* #include */ #ifdef CTOS #define send ssend #endif #define ECHOPORT 3000 #define RECBUFFSZ 2000 extern int errno; /* global error code returned from system calls */ int Trace=0; /* if TRUE will trace good returns with the bad */ main () { int S; /* file descriptor returned by socket call */ int N; /* variable used as a return value of calls */ int Ns; /* accepted socket file descriptor */ char Buf[RECBUFFSZ]; /* data "recv"d is stored here */ struct sockaddr_in Server, Client; /* local and remote host addresses */ int IdataLen; /* number of characters received */ int ClientAddrLen; /* Client Address Length */ printf("Echoserver initializing...\n"); S = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); CheckP (S , "socket"); printf("Socket assigned.\n"); Server.sin_family = AF_INET; /* assign server attributes */ Server.sin_port = htons(ECHOPORT); Server.sin_addr.s_addr = htonl(INADDR_ANY); N = bind (S, &Server, sizeof (Server)); CheckP (N , "bind "); N = listen (S, 1); CheckP (N , "listen"); printf("Listen successful.\n"); Client.sin_family = AF_INET; /* assign domain */ Client.sin_addr.s_addr = htonl(INADDR_ANY); /* accept any valid address */ Client.sin_port = htons(0); /* accept any valid port */ ClientAddrLen = sizeof (Client); printf("Echoserver ready.\n"); for (;;) { Ns = accept (S, &Client, &ClientAddrLen); /* accepts a connection */ CheckP (Ns, "accept"); printf("\nAccept successful. Receiving: "); while ( (IdataLen = recv (Ns, Buf, sizeof (Buf), 0))>0){ N= send(Ns, Buf, IdataLen, 0); printf (" %d", IdataLen); } /* printf ("\n recv errno=%d ... closing connection\n", errno); printf ("CTOSerrno is: %d\n",CTOSerrno); */ close (Ns); } } CheckP (n, msg) /************** * check n positive else display msg & quit */ int n; char *msg; { if (n<0){ printf (" Program terminated: error %u in %s\n", errno, msg); exit (1); } else { if (Trace) printf ("Trace OK: %s\n", msg); } } /* Program Name: multecho.c * This program implements an echo server that can handle several clients * simultaneously by multiplexing requests on a single exchange and using * non-blocking accept and recv. * Run only on CTOS. */ /* HISTORY OF CHANGES */ /* UCF 17648039: Socket example used to not compile under BTOS C. */ #include #include "sys/socket.h" #include "netinet/in.h" #include "netdb.h" #define send ssend #define ECHOPORT 3000 #define RECBUFFSZ 2000 #if defined(__BTOSC__) int AllocExch plm far (int *); int Wait plm far (int , char **); int Request plm far (char *); #elif defined( __CTOS__) #define AllocExch @ #define Wait @ #define Request @ #include #else #error Unknown C compiler! #endif extern unsigned int errno; /* global error code returned from system calls */ int Erc; main () { int S; /* file descriptor returned by socket call */ int N; /* variable used as a return value of calls */ int Ns; /* accepted socket file descriptor */ int Na; int numbytes; char Buf[RECBUFFSZ]; /* data "recv"d is stored here */ struct sockaddr_in Server, Client; /* local and remote host addresses */ int ClientAddrLen; /* Client Address Length */ char **exchptr; char **pReqPtr; int unb_sk; /* unblocked socket */ int st; /* state returned by getsockstate */ int n; int Exch; #ifdef DEBUG printf("server initializing...\n"); #endif Erc=AllocExch(&Exch); CheckZ(Erc,"AllocExch"); #ifdef DEBUG printf("exch is %d\n",Exch); #endif S = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); CheckP (S , "socket"); n=setctostcpexchange (S, Exch, (char ***)&pReqPtr); CheckP (n, "setctostcpexchange for well known socket"); Server.sin_family = AF_INET; /* assign server attributes */ Server.sin_port = htons(ECHOPORT); Server.sin_addr.s_addr = htonl(INADDR_ANY); N = bind (S, &Server, sizeof (Server)); CheckP (N , "bind "); N = listen (S, 1); CheckP (N , "listen"); Client.sin_family = AF_INET; /* assign domain */ Client.sin_addr.s_addr = htonl(INADDR_ANY); /* accept any valid address */ Client.sin_port = htons(0); /* accept any valid port */ ClientAddrLen = sizeof (Client); printf("Server ready... \n"); printf("\n\tThis server reports:\n"); printf("\tA: Connection Accepted\n"); printf("\tR: Data Received\n"); printf("\tT: Data Echoed\n"); printf("\tT: Connection Closed\n\n"); Ns = accept (S, &Client, &ClientAddrLen); if (errno==EWOULDBLOCK){ Ns=0; #ifdef DEBUG printf("Accept would block\n"); #endif } CheckP (Ns, "accept"); for (;;) { #ifdef DEBUG printf("Waiting in Exch %d\n",Exch); #endif Erc=Wait(Exch,pReqPtr); CheckZ(Erc,"Main Loop: Waiting in the exchange"); unb_sk = whatsocket(*pReqPtr); CheckP(unb_sk,"whatsocket"); #ifdef DEBUG printf ("unblocked socket = %d\n",unb_sk); #endif st = getsockstate(unb_sk); #ifdef DEBUG printf ("state from getsockstate = %x\n",st); #endif switch(st&0xff){ case TCPLISTEN: Ns = accept (unb_sk, &Client, &ClientAddrLen); CheckP (Ns, "accepting in main loop"); printf ("A"); n = setctostcpexchange (Ns, Exch, (char ***)&exchptr); CheckP (n, "setctostcpexchange for a new socket"); Na = accept (S, &Client, &ClientAddrLen); if (errno==EWOULDBLOCK){ Na=0; #ifdef DEBUG printf("Accept would block\n"); #endif } CheckP (Na, "Posting accept in main loop"); n = recv(Ns, Buf, sizeof(Buf), MSG_NOBLOCK | MSG_POSTREQ); if (errno==EWOULDBLOCK) n=0; CheckP (n, "Posting recv for a new socket"); break; case TCPCONNECT: n = recv(unb_sk, Buf, sizeof(Buf), MSG_TCPREQ); if (n<1 ){ sclose(unb_sk); printf("C"); break; } numbytes=n; CheckP (n, "recv"); printf ("R"); n = recv(unb_sk, Buf, sizeof(Buf), MSG_NOBLOCK | MSG_POSTREQ); if (errno==EWOULDBLOCK) n=0; CheckP (n, "Posting recv"); n= send(unb_sk, Buf, numbytes, 0); printf("T"); #ifdef DEBUG printf("Sending data back to the client: socket %d\n",unb_sk); #endif CheckP (n, "Send"); break; DEFAULT: printf ("No way you will make it here\n"); } } } CheckP (n, msg) /************** * check n positive else display msg & quit */ int n; char *msg; { if (n<0){ printf (" Program terminated: error %u in %s\n", errno, msg); exit (1); } else { #ifdef DEBUG printf ("Trace OK: %s\n", msg); #endif } } CheckZ (int n, char *msg) /***************************** * check n zero else display msg */ { if (n){ printf(" Program terminated: CTOS erc %u in %s\n", n, msg); exit(1); } } /**** terminal.c ****/ /* * This module is common to the three terminal_?.c programs * It contains a tiny subset of the Telnet protocol, which should normally be * sufficient to log on to many unix hosts. * It also contains some common subroutines. * It must be linked with terminal_?.obj. * * * OGA 09/09/91 - MCsocket.lib build * efw 09/21/93 - TCP 2.2 build * */ #include #include "sys/types.h" #include "sys/socket.h" #ifdef __BTOSC__ extern int ZPrint plm far (); #else #define ZPrint @ #include #endif #define IAC 0xFF /* Telnet protocol definitions... */ #define DO 0xFD #define DONT 0xFE #define WILL 0xFB #define WONT 0xFC #define SPGA 0x03 #define TTYP 0x18 #define ECHO 0x01 /**** Global Data ****/ int TCPprecedence; extern unsigned int errno; /* global error code returned from system calls */ extern int Debug; /* Debugging level */ extern int S; /* file descriptor returned by socket call */ extern int N; /* return value of function calls */ extern int LocalEcho; /* TRUE if remote does not echo */ extern int RemotePort; /* Default to the Telnet port */ int recvd=0; /**** Local functions ****/ void CheckArgs(int argc, char *argv[]); /* CheckArgs */ void CheckP(int N, char *msg); /* UNIX style return code check */ void CheckZ(int N, char *msg); /* CTOS Erc check */ void InitTelnet(); /* Telnet startup for unix */ void RecvTelnet(unsigned char *iBf, int iBfSz); /* Telnet input processing for unix */ void CheckArgs(int argc, char *argv[]) /************************************* * Check Args * argv[0] = program name, argv[1] = host name; * argv[2] = port number, argv[3] = local echo, argv[4] = Debug Level */ { if (argc < 2) { printf("usage: terminal_1, hostname, port, y (if local echo)\n", argv[0]); exit(0); } if (argc>2) RemotePort=atoi(argv[2]); if (argc>3 && (*argv[3]=='y' || *argv[3]=='Y')) LocalEcho=1; #ifdef DEBUG Debug=1; #endif if (argc>4){ TCPprecedence=atoi(argv[4]); printf("Precedence=%d\n", TCPprecedence); } if (RemotePort==23) LocalEcho=0; /* if Telnet, assume unix ! */ } void CheckP (int N, char *msg) /***************************** * check N positive else display msg */ { if (N<0){ switch(errno){ case ECLOSING: case EABORTING: case EABORTED: printf(" TCP Connection closed by remote Host\n"); break; default: printf(" Program terminated: error %u in %s\n", errno, msg); } exit(1); } else { if (Debug>1) printf("Trace OK: %s\n", msg); } } void CheckZ (int N, char *msg) /***************************** * check N zero else display msg */ { if (N){ printf(" Program terminated: CTOS erc %u in %s\n", N, msg); exit(1); } } void InitTelnet() /******************************************** * Simple Telnet startup assumptions for unix */ { char bf[3]; bf[0]=IAC; bf[1]=DO ; bf[2]=SPGA; N = ssend (S, bf, 3, 0); CheckP(N, "ssend DO SPGA"); bf[0]=IAC; bf[1]=DO ; bf[2]=ECHO; N = ssend (S, bf, 3, 0); CheckP(N, "ssend DO ECHO"); bf[0]=IAC; bf[1]=WONT; bf[2]=ECHO; N = ssend (S, bf, 3, 0); CheckP(N, "ssend WONT ECHO"); /* * turn the hardware cursor on * using CTOS bytestream escape * sequence */ ZPrint("\0xFFVN"); /* * turn off the Next Page pause */ ZPrint("0xFFPF"); } void RecvTelnet(unsigned char *iBf, int iBfSz) /********************************************** * Simple Telnet processing input buffer for unix */ { static state=0, verb; static char *verbTxt, verbTxtBf[8], *cmdTxt, cmdTxtBf[8]; unsigned char bf[6], c; int p=0; recvd+=iBfSz; while (p1) putchar(c); if (c=='') p=(c/0); break; case 1: verb=c; switch (c){ case DO: verbTxt="DO"; break; case DONT: verbTxt="DONT"; break; case WILL: verbTxt="WILL"; break; case WONT: verbTxt="WONT"; break; default: sprintf(verbTxtBf, "VERB %X", c & 255); verbTxt=verbTxtBf; break; } state++; break; case 2: switch (c){ case SPGA: cmdTxt="SPGA"; break; case TTYP: cmdTxt="TTYP"; break; case ECHO: cmdTxt="ECHO"; break; default: sprintf(cmdTxtBf, "CMD %X", c & 255); cmdTxt=cmdTxtBf; break; } bf[0]=IAC; bf[2]=c; switch (c){ case SPGA: if (verb==DO){ bf[1]=WILL; N=ssend(S, bf, 3, 0); CheckP(N, "ssend WILL SPGA"); if (Debug) printf("\n\r DO SPGA recvd\n\r"); } break; default: if (verb==DO || verb==DONT){ bf[1]=WONT; N=ssend(S, bf, 3, 0); CheckP(N, "ssend WONT ..."); } if (Debug) printf("\n\r %s %s recvd\n\r", verbTxt, cmdTxt); } state=0; break; } p++; } } /* * Simple File Transfer Program * * This program will act as both the client and the server in * this file transfer, depending on values provided on the * command line. To run it as a client specify the remote * hostname as the first argument the local filename to be * transferred as the second argument. If you run this program * without argument, it will act as a server and will wait for * a connection from a client. * * This program is designed to work on both SunOS, a derivative * of Berkeley 4.2 Unix, Unix System V (running on a Unisys * U6000), and on CTOS II. * * * Compile-time flags: -define DEBUG to see a trace of most * things as they happen. Undefined produces a "quiet" * runfile. -define CTOS to compile code for CTOS. -define * U6000 to compile code for the U6000 running Unix System V. * */ /* HISTORY OF CHANGES */ /* UCF 17648039: Socket example used to not compile under BTOS C. */ #include "stdio.h" #include #include "sys/socket.h" #ifndef CTOS /* CTOS Microsoft C 6.1 defines __CTOS__ */ #if defined( __CTOS__) #define CTOS /* BtosC 2.1 defines __BTOSC__ */ #elif defined(__BTOSC__) #define CTOS #endif #endif /* Special CTOS includes */ #ifdef CTOS /* These two are undefined in CTOS. */ #define O_RDONLY 0 #define O_WRONLY 1 #define send ssend #else #include "sys/file.h" #endif #include "errno.h" #include "string.h" #include "netinet/in.h" #include "netdb.h" /* * Also - On the U6000 you must compile explicitly with the * socket library: cc -DU6000 [-DDEBUG] -osftp sftp.c * /lib/libsocket.a */ #ifdef U6000 #include "fcntl.h" #endif /* Definitions used throughout the program */ #define TX 1 #define RCV 2 #define XFERPORT 4096 #define BUFSZ 512 #define EOT 4 #ifdef __BTOSC__ extern int errno; #endif /** Global Variables **/ char *hostname; /* Name of machine to transfer * file to, as taken from argv */ char *fname; /* Name of file to be * transfered, as taken from * argv */ int s; /* File Descriptor used for * Socket */ int n; /* Value returned from * function calls */ int fdesc; /* File Descriptor used for * referencing the file */ struct sockaddr_in server, client; /* Client and server socket * addresses */ struct hostent *hp; /* Pointer to struct w/ host * address */ char buf[BUFSZ]; /* send/recv buffer */ main(int argc, char *argv[]) { int trswitch; hello_msg(); /* Display startup messages */ trswitch = check_args(argc, argv); /* Insure correctness of * input params */ if (trswitch == TX) transmit(); /* Be a client process */ else receive(); /* Be a server process */ } /* Display startup messages */ int hello_msg() { printf("\n\n\n Simple File Transfer Program\n\n"); printf("This version compiled to run under "); #if defined( __CTOS__) printf("CTOS with Micrsoft C 6.1\n"); #elif defined(__BTOSC__) printf("CTOS with BtosC 1.2\n"); #elif defined(CTOS) printf("CTOS\n"); #else printf("Unix"); #ifdef U6000 printf(" System V on a Unisys U6000\n"); #else printf("\n"); #endif #endif } int check_args(count, vect) int count; char *vect[]; { if (count > 3) { printf("Usage: sftp [hostname fname]\n"); exit(1); } if (count == 3) { hostname = vect[1]; fname = vect[2]; return (TX); } else return (RCV); } int transmit() { /* Be a client */ int bytes_read, bytes_sent, total = 0; printf("Preparing to transmit file %s to %s\n", fname, hostname); /* Open the file to be transfered in the readonly mode */ if ((fdesc = open(fname, O_RDONLY)) < 0) { printf("Unable to open %s to transfer.\n", fname); exit(1); } #ifdef DEBUG printf("File successfully opened.\n"); #endif /* * Set up socket connections... AF_INET is the * communications domain, internet, SOCK_STREAM is the * type of connection requested, a bytestream socket * connection, and IPPROTO_TCP specifies the protocol to * be used, in this case TCP. */ s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); checkp(s, "socket"); server.sin_family = AF_INET;/* Set domain */ server.sin_port = htons(XFERPORT); /* Set up transfer port */ hp = gethostbyname(hostname); /* Get network address for * host */ checkp((hp == NULL ? -1 : 0), "gethostbyname"); /* * Copy the h_addr field of the hostent struct returned by * gethostbyname to hp into the server address. */ memcpy((char *) &server.sin_addr.s_addr, hp->h_addr, hp->h_length); n = connect(s, &server, sizeof(server)); /* Connect to remote * host */ checkp(n, "connect to host"); n = send(s, fname, strlen(fname), 0); /* Send name of file to * follow */ checkp(n, "fname send"); n = recv(s, buf, BUFSZ, 0); /* Receive ACK from server */ checkp(n, "server ack"); if (!(n > 2 && buf[0] == 'A' && buf[1] == 'C' && buf[2] == 'K')) { printf("Remote failed to ack: %s\n", buf); exit(1); } printf("Sending file...\n"); /* Read from input file, send to socket, i.e., do transfer */ while ((bytes_read = read(fdesc, buf, BUFSZ)) > 0) { checkp(bytes_read, "block read from disk"); bytes_sent = send(s, buf, bytes_read, 0); checkp(bytes_sent, "send data"); total += bytes_sent; } /* End of session */ n = close(fdesc); checkp(n, "close transfered file"); #ifdef CTOS n = sclose(s); #else n = close(s); #endif checkp(n, "close socket"); printf("File successfully transfered, %d bytes\n", total); exit(0); } int receive() { /* Be a server */ int ns; /* New socket from 'accept' */ int client_len = sizeof(client); int bytes_rcvd, bytes_wrote, total = 0; /* * Set up socket connections... AF_INET is the * communications domain, internet, SOCK_STREAM is the * type of connection requested, a bytestream socket * connection, and IPPROTO_TCP specifies the protocol to * be used, in this case TCP. */ s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); checkp(s, "socket"); server.sin_family = AF_INET;/* Set domain */ server.sin_port = htons(XFERPORT); /* Set transfer port */ server.sin_addr.s_addr = htonl(INADDR_ANY); n = bind(s, &server, sizeof(server)); /* Bind server's address * to socket */ checkp(n, "bind address"); n = listen(s, 1); /* Listen for a connection on * the socket */ checkp(n, "listen"); client.sin_family = AF_INET;/* Set the client's comm * domain */ client.sin_addr.s_addr = htonl(INADDR_ANY); /* Accept any Internet * address */ client.sin_port = htons(0); /* * Begin loop-forever to accept connections on the socket * and such */ for (;;) { printf("***Ready for transfer***\n"); total = 0; ns = accept(s, &client, &client_len); checkp(ns, "accept"); bytes_rcvd = recv(ns, buf, BUFSZ, 0); checkp(bytes_rcvd, "recv filename"); fname = buf; /* Copy buffer into filename */ fname[bytes_rcvd] = '\0'; #ifdef DEBUG printf("File name received: %s\n", fname); #endif #ifndef CTOS fdesc = open(fname, O_WRONLY | O_CREAT, 0666); /* Open fname for * writing */ checkp(fdesc, "open file for writing"); #else fdesc = creat(fname, O_WRONLY); /* Open for CTOS - * creates or overwrites */ checkp(fdesc, "create file for writing or open for overwriting"); #endif if (fdesc >= 0) { /* Then file was opened * successfully, send an ACK */ printf("Receiving file %s...\n", fname); strcpy(buf, "ACK"); n = send(ns, buf, 3, 0); checkp(n, "send ack to client"); } else { /* Error, probably file * already exists, but * nack&bomb anyway */ strcpy(buf, "Error opening file on Server"); n = send(ns, buf, 28, 0); checkp(n, "send nack to client"); checkp(fdesc, "open file"); /* NOTE: this will cause * pgm to exit. */ } /* Receive the actual file */ while ((bytes_rcvd = recv(ns, buf, BUFSZ, 0)) > 0) { checkp(bytes_rcvd, "recv data"); bytes_wrote = write(fdesc, buf, bytes_rcvd); checkp(bytes_wrote, "block wrote to disk"); total += bytes_rcvd; } n = close(fdesc); /* Close new file */ checkp(n, "close file"); #ifdef CTOS n = sclose(ns); /* Close new socket */ #else n = close(ns); #endif checkp(n, "close socket"); printf("File received, %d bytes\n", total); } /* END Loop-Forever */ } int checkp(n, msg) /* Check the value returned * from a function call, if */ int n; /* negative, display an * appropriate error. * Defining */ char *msg; /* DEBUG at compile will cause * a trace of all relavant */ { /* function calls. */ if (n < 0) { printf("Program terminated: error %u in %s\n", errno, msg); exit(1); } #ifdef DEBUG else printf("%s succeded, n = %d\n", msg, n); #endif } /**** terminal_3.c ****/ /* * This program demonstrates the use of the third method of using non blocking * features in the socket library - where the socket library does the wait. * This program runs on CTOS only (not UNIX). * It must be linked with terminal.obj. * * Usage: terminal_3 hostname [remote_port [local_echo [debug level]]] * * The program supports a small subset of the Telnet protocol, which * allows it to act as a very dumb terminal on some unix hosts * - use "hostname 23 n" to log on to unix * * If the server is echoserver or multecho remote_port is 3000. * local echo: use "y" for yes. * * * OGA 09/09/91 - MCsocket.lib build * efw 09/21/93 - TCP 2.2 build * */ #include #include "sys/types.h" #include "sys/socket.h" #include "netinet/in.h" #include "netdb.h" /**** CTOSLIB functions ****/ #ifdef __BTOSC__ int AllocExch plm far(int *exch); int Request plm far(char *rq); #else #define AllocExch @ #define Request @ #include #endif /**** defines ****/ #define CR 13 /* ASCII */ #define LF 10 /* ASCII */ #define BUFSZ 512 /* Buffer size for TCP */ #define KBDBUFFSZ 512 /* Keyboard Buffer size */ #define READKBDREQ 54 /* Keyboard Request Code */ /**** functions imported from terminal.c ****/ void CheckArgs(int argc, char *argv[]); /* CheckArgs */ void CheckP(int n, char *msg); /* UNIX style return code check */ void CheckZ(int n, char *msg); /* CTOS Erc check */ void InitTelnet(); /* Telnet startup for unix */ void RecvTelnet(unsigned char *iBf, int iBfSz); /* Telnet input processing for unix */ /**** Global Data ****/ typedef struct kbd_read /* Kbd request block structure */ { char sCntlInfo; char rtCode; char nReqPbCb; char nRespPbCb; int UserNum; int exchResp; int ercRet; int rqCode; int mode; int resv[2]; char *pCharRet; int sCharRet; } READKBD; extern unsigned int errno; /* global error code returned from system calls */ int Debug; /* Debugging level */ int LocalEcho=0; /* False if the host does echo (eg, UNIX) */ int Erc; /* Application Global for CTOS erc's */ char Kbuff[KBDBUFFSZ+1]; /* Keyboard Buffer */ int Ksz=0; /* Keyboard Bufferpointer */ char KeyChar; /* character read stored here */ READKBD KbdReq; /* Keyboard Request Block */ char *pKbdReq; /* pointer to request block */ char *ReqPointer; /* pointer to request block */ char **pReqPointer; /* pointer to request block pointer */ int Exch; /* address of exchange stored here */ int S; /* file descriptor returned by socket call */ int N; /* return value of function calls */ struct sockaddr_in server; /* server socket address */ struct hostent *hp; /* pointer to structure containing host address */ char inbuff[BUFSZ]; /* buffer for data from remote host */ int RemotePort=23; /* Default to the Telnet port */ /**** Local functions ****/ void MakeKbdReq(); /* Make Keyboard Request */ void MakeKbdReq() /**************** * make Keyboard Request */ { memset(&KbdReq, 0, sizeof(KbdReq)); KbdReq.sCntlInfo =6; KbdReq.nRespPbCb =1; KbdReq.exchResp =Exch; KbdReq.rqCode =READKBDREQ; KbdReq.pCharRet =&KeyChar; KbdReq.sCharRet =1; Erc=Request((char*)&KbdReq); CheckZ(Erc, "Request KbdReq"); } main(int argc, char *argv[]) /**************************/ { CheckArgs(argc, argv); Erc = AllocExch(&Exch); /* allocate an exchage */ CheckZ(Erc, "AllocExch"); /* AF_INET is communications domain, SOCK_STREAM specifies the type of * communications, and IPPROTO_TCP represents the protocol to be used. */ S = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); CheckP((int)S, "socket"); server.sin_family = AF_INET; /* assign domain */ server.sin_port = htons(RemotePort); /* assign remote port*/ /* take the "host name" entered as an argument to this program * and uses it to get the address of the remote host we connect to. */ hp = gethostbyname(argv[1]); if (hp == NULL) { printf("invalid host argument = %s\n",argv[1]); exit(1); } CheckP( (hp==NULL ? -1 : 0) , "gethostbyname"); /* take the h_addr field of the hostent structure returned by * gethostbyname and copies it to the server address. */ memcpy((char*)&server.sin_addr.s_addr, hp->h_addr, hp->h_length); /*connect to the remote host. */ N = connect(S, &server, sizeof(server)); checkp(N,"connect"); printf("terminal 3 - connect successful\n"); printf("\nPress FINISH to Exit\n\n"); if (server.sin_port==23){ InitTelnet(); printf("InitTelnet\n"); } MakeKbdReq(); /* make KBD Request */ /* set up TCPinitial request */ N = setctossockexch (S, Exch, (char***) &pReqPointer); CheckP(N, "setctossockexch"); N = recv(S, inbuff, sizeof(inbuff), MSG_NOBLOCK | MSG_POSTREQ); if (N<0){ if (errno != EWOULDBLOCK) checkp(N,"recv"); } for(;;){ N = recv(S, inbuff, sizeof(inbuff), 0); if (N > 0) { RecvTelnet((unsigned char*)inbuff, N); /* Make another TCP request */ N = recv(S, inbuff, sizeof(inbuff), MSG_NOBLOCK | MSG_POSTREQ); if (N<0 && errno!=EWOULDBLOCK) checkp(N,"non-blocking recv"); } else{ if (errno != E_YOUR_REQ) CheckP(N, "recv"); ReqPointer=*pReqPointer; if (((READKBD*)ReqPointer)->rqCode != KbdReq.rqCode) CheckP(N, "recv misReq"); CheckZ(KbdReq.ercRet, "recv nz erc"); if (KeyChar==0x04){ sclose(S); exit(0); } if (LocalEcho){ fwrite(&KeyChar,1, 1, stdout); if (Ksz>=KBDBUFFSZ) Ksz--; Kbuff[Ksz++]=KeyChar; if (KeyChar == LF){ /* CRLF required for SMTP */ Kbuff[Ksz-1]=CR; Kbuff[Ksz++]=LF; N = ssend (S, Kbuff, Ksz, 0); CheckP(N, "ssend"); Ksz=0; } }else{ N = ssend (S, &KeyChar, 1, 0); CheckP(N, "ssend"); /* CRLF not required for Telnet echo */ } MakeKbdReq(); /* Make another KBD request */ } } /*end for */ } /* end main */ /****************************************************** PROPRIETARY PROGRAM MATERIAL THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF UNISYS CORPORATION. COPYRIGHT (C) 1991 Unisys CORPORATION Unisys U 6000 - System V - Mar 1985 #ident "@(#)in.h 1.1 :/src/ctix/uts/i386/sys/s.in.h 4/25/89 12:26:20" ******************************************************/ #ifndef in__h #define in__h #include "sys/socompat.h" /* * Constants and structures defined by the internet system, * Per RFC 790, September 1981. */ /* * Protocols */ #define IPPROTO_IP 0 /* dummy for IP */ #define IPPROTO_ICMP 1 /* control message protocol */ #define IPPROTO_GGP 2 /* gateway^2 (deprecated) */ #define IPPROTO_TCP 6 /* tcp */ #define IPPROTO_EGP 8 /* exterior gateway protocol */ #define IPPROTO_PUP 12 /* pup */ #define IPPROTO_UDP 17 /* user datagram protocol */ #define IPPROTO_IDP 22 /* xns idp */ #define IPPROTO_RAW 255 /* raw IP packet */ #define IPPROTO_MAX 256 #define IP_OPTIONS 1 /* set/get IP per-packet options */ /* * Ports < IPPORT_RESERVED are reserved for * privileged processes (e.g. root). * Ports > IPPORT_USERRESERVED are reserved * for servers, not necessarily privileged. */ #define IPPORT_RESERVED 1024 #define IPPORT_USERRESERVED 5000 /* * Link numbers */ #define IMPLINK_IP 155 #define IMPLINK_LOWEXPER 156 #define IMPLINK_HIGHEXPER 158 /* * Internet address (a structure for historical reasons) */ struct in_addr { u_long s_addr; }; /* * Definitions of bits in internet address integers. * On subnets, the decomposition of addresses to host and net parts * is done according to subnet mask, not the masks here. */ #define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0) #define IN_CLASSA_NET 0xff000000 #define IN_CLASSA_NSHIFT 24 #define IN_CLASSA_HOST 0x00ffffff #define IN_CLASSA_MAX 128 #define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000) #define IN_CLASSB_NET 0xffff0000 #define IN_CLASSB_NSHIFT 16 #define IN_CLASSB_HOST 0x0000ffff #define IN_CLASSB_MAX 65536 #define IN_CLASSC(i) (((long)(i) & 0xc0000000) == 0xc0000000) #define IN_CLASSC_NET 0xffffff00 #define IN_CLASSC_NSHIFT 8 #define IN_CLASSC_HOST 0x000000ff #define INADDR_ANY (u_long)0x00000000 #define INADDR_NONE (u_long)0xffffffff #define INADDR_BROADCAST (u_long)0xffffffff /* must be masked */ /* * Socket address, internet style. */ struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; short int PlmFar(htons) (short int s); short int PlmFar(ntohs) (short int s); long int PlmFar(htonl) (long int l); long int PlmFar(ntohl) (long int l); #endif /* in__h */ /**** terminal_1.c ****/ /* This program demonstrates the use of the simplest (polling) method of using non blocking features in the socket library. This program runs on CTOS only (not UNIX). It must be linked with terminal.obj. Usage: terminal_1 hostname [remote_port [local_echo [debug level]]] The program supports a small subset of the Telnet protocol, which allows it to act as a very dumb terminal on some unix hosts - use "hostname 23 N" to log on to unix If the server is echoserver or multecho, remote_port is 3000. local echo: Use "y" for yes OGA 09/09/91 - MCsocket.lib build efw 09/21/93 - TCP 2.2 build */ #include #include "sys/types.h" #include "sys/socket.h" #include "netinet/in.h" #include "netdb.h" /**** CTOSLIB functions ****/ #ifdef __BTOSC__ int ReadKbdDirect plm far (int mode, char *pCharRet); int Delay plm far (int N); #else #define ReadKbdDirect @ #define Delay @ #include #endif /**** defines ****/ #define CR 13 /* ASCII */ #define LF 10 /* ASCII */ #define KBDNOBLOCK 1 /* ReadKbdDirect param */ #define NOCHARAVAIL 602 /* ReadKbdDirect erc */ #define BUFSZ 2048 /* Buffer size for TCP */ #define KBDBUFFSZ 512 /* Keyboard Buffer size */ /**** functions imported from terminal.c ****/ void CheckArgs(int argc, char *argv[]); /* CheckArgs */ void CheckP(int N, char *msg); /* UNIX style return code check */ void CheckZ(int N, char *msg); /* CTOS Erc check */ void InitTelnet(); /* Telnet startup for unix */ void RecvTelnet(unsigned char *iBf, int iBfSz); /* Telnet input processing for unix */ /**** Global Data ****/ extern unsigned int errno; /* global error code returned from system calls */ int Erc; /* last CTOS erc */ int Debug=0; /* Debugging */ char Kbuff[KBDBUFFSZ+1]; /* keyboard buffer */ int Ksz=0; /* ..... and pointer */ int S; /* file descriptor returned by socket call */ int N; /* return value of function calls */ struct sockaddr_in server; /* server socket address */ struct hostent *hp; /* pointer to structure containing host address */ char inbuff[BUFSZ]; /* input buffer */ char KeyChar; /* The character entered from keyboard */ int LocalEcho; /* TRUE if remote does not echo */ int LoopCt=0; /* times around main loop, with no data */ int RemotePort=23; /* Default to the Telnet port */ void main(int argc, char *argv[]) /*******************************/ /* AF_INET is communications domain, SOCK_STREAM specifies the type of * communications, and IPPROTO_TCP represents the protocol to be used. */ { CheckArgs(argc, argv); S = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); CheckP((int)S, "socket"); server.sin_family = AF_INET; /* assign domain */ server.sin_port = htons(RemotePort); /* assign remote port*/ /* take the "host name" entered as an argument to this program * and uses it to get the address of the remote host we connect to. */ hp = gethostbyname(argv[1]); if (hp == NULL) { printf("invalid host argument = %s\n",argv[1]); exit(1); } CheckP( (hp==NULL ? -1 : 0) , "gethostbyname"); /* take the h_addr field of the hostent structure returned by * gethostbyname and copies it to the server address. */ memcpy((char*)&server.sin_addr.s_addr, hp->h_addr, hp->h_length); /*connect to the remote host. */ N = connect(S, &server, sizeof(server)); checkP(N,"connect"); printf("polling terminal - connect successful\n"); printf("\npress FINISH to Exit\n\n"); if (RemotePort==23){ InitTelnet(); printf("InitTelnet\n"); } for(;;){ Erc = ReadKbdDirect(KBDNOBLOCK, &KeyChar); /* first check KBD */ if (Erc){ if (Erc !=NOCHARAVAIL) CheckZ(Erc, "readkbd"); }else{ if (KeyChar==0x04){ sclose(S); exit(0); } if (LocalEcho) fwrite(&KeyChar, 1, 1, stdout); if (Ksz>=KBDBUFFSZ) Ksz--; Kbuff[Ksz++]=KeyChar; if (KeyChar == LF){ /* LF is the CTOS 'return' key */ Kbuff[Ksz-1]=CR; /* The SMPT protocol, & some others */ Kbuff[Ksz++]=LF; /* require messages terminated CRLF */ N = ssend (S, Kbuff, Ksz, 0); CheckP(N, "ssend"); Ksz=0; } LoopCt=0; } /* next, check incoming */ N = recv(S, inbuff, sizeof(inbuff), MSG_NOBLOCK); if (N<0) { if (errno != EWOULDBLOCK) CheckP (N, "recv"); }else{ RecvTelnet((unsigned char*)inbuff, N); LoopCt=0; } if (LoopCt++>2){ if (!LocalEcho && Ksz){ N = ssend (S, Kbuff, Ksz, 0); CheckP(N, "ssend"); Ksz=0; } Delay(1); } } /*end for */ } /* end main */ /****************************************************** PROPRIETARY PROGRAM MATERIAL THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF UNISYS CORPORATION. COPYRIGHT (C) 1991 Unisys CORPORATION * This file is modified from /usr/include/sys/socket.h on * Unisys U 6000 - System V - Apr 1987 * * Definitions related to sockets: types, address families, options. * ******************************************************/ #include "sys/socompat.h" #ifndef __SOCKET_H__ #define __SOCKET_H__ /* * Types */ #define SOCK_STREAM 1 /* stream socket */ #define SOCK_DGRAM 2 /* datagram socket */ /* * Address families. */ #define AF_UNSPEC 0 /* unspecified */ #define AF_INET 2 /* internetwork: UDP, TCP, etc. */ #define AF_MAX 17 /* * Structure used for addresses. */ struct sockaddr { u_short sa_family; /* address family */ char sa_data[14]; /* up to 14 bytes of direct address */ }; /* * Protocol families, same as address families for now. */ #define PF_UNSPEC AF_UNSPEC #define PF_INET AF_INET #define PF_MAX 12 /* * Maximum queue length specifiable by listen. */ #define SOMAXCONN 1 /*only 1 connection allowed for first pass. */ #define MSG_NOOP 0x00 #define MSG_NOPUSH 0x10 /* CTOS TCP inhibit push on send */ #define MSG_NOBLOCK 0x20 /* CTOS TCP non blocking recv */ #define MSG_TCPREQ 0x40 /* CTOS TCP request received by user */ #define MSG_UDPREQ MSG_TCPREQ #define MSG_POSTREQ 0x80 /* make sure CTOS TCP request posted */ #define MAXHOSTNAMELEN 64 /* Definitios for setting and getting options */ #define SOL_SOCKET 0xffff /* Options for socket level */ #define UDP_MAXSEG 0x0006 /* UDP Maximum segment size */ /* * Socket State Definitions * * Bit map masks used as follows: * * |F E D C|B A 9 8|7 6 5 4|3 2 1 0| * |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| * \ \ \ \ \ \ \ \ \______ AVAILABLE * \ \ \ \ \ \ \ \_______ ALLOCATED * \ \ \ \ \ \ \________ LISTENING * \ \ \ \ \ \_________ ACCEPTING * \ \ \ \ \__________ BOUND * \ \ \ \___________ CONNECTED * \ \ \____________ TCP * \ \_____________ UDP * \______________ IOPENDING * The high 7 bits are not used. * */ #define AVAILABLE 0x0001 #define ALLOCATED 0x0002 #define LISTENING 0x0004 #define ACCEPTING 0x0008 #define BOUND 0x0010 #define CONNECTED 0x0020 #define TCPSOCK 0x0040 #define UDPSOCK 0x0080 #define IOPENDING 0x0100 #define TCPALLOC (TCPSOCK | ALLOCATED) #define TCPBOUND (TCPSOCK | BOUND) #define TCPLISTEN (TCPSOCK | LISTENING) #define TCPACCEPT (TCPSOCK | ACCEPTING) #define TCPCONNECT (TCPSOCK | CONNECTED) #define ANYTCPSTATE TCPSOCK #define UDPALLOC (UDPSOCK | ALLOCATED) #define UDPBOUND (UDPSOCK | BOUND) #define ANYUDPSTATE UDPSOCK #define ANYSTATE 0xFFFF /********************* CTOS Socket functions ********************/ typedef struct struct_carbonitesocket{ int ver; int fh; int state; int lport; int sig; }CARBONITESOCKET; int PlmFar(accept) (int handle, struct sockaddr_in FARPTR client, int FARPTR clientlen); int PlmFar(bind) (int handle, struct sockaddr_in FARPTR name, int namelen); int PlmFar(connect) (int handle, struct sockaddr_in FARPTR server, int serverlen); int PlmFar(getsockstate) (int sd); int PlmFar(listen) (int handle, int backlog); int PlmFar(recv) (int handle, char FARPTR buf, int len, int flags); int PlmFar(sclose) (int sd); int PlmFar(shutdown) (int handle, int how); int PlmFar(socket) (int d, int t, int p); int PlmFar(ssend) (int handle, char FARPTR msg, int len, int flags); int PlmFar(whatsocket) (char FARPTR p); int PlmFar(setctostcpparams)(int handle, char FARPTR node, int t,char FARPTR buf); int PlmFar(setctossockexch)(int handle, int ex, char FARPTR FARPTR FARPTR exptr); int PlmFar(freezesocket)(int s, CARBONITESOCKET FARPTR cs); int PlmFar(thawsocket)(CARBONITESOCKET FARPTR cs); int PlmFar(sendto) (int,char FARPTR ,int,int,struct sockaddr_in FARPTR ,int); int PlmFar(recvfrom) (int,char FARPTR,int,int,struct sockaddr_in FARPTR ,int FARPTR ); int PlmFar(setctosudpparams) (int handle, char FARPTR node, int t, int flags); int PlmFar(setctosparams) (char FARPTR node, int flags); int PlmFar(getctossockparams) (int s, int level, int parname, char FARPTR parvalue, int FARPTR parlen); int PlmFar(setctossockparams) (int s, int level, int parname, char FARPTR parvalue, int FARPTR parlen); #define setctostcpexchange setctossockexch #define setctosudpexchange setctossockexch #define EWOULDBLOCK 60218u /* Operation would block */ #define E_WOULD_BLOCK EWOULDBLOCK #define E_NOT_SOCK 60219u /* Socket operation on non-socket */ #define ENOTSOCK E_NOT_SOCK #define E_SOCK_BADS 60220u /* socket in incorrect state for this operation */ #define ESOCKBADS E_SOCK_BADS #define E_SOCK_LIM 60221u /* no more sockets */ #define ESOCKLIM E_SOCK_LIM #define E_MSG_SIZE 60222u /* Message too long */ #define EMSGSIZE E_MSG_SIZE #define EPROTOTYPE 60223u /* Protocol wrong type for socket */ #define E_PROTO_TYPE EPROTOTYPE #define EPROTONOSUPPORT 60224u /* Protocol not supported */ #define E_PROTO_NO_SUPPORT EPROTONOSUPPORT #define EOPNOTSUPP 60225u /* Operation not supported on socket */ #define E_OP_NOT_SUPP EOPNOTSUPP #define EPFNOSUPPORT 60226u /* Protocol family not supported */ #define E_PF_NO_SUPPORT EPFNOSUPPORT #define EAFNOSUPPORT 60227u /* Address family not supported by protocol family */ #define E_AF_NO_SUPPORT EAFNOSUPPORT #define ECONNREFUSED 60228u /* Connection refused */ #define E_CONN_REFUSED ECONNREFUSED #define E_DIFF_BUFF 60229u /* buff changed while request outstanding */ #define EDIFFBUFF E_DIFF_BUFF #define E_YOUR_REQ 60230u /* Recv has received a user request */ #define EYOURREQ E_YOUR_REQ #define ESOCKTNOSUPPORT 60231u /* Socket type not supported */ #define E_SOCKT_NO_SUPPORT ESOCKTNOSUPPORT #define ESYNTAX 60232u /* Invalid request block */ #define ESENDCACHED 60233u /* UDP Datagram was cached */ #define ETRUNCATION 60234u /* UDP Datagram truncated */ #define EINCOMPLETE 60235u /* UDP Datagram incomplete */ #define ESUMCHECKFAIL 60236u /* UDP Datagram failed sumcheck*/ #define ESENDFAIL 60237u /* Local UDP Datagram not delivered */ #define EADDRINUSE 60238u /* The requested address is in use */ #define E_ADDR_IN_USE EADDRINUSE #define EPREMATURETO 60239u /* UDP Recvfrom timed out by the system before user timeout */ #define ENOPROTOPAR 60240u /* The option is unknown at the given level */ #define E_NO_MSG_AVAIL 14 /* NO message available */ #define ENOMSGAVAIL E_NO_MSG_AVAIL #define E_NO_REQ_CODE 31 /* No such request code */ #define ENOREQCODE E_NO_REQ_CODE #define E_NOT_INSTALLED 33 /* TCP/IP system services not installed */ #define ENOTINSTALLED E_NOT_INSTALLED #define E_NOSUCHSUBPARAM 2450 /* No service installed for this rqCode*/ #define E_NO_SUCH_SUB_PARAM E_NOSUCHSUBPARAM /***** Errors generated by the TCP Transport Service *****/ #define E_INV_RQ 58952u /* Invalid request */ #define EINVRQ E_INV_RQ #define E_BAD_MNG 58953u /* Bad TS management parameter */ #define EBADMNG E_BAD_MNG #define E_BAD_INDEX 58955u /* Invalid TS query index */ #define EBADINDEX E_BAD_INDEX #define E_SBUF_BIG 58956u /* Send buffer too big */ #define ESBUFBIG E_SBUF_BIG #define E_RECV_TRUNC 58957u /* Receive message truncated */ #define ERECVTRUNC E_RECV_TRUNC #define E_NO_RSRCS 58958u /* No TS resources for request */ #define ENORSRCS E_NO_RSRCS #define E_NOT_AVAIL 58959u /* No connection available */ #define ENOTAVAIL E_NOT_AVAIL #define E_NO_HOST 58960u /* No such host name */ #define ENOHOST E_NO_HOST #define E_NO_ADDR 58961u /* No such host address */ #define ENOADDR E_NO_ADDR #define E_INV_SOCKET 58962u /* Invalid socket for open */ #define EINVSOCKET E_INV_SOCKET #define E_REFUSED 58963u /* Connection refused by remote */ #define EREFUSED E_REFUSED #define E_BAD_HANDLE 58964u /* No such connection handle */ #define EBADHANDLE E_BAD_HANDLE #define E_NOT_OPEN 58965u /* Conn. is not in C_OPEN state */ #define ENOTOPEN E_NOT_OPEN #define E_CLOSED 58966u /* Conn. is in C_CLOSED state */ #define ECLOSED E_CLOSED #define E_OPENING 58967u /* Conn. is in C_OPENING state */ #define EOPENING E_OPENING #define E_CLOSING 58968u /* Conn. is in C_CLOSING state */ #define ECLOSING E_CLOSING #define E_ABORTING 58969u /* Conn. is in C_ABORTING state */ #define EABORTING E_ABORTING #define E_ABORTED 58970u /* Conn. aborted by remote??? */ #define EABORTED E_ABORTED #define E_BADLEN 58971u /* Bad length in Send request */ #define EBADLEN E_BADLEN #define E_TIMEOUT 58972u /* User timeout */ #define ETIMEOUT E_TIMEOUT #define E_BAD_RANGE 58973u /* Bad security range */ #define EBADRANGE E_BAD_RANGE #define E_BAD_PREC 58974u /* Precedence request unallowed */ #define EBADPREC E_BAD_PREC #define E_BAD_SEC 58975u /* Security request not allowed */ #define EBADSEC E_BAD_SEC #define E_EXISTS 58976u /* Connection already exists */ #define EEXISTS E_EXISTS #define E_BAD_SYN 58977u /* Unexpected SYN received */ #define EBADSYN E_BAD_SYN #define E_DUPLICATE 58978u /* Requested 'lcn' already used */ #define EDUPLICATE E_DUPLICATE /* i.e, Duplicate connection */ #endif __SOCKET_H__ /************************ sys/socket.h **************************************/ /* * sender_udp hostname [nodename] * Serviced by udp_echo * Run in CTOS and UNIX. Compile with -DCTOS for CTOS. * It sends a fixed number of packets to UDP port 4096 at * the specified hostname. * If in CTOS the parameter nodename specify the node of the * TCP/IP system service to be used. */ /* HISTORY OF CHANGES */ /* UCF 17648039: Socket example used to not compile under BTOS C. */ #include #include #include "sys/socket.h" #include "netinet/in.h" #include "netdb.h" #ifndef CTOS # if defined( __BTOSC__) # define CTOS # elif defined(__CTOS__) # define CTOS # endif #endif #define BUFSZ 16 #define ECHOPORT 4096 #define MYPORT 2999 #define LOOPCNT 100 #define TIMERVAL 20 extern unsigned int errno; /* global error code returned from system calls */ char inbuff[BUFSZ]; /* input buffer */ char *sendbuf="ECHO REQUEST"; char * nodename = "local"; main(argc, argv) int argc; char *argv[]; /*************************** * argv[0] = program name * argv[1] = host name * argv[2] = nodename (CTOS only) */ { int i, s, n; int lost_cnt, error_cnt; int serverAddrLen; struct sockaddr_in server, client; /* server and client socket address */ struct hostent *hp; /* pointer to structure containing host address */ #ifdef CTOS if (argc<2||argc>3) { /* verifiy correct number of arguments */ printf("usage: \n"); printf("\nsender_udp\n"); printf("hostname\n"); printf("[nodename]\n\n"); exit(0); } if (argc==3) nodename=argv[2]; n = setctosparams(nodename,0); CheckP(n,"setctosparams"); #else if (argc!=2){ printf("usage:\n"); printf("\nsender_udp hostname\n"); } #endif s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); CheckP(s, "socket",0); #ifdef CTOS n = setctosudpparams(s, NULL , TIMERVAL, 0); CheckP(n,"set udp params\n,0"); #endif client.sin_family = AF_INET; client.sin_addr.s_addr = htonl (INADDR_ANY); client.sin_port = htons (MYPORT); n = bind(s,&client,sizeof(client)); CheckP(n,"Bind",0); server.sin_family = AF_INET; server.sin_port = htons(ECHOPORT); /* take the "host name" entered as an argument to this program * and uses it to get the address of the remote host we connect to. */ hp = gethostbyname(argv[1]); if (hp == NULL) { printf("invalid host argument = %s\n",argv[1]); exit(1); } CheckP( (hp==NULL ? -1 : 0) , "gethostbyname",0); memcpy((char*)&server.sin_addr.s_addr, hp->h_addr, 4); serverAddrLen=sizeof(server); lost_cnt=0; error_cnt=0; for ( i = 1; i < LOOPCNT+1; i++) { #ifdef CTOS n = recvfrom(s, inbuff, sizeof(inbuff),MSG_NOBLOCK | MSG_POSTREQ, &server, &serverAddrLen); if (errno==EWOULDBLOCK) n = 0; CheckP(n,"POSTING RECVFROM",i); #endif n=sendto(s, sendbuf, 12, 0, &server, serverAddrLen); CheckP(n,"SEND", i); printf("\nsend packet %d",i); n = recvfrom(s, inbuff, sizeof(inbuff),0, &server, &serverAddrLen); if (n>0){ if (strncmp(sendbuf,inbuff,12)){ error_cnt+=1; printf ("\tpacket received with error"); } else printf ("\tpacket received ok"); } #ifdef CTOS else if (errno==ETIMEOUT){ errno=0; n=0; lost_cnt+=1; printf ("\t packet lost"); if (lost_cnt==10 && i==10){ printf ("\n\tHost %s not responding\n",argv[1]); exit(1); } } #endif else CheckP(n,"RECVFROM",i); } printf ("\n\n\tHost %s is alive:\n",argv[1]); printf ("%d packets sent %d packets lost %d packets with error\n", i-1, lost_cnt, error_cnt); } CheckP (n, msg, m) /************** * check n positive else display msg & quit */ int n; char *msg; int m; { if (n<0) { if (m==0) printf (" Program terminated: error %u in %s\n",errno,msg); else printf (" Program terminated: error %u in %s Count %d \n", errno, msg, m); exit(1); } else { #ifdef DEBUG if(m==0) printf ("Trace OK %s\n", msg); else printf ("Trace OK in Count %d : %s\n", m, msg); #endif } } $TITLE('FIRST V700AMxx PLUS MSCSEGS === 09/24/93') NAME FIRST DGROUP GROUP HEAP,MEMORY,STACK,DATA,_BSS,TRANS,CONST,STATICS,COMADS,COMADS_DATA,COMMONDUMMY,EINQQQ,COMMQQ,MODULE_DATA,ZeroData,AQMDATA HEAP SEGMENT PUBLIC 'MEMORY' HEAP ENDS MEMORY SEGMENT MEMORY 'MEMORY' MEMORY ENDS STACK SEGMENT STACK 'STACK' STACK ENDS DATA SEGMENT PUBLIC 'DATA' DATA ENDS _BSS SEGMENT BYTE PUBLIC 'BSS' _BSS ENDS EINQQQ SEGMENT WORD COMMON 'DATA' EINQQQ ENDS ZERODATA SEGMENT PUBLIC 'DATA' ZERODATA ENDS AQMDATA SEGMENT PUBLIC 'AQMDATA' AQMDATA ENDS MODULE_DATA SEGMENT PUBLIC 'DATA' MODULE_DATA ENDS TRANS SEGMENT PUBLIC 'CONST' TRANS ENDS CONST SEGMENT PUBLIC 'CONST' CONST ENDS STATICS SEGMENT PUBLIC 'CONST' STATICS ENDS COMADS SEGMENT PUBLIC 'COMADS' COMADS ENDS COMADS_DATA SEGMENT PUBLIC 'COMADS' COMADS_DATA ENDS COMMQQ SEGMENT COMMON 'COMMON' COMMQQ ENDS COMMONDUMMY SEGMENT BYTE COMMON 'COMMON' COMMONDUMMY ENDS FAR_DATA segment word public 'FAR_DATA' FAR_DATA ends END /****************************************************** PROPRIETARY PROGRAM MATERIAL THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF UNISYS CORPORATION. COPYRIGHT (C) 1991 Unisys CORPORATION *******************************************************/ #ifndef _INET_H_ #define _INET_H_ #include "sys/socompat.h" /* External definitions for functions in inet(3) */ unsigned long PlmFar(inet_addr) (const char FARPTR); unsigned long PlmFar(inet_aton) (const char FARPTR, struct in_addr FARPTR); unsigned long PlmFar(inet_lnaof) (struct in_addr); struct in_addr Cdecl(inet_makeaddr) (u_long , u_long); void PlmFar(InetMakeaddr) (u_long, u_long, u_long FARPTR); unsigned long PlmFar(inet_netof) (struct in_addr); unsigned long PlmFar(inet_network) (const char FARPTR); char FARPTR PlmFar(inet_ntoa) (struct in_addr); #endif /* !_INET_H_ */ /****************************************************** PROPRIETARY PROGRAM MATERIAL THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF UNISYS CORPORATION. COPYRIGHT (C) 1991 Unisys CORPORATION @(#)netdb.h 1.2 86/10/07 SMI; from UCB ******************************************************/ #ifndef _NETDB_H #define _NETDB_H #ifndef MAXHOSTNAMELEN #define MAXHOSTNAMELEN 64 #endif #include "sys/socompat.h" #define _PATH_HEQUIV "hosts.equiv" #define _PATH_HOSTS "hosts" #define _PATH_NETWORKS "networks" #define _PATH_PROTOCOLS "protocols" #define _PATH_SERVICES "services" /* * Structures returned by network * data base library. All addresses * are supplied in host order, and * returned in network order (suitable * for use in system calls). */ struct hostent { char FARPTR h_name; /* official name of host */ char FARPTR FARPTR h_aliases; /* alias list */ int h_addrtype; /* host address type */ int h_length; /* length of address */ #if BSD >= 43 char FARPTR FARPTR h_addr_list; #define h_addr h_addr_list[0] #else char FARPTR h_addr; /* address */ #endif }; /* * Assumption here is that a network number * fits in 32 bits -- probably a poor one. */ struct netent { char FARPTR n_name; /* official name of net */ char FARPTR FARPTR n_aliases; /* alias list */ int n_addrtype; /* net address type */ u_long n_net; /* network # */ }; struct servent { char FARPTR s_name; /* official service name */ char FARPTR FARPTR s_aliases; /* alias list */ int s_port; /* port # */ char FARPTR s_proto; /* protocol to use */ }; struct protoent { char FARPTR p_name; /* official protocol name */ char FARPTR FARPTR p_aliases; /* alias list */ int p_proto; /* protocol # */ }; struct rpcent { char FARPTR r_name; /* name of server for this rpc program */ char FARPTR FARPTR r_aliases; /* alias list */ u_long r_number; /* rpc program number */ }; #define MAXHOSTLISTLEN 20 struct hostlist { int total; /* total number of hosts on the list */ char FARPTR host[MAXHOSTLISTLEN];/* array of pointers to host names */ }; /* * Error return codes from gethostbyname() and gethostbyaddr() * (left in extern int h_errno). */ #define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found */ #define TRY_AGAIN 2 /* Non-Authoritive Host not found, or SERVERFAIL */ #define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */ #define NO_DATA 4 /* Valid name, no data record of requested type */ #define NO_ADDRESS NO_DATA /* no address, look for MX record */ int PlmFar(gethostlist) (int FARPTR offset, char FARPTR outbuf, int element); int PlmFar(gethostname) (char FARPTR n, int sz); void PlmFar(sethostent)(int); void PlmFar(endhostent)(); struct hostent FARPTR PlmFar(gethostbyname) (char FARPTR name), FARPTR PlmFar(gethostbyaddr) (char FARPTR , int, int), FARPTR PlmFar(gethostent)(); void PlmFar(setnetent)(int); void PlmFar(endnetent)(); struct netent FARPTR PlmFar(getnetbyname)(char FARPTR name), FARPTR PlmFar(getnetbyaddr)(), FARPTR PlmFar(getnetent)(); void PlmFar(setservent)(int); void PlmFar(endservent)(); struct servent FARPTR PlmFar(getservbyname)(char FARPTR name, char FARPTR proto), FARPTR PlmFar(getservbyport)(), FARPTR PlmFar(getservent)(); void PlmFar(setprotoent)(int); void PlmFar(endprotoent)(); struct protoent FARPTR PlmFar(getprotobyname)(char FARPTR name), FARPTR PlmFar(getprotobynumber)(), FARPTR PlmFar(getprotoent)(); void PlmFar(setrpcent)(); void PlmFar(endrpcent)(); struct rpcent FARPTR PlmFar(getrpcbyname)(char FARPTR name), FARPTR PlmFar(getrpcbynumber)(), FARPTR PlmFar(getrpcent)(); #endif #ifndef _BSTRING_ #define _BSTRING_ #include #ifdef __BTOSC__ /* * PASCAL Binding */ int PlmFar(BCMP) (void *b1, void *b2, unsigned int len); void PlmFar(BCOPY) (const void *src, void *dst, unsigned int len); void PlmFar(BZERO) (const void *b, unsigned int len); long PlmFar(FFS) (long i); #define bcmp BCMP #define bcopy BCOPY #define bzero BZERO #define ffs FFS #elif __CTOS__ /* * C Binding */ int bcmp (void *b1, void *b2, unsigned int len); void bcopy (const void *src, void *dst, unsigned int len); void bzero (const void *b, unsigned int len); long ffs (long i); #endif #endif /****************************************************** PROPRIETARY PROGRAM MATERIAL THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF UNISYS CORPORATION. COPYRIGHT (C) 1991 Unisys CORPORATION Unisys U 6000 - System V - Mar 1985 #ident "@(#)in.h 1.1 :/src/ctix/uts/i386/sys/s.in.h 4/25/89 12:26:20" ******************************************************/ #ifndef in__h #define in__h #include "sys/socompat.h" /* * Constants and structures defined by the internet system, * Per RFC 790, September 1981. */ /* * Protocols */ #define IPPROTO_IP 0 /* dummy for IP */ #define IPPROTO_ICMP 1 /* control message protocol */ #define IPPROTO_GGP 2 /* gateway^2 (deprecated) */ #define IPPROTO_TCP 6 /* tcp */ #define IPPROTO_EGP 8 /* exterior gateway protocol */ #define IPPROTO_PUP 12 /* pup */ #define IPPROTO_UDP 17 /* user datagram protocol */ #define IPPROTO_IDP 22 /* xns idp */ #define IPPROTO_RAW 255 /* raw IP packet */ #define IPPROTO_MAX 256 #define IP_OPTIONS 1 /* set/get IP per-packet options */ /* * Ports < IPPORT_RESERVED are reserved for * privileged processes (e.g. root). * Ports > IPPORT_USERRESERVED are reserved * for servers, not necessarily privileged. */ #define IPPORT_RESERVED 1024 #define IPPORT_USERRESERVED 5000 /* * Link numbers */ #define IMPLINK_IP 155 #define IMPLINK_LOWEXPER 156 #define IMPLINK_HIGHEXPER 158 /* * Internet address (a structure for historical reasons) */ struct in_addr { u_long s_addr; }; /* * Definitions of bits in internet address integers. * On subnets, the decomposition of addresses to host and net parts * is done according to subnet mask, not the masks here. */ #define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0) #define IN_CLASSA_NET 0xff000000 #define IN_CLASSA_NSHIFT 24 #define IN_CLASSA_HOST 0x00ffffff #define IN_CLASSA_MAX 128 #define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000) #define IN_CLASSB_NET 0xffff0000 #define IN_CLASSB_NSHIFT 16 #define IN_CLASSB_HOST 0x0000ffff #define IN_CLASSB_MAX 65536 #define IN_CLASSC(i) (((long)(i) & 0xc0000000) == 0xc0000000) #define IN_CLASSC_NET 0xffffff00 #define IN_CLASSC_NSHIFT 8 #define IN_CLASSC_HOST 0x000000ff #define INADDR_ANY (u_long)0x00000000 #define INADDR_NONE (u_long)0xffffffff #define INADDR_BROADCAST (u_long)0xffffffff /* must be masked */ /* * Socket address, internet style. */ struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; short int PlmFar(htons) (short int s); short int PlmFar(ntohs) (short int s); long int PlmFar(htonl) (long int l); long int PlmFar(ntohl) (long int l); #endif /* in__h */ /* * Simple File Transfer Program * * This program will act as both the client and the server in * this file transfer, depending on values provided on the * command line. To run it as a client specify the remote * hostname as the first argument the local filename to be * transferred as the second argument. If you run this program * without argument, it will act as a server and will wait for * a connection from a client. * * This program is designed to work on both SunOS, a derivative * of Berkeley 4.2 Unix, Unix System V (running on a Unisys * U6000), and on CTOS II. * * * Compile-time flags: -define DEBUG to see a trace of most * things as they happen. Undefined produces a "quiet" * runfile. -define CTOS to compile code for CTOS. -define * U6000 to compile code for the U6000 running Unix System V. * */ /* HISTORY OF CHANGES */ /* UCF 17648039: Socket example used to not compile under BTOS C. */ #include "stdio.h" #include #include "sys/socket.h" #ifndef CTOS /* CTOS Microsoft C 6.1 defines __CTOS__ */ #if defined( __CTOS__) #define CTOS /* BtosC 2.1 defines __BTOSC__ */ #elif defined(__BTOSC__) #define CTOS #endif #endif /* Special CTOS includes */ #ifdef CTOS /* These two are undefined in CTOS. */ #define O_RDONLY 0 #define O_WRONLY 1 #define send ssend #else #include "sys/file.h" #endif #include "errno.h" #include "string.h" #include "netinet/in.h" #include "netdb.h" /* * Also - On the U6000 you must compile explicitly with the * socket library: cc -DU6000 [-DDEBUG] -osftp sftp.c * /lib/libsocket.a */ #ifdef U6000 #include "fcntl.h" #endif /* Definitions used throughout the program */ #define TX 1 #define RCV 2 #define XFERPORT 4096 #define BUFSZ 512 #define EOT 4 #ifdef __BTOSC__ extern int errno; #endif /** Global Variables **/ char *hostname; /* Name of machine to transfer * file to, as taken from argv */ char *fname; /* Name of file to be * transfered, as taken from * argv */ int s; /* File Descriptor used for * Socket */ int n; /* Value returned from * function calls */ int fdesc; /* File Descriptor used for * referencing the file */ struct sockaddr_in server, client; /* Client and server socket * addresses */ struct hostent *hp; /* Pointer to struct w/ host * address */ char buf[BUFSZ]; /* send/recv buffer */ main(int argc, char *argv[]) { int trswitch; hello_msg(); /* Display startup messages */ trswitch = check_args(argc, argv); /* Insure correctness of * input params */ if (trswitch == TX) transmit(); /* Be a client process */ else receive(); /* Be a server process */ } /* Display startup messages */ int hello_msg() { printf("\n\n\n Simple File Transfer Program\n\n"); printf("This version compiled to run under "); #if defined( __CTOS__) printf("CTOS with Micrsoft C 6.1\n"); #elif defined(__BTOSC__) printf("CTOS with BtosC 1.2\n"); #elif defined(CTOS) printf("CTOS\n"); #else printf("Unix"); #ifdef U6000 printf(" System V on a Unisys U6000\n"); #else printf("\n"); #endif #endif } int check_args(count, vect) int count; char *vect[]; { if (count > 3) { printf("Usage: sftp [hostname fname]\n"); exit(1); } if (count == 3) { hostname = vect[1]; fname = vect[2]; return (TX); } else return (RCV); } int transmit() { /* Be a client */ int bytes_read, bytes_sent, total = 0; printf("Preparing to transmit file %s to %s\n", fname, hostname); /* Open the file to be transfered in the readonly mode */ if ((fdesc = open(fname, O_RDONLY)) < 0) { printf("Unable to open %s to transfer.\n", fname); exit(1); } #ifdef DEBUG printf("File successfully opened.\n"); #endif /* * Set up socket connections... AF_INET is the * communications domain, internet, SOCK_STREAM is the * type of connection requested, a bytestream socket * connection, and IPPROTO_TCP specifies the protocol to * be used, in this case TCP. */ s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); checkp(s, "socket"); server.sin_family = AF_INET;/* Set domain */ server.sin_port = htons(XFERPORT); /* Set up transfer port */ hp = gethostbyname(hostname); /* Get network address for * host */ checkp((hp == NULL ? -1 : 0), "gethostbyname"); /* * Copy the h_addr field of the hostent struct returned by * gethostbyname to hp into the server address. */ memcpy((char *) &server.sin_addr.s_addr, hp->h_addr, hp->h_length); n = connect(s, &server, sizeof(server)); /* Connect to remote * host */ checkp(n, "connect to host"); n = send(s, fname, strlen(fname), 0); /* Send name of file to * follow */ checkp(n, "fname send"); n = recv(s, buf, BUFSZ, 0); /* Receive ACK from server */ checkp(n, "server ack"); if (!(n > 2 && buf[0] == 'A' && buf[1] == 'C' && buf[2] == 'K')) { printf("Remote failed to ack: %s\n", buf); exit(1); } printf("Sending file...\n"); /* Read from input file, send to socket, i.e., do transfer */ while ((bytes_read = read(fdesc, buf, BUFSZ)) > 0) { checkp(bytes_read, "block read from disk"); bytes_sent = send(s, buf, bytes_read, 0); checkp(bytes_sent, "send data"); total += bytes_sent; } /* End of session */ n = close(fdesc); checkp(n, "close transfered file"); #ifdef CTOS n = sclose(s); #else n = close(s); #endif checkp(n, "close socket"); printf("File successfully transfered, %d bytes\n", total); exit(0); } int receive() { /* Be a server */ int ns; /* New socket from 'accept' */ int client_len = sizeof(client); int bytes_rcvd, bytes_wrote, total = 0; /* * Set up socket connections... AF_INET is the * communications domain, internet, SOCK_STREAM is the * type of connection requested, a bytestream socket * connection, and IPPROTO_TCP specifies the protocol to * be used, in this case TCP. */ s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); checkp(s, "socket"); server.sin_family = AF_INET;/* Set domain */ server.sin_port = htons(XFERPORT); /* Set transfer port */ server.sin_addr.s_addr = htonl(INADDR_ANY); n = bind(s, &server, sizeof(server)); /* Bind server's address * to socket */ checkp(n, "bind address"); n = listen(s, 1); /* Listen for a connection on * the socket */ checkp(n, "listen"); client.sin_family = AF_INET;/* Set the client's comm * domain */ client.sin_addr.s_addr = htonl(INADDR_ANY); /* Accept any Internet * address */ client.sin_port = htons(0); /* * Begin loop-forever to accept connections on the socket * and such */ for (;;) { printf("***Ready for transfer***\n"); total = 0; ns = accept(s, &client, &client_len); checkp(ns, "accept"); bytes_rcvd = recv(ns, buf, BUFSZ, 0); checkp(bytes_rcvd, "recv filename"); fname = buf; /* Copy buffer into filename */ fname[bytes_rcvd] = '\0'; #ifdef DEBUG printf("File name received: %s\n", fname); #endif #ifndef CTOS fdesc = open(fname, O_WRONLY | O_CREAT, 0666); /* Open fname for * writing */ checkp(fdesc, "open file for writing"); #else fdesc = creat(fname, O_WRONLY); /* Open for CTOS - * creates or overwrites */ checkp(fdesc, "create file for writing or open for overwriting"); #endif if (fdesc >= 0) { /* Then file was opened * successfully, send an ACK */ printf("Receiving file %s...\n", fname); strcpy(buf, "ACK"); n = send(ns, buf, 3, 0); checkp(n, "send ack to client"); } else { /* Error, probably file * already exists, but * nack&bomb anyway */ strcpy(buf, "Error opening file on Server"); n = send(ns, buf, 28, 0); checkp(n, "send nack to client"); checkp(fdesc, "open file"); /* NOTE: this will cause * pgm to exit. */ } /* Receive the actual file */ while ((bytes_rcvd = recv(ns, buf, BUFSZ, 0)) > 0) { checkp(bytes_rcvd, "recv data"); bytes_wrote = write(fdesc, buf, bytes_rcvd); checkp(bytes_wrote, "block wrote to disk"); total += bytes_rcvd; } n = close(fdesc); /* Close new file */ checkp(n, "close file"); #ifdef CTOS n = sclose(ns); /* Close new socket */ #else n = close(ns); #endif checkp(n, "close socket"); printf("File received, %d bytes\n", total); } /* END Loop-Forever */ } int checkp(n, msg) /* Check the value returned * from a function call, if */ int n; /* negative, display an * appropriate error. * Defining */ char *msg; /* DEBUG at compile will cause * a trace of all relavant */ { /* function calls. */ if (n < 0) { printf("Program terminated: error %u in %s\n", errno, msg); exit(1); } #ifdef DEBUG else printf("%s succeded, n = %d\n", msg, n); #endif } crashCTAsm 12.1.0q/??SEG??SEGDataDataCodeCodeDgroupCgrouphh٘hMZX crashK dsp_error PRESS ANY KEY TO EXIT E'P@!rٜEGVV  #2L!_%,UO]Ät tcprq.dosCTAsm 12.1.0q ??SEG??SEG procInterfacecodeh` SendtoUDP4CloseTcpConnection@ReceiveTcpMessage{AbortTcpConnectionSendTcpMessage RecvFromUDP ManageTCPOpenTcpConnectionMapTcpAddrToHostNameoMapTcpHostNameToAddrQueryTcpStatistics,q.QueryDefaultRespExchRequestWaitpCrashEAU3PF FFPFԉFމFFdF拆F苆FFFFF F FFFFP u(vFP1;Ft )F;FuF t ]ʜVVăVȅVĔVȖV-U3PFFFPF܉FFFdFFFF F FFFFFP u(vFP;Ft zF;FuF tq]3VVrVtVăVȅVqoU3PFFFP;F؉FFFdF싆FꋆFFFF F FFFFFP u(vFP;Ft F;FuF t]ɜVVĀVȂVđVȓV9,U3PFFFP~F؉FFFdFꊆF늆F싆FFFF F FFFFFP u(vFP;Ft F;FuF t]/VVćVȉVĘVȚVU3PFFFPFʉFԉFF؛d&F܋$F"F FFފF拆FF⋆F䋆FFFF F FꋆF苆FFFP u(vFP;Ft F;FuF t]"*VVıVȳVVVuU3PFFFPFFFFdFF F FFFFP u(vFPv;Ft nF;FuF te] ˜VV`VbVqVsV{U3PFFFP/FԉFމFFdF䋆FꋆF苆FFF F FFFFFFFP u(vFP;Ft F;FuF t]SVVĈVȊVęVțV~@U3 PFFFPjFFFFdFFP u(vFP7;Ft /F;FuF t&]VV=V?VNVPVE~U3 PFFFPFFFFdFFP u(vFP;Ft F;FuF t]2VV=V?VNVPVE4U3PFFFPvFԉFމFFfFꋆF苆F싆FFFFF F FFFFP u(vFP;Ft F;FuF t]VVĊVȌVěVȝVU3PFFFPF҉F܉FFfF⋆FꋆF苆F싆FFFFF F FFFFP u(vFP(;Ft !F;FuF t]VVđVȓVĢVȤVU uÐP]֜ V Vt dsperror0lOCV76DGROUP DSPERROR_TEXTCODE_DATADATACONST_BSSBSSHHH H V @E_printf DSP_ERROR DSP_ERRORѠ"UWVvP^_]VV  Fatal Error %uiterrnoCTAsm 12.1.0q??SEG??SEGdatastackdgroup7hH\ errno7IthtonsCTAsm 12.1.0q??SEG??SEG htons_modcodeh .htonsntohsAUF]thtonlCTAsm 12.1.0q??SEG??SEG htonl_modcodeh (ntohlhtonlAUFVĆ֒]Ytpascal_first_with_bssCTAsm 12.1.0q??SEG??SEGHEAPMEMORYMEMORYMEMORYSTACKSTACKDATADATA_BSSBSSTRANSCONSTCONSTCONSTSTATICSCONSTCOMADSCOMADS COMADS_DATACOMADS COMMONDUMMYCOMMONEINQQQDATACOMMQQCOMMON MODULE_DATADATAZeroDataDATAAQMDATAAQMDATAFAR_DATAFAR_DATADGROUP3hhdtޘh ( "h ޘhژh֘hҘhΘ8X֘xhh h!"H#$Қ"% tbcmp0lOCV72DGROUP BCMP_TEXTCODE_DATADATACONST_BSSBSSHnH H H V @E_bcmpBCMP:_bcmpFBCMPѠrUWV~u+/v t~ tNt^_] UWVvvv v v~v^_]LeVtbcopy0lOCV73DGROUP BCOPY_TEXTCODE_DATADATACONST_BSSBSSHxH H H V @E_bcopyBCOPY`_bcopyPBCOPYѠ|UWVF 9FuF9F sFHHF FHHFv ~Ns^_] UWVvvv v v~v^_]ۜoVtbzero0lOCV73DGROUP BZERO_TEXTCODE_DATADATACONST_BSSBSSHD͘H H H V @E_bzeroBZEROV_bzero"BZERO)ѠHUWV~N^_]UWVvvv ~v^_]];VHtffs0lOCV71DGROUPFFS_TEXTCODE_DATADATACONST_BSSBSSZHdH H H V @E _ffsFFS_ffsDFFSѠhUWVF Fu+'FF~^FVFtFV^_]UWVvv~v^_]ːZV)tindex0lOCV73DGROUP INDEX_TEXTCODE_DATADATACONST_BSSBSSH6ۘH H H V @E _index _indexѠ:UWVF Fu +^_]F^&?t&;F uÌ^_]ːtrindex0lOCV74DGROUP RINDEX_TEXTCODE_DATADATACONST_BSSBSSiH:טH H H V @E _rindexz_rindexqѠ>UWV+FFF^&;F u^F&?uFV^_]ːyt socksupport0lOCV79DGROUPSOCKSUPPORT_TEXTCODE_DATADATACONST_BSSBSSHeH H H V @E2_ERETURN _SOCKETNOTOK_CTOSERC_errnoERRNOg+_ERETURN _SOCKETNOTOK_CTOSERCNѠUWV^ &?t;;$F&_&9u F&+<<^_]UWV~tFFF^ &F^_] UWV~tFF+^_]!ĚVėVfVcV@V:VVVt filedesc0lOCV76DGROUP FILEDESC_TEXTCODE_DATADATACONST_BSSBSSHQH HH V @E._bzero_nfds__fdesc___newfd __validfd __newfdN __validfdѠU VVUWV~|$F&9~&u +^_]ˋ^_]UWVFFF&9~G&uٸ PSǚF Ft ^&7&F^_]˸^_]ː,-̔VċVĀV{kVfFVCV*V%Vߊt reqnode0lOCV75DGROUP REQNODE_TEXTCODE_DATADATACONST_BSSBSS#HHH H V @E_ReqNodeIѠ LOCAL 4;tsocket0lOCV74DGROUP SOCKET_TEXTCODE_DATADATACONST_BSSBSSjH HHH V @ELISTEN_bzero_ERETURNSCLOSE _SOCKETNOTOKSHUTDOWN__newfd_CTOSERCSOCKET __validfdERRNO_nfds _sockdataHTONS__fdesc_% _CloseErroraqNTOHS WHATSOCKETNTOHLSETCTOSTCPPARAMSSETCTOSSOCKEXCH_errno GETHOSTNAME DEALLOCEXCHSETCTOSUDPPARAMSCHECK_ReqNodeREQUESTACCEPTBIND SENDTOUDPCONNECTOPENTCPCONNECTION_bcopy GETSOCKSTATELISTEN SCLOSESOCKET^ WHATSOCKETpSETCTOSTCPPARAMS~ SETCTOSSOCKEXCH GETHOSTNAMESETCTOSUDPPARAMS.ACCEPT~BINDCONNECT GETSOCKSTATE5ѠtU WVFvFV t^&?u&G&WFV;;^&G& GtN& FF^_] DV >VV CU VV pU WVFVFVFFF&9|_؋&u&&NV8;Nu;Vuv&DŽ&&‹ك8&O&W FF^_]U2WVF^+FF~u vFV u^&?t&G&WFV& tv+P~ԉvҚ~ԋvF^&?umF-&GFGP&G/PFP PvvQNQP~ԉvҚ~ԋvF t%P~ԋvkF;;;U^& t8&t0&w ~ԉvҚ~ԋvPvvP+P~ЉvΚ^&^&F^_]MVͭVŇV ŁVmVYV VV įĔV ĎVxVsVnMVHV@V;)V $1Q VV ^U WV~ t%~ t~ tCP~v~v2~uF~t ~tG΃~u~uF~uF~t ~t@롐FPF@u^&PnQP~u &n؎&LJBn؎+&&~&&&PÁSRQ &&/^+&G&G^&w&GFF===^_]U0WVF^F+FFv FV u^&?t&G&WFV^&?uF&FFvvBPPP~҉vК~ҋv tTvvPP~ҋv t6vvPP~ҋv tF;;;UF^&?Pu!v&tvК~ҋv^&G#&GFF+v&tvК~ҋvFFVRP^&G/PFP PvvvNQP~҉vК~ҋvF tPvvv+P~ҋv^&uvݚ~ҋv^&GF&w~ҋv^&G~tYF-FFFVRP^&G/PFP PvvvNQP~҉vК~ҋvF t PZ+^_]U RϚVφV1VVVVΖVjVTVEV ?V&V VVV͏V y_V YVKV >V -V ($V V"V VV V V V V V V М̰VȧV ĤV ̄V&V,WVvFV t ^&?t;;5~~DDPPPDP~v~v u^_]UWVvFV t7^&?u.&G&WFVSDPP~v~v t ;;^&G tPPP~vF |͎&ķvF&`v&D~&Ev&t P+PPP&t0&P&t4&t2&t6 PSDP&D/P~v~vPvvPv~v~v7&u&LJG8&9Gu&9O tFP~v^+&G&G&9G@t&w@ڐPPP~v~vF }^&ķvF&`v&Dv&Dv& & &DŽ Fj&G& Gu&w GP~v~v=u:'FV‹8&9Gt &9W t+&G&G&9G@tPPP~v~vF |&G8&G9&G:&G;&G<&G &G>&G@&GBd&GD&G&GF&GH&G0&GJ&&GL&GN*&GP&GQG&GR>&G/&GV+&GZ&GX&G\&G`&G^&GbF &Gd&Gf&GhG8&GuˣVǙVV ·V`V[VVVD'VV V͏VoV!YVVV5VV V V̰VzV WV@V :V(V "VV  &GP~v~v u^_] U WVFv FV u^&?u|&G&WFV‹&Ƈ@^+&&^&FFvvPP`P~v~v t4vvBP`P~v t;;P^&w&w~~^&&v&t~v~vFF^&G t&wPPv&t~v~vPP^&w0&+P&w4&w2&w6NV RQOQ&G/P~v~vPvvv+P~v~vg&t &LJG8&9Gu&9O tQFPS&G& GtR&w GP~v~v=u:놐FV‹8&9Gu&9W u^+&G&G&w@&G8&G9&G:&G;&G<&G &G>&G@&GBd&GD&G&GFF&GH&G0&GJ&&GL&GN&GP&GQG&GR>&G/&GV&GX&GZ&G\+&G`&G^&GbF  &Gd&Gf&GhG8&G&GP~v~v ux^_]U WVv FV t/^&?u&&G&WFV^&t!<< ;;F &G G^&&O]ǒV njVǃV }VJV VVVVV͢V!ZV-V *VVVV VṾVĉV;V Vt +^_]U WVvFV t ^&?u&G&WFV^&@u;;ZF F tF&?Bu2&G/^&G/^&G/v &8t&^&@<<뭋F ^&G0+^_] U WVvFV t ^&?u&G&WFV^&u;;ZF F tF&?u1&G/^&G/^&G/v &8t&^&@<<뭋F^&G0+^_] UWVF=~Pv v P +^_]&0͇V"łPV JVV VV ĠV ĚVOV IVV dummy*Dlocalttcp0lOCV71DGROUPTCP_TEXTCODE_DATADATACONST_BSSBSSRHVH H H V @ESENDTCPMESSAGE_ERETURNRECVRECEIVETCPMESSAGE _SOCKETNOTOKABORTTCPCONNECTIONSHUTDOWNCLOSETCPCONNECTION_CTOSERC __validfdERRNOSSEND_errno ALLOCEXCHCHECKWAITREQUEST RECVSHUTDOWNSSEND{ѠUWVvFV u;;^&?u~~>>P`PP~v~v u^&w F%=P+Pv v v~v~v=[u FzP^&w&wBPv^_] UWVvFV t ^&?t;;&G&WFV^&@t~}>>vv`PP~v~v t(vvBPP~v u^&G& GtF@tSFV‹8&9Gu&9W tFP~v +&G&G&w@SBP&w~vА^&G& GuF V &9Gu&9WtEsFt:gF t&&w GP~v~vF=uϐ&w GP~v~vFV‹8&9Gu &9W uCFP~v&F u & u&G uAG P~v~vFPvvBP+P~v~^&LJF V ^&G&W&G8*&O9&O:&G;&G<&O &O>&G@&GBdv&L ^&OD&GFO&OH&GJ&GLO&ON&GP&GR>&WVF&GXG&GZ&G\&G^G8P~v~vF t#PvvBP+P~v~vFreϞV wVV ΡVHV"VV ͣVcVHV0V *V V V V V ĪV ħV ̓V\VHV BV %V V V ՠ t:P~vߐF t:^&w GP~v~vF=u2F:::^&w GP~v~vFV‹8&9Gu&9W tFt~u +&G&G^&w@SBP&w1^&w FVRPFRPv v vF@@RP~v~vFPvvBP&4^_] UWVvFV tG^&?u>P`PBP~v~v t0vvBPP~v t ;;uF |H~HtYFAAA^&w ~vF^&G v&w&wBP+P~v~v^&w ^_]^AVV ͲVŤV ŞV ŀV zV fVKV V VgVMV GV -V V؊tudp0lOCV71DGROUPUDP_TEXTCODE_DATADATACONST_BSSBSSPHlH H H V @E RECVFROMUDP_ERETURN _SOCKETNOTOK_CTOSERC __validfdERRNOHTONSNTOHSHTONLNTOHL_errnoSENDTORECVFROM ALLOCEXCHCHECKWAITREQUEST SENDTOUDP`SENDTORECVFROMѠU(WVFvFV t6^&?u-&G&WFVSPP~މvܚ~ދv tF;;;^&GFF@v&t&tvܚFV^&w~ދvFFVRP^&G/PFP PvvvNQP~މvܚ~ދvFPvvPv~ډvؚ^_]UWVFvFV t6^&?u-&G&WFVSPP~v~v t ;;^&G&Gj&Gl@+&Go&Gm&GqF@uG8&9Gu&9O tFP~v~v^+&G&G&9G@t^&w\&t&t~~^ &G&Wv&\\&w~v~v^ &G^&_\&G\^&G& GuFV&9Gu&9WtESFu)F t*&w GP~v~vF=u":&w GP~v~vFV‹8&9Gt&9W t+&G&G&9G@u&w@F u & u&G uDG P~v~vFPvvP+P~v~v^&LJFV^&G&W&G8&G9&O:&O;&G<&O &O>&G@&GBf&O0&ODO&OJ&GL&G/&GNGj&GP&GRoM6VVΪV΀VVV ͿVrVlV YV#VVV̠V̍V eV_V GVV4> FV&GV&WXF&GZGs&G\&G^&G` G8P~v~vF tPvvP+P~vFt:P~vߐF t:^&w GP~v~vF=u2F:::^&w GP~v~vFV‹8&9Gu&9W tFt~u +&G&G^&@t&w@S&w\&t&t~~^ &G&Wv&\\&w~v~v&w0GP&G/PGjP PvvvGsP P~v~vF t^&wx&wv~^ &G&Wv&tz~v^ &G^&Gt^_]l1VͳV ͒VTV/V VĸVIJV ̘VxVYV8VŊt sockparams0lOCV78DGROUPSOCKPARAMS_TEXTCODE_DATADATACONST_BSSBSS7HHH H V @Eo SENDTOUDP __validfd_ERETURN__fdesc__ReqNodeQUERYTCPSTATISTICSGETCTOSSOCKPARAMSSETCTOSSOCKPARAMS-GETCTOSSOCKPARAMSSETCTOSSOCKPARAMSBѠUzWVF^F=t~HHuH|HH~tPP~v~v^&?}F?QP&6FP Pvv~3IQFP P~v~vF uF^ &^&+s~tg^&?|Fv+PPNQNQ`QRQ&6~v~vF t$^&?}/F 묐-tHtFF u FF=u~HHtsHuFA^&?}~} ~ ~ 3IA^&~u"  ^ &&W3Iϐ~~벐^&~} ^ &~| ^ &FV^ &&WFVFV-t-|u9Hu9^_]UrWVFHtHu~tPP~v~vvFV ts^&?uj&G&WFV+PPPNQNQ`QNVRQ^&G/P~v~vF tzFF=}^ &+;[:tF^&9|>&vv&&w~ ^&unF&F&LJF @F &_~&+^& ^&_~&FF^&9uԋF&)F~tF+F^_]5͸VŊViV+VVļVĶV̙VtVnVfV`V#VɊtswrite0lOCV74DGROUP SWRITE_TEXTCODE_DATADATACONST_BSSBSSUHMH H H V @E+_swrite __validfdERRNOSSEND_errno _swrite]ѠUWVvFV t5^&?u,&G&WFV^&-`t)F<<< ;;^_]ːFV FVF F9vvvF=~P+P~v~vF@tFF)F~F ^_]М̛VZVTVLVFV Vt gethostbyaddr0lOCV7;DGROUPGETHOSTBYADDR_TEXTCODE_DATADATACONST_BSSBSSQH3H H HV V @EN_bcopyMAPTCPADDRTOHOSTNAME GETHOSTBYADDR_ReqNode_errnoERRNONTOHL GETHOSTBYADDRzѠUWV~u~t3Ў+PPv v 66~v~vRPP@PFPQP&6~v~vF t F}^Ƈ+  ڋ؎¸^_]ĜTҟɟƟŸĺĴİĭĨĤĢĝĒVďVyVpVgVdVVHV?;2V't gethostbyname0lOCV7;DGROUPGETHOSTBYNAME_TEXTCODE_DATADATACONST_BSSBSSKH%H H HV V @EF GETHOSTBYNAME_ReqNode_errnoERRNOHTONLMAPTCPHOSTNAMETOADDR GETHOSTBYNAMEtѠU WVvv~3IQPQP&6~v~vF tF3Ў+66~v~3+~IƇ+  ڋ؎¸^_]VןԟПΟȟŸľĻĶIJįī|yuoVfbPVMV7V.V%V"Vފt inet_addr0lOCV77DGROUPINET_ADDR_TEXTCODE_DATADATACONST_BSSBSSHtH H H V @E/NLSCASEQMUL16HTONL INET_ADDR INET_ATON INET_ADDR INET_ATON<ѠxUWVvvFP~v~v tFV^_]U$WVFFV+FFF ^ &?0u"F ^ &?xt&?Xu FF F^ &F u<0|7<93vvv~މvܚ~ދvȊF-0ڙډN^몃~ur~0|~9~~a|~f~ ~A|T~FN+PPFPFP*Q~މvܚ~ދvF-WN^ӉFV3^ &?.u7F9Fs ~u~v++FV^F&&WF &?t |&?&? t&? t &? t&? uFN+@FV u'Ht$HtHtOHth~rw~wf*+ FF Ft"vv~މvܚ~ދv^&&WK9Vt@~v7f* F믐9Vt$~vVF VԊ*N+ F V^_]לVV̭VV*t inet_lnaof0lOCV78DGROUPINET_LNAOF_TEXTCODE_DATADATACONST_BSSBSS,HPH H H V @ENTOHL INET_LNAOF͐ INET_LNAOFUѠTUWVvv~v~vFu*%=uF+ F*^_] V't inet_netof0lOCV78DGROUPINET_NETOF_TEXTCODE_DATADATACONST_BSSBSS HXH H H V @ENTOHL INET_NETOF INET_NETOFIѠ\UWVvv~v~vFVu F*+%=uFĊ*^_]FV't inet_makeaddr0lOCV7;DGROUPINET_MAKEADDR_TEXTCODE_DATADATACONST_BSSBSS]HkH H H V @EHTONL INETMAKEADDR_ INETMAKEADDRѠUWVF Fu~u~sF V *n*+ O~wr ~w3r/FN NF2FVԊ*N * ȋډN^F V F VFVvv^&&W^_] ̏Vtinet_makeaddr_btosc BTOS C V1.2.0Z@C_INET_MAKEADDR_BTOSCCODEDATADGROUPDATADATASTACKDGROUP/ ;H H XSCOPY@ INETMAKEADDR INET_MAKEADDR?Uvvv v ҍFRPS^Sێû]ˢV,V5tinet_makeaddr_msc0lOCV7?DGROUPINET_MAKEADDR_MSC_TEXTCODE_DATADATACONST_BSSBSSH2ߘH H H V @E_inet_makeaddr INETMAKEADDR+_inet_makeaddrѠ6UWVvvv v FP~vFV^_]ː Vt inet_network0lOCV7:DGROUPINET_NETWORK_TEXTCODE_DATADATACONST_BSSBSSnH2H H H V @E NLSCASEQMUL16 INET_NETWORKӐ INET_NETWORKѠU"WVFFV+FF ^&?0uF^&?xt&?XuF^&F u<0|6<92vvW~vޚ~vȊF-0ڙډN^봐us~0|~9~~a|~f~ ~A|U~FO+PPFPFP*Q~vޚ~vF-WN^ӉFV=^&?.u)F9FrFV^F&&WF&?t&? t&? t &? t&? uFV^F&&WFN+FV u=w+FF+Fƙ;Vw9r;Fs2FVu*FVF؊*+ F뿐FV^_]M VfVt inet_ntoa0lOCV77DGROUPINET_NTOA_TEXTCODE_DATADATACONST_BSSBSSlHH HH V @E INET_NTOA __ntoaResa* INET_NTOAѠWV?UWVF FV&FF+^N&*F 0^N&ƙ u} ^N&.G|FV@؎‹FV@^_]4 VVwt encryptPLM86 V2.304/29/98 12:25:2͖2STACKMEMORYCODEDATACONST ENCRYPT_CODEDGROUPh@XHH T D K ENCRYPTPSWD D\UQFF<wN^ &^&NuFF< w,N^ &^&Fuދ]tGM'#+B0U;Z6ccrash inet_netof;_indexbzero_bcmp_rindexSHUTDOWN#SCLOSE GETHOSTNAMEsread!1encrypt!B socksupport!errno! gethostbyname!6>*"3C;J inet_lnaof: gethostbyaddr4 GETSOCKSTATE_getdtablesize0 gethostbyname6ffshtons! tcprq.dos!+3&xL"PCZ=obGETCTOSSOCKPARAMS+ACCEPT_nfds/socket inet_network?SETCTOSTCPPARAMS INET_ATON8SendTcpMessageRECV#ReceiveTcpMessage setctosparams.pascal_first_with_bss! inet_makeaddr!<gethostbyaddr!4inet_makeaddr_msc!>inet_makeaddr_btosc!=getdtablesize!0 dsperror!,i DSP_ERROR inet_ntoaALISTENSENDTO'_CTOSERCindex! inet_network!?bzero!udp!'bcmp!setctosparams!. filedesc!3n '`[ARgGV:rCONNECTntohl ntohs ENCRYPTPSWDBMapTcpAddrToHostName RecvFromUDP WHATSOCKETRECVFROM'CloseTcpConnectionbcopyhtonl! rindex! sockparams!+ inet_addr!8ffs! /****************************************************** PROPRIETARY PROGRAM MATERIAL THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF UNISYS CORPORATION. COPYRIGHT (C) 1991 Unisys CORPORATION * This file is modified from /usr/include/sys/socket.h on * Unisys U 6000 - System V - Apr 1987 * * Definitions related to sockets: types, address families, options. * ******************************************************/ #include "sys/socompat.h" #ifndef __SOCKET_H__ #define __SOCKET_H__ /* * Types */ #define SOCK_STREAM 1 /* stream socket */ #define SOCK_DGRAM 2 /* datagram socket */ /* * Address families. */ #define AF_UNSPEC 0 /* unspecified */ #define AF_INET 2 /* internetwork: UDP, TCP, etc. */ #define AF_MAX 17 /* * Structure used for addresses. */ struct sockaddr { u_short sa_family; /* address family */ char sa_data[14]; /* up to 14 bytes of direct address */ }; /* * Protocol families, same as address families for now. */ #define PF_UNSPEC AF_UNSPEC #define PF_INET AF_INET #define PF_MAX 12 /* * Maximum queue length specifiable by listen. */ #define SOMAXCONN 1 /*only 1 connection allowed for first pass. */ #define MSG_NOOP 0x00 #define MSG_NOPUSH 0x10 /* CTOS TCP inhibit push on send */ #define MSG_NOBLOCK 0x20 /* CTOS TCP non blocking recv */ #define MSG_TCPREQ 0x40 /* CTOS TCP request received by user */ #define MSG_UDPREQ MSG_TCPREQ #define MSG_POSTREQ 0x80 /* make sure CTOS TCP request posted */ #define MAXHOSTNAMELEN 64 /* Definitios for setting and getting options */ #define SOL_SOCKET 0xffff /* Options for socket level */ #define UDP_MAXSEG 0x0006 /* UDP Maximum segment size */ /* * Socket State Definitions * * Bit map masks used as follows: * * |F E D C|B A 9 8|7 6 5 4|3 2 1 0| * |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| * \ \ \ \ \ \ \ \ \______ AVAILABLE * \ \ \ \ \ \ \ \_______ ALLOCATED * \ \ \ \ \ \ \________ LISTENING * \ \ \ \ \ \_________ ACCEPTING * \ \ \ \ \__________ BOUND * \ \ \ \___________ CONNECTED * \ \ \____________ TCP * \ \_____________ UDP * \______________ IOPENDING * The high 7 bits are not used. * */ #define AVAILABLE 0x0001 #define ALLOCATED 0x0002 #define LISTENING 0x0004 #define ACCEPTING 0x0008 #define BOUND 0x0010 #define CONNECTED 0x0020 #define TCPSOCK 0x0040 #define UDPSOCK 0x0080 #define IOPENDING 0x0100 #define TCPALLOC (TCPSOCK | ALLOCATED) #define TCPBOUND (TCPSOCK | BOUND) #define TCPLISTEN (TCPSOCK | LISTENING) #define TCPACCEPT (TCPSOCK | ACCEPTING) #define TCPCONNECT (TCPSOCK | CONNECTED) #define ANYTCPSTATE TCPSOCK #define UDPALLOC (UDPSOCK | ALLOCATED) #define UDPBOUND (UDPSOCK | BOUND) #define ANYUDPSTATE UDPSOCK #define ANYSTATE 0xFFFF /********************* CTOS Socket functions ********************/ typedef struct struct_carbonitesocket{ int ver; int fh; int state; int lport; int sig; }CARBONITESOCKET; int PlmFar(accept) (int handle, struct sockaddr_in FARPTR client, int FARPTR clientlen); int PlmFar(bind) (int handle, struct sockaddr_in FARPTR name, int namelen); int PlmFar(connect) (int handle, struct sockaddr_in FARPTR server, int serverlen); int PlmFar(getsockstate) (int sd); int PlmFar(listen) (int handle, int backlog); int PlmFar(recv) (int handle, char FARPTR buf, int len, int flags); int PlmFar(sclose) (int sd); int PlmFar(shutdown) (int handle, int how); int PlmFar(socket) (int d, int t, int p); int PlmFar(ssend) (int handle, char FARPTR msg, int len, int flags); int PlmFar(whatsocket) (char FARPTR p); int PlmFar(setctostcpparams)(int handle, char FARPTR node, int t,char FARPTR buf); int PlmFar(setctossockexch)(int handle, int ex, char FARPTR FARPTR FARPTR exptr); int PlmFar(freezesocket)(int s, CARBONITESOCKET FARPTR cs); int PlmFar(thawsocket)(CARBONITESOCKET FARPTR cs); int PlmFar(sendto) (int,char FARPTR ,int,int,struct sockaddr_in FARPTR ,int); int PlmFar(recvfrom) (int,char FARPTR,int,int,struct sockaddr_in FARPTR ,int FARPTR ); int PlmFar(setctosudpparams) (int handle, char FARPTR node, int t, int flags); int PlmFar(setctosparams) (char FARPTR node, int flags); int PlmFar(getctossockparams) (int s, int level, int parname, char FARPTR parvalue, int FARPTR parlen); int PlmFar(setctossockparams) (int s, int level, int parname, char FARPTR parvalue, int FARPTR parlen); #define setctostcpexchange setctossockexch #define setctosudpexchange setctossockexch #define EWOULDBLOCK 60218u /* Operation would block */ #define E_WOULD_BLOCK EWOULDBLOCK #define E_NOT_SOCK 60219u /* Socket operation on non-socket */ #define ENOTSOCK E_NOT_SOCK #define E_SOCK_BADS 60220u /* socket in incorrect state for this operation */ #define ESOCKBADS E_SOCK_BADS #define E_SOCK_LIM 60221u /* no more sockets */ #define ESOCKLIM E_SOCK_LIM #define E_MSG_SIZE 60222u /* Message too long */ #define EMSGSIZE E_MSG_SIZE #define EPROTOTYPE 60223u /* Protocol wrong type for socket */ #define E_PROTO_TYPE EPROTOTYPE #define EPROTONOSUPPORT 60224u /* Protocol not supported */ #define E_PROTO_NO_SUPPORT EPROTONOSUPPORT #define EOPNOTSUPP 60225u /* Operation not supported on socket */ #define E_OP_NOT_SUPP EOPNOTSUPP #define EPFNOSUPPORT 60226u /* Protocol family not supported */ #define E_PF_NO_SUPPORT EPFNOSUPPORT #define EAFNOSUPPORT 60227u /* Address family not supported by protocol family */ #define E_AF_NO_SUPPORT EAFNOSUPPORT #define ECONNREFUSED 60228u /* Connection refused */ #define E_CONN_REFUSED ECONNREFUSED #define E_DIFF_BUFF 60229u /* buff changed while request outstanding */ #define EDIFFBUFF E_DIFF_BUFF #define E_YOUR_REQ 60230u /* Recv has received a user request */ #define EYOURREQ E_YOUR_REQ #define ESOCKTNOSUPPORT 60231u /* Socket type not supported */ #define E_SOCKT_NO_SUPPORT ESOCKTNOSUPPORT #define ESYNTAX 60232u /* Invalid request block */ #define ESENDCACHED 60233u /* UDP Datagram was cached */ #define ETRUNCATION 60234u /* UDP Datagram truncated */ #define EINCOMPLETE 60235u /* UDP Datagram incomplete */ #define ESUMCHECKFAIL 60236u /* UDP Datagram failed sumcheck*/ #define ESENDFAIL 60237u /* Local UDP Datagram not delivered */ #define EADDRINUSE 60238u /* The requested address is in use */ #define E_ADDR_IN_USE EADDRINUSE #define EPREMATURETO 60239u /* UDP Recvfrom timed out by the system before user timeout */ #define ENOPROTOPAR 60240u /* The option is unknown at the given level */ #define E_NO_MSG_AVAIL 14 /* NO message available */ #define ENOMSGAVAIL E_NO_MSG_AVAIL #define E_NO_REQ_CODE 31 /* No such request code */ #define ENOREQCODE E_NO_REQ_CODE #define E_NOT_INSTALLED 33 /* TCP/IP system services not installed */ #define ENOTINSTALLED E_NOT_INSTALLED #define E_NOSUCHSUBPARAM 2450 /* No service installed for this rqCode*/ #define E_NO_SUCH_SUB_PARAM E_NOSUCHSUBPARAM /***** Errors generated by the TCP Transport Service *****/ #define E_INV_RQ 58952u /* Invalid request */ #define EINVRQ E_INV_RQ #define E_BAD_MNG 58953u /* Bad TS management parameter */ #define EBADMNG E_BAD_MNG #define E_BAD_INDEX 58955u /* Invalid TS query index */ #define EBADINDEX E_BAD_INDEX #define E_SBUF_BIG 58956u /* Send buffer too big */ #define ESBUFBIG E_SBUF_BIG #define E_RECV_TRUNC 58957u /* Receive message truncated */ #define ERECVTRUNC E_RECV_TRUNC #define E_NO_RSRCS 58958u /* No TS resources for request */ #define ENORSRCS E_NO_RSRCS #define E_NOT_AVAIL 58959u /* No connection available */ #define ENOTAVAIL E_NOT_AVAIL #define E_NO_HOST 58960u /* No such host name */ #define ENOHOST E_NO_HOST #define E_NO_ADDR 58961u /* No such host address */ #define ENOADDR E_NO_ADDR #define E_INV_SOCKET 58962u /* Invalid socket for open */ #define EINVSOCKET E_INV_SOCKET #define E_REFUSED 58963u /* Connection refused by remote */ #define EREFUSED E_REFUSED #define E_BAD_HANDLE 58964u /* No such connection handle */ #define EBADHANDLE E_BAD_HANDLE #define E_NOT_OPEN 58965u /* Conn. is not in C_OPEN state */ #define ENOTOPEN E_NOT_OPEN #define E_CLOSED 58966u /* Conn. is in C_CLOSED state */ #define ECLOSED E_CLOSED #define E_OPENING 58967u /* Conn. is in C_OPENING state */ #define EOPENING E_OPENING #define E_CLOSING 58968u /* Conn. is in C_CLOSING state */ #define ECLOSING E_CLOSING #define E_ABORTING 58969u /* Conn. is in C_ABORTING state */ #define EABORTING E_ABORTING #define E_ABORTED 58970u /* Conn. aborted by remote??? */ #define EABORTED E_ABORTED #define E_BADLEN 58971u /* Bad length in Send request */ #define EBADLEN E_BADLEN #define E_TIMEOUT 58972u /* User timeout */ #define ETIMEOUT E_TIMEOUT #define E_BAD_RANGE 58973u /* Bad security range */ #define EBADRANGE E_BAD_RANGE #define E_BAD_PREC 58974u /* Precedence request unallowed */ #define EBADPREC E_BAD_PREC #define E_BAD_SEC 58975u /* Security request not allowed */ #define EBADSEC E_BAD_SEC #define E_EXISTS 58976u /* Connection already exists */ #define EEXISTS E_EXISTS #define E_BAD_SYN 58977u /* Unexpected SYN received */ #define EBADSYN E_BAD_SYN #define E_DUPLICATE 58978u /* Requested 'lcn' already used */ #define EDUPLICATE E_DUPLICATE /* i.e, Duplicate connection */ #endif __SOCKET_H__ /************************ sys/socket.h **************************************/ /****************************************************** PROPRIETARY PROGRAM MATERIAL THIS MATERIAL IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF UNISYS CORPORATION. COPYRIGHT (C) 1991 Unisys CORPORATION */ #ifdef __CTOS__ /* * If MSC is the compiler in use here this * sys/types is not really needed. But, * just in case it is called we call the * MSC version. */ #include #include #else /* * BtosC is used. This provide many more types * that are related to CTOS or are BSD types. */ #ifndef _BSD_TYPES_ #define _BSD_TYPES_ typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; /* System V compatibility */ typedef unsigned int uint; /* System V compatibility */ typedef struct _quad { long val[2]; } quad; typedef long daddr_t; typedef char * caddr_t; typedef u_long ino_t; typedef long swblk_t; typedef short dev_t; typedef int off_t; typedef long key_t; typedef struct fd_set { int fds_bits[1]; } fd_set; #ifndef NULL #if defined(__SMALL__) || defined(__MEDIUM__) #define NULL 0 #else #define NULL 0L #endif #endif typedef u_int word; typedef char *far pointer; typedef char byte; #ifndef _SIZE_T #define _SIZE_T typedef unsigned size_t; #endif #ifndef __TIME_T #define __TIME_T typedef struct simpleDate { unsigned seconds; unsigned dayTimes2; } time_t; #endif #ifndef __ERCTYPE #define __ERCTYPE #ifdef TYPEDEF typedef unsigned ErcType; #else #define ErcType unsigned #endif #endif #ifdef TYPEDEF typedef unsigned ExchType; typedef unsigned PhType; typedef unsigned RqType; #else #define ExchType unsigned #define PhType unsigned #define RqType unsigned #endif #ifndef __HDWTYPE #define __HDWTYPE #ifdef TYPEDEF typedef unsigned int word; typedef unsigned char byte; typedef char *far pointer; typedef unsigned long quad #else #define word unsigned int #define byte unsigned char #define quad unsigned long #define pointer char *far #endif #endif #ifndef __RQHDR #define __RQHDR typedef struct rqheader { byte sCntInfo; byte RtCode; byte nReqPbCb; byte nRespPbCb; word userNum; word exchResp; word ercRet; word rqCode; } RqHdrType; #endif /* C style synonym */ #define rqhdr_t RqHdrType #ifndef __SD #define __SD typedef struct { byte *far pb; word cb;} sdType; #endif /* C style synonym */ #define sd_t sdType #endif #endif #ifndef __SO_COMPAT__ #define __SO_COMPAT__ /* * DEFINITIONS OF THE COMPATIBILITY MACROS FOR THE THREE SUPPORTED * PLATFORMS; CTOS w/BtosC; CTOS w/MSC; DOS w/MSC */ #if defined (__BTOSC__) /* BtosC on CTOS */ # define PlmFar(name) name plm far # define Cdecl(name) name # define FARPTR * far #elif defined (__CTOS__) /* Microsoft C on CTOS */ # define PlmFar(name) _plm _far name # define Cdecl(name) _cdecl name # define asm _asm # define far _far # define FARPTR _far * #ifndef NULL #if (_MSC_VER >= 600) #define NULL ((void *)0) #elif (defined(M_I86SM) || defined(M_I86MM)) #define NULL 0 #else #define NULL 0L #endif #endif #else /* Microsoft C on DOS */ # define PlmFar(name) pascal far name # define Cdecl(name) _cdecl name # define asm _asm # define far _far # define FARPTR _far * #endif #ifndef _BSD_TYPES_ #define _BSD_TYPES_ typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef struct _quad { long val[2]; } quad; typedef char * caddr_t; #define NBBY 8 /* * Select uses bit masks of file descriptors in longs. These macros * manipulate such bit fields (the filesystem macros use chars). * FD_SETSIZE may be defined by the user, but the default here should * be enough for most uses. */ #ifndef FD_SETSIZE #define FD_SETSIZE 256 #endif typedef long fd_mask; #define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */ #ifndef howmany #define howmany(x, y) (((x)+((y)-1))/(y)) #endif typedef struct fd_set { fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; } fd_set; #define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS))) #define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) #define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) #define FD_ZERO(p) bzero((char *)(p), sizeof(*(p))) #endif #endif *************************************************** *** SAMPLE PARAMETERS FOR CTOS TCP/IP *** *** ------------------------------------------- *** *** CONNECTION LIMITS AND OPERATION MANAGEMENT *** *************************************************** MaxMaxConn = 64; MaxConn = 30; FTPConn = 5; * Default for one FTP server. LHostName = HOST1; * Site specific. LHostAddr = 195.63.74.150; * Site specific. SpecHostAddr = 0.0.0.0; * Site specific. NetVolume = SYS; * Site specific. Log = OFF; *NetMask = 255.255.255.128; * Only needed for sub networks ReqTrace = 0; *LHostAddrX = 195.63.72.151; * Site specific - Dual IP X.25 * address BroadcastAddr = 0.0.0.255; * Site specific - UDP broadcast * address ************************************ *** REMOTE HOST IDENTIFICATION *** ************************************ RemHostName = LOCAL; * a LOCAL MUST be specified & the * RemHostAddr RemHostAddr = 195.63.74.150; * MUST be the same as in the * LHostAddr. NetType = 1; * NetType 1 = Ethernet LAN *RemHostName= XLOCAL; * an XLOCAL MUST be specified if X.25 * is being used & the RemHostAddr *RemHostAddr= 195.63.72.151; * MUST be the same as in the * LHostAddrX. *NetType = 2; * NetType 2 = X.25 RemHostName = HOST2; RemHostAddr = 195.63.72.152; NetType = 2; RemHostName = HOST3; RemHostAddr = 195.63.72.153; NetType = 2; RemHostName = HOST4; RemHostAddr = 195.63.72.154; NetType = 2; RemHostName = HOST5; RemHostAddr = 195.63.74.151; NetType = 1; RemHostName = HOST6; RemHostAddr = 195.63.74.152; NetType = 1; RemHostName = HOST7; RemHostAddr = 195.63.74.153; NetType = 1; *************** END OF FILE **************PP6؃S6܃6PP6PP6S66PP6Tt+J;tTt+J;uF6F~u3PPFGW`g s  oqCopyright 1993 Unisys Corporation. All rights reserved.Ver s2.2.53 Linker R12.3.1&_*@,1 2& dOo ?@  p p ?P?_0p_/`0??`     OoP?p%P)@*+?+ ,O,/-0/?/12/456O 8p;p<0=ADEF_`GGOG0H/PHHK L@MOOR?RoS_SS/ S/a@e@eoe@f_f?@h_ioj_PlOmnn_n oo p@rOr@sv0u*'(1"E )#+7* 8F0% /!) kM8ScddSd*ddHdddKduddd G_ !?N]6[z /,RmdH o  ' d 2 &EJF"G&@?e0e;R{?oGp $!~!J&&)Q*y+++,,,-@-Y------....020P0tGd1]| L          <ar=]~\6Z{*7Rx B!z!!! "%"]""3$Y$$%%a&LLLLdLLLLL-LVLLLLL# LL Ls L L L L L> L L LC L L LH L L L LK Lv L L LMLvLLLL8LLLLELlLLL LSLzLLLLL;LdLLL|LLLLLGLpLLL$LMLxLLLnLLLL;LdLLL Nf 1@G~  "=Z{ ).  ^  L   @   7  ; Q , |  u )  s Q        9     A !B)B1B9BABIBQBYBaB \  / M  / F X  ) <\  _      F   0   " 2  % 8 D[[[FlllG_y3r7H0Cclv+B {  ! T   k   1 g    &a 5b-bhb'jDiy.+"F"f"""sUssssss;=Px'6J2`NdL)  & I \ 6JZ[l5DQ^bkp "Wgs #%(Xbt$8Ne{^`!&U_Gk~ NNNdddd[ded2d@dtdddPdkdtddddddd dd#dSddddddddd'd,dMdRdkdpddddOg)GVe>c74Zul)1>DIV   . 4 9 @ l  : R  O ^  ( 7 I i  '7Gf}V.3MYs1G]s >CRo *BOVt.5CKPYp|,HO]ejs"',4?JVm")7?DM_diz -:GUm8CZGkw#Ox % ; Q g } ,!!!!!!!!!!!!""""""##/#E######$$)$%J%~%%%%%%%&^&&&&&&&'$'*'8'>'j'p'~'''''':(T(n((((f))&*E*Y*d*j*o****5+\++++++,=,Q,e,y,,,, -H-a-----.#.7.<.F.z.....3/@/E/J/~//// 0:0X0_00000131M1w11111PUl /@JfwR Ol9eZ$_u"*, F _ r z  y        % 4 < K S t      >HOct$Diz"Eed>!!!!"-"L"T"";$a$& LLLL*LLL_LnLLLL&LCLlLLLLL5L^LLLL L+ LT L{ L L L L LF Lc Lt L L L L L L" LK Lh Ly L L L L L L' LP Lj L| L L L L L( LS L~ L L L LL,LUL~LLLL@LOLlL}LLLLL$LMLtLLLLLL[LLLLLLCLlLLLLLLLLL&LOLxLLLLL,LULLLLLL)LvLLLL LLCLlLLLcVn9HObt$)Dk3;MUe(4t`)u)z)))$)7)_)v))))))))e)))A)O)])h)y)))))))))) )))$)8)@)H)P)X)`)h)p)x))))))`) )I)S)))))))) ))")*)2):)B)J)O)]))))< )D )L )Q )Y )a )i )&9Lav*Eb1!Y    e      q   &  {  t Q     j  > ) C Y   R   h !   z X ;     v (   p      w  < f AAAABBBB 'B= /Bk 7B ?B GB OB# WBQ _B jBnBrBvBzBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC C CCCCC"C'C+C/C3C7C>>j=k=l=m=>>FFF>W<PP<P u><t<&PP<P u><t<&:> :PP($r)PRPP($VP(P($XP(P($ZP(P($[]U< t NQ>QD/>>[NQ>QWRQPrmPT t*>!FP>PPRPPrmPT>Tt vPvPPPPFP#P($: q=@򪍶q=:򤋆@B::><t>o>!> > 򪍶>>v P($]Uf>h>:أj>l>n>

r>s>Zt>v>f>PlP($]U>sPTP($ ]UN=P>s >>vi>qqu16V:PP($:& 5u`6N=U>qqu<><tָPN=P6 u 6N=U6V:P< tɸPP($:& uVN:& u;:& u(:& u S:& uS2 FFFvx> Fx>>>|>>>>>~>>>>>щ>>>>s>>>>>>>sTF P>P8F>>u"vvvF P>P F>T>>؊F >>;F >>>>H>u >vvv>P>P F~d;u 2~b;u &>x>z>>~>>>x>~ U:)))):)X****:*: * ***>*<***=**:* *>"*$*:&*(***Q)P$P($o=]U,*-*.*/*:0*X2*4*6*:*:8*Q,*P$P($o=p=o=]U)))):)X****:*Q)P$P($o=]UO=؃\t>o=t]ˀ>>sO=؁\s>]ˠO=Ƅ`*a*Ƅb*c*:d*Xf*h*DŽj*O=n*:l*>p*>q*؍^r*t*\v*6X`*P$P($>>GO=]UQFFF<w(؃\uFs}F]Fuт~u MvPF PP($UF(****:*X**DŽ*F*:*>***>***؍b"**`"**DŽ*DŽ*6X*P$P($]U>*to=P>>u'>=@uP PP=PP PP=P6:PPDP($>><w P>uPP* PP($PP*]o=6*]UQP6:PFPf(P@P<P6PP($6(6(=P@P:P<P6PT t'(=:]Uo= P PPPPDP($P]Uo= P PPPPDP($P]U^&G t P]U^&t>o=uIP9^&_S^&_"S^&GDŽ`"&w]UQ>d&t<>Ytf&P6d& %Fd&H^;rf&6*PFu]U6?PPP($&87?v7?>>u8?9?9?P7?PP P:?PJP($PP)P/LP($PPP9?QQQSSPPKP($PPW9?Q7?ɵQPPPPPKP($PPW9?Q7?ɵQPPPPPKP($PLPPRPPwmP2?PPDP($*F? ]U츰>PTW>PRPPRPPwmP2?PPDP($]UPPP0P/PDP($PWP)GAP)&G@PDP($P8?j*ʵQPkPRDP($PPP P PDP($P PPq=P6:PPDP($PPP P PDP($PPPPPDP($P8?#*PPPQP($]UP PPPPDP($>o=uP PPPv>o=uP PP P Y>o=uP PP P o=u"P PPPPDP($]U츰>PCPP>PZlP($]UQFF7?,,N:rJFPPQP8?PP($FPPFPP8?PDP($FuFPPPP($]UP#P>]UQF PPF Pv8?PP($F8?ȊN:r(F PQF PFPPDP($Fű]UF <t < t< t<uF t<u~ u >PE~ u >P 8F uNr>Pذ 8F uNs>W t3>P F < tW tt>PP<P($>P L~ uMFs*~ u>PXPP>PZl >Pv F < r<~w>QP<P($F W>sQP<P($]UW&G8W7?*ʳ*:s 7?*ˆWW&G9WPWPP($]UPPWPP8?PDP($]U k=r ~~ u XY1~ u @ A ~ u ~ u  ~^.%0; ./~FF t<t~u~~u45~4n~u~R~u~6~u~~u$~򤠚F%F <t<uFRPFPPFᚠ >P P<P($}FPv]U ~~ u ~ u$ % ~^. ./~FRPFPPFk=s6 >P P<P($>PFPP>PZlP($]UQ>WtU0 7?,ȱB? F?F1\WP8?*PPPQDP($]UQ>WuF7?,,N:rFPPQP8?PP($PPFPP8?PDP($Fu0 7?,ȱF?B? 1\Ys PWP8? *PP PQDP($]UWW<w#Dظ(((@Wu]UFD؍( W WNW(W(W]UPN Q7?*ȀNQPvP($]UPN Q7?*ȀNQPvP($]U6W6W@P WȱDW؉(W(W:WuWWW6W6W@P WP@P W;Wu QWHP7?,*,WP"PWWQ7?*ȀWQP($]U6W6W@P WȱDW؉(W(W:WuWWW6W6W@P WP@P W;Wu QWHP7?,*,WP"PWWQ7?*ȀWQP($]U^S5P($>s}^&?ue=^&?u^&?u ]UQQ>e=tFP u~u@ ۊF< t< u ɀ~u0WȱDW؉(F ue=v듀~ t>Wv~xtv WP t4ZPWQ7?*ȀWQ WS6WDP($PWWQ7?*ȀWQP($F]UM:f=uP]ˠU:f=u]ˠa:f=u]˸]UQ::(QPF u/(PPPF u.)PPPF u]UQQ:::(PPPF u9>.)t@F(QPF u.)PPPF u]U: =@^& t:wȿ=F>=@uA^GP=P:HP0su8=@:^w=F~u^&?uu]U^ &?uBU:f=uFs::Fs::Fr^ GP^ &7t$^ GP^ &75FVuv FrOuRFsF:F:M:f=u: t =r wU:f=u:t=rvu]UQQ( tN(QPt?(P6(5F ui= ~ui=( t,(QPuu$(P6(5F=vu Fh=]Ue=< PdP($,>e=tWP5P($>s}>Wue=̀>Wu뾂>Wu밠W8Gt8%u\뚠W8Qt8/uy넠W8Mt8+u렠W8Ut83u\늠W8]t89u날W8_t8;u_될W8it8?uS될W8It8'u될W8Kt8)u될W8St81u될W8at8AuU%될W8ct8CuW8et8Eu P&될W8-t8Ou*될W8Wt85uW8Yt87u P.뎠W8gt8=u).뤠[:Wug06WI#뉚 ]U>=rt < PdP($|PZPPRPPwmP|PPDP($|P=PPvPZlP($Ɔ?[>Ƃ@]@Ⱦ>>A`򤍆zP?P>PRPPrmPF t uP=sz>srz|PPtrxP#F tƆ=|P|PxvPZlFtuƆ>v($rt~z P($>sqP5P($|PTP($ e=]UQo=t<uvuPWe= < L >e=u7FP5P($~ue=܀~uϚ4P($š ]UQo=t<u o=P^e= < >e=u(FP u~ue=ޚ4P($њ ~uo=P]UQo=<t Ple= < >e=u(FP u~ue=ޚ4P($њ ~uPCPCi }P]UQo=<t P|e= < >e=u(FP u~ue=ޚ4P($њ ~u.PCPC>>i>>-}P]UQo=<t Ple= < Q >e=u(FP u~ue=ޚ4P($њ ~uPCPCi}P]UQo=<t P^e= < T >e=u(FP u~ue=ޚ4P($њ ~uo=P]UQo=t PSe=Mf=>r <  F ~uo=PYP]UQo=t PYe=Uf=>Yr <  F ~uo=PYP]UQo=<t Ple= < >e=u(FP u~ue=ޚ4P($њ ~uPCPCi}P]UQe= < U>e=uVFP u6~1u>k=u *vPk=2}~0uk=<}Pe=뮸uP룚 ]UQ>:u>o=u yPie= < >e=uIFP u4~1uހ~2uр~3u!Ě4P($e=밚 ]UQFP5P($~u e=]˚4P($UPo=(У((:(:(>(((((:F ~@>=@u=~F=~?: ty8o=tqQPQFPf(P@P<P6PP($(( tA6(6(FP@PFP<P6PT t; < ~F7?,,, FSPPvPPPPFFP P PDP($>(uPWFFPPPWFFPPPDP($PWFFPxPwPDP($>(uPPFPP~>(uPPFP P _8(uPPFP P @(<t<uPPFPP>(u$PPFPPPDP($PPFFP P PDP($>(uPPFPP PPFPe Pd PDP($PPFFP P PDP($PPNQq=Q8?*ȵQ6:PDP($PPFFP P PDP($(RPFP PFWWNQJQ *ȵQDP($PPFFP P PDP($PPNQNQ8?*ȵQvPDP($PPFFP P PDP($( t>RPFP PFWWNQJQ *ȵQDP($PPFFPPPDP($6(6(FP PFWWNQJQ *ȵQDP($PPFFPPPDP($6(6(FP PFWWNQJQ *ȵQDP($[]UQo=t<uo=P7?,,, FSPFF*QSFP *PPFFP *PPFFP *PPFFP *PPFFP *PPFFP []UF^ &sPPFP!P PPFP+ P* PDP($F^ &@sP'PFP!P P'PFP+ P* PDP($F^ &Hr&@sP0PFP!P P0PFP+ P* PDP($]Uo=<t P]ˠ*r \vP>PCPCPCPCPCPCiZ}Pe=]U W We=utFP u_~1uv?~2uv2~4uv%~3uv~5uv ~6u vP1$뗸uPe=녚 ]U^㊇*r*s4v ~u Fi=uh=㊇2r>i=uh=㊇2r *vPh=Ƈ26i=6h=]UptWPRQPPP<P6PF tt Pv򤍶t򤍶re= < PdP($zPtPPRPPwmPPPDP($zP=PPxPZlP($~tFzP.P-PxPZlP($zP P<P($zPPDzPPPxPZlP($zP P<P($zPPPxPZlP($zP P<P($džldžnr;lw=s2l V򪋶np򤋶nVFYnPPP|*nPPP|*nPPP|*nPPP|*.nh ~tHhj;:u;:t4nQP& unP P& tƆF hj;:u;:tƆAƆCApppzPPPPxPZlF ttuƆv($=nr;lu~uttWPRPPPP<P6PFdžldžnv򤍶t򤍶rrAzP P<FzP:P9PxPZlFgP5P($zPTP($ e=]UF t~ t=F t/F t(NIN 10^&F 1F ʋF tHF^&0]U|e= < FF^@NVV ~>e=tFP u~tz~@uFPFPFHP0FPvFP<P6PF~tuPP|e=FPdP($~uPFVFP6@?&FVPFVF FuPP7?,,PS PR PDP($v~FPFPP|*FPFPP|*FPFPP|*FPFPP|*.FFFF Fu FFvvPE~FPP7?,,PFPPDP($PZ6gFPP|*PP7?,,PFPPDP($PP7?,,Pv Pu PDP($PWQPQdP($PP7?,,P P PDP($PWQPQdP($PFP6=ZuF~ tvFP t4;PWPWP^SvDP($PWFPWPP($ ]Ue= < qqF^@NVV>e=tFP u~ue=^ƇqӀ~ tvFP t4;PWPWP^SvDP($PWFPWPP($띚 ]U>s}Ys~t>YuFs uP)e= < }qF^@NVV>e=tFP u~uqFFYse=Ƈ}qĸP}qPFPRPPwmPTPPDF u>e=}Pv뫀~ tvFP t4;PWPWP^SvDP($PWFPWPP($듚 ]U졼Ysu >r }P]˸PTP($}P>]U~ .u+JVtE^ vx.u+JVt܋vv^ x.u+JVtl^ Svs[^ v@PvsDvv^ @Pvs*vFN^ PRFF+Pry^ Sv5^&G^ v@Pv5^&Gvv^ @Pv5^&GvFN^ PRFF+P5^&] U>vtt@P3PMhP/LP($vtFMh&G MhP&GX™rtpt33Mh&G MhP&GX™ntltntlt+ptrtMh&G3ɻ<MhRP&GMhP&X™[Yʉrtpt33mMh&G3ɻ<MhRP&GMhP&X™[Yʉntltntlt+ptrt=w.5-X33]U s FFul3ҸdRPv vF3ҸRPv vF3Ҹ<RPV FRPF3ɻ[Y+QSF>xttFFlxtxt~tvvvnPvv<vvoPvv< ^]U^&?t#^&P|^&? u3P|FԚi]UF N ~#^&P|^&? u3P|FӚi]Uvv v vvvvYYPDP($vv v vvvYYPP($] U~}BP6NqPq@PPPdP($PPP6Dqv viBqFk3P3P2PPoPJ3PF%PZqPv vYYZ+RPv vFt P3P3P2PP5oP]URs FP~tP>>u&FFv vFP~t~~FPFPToPFPFPYYzt=KvT|t|t=~|tzt3P6zt6|t%rPPPDP($3P6zt6|t3PPPP($3P6zt6|tFPFPYYPDP($3P6zt6|t~~3PFPYYPP($FPYYzt&zt]UFBq;Zq~ Zq+BqFZq+Bq+FYl>Yl~UP6Bq6DqhP6YlhP6YlFP($PBqFP6DqhP6YlhP6YlE|P($P6Bq6Dq%rPvDP($P6Bq6DqoqPvP($]Us {q>#ru >!ru !r&W &G !r&;Wru&;Gr6#r6!rYY!r&W &G &G ؎&2F=tXF{qh{q>{q~>6{qhP{qSl6SlVoPhP< hP3PngX>{qt6{qhP{qSl{q6#r6!r,YY#r!r6SlhoPhP< hP3P]Us FO>yqunFF~P}"PvvhFRP4P($Ci^h u~t ^ƇhNhPoP6r6r ]Us F>yqt6r6r,YYoPP9yqPFFF;Vq v3P|6Dqq>yquNoP}qPrr>ru>rtFyq~tooRPP=w.K}]U>pqt!Bq;Xq}pqBqBq;Xq~XqBq]U*s F*>>t>>u[sstt3Pd>=@u3P PP=PPD&3P PP=P>:}:PD3PXqP PYYZ+BRP P PYYPD P(PFP9F~tooRPFP3P3PP3PFP3PP3P3P(P3P3PP3PPP>qBqDqFqHqJqLqNqVqPqRqTqsq\q[`qbq^qlqmqnqoqpqtqBuq0wqBxq0vqdqfq2PPjP9PdP($>Rqt-P>pqt >BqO}3BqP6DqP($=w.  ]U>mqt ppRP>^qtppRP>bqtooRP>`qtooRP>TqtooRP6Pq6Nq6Bq6DqoPQhP<$qh3P3PP3PQhP]U s F>{qtF){q>{qF;F|^^&FF>q~ } ~|>sqt~_~>uq0u^r2F~_~>tq0u^r2F>^qt PYe>pqt^BqBq;Xq~Q>bqtF>yqtPBqDq;Pq}Dq P6NqPq@PPPdP($BqP6Bq6DqFPPDP($P6Bq6Dq6FqPP($pqsFjgda^rPYYPM4E>pqtpq >BqtBq)Bq@BqBqBq;Zq} BqjuBq;Xq~XqBqpq>yqtP>TqtBqDq;Pq}Dq P6NqPq@PPPdP($Bqpqsqsq>qz>qr>qjhf.;tCCU.(       # ? y y y `>q@qFkF>q>q>q>qsl]l_l[lWlUl>q>q>qmqmqnqBqHqDqJqFqLqsqvqtqwquqxq`qdqbqfqaHqBqJqDqLqFqpqvqsqwqtqxquqdq`qfqbq)BqpqDq;Pq}Dq P6NqPq@PPPdP($BqPƇjDq;Nq~DqP6NqPq@PP3PdP($>qpPYYP|pPvvr6.;tCC..#()*+78<=>DEHMNOPZ[\c1ti6>qF@qk@q@q=F~@qFF slLJ]l>slu>]lt]l[l[l>q >q >q >]lt]ltt PVFP3Ҹ<RP3Ҹ<RPvv3ɻdRPRP3Ҹ<RPvvRP!pPhP<h3P3P<P3PhPB [l)DqDq;Nq}NqDq) [lDqDq;Pq~PqDq pq[lBqBq;Xq~XqBqpq [lPpqZ+)Bq}Bqpq >slu 3DqBqG>slu@>]lt]l]lDqDq;Vq~VqDq>_lt_l_lBqBq;Xq~XqBq>`qtNqDqDq;Pq~PqDqpqQ ]l)P6Bq6Dq%rPZq+BqPDP($P6Bq6DqoqPZq+BqPP($Dq;Vq} PDq@PPPPdP($P3P6Dq%rPBq@PDP($P3P6DqoqPBq@PP($>DqtP3P6DqPPdP($bPdP($>oqtP3P3PoqPVq@&ZqP->qqApPv=w.'i Pq+Dq@;[l} Pq+Dq@[l>[ltP6DqPq@P6[l3PdP($BqpqPq+Dq@;[l} Pq+Dq@[l>[lt P6DqPq@P6[lPdP($Bqpqe[lBq;Zq~ Zq+Bq[lZq[lBq+£Yl>YltVPBq[lP6DqhP6YlhP6YlFP($P6Bq6DqhP6YlhP6YlE|P($PBqYlP6Dq%rP6[lDP($PBqYlP6DqoqP6[lP($pq6[lYpq>]lu FpPYYk>]luBqPƇj>]lu2PPjP96FF~ |F;sl~>Wlu^㋇]l[\qO>9?svXqZqh>oqu3PPMP($oqH`q@bq8Rq0.H.;tCC.  ('^㋇]l^qTq =t=tJ>Wlt7^㋇]l3P!P-=w .N^㋇]l)P9P/3Pw&Pm=w.FF~ |F;sl~>Wlu^㋇]l\q[>9?sXqOZqP3HqBqnq>oqt3P3PMP($oqc`q[bqSRqPPPP($42.;tCC!.S}\'^㋇]l^qTq =t=tFF~ |$F;sl~>oqt0^ヿ]lu ^LJ]l^ヿ]lu ^LJ]l^㋇]ldoqFqFqFqFqFqFqFq &Fq&Fq&Fqw&Fqn&Fqe&Fq\Fq%:FqPFq%: FqAFq%: @Fq2Fq%: AFq#Fq%: FqFq%: FqFq%: FqFq%: FqFq%: FqFq%: FqFq%: DFqFq%: EFqFq%: FqFq%: FqFq%: Fq~Fq%: Fqpn=/wi. jjjjjjjjjjjjjjjt)eG8Vjji>]lu NpPYY>]lu'Bq@PDq@PSpPmkP< mkPjYY&#>_luVq@_l>]lt]l]lNq>_lt_l_lPq>Pq}PqPq;Vq~VqPqPq9Nq PqNqDq;Nq}NqDqDq;Pq~PqDq>]lu \pPYY>]lu qpPYYwt>sl }slslLJ]l>qT>qpPv<Wl>q-Ul>q~0|I~9Csl㋇]l Fsl㉇]l>slu>]lt]l[l[l>q2~@|~}pPvo>qpPvX Y.;tCCg.@ !(;?@ABCDHJKLMPcfghilmnqrxy|eH &tY n6p;b~@|~|>@qF|>q~0|~|>@qF|>q~8ueDqDqDq;Vq3BqBqBq;XqP6Bq6DqpPPDP3P3PoqPXq@&ZqP>qDFtq>q6Fuq>q(>q =w. k>kqu>@qu}>>quv@qƇkkPP@q>qqtP>rquE3PP3PP P3PrqP6.rq03PP3P3P Prqb>Rqt4>>qu-P>pqt >BqO}3BqP6DqP($>jqt<>iqt3PPPFPPDP($]Us FY P PYP9FYF2F~ }F2㋇,sFN~~F2؁㋇lsF2>lqt+~0|~9~ ~,|~.F@YYOF~u 4Y~}x~%||F YFjFcF \>lqtYYMYOFYF >Tqt 2Y!F =w.! ~W|YFF>>upPYY PpPYYE6jq>jqt}3PP3P%rP PD6iq3PPP%rP PDP($6hq>hqtppRPP 6kq3P3PP%rPPPDP($3P3PP%rPPPDP($3P3PP3PPP($g6lq3PP3P>lqtppRPPD3PP3P>lqt3PP>qupPP?pPqP#r!r>#ru>!rt SlpPP߃qqYFXqPP߃3PZPO{PDqVqPR.qPP߃Q>7?&}HVq VqPq6qPPo߃*(= w#.#+!T!!!!2""" ###(#H#i~}\qYFYFYF~}F YFY)~}"~%} F/YYOFYFYY;F~F>iqt3PPPYP PDP($>iqt3PPPFPPDP($~t>hqu~t YPv~t >hqt3]UVFtt=h?httt3>tutP(g>gtggggggtgghfFhV F hhF hVFhhFhVFhhFhVFhhFhgP<g>gutg]U h"h&VF%h#h'h P)hP$PgP P hP6gt33^^&w&7WYYg>gt33>6tFPgt>gt33gg>gt33.h,h]U>s}~ }u cP6b|~}u uP6t|~}u P6|~d}u K P6J |~}u a P6` |~x}u p P6o |~(}u P6|~-}u P6|~F}u P6|~~u P6{~Z}u P6 i~P}u P6q~2}u CP6B~<}u 7P66ځ~}u P6 ȁ~}u P6 붃~u BP6A륃~u(M:f=u CP6BiU:f=ue P6 UFtu sP6r=~u P6,~u P6~u P6 P6]U4P($>s}~uu - P6, |~uu TP6S{~ vu P6{~uu P6 {~uu P6 ~uu P6 ځ~uu P6ȁ~uu P6붃~!u D P6C 륁~}u P6듁~\vu P6 |~fvu wP6vj~pvu P6X~zvu N P6M F~uu P6 4~uu P6 "~uu P6~uuP6~vu t P6s |~uu g P6f |~*vu P6 |~4vu P6 |~Hvu zP6y|~Mvu P6|~>vu P6 ~Cvu P6 ځ~Rvu KP6Jȁ~yu P6 북~yu eP6d뤁~yu xP6w뒁~yu . P6- w~u BP6Af~u(M:f=u CP6BLU:f=uH P6 8Ftu sP6r ~u P6~uP6~Hu  P6 |~Iu P6|~Ju P6|~Ku P6 |~Lu P6|~Mu / P6. ~Nu e P6d ځ~Ou . P6- ȁ~Pu P6북~Qu P6뤁~Ru ? P6> 뒁~Su eP6d|~Tu P6j~Uu .P6-X~Vu P6F~Wu RP6Q4~Xu P6"~Yu P6~ZuP6~\u P6_~]t~^u P6F~_u P64~`u P6"~}u P6 ~}u P6 >rvt]U FRPFP PF *ȈNP8?**PPPQDP($P8?N*PPFBPQDP($>]U>P8?N*PP^SQDP($]UQ7?,,,FSPPPFFPPPDP($PWFFPPPDP($PPFFPPPDP($PPFFP;P:PDP($PPFFPPPDP($PWFFPPPDP($PPFFP6P5PDP($PPFFP"P!PDP($PPFFPPPDP($PPFFPpPoPDP($PPFFPPPDP($PPFFPPPDP($PPFFPPPDP($PWFFPFPEPDP($PPFFPLPKPDP($PPFFPUPTPDP($PPFFP]P\PDP($PWFFPfPePDP($PPFFPpPoPDP($]UQ7?,**FQPPvPPPPFFPPPDP($]UQ7?,**FQPPvPPPPFFPPPDP($]UQ7?,**FQPPvPPPPFFPPPDP($]UQ7?,**FQPPvPPPPFFPgPfPDP($]UQ7?,**FQPPvPPPPFFP#P"PDP($]U7?,**"WQPP6"WPPPP"W"WPlPkPDP($]U7?,**#WQPP6#WPPPP#W#WP!P PDP($]UQ7?,*,FNSPPvPPPPFFPl Pk PDP($PNQFFPPPDP($PFPFFPPPDP($PFPFFPPPDP($WWW8?@*ӈWPR7?**ѶRPSP($PWQ7?W*ȀQP($WP@P ]UQ7?,*,FNSPPvPPPPFFPPPDP($PNQFFP P PDP($PFPFFPPPDP($PFPFFPPPDP($WWW8?@*ӈWPR7?**ѶRPSP($PWQ7?W*ȀQP($WP@P ]UQ7?,,,FSPPvPPPPFFPNPMPDP($PWFFPPPDP($PPFFPPPDP($]UQ7?,,,FSPPvPPPPFFP-P,PDP($PWFFPPPDP($PPFFP%P$PDP($PPFFPCPBPDP($]UPvPvPPPPFFPXPWPDP($FsPWFFP P PWFFP# P" PDP($PWFFP P PDP($P'PFP P PDP($P0PFP P PDP($PWFFPPPDP($PPFFP5P4PDP($PPFFPPPDP($PPFFPPPDP($PPFFPPPDP($PPFFPPPDP($]UQ7?,,, FSPPvPP~uPPFFPPg~uPPFFPPD~uPPFFPP!~u)PPFFPPPDP($PWFFPPPDP($PPFFPPPDP($PPFFPaP`PDP($PPFFPvPuPDP($PPFFPPPDP($PPFFPPPDP($]UQ7?,*,FNSPPvPPPPFFPPPDP($PFPFFPbPaPDP($PFPFFP P PDP($PNQFFP PPDP($PFPFFP P PDP($WWW8?@*ӈWQR7?,*,PPSP($PWQ7?W*ȀQP($WP@P ]UQ7?,*,FNSPPvPP>quPPFFP P PPFFP P PDP($PNQFFPPPDP($FW8?@*ʈWWQPPRP($PWPWPP($]UQ7?,*,FNSPPvPPPPFFPE PD PDP($PNQFFPPPDP($FW8?@*ʈWWQPPRP($PWPWPP($]UQFFHN;r^&<0r<9vFuܰ]UЉFVFFHN;rCFV Y|^v&0׉FVuv FuFV]UQFȈFF V |ǃ0N^&F V |F Vus F] NUF;FrF]U$WP(P($ZYY&WأYYY|YYYY$WYYYPlP($]U ~YPP($6Y6~YYP\P($YPYPP($~s}>e=u~u e=\4P($O~ u>o=t8e=u PP/~u"~u~uv]UQQo=<t >j=t HvP,~ u)>YuYPYP>Yt?FP*PFsH>YtAFYH^;r1YCFu!*rv6*PvFFsO=؃\ti]U~uYsPCOPCAs~ uYsPCOPCBR~uYsPCOPCC1~uYsPCOPCD~ u PC PCr~u PCy~ u~u PC^~u PCL~ u B~u 8~uPCPC(}Pp8Fu*s PCPJF:v*um=^ v&8u) ^ v&8u^ v&8ux}^ v&8u d}P{^ v&8u}P*r_l=X^ v&8tL>vPA6Z^ v&0N-^ v&8t;^ v&0(M^ v&8u g=5^ v&8u P(g=P(^ v&0(g=Ft]U>d=rn=Fd=P=d=]UQQFvPFd=spv->P=ul]ˀ>P=u]ˀ>P=u(]˸zvP]U>Q=u!]ˀ>Q=tPCPCPCPCZZQ=u_PCPCPCPCVPCTPC1PC0PC0PCPCPCi]˸zvP]UQ=ZR=Zv >ZvCvP6Z6ZZ. ZZZZ ZZZsZ㊇2r 2:Zt#Zr'Z㊇2r2:Zu *vP]ˠZsZ㊇2rZrIZ㊇2s7ZsZZ2Ƈ2]ˊZZ2Ƈ2]ˠZsZZ2ZZ2PP6Z6ZY]U FF FF ~FF<wrCFui]UQ^.lt}F s F sF FF s F sFF~ u vv~ u vv CvP]UPCvCvCiPvv]UPCPCPCvCvCPCPCiPvv]UQ>*ufd&F~u t H؀f& tF^f&d&]UQQ*s PCi*s Pc[Fd&FFsDF t=v3؀f& u ^Kf& t^f& u^Kf& uFN뵋Fd&]U*sPC PCPCiPc PcPc]U6XZPP($Z& uZ& uZ& uZ& u S.Z& u SKZ& duhZ& duZ& duZ& du SZ& duSU*d)P<P($]U*d)P<P($]U6*d,*P<P($]U^&G dS<P($]U^&G dS<P($]U*6V)P$P($]U6*6V,*P$P($]U*6V)P$P($]U^&G 6VS$P($^&GLJ\>]U>e=uPP($^&G 6VS$P($]UF Fuk;$+v&;Vu ;F ui; F v&+ UF Ful;#+v&;V u ;F uc; v&+UF Ful;'+v&;V u ;F uc;v &v&+U F F uj;F Fuk;jjFP/LvvjFPF#t~sv&\*wc.p7pPF*^&v &9F*^&v & F*^&&v &&Tv&D*v&Fv &v&+ UF Ful;F f v&+U ZvvjFPF=4t=4uFavvjFPF=4t=4uF=~u+~u%ZvF6"Z$ZvF6Z ZF*[,[+UPF Fuc;F F uj;F;,[u;*[tvv4F#tj>Zt'~tv &*"Z v &*Z&4v &^&~tv &~&] ~&] Y]&FFF=F\FzFFFFFF2FQF 1F1FF1Vu FFmFm1FF1VF1F ;vNvB;FvNFF^&F 1^&W^&8Os&vF+B@^&GF1^&WF <1^&WF 1F1^&WF 1º PF1Y^&GU^ &G 33&5\7\:t :.H]t$C8\^Y tt &^&] ]U^&G :H]w):]u*^&G t&G uF&G &G 3  ]U^&G 4^u2^P u>4^t2^&G6^8^>8^u]ð]UQQ@^P|@^T^N^P< uJF6@^P u8V^=u0:^P< u!F6@^P uB^=t=!t3]^ &G :}]uSvvD^ &G :a\tWSvvnL\^ &G ^ SvvFNs=u8^ SFP~u#a\^ &G ^ &dt@Fs7\률a\^ &G F,^ &G :H]r^ &G :7\tw&G 9Fu9Fu^ &G&WFV^ &G&W;Vu;Fw3&G^ &O^ &O^ &O&W;Vu;Ns+^ &r &G&;Gwe^ &G &W"N~;u;wL&wщFVN;u;s&+O &"N։~؋F^ &G-sSF u^ &G-sG<PFPF^ &G-FVFVF%Ff^ &G^ &G^ &GNV^ &O &W"^ SPFPFPF u4F^ &G^ &G :L\t :\t^ SjF t^ &G&G &W"FV&9Wu&9Gw&G&W9Fu9Fu^ &G&WFV^ &G&9G*s&G*^ &FF^ &G@1&@FތFF^ FV&9W"u&9G v&G*H1Fܺ&G &W"N~;u;r_F&+O &"N։~؋F։F&O,r&9G*sSlF tF^ &G^ &G*&;G(uF&G(F^ &G* ^ F&9G*s&G*^ F&9G(v&G(Fr^ Sj$F u^ SlF uy^ &G ts&w8&SP^ &w"&w G<P^ &w: F t@^ &G-^ &G &W"&G4&W6^ &G&G.^ &F&G0Z&W2~Yt^ &G@1&W^ &w&@F&Z&W^ &GN^ &O^ &OF~+&G &"^ &G&G(^ &G&G*^ &G,^ &Yti&w8&Sh^ &w"&w FP#Fu^ &?^ &G,(~t^ &G&GF^ &G :\t ^&FF^&G &W"&O*&;Wu&;GrI1&G^&G*1 uSj$F u`^&G@1&@FF^&G*1&G &W"FV&w8^SQRPFP#FtK uX^&G*1V+^0^~&}*9^Y^&G*H13^SjF u/v&|*&L+^9 ^&G*&G^&G,^ &G :}]uS^SzDO^ &G :a\t S^S<6^ &du7\L\^ &G ^ S^SFa\^ &G FU^&G :H]r^&G :L\t:\u^&G&G &W"^&&Wc^&G :7\uX&r&G&;Gv &G&W^&G&G &W"^&&W^&G s7&G s/^&/&_!^&G :\u^&&G ]^&^ &&W^&G :7\t ^SF uk^&G;s]@1V&G&G &"F~&w8&XSv^&pWPG<P^&w:F t@^&G-F^&GFrF@1V^&G&G &W"FV&G-sG<PFPF^&G-3^&w8v&XSv^&pvvFP#FNVF׉NV~u t%^&9Wu&9Or&O&WFF t ^&Gv^&@F&Z&W^&GFV^&G &W"^&G&W;Vu;FYvF&GF^&G8^&G^&G&W&+G &W"FVF&G^&uFF^&G :a\t SvW6^&du7\L\^&G ^SvWFa\^&G F^&G :L\t:\t :a\t^&G&G &W"FV&9Wu&9Gw&G&W^&G&9G*s&G*FP&t@"FP$F u^&uSlF t^&w8&S^&w&w"&w G<P^&w: F t@^&G-^&G &W"&G4&W6^&G&G.^&F&G0Z&W2^Sv$F Yu,^&w8jGPj ^&G :7\u ^&G :L\t@&& tA"F&G :a\uC&du7\ ^&duL\&G ^&G-sS&G :7\u0G<PFP1^&G :L\t:7\t:\t ^G<PFPFF^&w:FP u ~u~uߊFs^&w8jGPj FF^&w8 F^&w:)F^&G F u F uFF :r10^&Fr^&0FFF 10^v&F@ vvFP\F^SvhF^&:F@F^Pvj]FF^&:F@F^Pvj6FF(FFF^SvRQPNQNQPF u$F t^ SNQvNQPjtF~uVFF^SBPvFPF u2~t,^SCPvFPF u~tF;Fv4N+NA^v0^ ~9^YFF+F@^&^&<{t<[tF FF^&^&?{uFSDPvFPF uoF sdt_NAv~^YF@^&^v&48E ^& ^SPPvFPF u ~uFHN;v9@N+^vp^~&=9^YF@N+^&CFPF u^&O@wA^~&=9^Y^&G@^&^v&48Q^&v&4^P^&wg&we^&^v&48S^&"^vFF^&F^&G^vNFY^&Gw^ &Gj^&GyF^&^vNFYFPF uQ^&G@^&^&O@wA^^Y^&Ƈ^&Ƈ^PF uN^ GkP^ &PFPFPjF u#FPvhjj^ShWPj T^&G F =wmt =amt^SvFPFPjFF uݍFPvjjFPQ؍GPQF!t=u%~^&Gi^GePF9FvF^kvNFYF^&^S^Sv^SFPF tF~u;^SvRPPRPF=u^v&xF^&Gi뾃~tfhFP*F^&F^&G^vNFYFP&GP}F^Sh+FF7^SFPvRQjv PvDF u \^&G .s ^&G8^&G8Fvj^ Sj7F t^&F^GkP[P^&PFPF uFt @^&F^& ^ &Ow~&=^ 9^NOY^ &G^&F t$@^wk~ ^Y^ vx\g~ B^&G :\t L\^&G ^SFPFPyF u^SrTF u}^&FFvN^S^SvmF tJ^G8P^SvRPjhmmF u"^&w8F t^&w8 FFU^&G :\t ~v F^&Gj]USVF uN F3؋F9ȋ^ VF uf F r ;Vwr;FvN3Җ^[]US^v v w7W[]USF uN F3F3Fȋ^ VF uf f r ;Vwr ;Fv+F V +FV؃[]US^v v w7W[]US^WN 2W[]^ &dtZSFPL^& uV^ &du&G-sG<P^S^&^ Shwmvv$^& uL\^ &G ^&^ &Gd<tN<uSh^& uH^ SFPL^& u/^ Shrmvv$^& u7\^ &G ^&U].p^]U#U$VWQ^SY_^F^OGG w 3GGG؉GGGFG F GFGFGFGFGPS<]UU^ SG PPFP[#uMG~&wLr/^ F%;u^ ^ FF;tX F ;FuX] ^&^SP$F t^&G t~&w8&SP^&w"&w G<P^&w: F t@^&G-^&G &W"&G4&W6^&G&G.^&F&G0Z&W2~Yt^&GFu^&G@1V&G&G &W"F^&Gv^&@F&Z&Wv^&@&G^&G*^&G(^&G^&G, ^&G :L\t :\t F^&G-rG<PFPF^&G-^&G0FF^F&G4&W6Ft.H^&O.+N^v0^9^Y^&O.N^F&)G.^v^&G0Z&W2F^&.uF tuSvF tF^&G0FF^&w8^S^&w.&w6&w4FP$FFt.H^&O.+N^v0^9^Y^&O.N^F&G4&W6^F&)G.^v^&G0Z&W2F t ^&.u%FsFr^ShF u^&G :L\t :\t ^&G&WFV&O&O &"N~;u;wN~Fs FF%^u!^FPF u ~ r^^ ^ujj^P/LF t^&GF^&8G wF^X ^Fv&DF&GF&GF&GF^&GF&GF&GF&GF&G F&8G uANsNQPPF t FF^&#tF ;Fv F&O#F ;Fw FrF9F w~^ &FF^&O&@^&G^&w6 FA:r jF~uv&<tF~to~tEv&<u<^&?^&W&VFVF;Vrw;Fv^&W&9Vvr9Fr^&GkNQS^XZ&;Wu/&;u*^&&G^&G^&&W&^&W&^&W&^&W&^&GkN;Nu);^u$^&G^&G^&W&^&W&VF^&W&VFtt_^VW ~*VWkPҍFRP*_^ t1;u3ҋPVWҍFRP0_^F3;}뵋VFVF^&GRP-YYtt_^VW~ vF 3FttVF u( u$FFFnFnttHnFnJn^&W&VFVFVF^&W&VF^&G;rQ&G;u&W&^&W&^&)G&GkFƋ^&GVFttVF5VF;ttw;ttnV|YVF t\ tU3ҋ_^VWUvv@Pv v YYN ^ QSvvV F ]_^VW~tYv v YYVFVF3FF^&?t;vrVNjN ^ QSvv ^ &V F _^VWUv ~3+ʋItH@8u]_^VWU^ &uKv v t^ &t&w&w^ &G&G^ &&GPY3]_^VWUF ^ P&W &G &G ؎X&^ &W&G&G&9W ru&9G rvv  ^ &_ &G2]_^VWU6`n6^nF2Pbnu\njNnPd\n]_^VW$V F dnbnVF`n^n\nNnP2dYY t^&?u&?%t &PqYrnpnnnFjnlnhnFF^&?-urn^&?+upn^&? unn^&?#uln^&?0uF>rnujn^&ut%vvYYhn^&ut)F^&?*u^&W&&؎&hnF^&?.uaFF^&ut%vvYYF^&ut)F^&?*u^&W&&؎&FFҍFVFN^&^&?lu~~^&?NuF3^&?FuF^&B.;tCC'.EGPXcdefgopsuxz}}z}}~~t!^&W&&؎&W&VF^&W&&؎&3҉VF~ufnFfn>jnu>hnhnfnqFfni^&W&&؎&Dl^ܚ,l~ufnFfnt\l^ܚpl\s^ܚpll^ܚ,l3^&.;tCC.%EGPXcdefgopsuxSQXQX~t!^&W&&؎&W&VF^&W&&؎&VF~%|~sFVFVFFF Ft@jj vvN }ƀ0^&jj vvVF븃~tF-!>pntF+>nntF F~uvvjDvlnu>^&?0u2N^&0%F FuNjj vv)0^&jj vv VFËF FtINF%F= ~^&?xuFW F7F0F^&VF.VF믃>lnuvvjAj0:Y^&P.Yk3Wu N^&:NF%F= ~^&?puFW F7F0F^&VF.VFF t;|j0vvFPFPj^ܚpltL~~+F;fn" ~)fnV^&P^ܚpl fnV^&P^ܚpl >rnu>hn~ hnj -Yhn^&W&&؎&7Y>hn~fhnj Y^&W&&؎&W&VFRPYYFfn;F }Ffnj vv j%Y F\n_^VW FPFP6fn^plLVFN~fu>lntRPYYVFVFFfn;}vfnF| fnF@FVF;Vrw;Fv^&0uN^&ËV+‹+v fn ;6fnHfn>fnG~u>pnu>nntG~~~>lnu>fntG>rnu>jnuhn;~ j Yhn~tj-pY>pntj+aY >nntj RY>jnthn;~ j0>Yhn~}j0,Y(~|"^&?tF&PYj0YN؃>lnu>fntj.Y~}>fntj0YfnF>fn~2~ft ^&?t#fn^&?tF&PYj0Yǃ>rnt)>hnfnhn>hn~ hnj vY_^VW FPFPfn@P^pltLVFt\l^pl\u3vN>lnt~gt ~GtvvYYN^؉N^VF;Vrw;Fv^&0uN^&ËV+;fn+HfnFV+ ufn^&0&GF3>fn~u>pnu>nntG }=d}O>rnu>jnuhn;~ j EYhn~tj-3Y>pntj+$Y >nntj Y>jnthn;~ j0Yhn^&PYF>lnu>fnt^&?tj.Y^&?t>fnt&PYFfnރ>fn~ fnj0Y~GuFE ~guFeFP{Y }j-qY؋j+cYd|ƻd0PNYƻdƻ 0P4Yƻ 0R$Y>rnt)>hn>hn~ hnj Y_^VWU~v v ;6fn}6fn>rnuhn;~ j Yhn)>hn)>fn]_^VWv vYY>rnu?>fnt~ ufn;}ƉFfn;~ƉFhn;F~ hnj `Y~ 0ufn;~F PHYfnhn~ u>fnO thn^F&PY;6fn}F PYfnhn>rnu~ u>hn~ hnj Y_^VW ~wFu\l^pl\u^plZY[XNu\l^,lDuBu VF0;r$^&Dl^pl^,l+nVF;Duwr;Bus^pl^plZY[X_^VWUVu\l^pl\u ^&^&^u\l^pl\rdX>u&Dl^pl\r5Bu&Dl^pl^,l^&N }XBu&Dl^pl\w5>u&Dl^pl^,l^&)N }fu\l^pl\s#nu\l^pl^,l^&^plZY[X]_^VWvvu\l^pl\u^&tn0un~FFtnF]^pl||ǀ0^&ǙRP|^pl^,l~u\l^pl^,lNNF~~  ^&0NF ^&_^VWU컆u\l^ pl\s^&^ pll^ ,l^&vvv^ pl PSQR{PSQR^ ,lvv^&FP^ pltn]_^VWu\l^ pl\s^&^ pll^ ,l^&vv^ pl PSQR^ ,lvvvFPFHP^ pl PSQR PSQRFH^&tn_^UFtfV tm x+ x;uF9F uF9FuF9Fr2t:] y#%;uF 9Fu܋F9FuԋF9F̸F t9F |;|]VWU~uFFv &l &d&t&4&| &t]_^VWUW~ 6E6]~ &E &&EF &EN&M &u3]_^U]XY&&G&G&GQPU]XYGGGQPU]XY66G6G6GQPU]XY&w&w&w&7QPU]XYwww7QPU]XY6w6w6w67QPUF tv ]VWU^ &%=t&W &G &;Wsw &;Gw^ &G &W+‹&tjjv S u2V^ &w&w&GP^ &W&G&W &G ;~ ^ &"VW^ &GllRPT_^3]_^VWU^ &%=t&W &G &;Wspw&;Gvh^ &G &W+‹&tjjv S u2V^ &w&w&GP^ &W&G&W &G ;~ ^ &3]_^U]Y[XZSQW y UV 3ɉRJJ0C^]_U][YXZQSW3UV 3ɉRJJ0C^]_U]UVW%=0B}jZZ=0B~ "RR-RB t ~^]U]UVW%=0B}jZZ=0B~"RR-RB t ~^]U]6wU>vtFF^]VWF tFu$F^N V F^NV~v]ЋRP%+u3Pْ[^Sv+Z ¿ JKJKJK3PS[Q2fË[S3Y2[^S[ZJRF3Fx [KS,)[KS}3SSSCCCvXXEVW~3lultF|| LnhYVF u u Ln^&?wumu v v YY^&?runmuivPv v $ tRVWVFRPV F RPRPYYPjjjhrmVFRPhD_^Ln uUVWVFRPT_^VWVFRPV F RPRPYYPjjjmPVFRPhD_^Ln tvvYY,vPv v $lVFll_^U>vtFFɛ^]VWFtF uJFFFFF FF F~v]3FFFF^^^^΋FЋȋ^ 3%0@xw ؁NF % F 3PPPPPP .< t.|#.|GGsGGtڍfXFXFXFXF<        ]U] v33I|U] v I|U] v33I|VWv_^VWv lu>lu>ltjvPjVWllRPVF RPvFPl_^Lnlu% u!>lu>ltvvv jlu>Lnt >Ln}F_^VWFPV F RPRPYYPjjjhmmLn uvLn t v 3_^VWU^ &%=t4&&t&W&G&W &G 3V F ^ &W &G ^ &v St^ &t^ &G&_&G2]_^VWUv |}luluLn"VWllRPT_^ t >Ln'llLJlLJl3]_^VW~F~u~tV F ^&W& }$~^ &uu=utF ^ &-+=w.s|yFF ^ & u#0t ^ &xt&Xuut(ututF;|3ҋu40u/^ &Gut^ &xt&Xu F ^ &ututؙVFF ^ &utJututF;}"ǙN^RPF[Y+ʉN^롃~u~tV F ^&W&~tVFVF_^VWUj jjv v ]_^VWUj jjv v ]_^U]B%ZU]RJZ uˋWv?|_zzz:_3BBB˃w҃~ _ ׉RJZVWVW^ llRPVF RPvFPZl_^t uF6Ln_^U^SvP]ULFs+PPFP/LF u,^&!t@FF^ &FP|F usFFFFFNNFF @FF^F FsFs PFP $ FP<F~u[vFPF tF;FtFF u$ 8FvFF^ &ȍvF!uFFFΈFψFбNѴFҋVVԉFF.F FڌF܋FFލFF^NFsFs PFP $ FP<F~uGvFPF u6F;Ft )F։F u F^ &~!t FtFF] {LOCAL}[sys]Tcp.Config.sys!SYS --------- ----------8--------- -------------------------------------0. Verbose Off1. Connection status1. Transmit Binary 1. Verbose On2. Echo2. Options reported by local 3. Options reported by remote3. Suppress Go-Ahead4. Give Status5. Timing Mark6. Extended Options [Local Port] [Remote Host] [Remote Port]4A. Abort R. Record (TTY only)4C. Call $. Stop Record (TTY only)4H. Hang Up P. Print/Filename (VT100)I. Interrupt Process4L. Listen U. Upload Filename (VT100)N. Synch S. Status V. Verbose'X. Host Status Z. Host Names!Y. Are You There G. PingE. Extended OptionsO. Abort Output1. Do2. Don't3. Will4. Won't FINISH HELP Abort failureAbort in process7ABORT OUTPUT: Press GO to confirm, or CANCEL to cancel0ABORT: Press GO to confirm, or CANCEL to cancelAbortingActionADDRESSES HOST NAMES8ADDRESSES HOST NAMES (Active Hosts highlighted)8ARE YOU THERE: Press GO to confirm, or CANCEL to cancelBad conn handleBad precedence Bad securityBad TCP parameterBinaryBuffer too bigBytes received Bytes sentCall/CALL: Press GO to execute, or CANCEL to cancelCallingCannot echo on both sides Close failureClose in processClosedClosingConfig file not availableConnection : Connection abortedConnection abortingConnection closedConnection closingConnection existsConnection In SynchConnection not openConnection openConnection openingConnection refusedConnection state(Connection Statistics of current session%Connection Statistics of last sessionDo &DO: Select a key, or CANCEL to cancel)DON'T: Select a key, or CANCEL to cancelDont Echo'End of List. Press any key to continue.1Enter Action(1 = DO, 0 = DON'T), Option(0 to 255)Error Ext OptionsEXTENDED OPTIONS:Extended-Options List File name Host name1FINISH: Press GO to confirm, or CANCEL to cancel Give Status2HANG UP: Press GO to confirm, or CANCEL to cancelHelp file not availableTcp.Telnet.Help[VID]2 {LOCAL}PNPFVNVFEF {LOCAL}PNPFVNVFEF {LOCAL}PNPFVNVFEF {LOCAL}!a?!*a**2Q=\z[KBD][VID][]}[!Scr]]$$.Tmp}[!Scr][!Scr][scr]<$>BsFilter.tmpVNVFp        ~{}MASTERSERVERLOCAL{}[]{}[]<>[sys]LptConfig.Sys&Press NEXT PAGE or SCROLL UP to continue(Press NEXT PAGE to continueTD aAdDhHmMnNoOsStTwWyYgG!oo!/!0d!/!0y! !hh!:!0m!!2AA!!*o!/!0d!/!0y! !*h!:!0m!!2*A!"!Nnn! !dd!, !yyyy! !hh!:!0m! !2AA!"!Nnn! !*d!, !yyyy! !*h!:!0m! !2*A!(!Www! !Nnn! !dd!, !yyyy! !hh!:!0m! !2AA!(!Www! !Nnn! !*d!, !yyyy! !*h!:!0m! !2*A! !0t!:!0m! !*t!:!0m!!hh!:!0m! !2AA!!*h!:!0m! !2*A!!0o!/!0d!/!0y!!*o!/!*d!/!0y!!0h!:!0m!:!0s!!0t!:!0m!:!0s!.tmp!W*w! !N*n! !*d!, !*y!!N*n! !*d!, !*y!"!0o!/!0d!/!0y!-!0h!:!0m!:!0s!!2*A!!Nnn! !*d!, !yyyy!Invalid Template Index$Cb %6FVfzTN00sundaymondaytuesday wednesdaythursdayfridaysaturdayjanuaryfebruarymarchaprilmayjunejulyaugust septemberoctobernovemberdecemberampmnoonmidnight05 invalid namesunmontuewedthufrisatjanfebmaraprmayjunjulaugsepoctnovdecampmnm05 %0:BLU_fmrx~ #(-27;?BEI{s2.2.53[!sys]Tcp.Config.sys<     [Kbd][Vid] [Lpt]L[Nul][Debug][SysIn]t[SysOut]>tD<!t#>%)* ]7u8lllllal]lylll]lyllBL.L\LLLBLl\LLlBL.L\LLLZ]lyll lxFly]lyll tl]lyll l{ttyll2;,4  [KBD][VID]>L^>f^%2dm %2ds %2d%2d.%2.2d secs %d bytes uploadedFile uploaded (%d bytes)%s Printing stoppedwPrintingCan't open fileVT100TTY %02d:%02d %02d|%02d %s %s %s %s %s NLLFORGorgWRPwrpINSinsKNKA[?1;2cescape %ld:%ld [?J [?K [?1;2c[%d;%dRspace.. [ Final ??? = [ Intermed ??? = Eoscar shauna1 Remote ModeLocal ModeK No Upload File SpecifiedrCan't open source fileSingle shot; FINISH to reset !24 Rows33 RowsOP[B0B0   --_H+.&012-*(),'/!"#$ c 1& [kbd][kbd]$@Y@@חA7yACnF?O8M30HwZ?sOu?{Gz?-C6?:0yE>ؗҜ<2#I9tcp/ip.params. RESTRICTIONS As per Release Notes. ~ЩF^GЩ&GF~ЩtЩR=Щ/^Mod32Fileheaders.sysMfd.sysLog.sys SysImage.sys BadBlk.sys CrashDump.syssave>install5.jcl tcp/ip1.cmds tcp/ip2.cmds Fdsys.Version Request.TCPIP.Version copyfile.sub Request.list RqInstall.subInstallCmds.subVersionNumber.Run Install.jclReleaseNotes.sub Install.ctrl Install.subinstallSock.sub install5.jclRequest.TCPIP.txtReleaseNotes.doc?@ B25-TCP-1@ kyOfLCB @ D <;> 8r0=9|P^Sys< CSocket ctos  DATASHEET Socket 9|yFileheaders.sysSys< syOsyOsyOxD xnMfd.sysSys< tyOtyO UCB Log.sysSys< uyOuyOuyO@  SysImage.sysSys< uyOqUq[s BadBlk.sysSys< vyOvyOvyOI CrashDump.sysSys< vyOvyOvyO@ save>install5.jclSys< yOqyOOBD5A tcp/ip1.cmdsSys< yOqyO(H(loeb 11/11/93 14:35 10240 1108359814 8 tcp/ip2.cmdsSys < yOqyO p loeb Copied to 3.0 baseli 10/14/93 14:59 8192 4106645493 Y Fdsys.VersionSys < yOqyOloeb TCP R2.2.CoastGuard 11/11/93 14:35 9 2096619472 a Request.TCPIP.VersionSys < yOqyOloeb TCP R2.2.CoastGuard 08/09/93 11:39 14 2229807801 copyfile.subSys < yOqyOloeb TCP R2.2.CoastGuard 09/07/93 16:42 862 2027405301 *B Request.listSys < yOqyOloeb TCP R2.2.CoastGuard 08/09/93 11:39 210 2961108374 Q RqInstall.subSys< yOqyOloeb TCP R2.2.CoastGuard 11/11/93 14:35 6021 2942680358 4InstallCmds.subSys< yOqyOloeb TCP R2.2.CoastGuard 11/11/93 14:35 4725 3239569328 tVersionNumber.RunSys< yOq2OUloeb TCP R2.2.CoastGuard 11/11/93 14:35 4437 1176930363 J Install.jclSys< yOqyO:<MPvvr5 srssReleaseNotes.subSys< yOqyOloeb TCP R2.2.CoastGuard 08/09/93 11:39 4332 1406099176 \ Install.ctrlSys< yOqyOO $ loeb TCP R2.2.CoastGuard 11/11/93 14:35 2387 1262045209 j Install.subSys< yOqyO2.4loeb TCP R2.2.CoastGuard 11/11/93 14:35 12566 1702031370 installSock.subSys< yOqyO$bloeb TCP R2.2.CoastGuard 11/11/93 14:35 1640 1754562119 X@ install5.jclSys< yOqyO+AfBMPvvr5 srsRequest.TCPIP.txtSys< yOqyO&(loeb TCP R2.2.CoastGuard 08/09/93 11:39 9756 2549999471 EReleaseNotes.docSys< yOqyOA12MPK w/RIPsys/socompat.hSocket yOqyOlloeb 11/11/93 14:35 1900 86796663 w socklim.cSocket yOqyO loeb 1st Baseline 10/12/93 12:22 547 3951837904  get_time.cSocket yOqzOloeb 1st Baseline 11/11/93 14:35 5000 4016036670 f sys/types.hSocket zOqzO $ loeb 1st Baseline 11/11/93 14:35 2579 1681499570 ħ filedesc.hSocket zOqzO0loeb 1st Baseline 10/12/93 12:22 3697 2222624974 dA arpa/inet.hSocket zOq zO@loeb 11/11/93 14:35 1024 2629095861 S terminal_2.cSocket zOq zODloeb 1st Baseline 11/11/93 14:35 6420 3732374641 Q socket.libSocket  zOqzO^[!Pascal_First_with_BSS.objSocket! zOqzO" bstring.hSocket" zOqzO{loeb 1st Baseline 11/11/93 14:35 635 887733176 ^#netdb.hSocket# zOqzOloeb 1st Baseline 11/11/93 14:35 4357 1445062938 ;$ echoserver.cSocket$ zOqzO  loeb 1st Baseline 10/12/93 12:22 2518 261696637 % multecho.cSocket% zOqzOloeb 1st Baseline 10/12/93 12:22 4677 4203981859 oc& terminal.cSocket& zOqzO,loeb 1st Baseline 11/11/93 14:35 4821 3787907244 e'sftp.cSocket' zOqzO#@$*( terminal_3.cSocket( zOq!zOdloeb 1st Baseline 11/11/93 14:35 6317 3834733483 ) netinet/in.hSocket) "zOq%zO ~ loeb 1st Baseline 10/12/93 12:22 2832 425313098 -* terminal_1.cSocket* &zOq(zOloeb 1st Baseline 11/11/93 14:35 5047 19522256 p+ sys/socket.hSocket+ (zOq*zO (*loeb 1st Baseline 11/11/93 14:35 10251 3131530793 D5, sender_udp.cSocket, +zOq,zOloeb 1st Baseline 10/12/93 12:22 4162 3084829131 -Pascal_First_with_BSS.asmSocket- -zOq/zOloeb 11/11/93 14:35 989 302278966 &. udp_echo.cSocket. 0zOq|loeb 1st Baseline 10/12/93 12:22 0 0 /INET.hCSocket/ 2zOq3zO" 0NETDB.hCSocket0 4zOq5zO|1 BSTRING.hCSocket1 6zOq7zO2IN.hCSocket2 9zOq;zO  o3SFTP.cCSocket3 zOq?zO,@>5SOCKET.hCSocket5 @zOqCzOY)*ה6TYPES.hCSocket6 DzOqEzO  7 SOCOMPAT.hCSocket7 FzOqHzOx8 TCP/IP.paramsctos8 IzOqIzOVloeb TCP R2.2.CoastGuard 08/09/93 11:39 1878 1402590902 b59TCP.Telnet.runctos9 JzOq4O"?: tcp2530.txt DATASHEET: QzO+!q