;;; -*- Mode:gate; Fonts:(HL12 HL12I HL12B CPTFONTB HL12BI HL12B HL12I ) -*- =Node: 4Site Options and Host Table* =Text: 3SITE OPTIONS AND HOST TABLE* The Lisp Machine system has options that are set at each site. These include the network addresses of other hosts, which hosts have file servers, which host to find the system source files and patch files on, where to send bug reports, what timezone the site is located in, and many other things. The per-site information is defined by three files: 2SYS: SITE; SITE LISP*, 2SYS: SITE; LMLOCS LISP*, and 2SYS: CHAOS; HOSTS TXT*. 2SYS: CHAOS; HOSTS TXT* is the network host table. It gives the names and addresses of all hosts that are to be known to the Lisp Machine for any purposes. It also says what type of machine the host is, and what operating system runs on it. 2SYS: SITE; LMLOCS LISP* specifies various information about the Lisp Machines at your site, including its name, where it is physically located, and what the default machine for logging in should be. 2SYS: SITE; SITE LISP* specifies all other site-specific information. Primarily, this is contained in a call to the special form 2defsite*. 3defsite* 1site-name* 1(site-option* 1value)...* 1Macro* This special form defines the values of site-specific options, and also gives the name of the site. Each 1site-option* is a symbol, normally in the keyword package, which is the name of some site option. 1value* is the value for that option; it is evaluated. Here is a list of standardly defined site options: 2:sys-host* The value is a string, the name of the host on which the system source files are stored. This host becomes the translation of logical host 2SYS*. 2:sys-host-translation-alist* The value is an alist mapping host names into translation-list variables. Each translation list variable's value should be an alist suitable for being the third argument to 2fs:add-logical-pathname-host* (see 4(FILENAMES-3)Logical Pathnames*). The car of an element may be 2nil* instead of a host name; then this element applies to all hosts not mentioned. The normal place to find the system sources is on the host specified by the 2:sys-host* keyword, in the directories specified by the translation list variable found by looking that host up in the value of the 2:sys-host-translation-alist* keyword. If you specify a different host as the system host with 2si:set-sys-host*, that host is also looked up in this alist to find out what directories to use there. Here is what is used at MIT: 3(defsite :mit* 3 ...* 3 (:sys-host-translation-alist* 3 '(("AI" . its-sys-pathname-translations)* 3 ("OZ" . oz-sys-pathname-translations)* 3 ("FS" . its-sys-pathname-translations)* 3 ("LM" . its-sys-pathname-translations)* 3 (nil . its-sys-pathname-translations)))* 3 ...)* 3(defconst oz-sys-pathname-translations* 3 '(("CC;" "")* 3 ("CHAOS;" "")* 3 ("DEMO;" "")* 3 ...* 3 ("SITE;" "")* 3 ("SYS;" "")* 3 ("SYS2;" "")* 3 ...* 3 ("ZMAIL;" "")* 3 ("ZWEI;" "")* 3 ))* 2:sys-login-name* 2:sys-login-password*These specify the username and password to use to log in automatically to read system patch files, microcode symbol tables and error tables. The values should be strings. 2:chaos* 2nil* if the site has no Chaosnet; otherwise, a string, the name of the Chaosnet that the site is on. Names for Chaosnets will eventually be used to permit communication between Chaosnets, probably through special gateway servers. Except when multiple sites are on a single Chaosnet, normally the Chaosnet name should be the same as the site name (but as a string, not a symbol). 2:standalone* The value should be 2t* for a Lisp Machine that is operated without a network connection. This causes the Lisp Machine to not to try to use the Chaosnet for getting the time. On the Lambda, the time will obtained from the SDU's clock. On the CADR, the time will be obtained from the user. 2:default-associated-machine* This should be a string which is the name of a host to use as the associated host for any Lisp Machine not mentioned in the LMLOCS file. 2:usual-lm-name-prefix* This should be a string which is the typical beginning of host names of Lisp Machines at your site. At MIT, it is 2"CADR-"*. 2:chaos-file-server-hosts* This should be a list of names of hosts that have file servers, including Lisp Machines which other Lisp Machines should know about. 2:lmfile-server-hosts* This should be a list of names of Lisp Machines that provide servers for the LMFILE file system. The entry for such a machine should be one of the nicknames of that machine. By virtue of its presence in this list, it becomes the name by which the LMFILE file system there can be accessed remotely. 2:chaos-time-server-hosts* This should be a list of names of hosts that support TIME servers. These are hosts that the Lisp Machine can ask the time of day from when you boot. 2:chaos-host-table-server-hosts* This should be a list of names of hosts that support host-table servers, which can be used to inquire about hosts on networks that the Lisp Machine does not know about in its own host table. 2:chaos-mail-server-hosts* This should be a list of names of hosts that support mail servers which are capable of forwarding mail to any known host. 2:timezone* This should be a number, the number of hours earlier than GMT of standard time in the timezone where this site is located. 2:host-for-bug-reports* This should be a string, the name of the host at which bug-report mailboxes are located. 2:local-mail-hosts* This should be a list of names of hosts that ZMail should consider ``local'' and omit from its summary display. 2:spell-server-hosts* This should be a list of hosts that have spelling corrector servers. 2:comsat* This should be 2t* if mail can be sent through the COMSAT mail demon. This is true only at MIT. 2:default-mail-mode* This should be the default mode for use in sending mail. The options are 2:file* (use COMSAT), 2:chaos* (use one of the 2:chaos-mail-server-hosts*), or 2:chaos-direct* (like 2:chaos*, but go direct to the host that the mail is addressed to whenever possible). 2:gmsgs* This should be 2t* if GMSGS servers are available. 2:arpa-gateways* This should be a list of names of hosts that can be used as gateways to the Arpanet. These hosts must provide a suitable Chaosnet server which will make Arpanet connections. It should be 2nil* if your site does not have an Arpanet connection. 2:arpa-contact-name* If you have Arpanet gateways, this is the Chaosnet contact name to use. Nowadays, it should be 2"TCP"*. 2:dover* This should be 2t* if your site has a Dover printer. 2:default-printer* This should be a keyword which describes the default printer for hardcopy commands and functions to use. Possible values include 2:dover*, 2nil*, or any other printer type that you define (see 4(MISCELL-1)Hardcopy*). 2:default-bit-array-printer* Like 2:default-printer*, but this is the default for only 2hardcopy-bit-array* to use. 2:esc-f-arg-alist* This says what various numeric arguments to the 2Terminal F* command mean. It is a list of elements, one for each possible argument. The car of an element is either a number or 2nil* (which applies to 2Terminal F* with no argument). The cdr is either 2:login* (finger the login host), 2:lisp-machines* (finger all Lisp Machines at this site), 2:read* (read some hosts from the keyboard), or a list of host names. 2:verify-lm-dumps* If the value is 2t*, Lisp Machine file system dump tapes are verified. Other site options are allowed, and your own software can look for them. =Node: 4Updating Site Information* =Text: 3UPDATING SITE INFORMATION* To update the site files, you must first recompile the sources. Do this by 3(make-system 'site 'compile)* This also loads the site files. To just load the site files, assuming they are compiled, do 3(make-system 'site)* 2load-patches* does that automatically. You should never load any site file directly. All the files must be loaded in the proper fashion and sequence, or the machine may stop working. =Node: 4Accessing Site Options* =Text: 3ACCESSING SITE OPTIONS* Programs examine the site options using these variables and functions: 3site-name* 1Variable* The value of this variable is the name of the site you are running at, as defined in the 2defsite* in the 2SITE* file. You can use this in run-time conditionals for various sites. 3get-site-option* 1keyword* Returns the value of the site option 1keyword*. The value is 2nil* if 1keyword* is not mentioned in the 2SITE* file. 3define-site-variable* 1variable* 1keyword* 1[documentation]* 1Macro* Defines a variable named 1variable* whose value is always the same as that of the site option 1keyword*. When new site files are loaded, the variable's value is updated. 1documentation* is the variable's documentation string, as in 2defvar*. 3define-site-host-list* 1variable* 1keyword* 1[documentation]* 1Macro* Defines a variable named 1variable* whose value is a list of host objects specified by the site option 1keyword*. The value actually specified in the 2SITE* file should be a list of host names. When new site files are loaded, the variable's value is updated. 1documentation* is the variable's documentation string, as in 2defvar*. =Node: 4The LMLOCS File* =Text: 3THE LMLOCS FILE* The 2LMLOCS* file contains an entry for each Lisp Machine at your site, and tells the system whatever it needs to know about the particular machine it is running on. It contains one form, a 2defconst* for the variable 2machine-location-alist*. The value should have an element for each Lisp Machine, of this form: 3("MIT-LISPM-1" "Lisp Machine One"* 3 "907 [Son of CONS] CADR1's Room x6765"* 3 (MIT-NE43 9) "OZ" ((:default-printer :dover)))* The general pattern is 3(1host-full-name* 1pretty-name** 3 1location-string** 3 (1building* 1floor*) 1associated-machine* 1site-options*) * The 1host-full-name* is the same as in the host table. The 1pretty-name* is simply for printing out for users on certain occasions. The 1location-string* should say where to find the machine's console, preferably with a telephone number. This is for the 2FINGER* server to provide to other hosts. The 1building* and 1floor* are a somewhat machine-understandable version of the location. The 1associated-machine* is the default file server host name for login on this Lisp Machine. 1site-options* is a list of site options, just like what goes in the 2defsite*. These site options apply only to the particular machine, overriding what is present in the 2SITE* file. In our example, the site option 2:default-printer* is specified as being 2:dover*, on this machine only. 3si:associated-machine* 1Variable* The host object for the associated machine of this Lisp Machine.