The Local User Directory (LUD)
There is also an entry which receives circuits from users who are strangers to Gnosis. Its name is one byte of zero.
ADDLUDKYF(0;SB,M,LUD ==> c;ADDLUDKY) produces an addludky for a particular LUD.
ADDLUDKEY(0, (1,nl)(nl,name) (1,pl)(pl,password) (1,sl)(sl,ludstring); KEY,SPACEBANK,METER ==> c;MODIFYLUD)
SPACEBANK and METER are used to build the low level circuit domains
Each of the three strings is preceded by a length byte. The name string can be 17 bytes, the password string can be 11 bytes and the string for the lud can be 35 bytes long.
"name" and "password" are in EBCDIC.
return codes:
c = 1 can't add name because it is not unique
c = 2 can't build the red segment used as the MODIFYLUD key
c = 3 can't create a node
c = 4 parameter length error
c = 7 SPACEBANK is not official
c = 8 internal error
If there is a password, this is followed by:
1 BYTE Flag indicating whether the password is encrypted or not (1 if encrypted, 0 if not)
16 BYTES of password. Either the 16 byte encrypted value or the clear value blank filled (ASCII)
MODIFYLUD(0,string;NODE ==> c)
"NODE" is a node with
Slot 1 a Spacebank key
Slot 2 a Meter key
1 = Lud name deleted while update in progress
4 = Lud string longer than 35 characters
7 = Slot 1 of node does not contain an official spacebank
MODIFYLUD(kt+4 ==> 0) deletes the LUD entry and destroys the MODIFYLUD key
The shut override flag is 1 if the circuit had shut override, 0 otherwise. The login line terminator is ASCII carriage return or semicolon. The Tymnet header has the terminal type and the originating node and port number.
BEKEY(1;==>0,(ascii username))
BEKEY(2;==>0,(4,portnumber))
BEKEY(3;==>0;SIK,SOK,CCK) and BEKEY becomes DK0
TYMLRECE(2; ==> ;) Same as order code 256+15
TYMLRECE(3; ==> ;CRC) Return CRC
When a circuit is zapped, the record that represents it may remain in the CRC for a long time. Its CCK key of course becomes DK(0).
At the time the CRC key is returned, such records are searched for and deleted. This takes time proportional to the number of circuits and so is a moderately expensive operation.
TYMLRECE(5, (1,time); ==> ;) Set timeout
TYMLRECE(256+b*16+f; ==> ;) Perform functions
If (f/8) mod 2 >= 1, the base is stopped
If (f/4) mod 2 >= 1, the TLA for the base is torn down.
If (f/2) mod 2 >= 1, a TLA is built for the base.
If (f/1) mod 2 >= 1, the base is started. (The base is initially shut.)
The caller is responsible for ensuring the integrity of sequences of operations. A base cannot be torn down unless it is stopped, cannot be stopped unless it is started, cannot be started unless it is built, etc.
Note that the ability to do several steps in one call is useful if an intermediate step results in the system's only base being down.
TYMLRECE(kt+4; ==> ;) Destroy the receptionist.
Liaison controls whether a TA {(p2,tymnet)} is polling its base. When a TA is polling its base it tries to communicate with its base about every 15 seconds. Otherwise it tries less than once per hour or perhaps never.
Each base is polled once shortly after the kernel is IPL'ed.
Liaison can be requested, via a key meant to be held by an operator, to begin or cease polling a particular base.
Liaison is also in contact with its TA's and will cause the polling of all bases while there are no circuits from any of the bases.
{arcane}{nonref}Design Note: The receptionist is designed to remove any function from the Tymnet adaptor that is not strictly connected with the multiplexing of Tymnet and at the same time keep questions of authority based on knowledge of Tymnet passwords out of the logic of Command language interpreters. Also the "WHO" and "ZAP CIRCUIT" facilities must handled by a central program.
When a new circuit is found to have a user name not in the LUD there should be a standard program that the receptionist calls.
I shall call this program the "guest server". The guest server gets the user name. It is in a position to carry out several policies of which I enumerate a few:
Tymnet wide teleconferencing
See (p2,getcircuitc) regarding available function.
There is just one "user namer" UNR. For each possible user name x there is {potentially} a user name key UN such that UNR(0;UN==>0,x).
Users may endow domains with the authority to do their bidding with services that distinguish clients on the basis of their Tymnet user names by giving such domains their user name key.
These keys would be supported by the receptionist or a friend thereof.
Such services may learn the Tymnet user name that a caller is invoking by repassing the user name key to UNR whence it learns the real user name.
A less political issue is whether proving to someone that you have the authority of a Tymnet user name should allow him to assume that mantle in other contexts. The above scheme has that defect.
Let there be a kind of key "user name" provided by the receptionist to either the guest server or the entry key from the LUD.
Let F be a requestor's key to a factory and let N be a user name key provided by the receptionist as a new circuit built by user name n.
INTRO(F,N,SB,M==> 0,E) causes the .program of F to be run as usual but with the user name n in in the floating registers.
This scheme convinces the .program that the holder of E is acting under n's authority. This scheme is also convoluted and uncomfortably involved with factory design. It avoids the problem stated in (glitch).
The TENEX "who" command reports for each circuit how long ago there was traffic. This information is very suggestive of the commitment of the system to sustain operation in support of interactive applications. It is also the most obvious indicator of degree of involvement of the people with the system, which in turn, leads to a feeling of the portion of the current system load due to interactive applications.
This information is easy and cheap to gather by the Tymnet Adaptor. It is the only central place to gather it. There may be a security issue here: the receptionist and Tymnet institution may know things that bear on the security issues involved with a given circuit.
This information might be returned, upon request, to the holder of the TBLK key, or perhaps a weakened version of it.
WARNING!! If you type ESC or US too fast after dialing, you can get into trouble. It is not too fast if you wait until it has typed at you.
Gnosis is currently configured so that the GTT receptionist answers VM dial ports 20 thru 23.
RECEPFF(0;SB,M,LUD ==> c;RECEPF)
RECEPF is a factory requestor's key to a receptionist. To invoke the receptionist: