From 3a9425fa3fe6b356ac354e365a72787f6d22b719 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Sat, 21 Oct 2023 20:21:20 +0200 Subject: [PATCH] Shutdown server. --- build/mchn/TT/custom.tcl | 4 +++ src/sysnet/shutsr.35 | 64 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 build/mchn/TT/custom.tcl create mode 100644 src/sysnet/shutsr.35 diff --git a/build/mchn/TT/custom.tcl b/build/mchn/TT/custom.tcl new file mode 100644 index 00000000..2676511e --- /dev/null +++ b/build/mchn/TT/custom.tcl @@ -0,0 +1,4 @@ +#Enable the remote shutdown service. +respond "*" ":midas /t device;chaos shutdo_sysnet;shutsr\r" +respond "end input with ^C" "ALLOW==3036\r\003" +expect ":KILL" diff --git a/src/sysnet/shutsr.35 b/src/sysnet/shutsr.35 new file mode 100644 index 00000000..b347f14e --- /dev/null +++ b/src/sysnet/shutsr.35 @@ -0,0 +1,64 @@ + TITLE SHUTDOWN SERVER + +;This Chaosnet node is allowed to shut down. +IFNDEF ALLOW,ALLOW==177001 + +A==1 +P==17 + +CHI=0 +CHO=1 + +.INSRT SYSTEM;CHSDEF + +GO: .CLOSE 1, + + .SUSET [.SJNAME,,['SHUTDN]] + + ;Open Chaosnet channel and listen for SHUTDN connections. + .CALL [SETZ ? 'CHAOSO ? MOVEI CHI ? MOVEI CHO ? SETZI 5] + .LOSE %LSSYS + .CALL [SETZ ? 'PKTIOT ? MOVEI CHO ? SETZI LSN] + .LOSE %LSSYS + + ;Wait for an RFC. + MOVEI A,60.*60. + .CALL [SETZ ? 'NETBLK ? MOVEI CHI ? MOVEI %CSLSN ? A ? SETZM A] + .LOSE %LSSYS + CAIE A,%CSRFC + .LOGOUT 1, + + ;Receive the RFC packet and send an ANS response. + .CALL [SETZ ? 'PKTIOT ? MOVEI CHI ? SETZI PACKET] + .LOSE %LSSYS + .CALL [SETZ ? 'PKTIOT ? MOVEI CHO ? SETZI ANS] + .LOSE %LSSYS + + ;Check the source address. + LDB A,[$CPKSA PACKET] + CAME A,[ALLOW] + .LOGOUT 1, + + ;Patch ITS to remove the lower bound on shutdown time. + MOVE A,[SQUOZE 0,ASHUTD] + .EVAL A, + .LOSE %LSSYS + ADDI A,3 + HRLI A,[CAIA] + .SETLOC A, + MOVEI A,30. + .SLEEP A, + + ;Shut down quickly. + MOVEI A,30. + .SHUTDN A, + .LOSE %LSSYS + .LOGOUT 1, + +LSN: .BYTE 8 ? %COLSN ? 0 ? 0 ? 8 ? .BYTE +LOC LSN+%CPKDT + .BYTE 8 ? "S ? "H ? "U ? "T ? "D ? "O ? "W ? "N ? .BYTE +ANS: .BYTE 8 ? %COANS ? .BYTE +PACKET: BLOCK %CPMXW + +END GO