|
|
1.1 root 1: % run this through LaTeX with the appropriate wrapper
2:
3: \chapter {The ISODE Tailoring File}\label{isotailor}
4: The file \file{isotailor} in the ISODE \verb"ETCDIR" directory
5: (usually \file{/usr/etc/})
6: contains a simple run-time configuration
7: mechanism for programs loaded with the \verb"-lisode" library.
8:
9: The file itself is an ordinary ASCII text file containing information
10: regarding the known tailoring options.
11: Each line contains the option's name, a colon, the option's value, and a
12: newline.
13: The sharp character (`\verb"#"') at the beginning of a line indicates a
14: commentary line.
15:
16: \section {Tailor Variables}
17: The options available,
18: along with default values and a description of their meanings,
19: are now described.
20:
21: \subsection {Local Environment Tailoring}
22: \begin{describe}
23: \item[\verb"localname":] The name of the localhost.
24: If not set,
25: depending on the TCP/IP implementation you are running,
26: the system will be queried for this value.
27:
28: \item[\verb"binpath":] Where user programs are found.
29:
30: \item[\verb"sbinpath":] Where system programs are bound.
31:
32: \item[\verb"etcpath":] Where configuration files are found.
33: \end{describe}
34:
35: \vspace{0.1in} %%% yikes!
36: \begin{center}\em
37: (continued on the next page)
38: \end{center}
39: \newpage
40:
41: \subsection {Logging Tailoring}
42: \begin{describe}
43: \item[\verb"logpath":] Where log files are found.
44:
45: \item[\em xyz\/\verb"level":] The debugging level for the {\em xyz\/}
46: module,
47: defaulting to \verb"none".
48: \[\begin{tabular}{|l|l|}
49: \hline
50: \multicolumn{1}{|c|}{\bf Option}&
51: \multicolumn{1}{c|}{\bf Module}\\
52: \hline
53: \tt compatlevel& \man libicompat(3n)\\
54: \tt addrlevel& various\\
55: \tt tsaplevel& \man libtsap(3n)\\
56: \tt ssaplevel& \man libssap(3n)\\
57: \tt psaplevel& \man libpsap(3)\\
58: \tt psap2level& \man libpsap2(3n)\\
59: \tt acsaplevel& \man libacsap(3n)\\
60: \tt rtsaplevel& \man librtsap(3n)\\
61: \tt rosaplevel& \man librosap(3n)\\
62: \hline
63: \end{tabular}\]
64: Options are seperated by whitespace.
65: The debugging options available are:
66: \begin{describe}
67: \item[\verb"fatal":] fatal errors;
68:
69: \item[\verb"exceptions":] exceptional events;
70:
71: \item[\verb"notice":] informational notices;
72:
73: \item[\verb"pdus":] {\em xyz\/}PDU printing;
74:
75: \item[\verb"trace":] program tracing;
76:
77: \item[\verb"debug":] full debugging
78: (not fully defined at this point);
79: and,
80:
81: \item[\verb"all":] all of the above.
82: \end{describe}
83: Logging of levels other than \verb"fatal",
84: \verb"exceptions", or \verb"notice" are subject
85: to conditional compilation
86: (the \verb"-DDEBUG" option must be used during compilation).
87:
88: \item[\em xyz\/\verb"file":] The file to be used for {\em xyz\/}PDU tracing.
89: The file is written in append mode.
90: If the filename supplied is \arg"-" (a single dash),
91: then the diagnostic output is used instead.
92: \[\begin{tabular}{|l|l|l|}
93: \hline
94: \multicolumn{1}{|c|}{\bf Option}&
95: \multicolumn{1}{c|}{\bf Default}&
96: \multicolumn{1}{c|}{\bf Module}\\
97: \hline
98: \tt compatfile& \tt \%d.log& \man libicompat(3n)\\
99: \tt addrfile& \tt \%d.log& various\\
100: \tt tsapfile& \tt \%d.tpkt& \man libtsap(3n)\\
101: \tt ssapfile& \tt \%d.spkt& \man libssap(3n)\\
102: \tt psapfile& \tt \%d.pe& \man libpsap(3)\\
103: \tt psap2file& \tt \%d.ppkt& \man libpsap2(3n)\\
104: \tt acsapfile& \tt \%d.acpkt& \man libacsap(3n)\\
105: \tt rtsapfile& \tt \%d.rtpkt& \man librtsap(3n)\\
106: \tt rosapfile& \tt \%d.ropkt& \man librosap(3n)\\
107: \hline
108: \end{tabular}\]
109: The \man getpid(2) call is used to supply the value for \verb"%d".
110: \end{describe}
111:
112: \subsection {Directory Services Tailoring}\label{dse:tailor}
113: \begin{describe}
114: \item[\verb"ns\_enable":] enables use of a ``user-friendly nameservice''
115: to perform name/address resolution.
116: This takes the value either \verb+"on"+ or \verb+"off"+.
117: If \verb+"on"+,
118: then an OSI Directory-based service will be use.
119: If the nameservice lookup fails,
120: the stub-directory will be used as a fallback.
121:
122: \item[\verb"ns\_address":] the transport address of the nameservice.
123: It is specified using the ISODE ``string'' format,
124: e.g.,
125: \begin{quote}\small\begin{verbatim}
126: Internet=wp.psi.com+17006
127: \end{verbatim}\end{quote}
128: which indicates that the nameservice lives in the TCP/IP communications domain
129: on TCP port \verb"17006" at host \verb"wp.psi.com".
130: The nameservice is accessed via the OSI CO-mode transport service,
131: so other kinds of addresses (e.g., X.25 addresses can be used as well).
132: \end{describe}
133:
134: \subsection {Transport Switch Tailoring}
135: The use of these variables is more usefully described in Chapter~\ref{tswitch}.
136: \begin{describe}
137: \item[\verb"ts\_stacks":] Specifies which configured TS-stacks are
138: enabled.
139: This is useful when multiple machines (with different interfaces)
140: share the same executables.
141: Options are seperated by whitespace:
142: \begin{describe}
143: \item[\verb"tcp":] RFC1006 over TCP/IP;
144:
145: \item[\verb"x25":] TP0 over X.25;
146:
147: \item[\verb"cons":] TP0 over CONS;
148:
149: \item[\verb"bridge":] TP0 over the TP0--bridge;
150:
151: \item[\verb"tp4":] TP4 over CLNP;
152: and,
153:
154: \item[\verb"all":] all of the above.
155: \end{describe}
156: Using this method,
157: the \file{isotailor} file is a normally symbolic link to
158: \file{/private/etc/isotailor}.
159:
160: \item[\verb"ts\_interim":] Defines new OSI communities.
161: Each community is defined by a macro in the \file isomacros(5) file.
162:
163: \item[\verb"ts\_communities":] Specifies which OSI communities are attached
164: (either directly or through a transport-service bridge).
165: Options are seperated by whitespace:
166: \begin{describe}
167: \item[\verb"int-x25":] International X.25;
168:
169: \item[\verb"janet":] UK JANET;
170:
171: \item[\verb"internet":] the capital-I Internet;
172:
173: \item[\verb"realns":] OSI Internet (ha, ha);
174:
175: \item[\verb"localTCP":] the TCP loopback address;
176: and,
177:
178: \item[\verb"all":] all of the above OSI communities, along with those
179: communities defined by the \verb"ts_interim" variable;
180: \end{describe}
181: For example,
182: a site with an X.25 connection might be attached to the International X.25
183: network, but not the JANET.
184: Thus \verb"ts_stacks" would include ``x25'',
185: and \verb"ts_communities" would include ``int-x25'' but not ``janet''.
186:
187: Note that the ordering of communities is important:
188: network addresses will be tried in the order that their respective
189: communities are listed with this variable.
190:
191: \item[\verb"default\_nsap\_community":] the default community to be
192: used for NSAP addresses.
193:
194: \item[\verb"default\_x25\_community":] the default community to be
195: used for X.25 (DTE) addresses.
196:
197: \item[\verb"default\_tcp\_community":] the default community to be
198: used for TCP (RFC1006) addresses.
199: \end{describe}
200:
201: \subsubsection{Transport-Service Bridge}
202: There are two variables that can be specified.
203: One is used on hosts making use of the TS-bridge,
204: the other is used by hosts which run the TS-bridge:
205: \begin{describe}
206: \item[\verb|tsb\_communities|] A list of pairs of values.
207: The first of each value should be a community name as defined in
208: the \verb"ts_communities" variable.
209: The second value of the pair should be a presentation address using the ISODE
210: ``string'' format.
211: When a call is to be placed and the network corresponds to one
212: of the communities given here, then a call through the TS-bridge given in
213: the second variable will be made automatically.
214:
215: \item[\verb|tsb\_default\_address|] This variable contains a string encoded
216: presentation address which the TS-bridge will listen on by default.
217: This should normally consist of a set of network addresses with no selectors
218: present.
219: \end{describe}
220: Consider the case of a host with access to both the Internet and the
221: International X.25 network.
222: This host might have this entry in its \file{isotailor} file:
223: \begin{quote}\tiny\begin{verbatim}
224: tsb_default_address: Internet=sheriff+17004\|Int-X25(80)=23426020017299+PID+03018000
225: \end{verbatim}\end{quote}
226: This tells the TS-bridge to listen on two network endpoints.
227: Hosts in the Internet community wishing to reach the International
228: X.25 community would have this entry in their \file{isotailor} file:
229: \begin{quote}\smaller\begin{verbatim}
230: tsb_communities: int-x25 Internet=sheriff+17004
231: \end{verbatim}\end{quote}
232: Similarly,
233: hosts in the International X.25 community wishing to reach the
234: Internet community, would have the entry:
235: \begin{quote}\smaller\begin{verbatim}
236: tsb_communities: internet Int-X25(80)=23426020017299+PID+03018000
237: \end{verbatim}\end{quote}
238:
239: \subsection{Interface Specific Tailoring}
240: Some network implementations used by ISODE require ISODE to be
241: tailored for their correct use.
242:
243: \subsubsection{General X.25 Tailoring}
244: The following tailoring variables are generally applicable to
245: X.25 networks.
246: \begin{describe}
247: \item[\verb"x25\_local\_dte"] It is normally
248: necessary for ISODE to know it's local DTE
249: address.
250: This variable is used to set this.
251: The default is empty, i.e. do not set a calling address in call
252: requests.
253:
254: \item[\verb"x25\_local\_pid"] It is normally
255: necessary for ISODE to know the X.25 protocol ID to listen on
256: This is specified in hex-notation,
257: e.g., \verb"03010100".
258:
259: \item[\verb"x25\_intl\_zero"] Some Public Data Networks
260: require that X.121 addresses be
261: modified before being conveyed.
262: If this variable has the value \verb"on" then any addresses
263: with a non-local DNIC will have a leading zero appended.
264:
265: \item[\verb"x25\_strip\_dnic"] If this variable has
266: the value \verb"on" then any address with
267: a local DNIC will have this removed.
268:
269: \item[\verb"x25\_dnic\_prefix"] If you use either or both of the
270: preceding two mechanisms then you must use this variable to
271: inform ISODE of the local DNIC for your host.
272:
273: \item[\verb"x25level":]
274: Defines the level of logging to be used for X.25 statistics logging.
275: (At present, only \verb"notice" messages are generated.)
276:
277: \item[\verb"x25file":]
278: Defines the filename to be used for X.25 statistics logging.
279: \end{describe}
280:
281: \subsubsection{SunLink X.25}
282: The following variables are currently only supported by the
283: SunLink X.25 interface.
284: They control the X.25 Facilities that are requested or accepted.
285: \begin{describe}
286: \item[\verb"reverse\_charge"] If \verb"0" then don't
287: request/allow (initiator/responder) reverse charging.
288: If \verb"1" then request/allow reverse charging.
289:
290: \item[\verb"recvpktsize"/\verb"sendpktsize"] Size of level 3 packets.
291: Valid values are \verb"0" (default size),
292: \verb"16", \verb"32", \verb"64", \verb"128",
293: \verb"256", \verb"512", \verb"1024" (octets in decimal).
294:
295: \item[\verb"recvwndsize"/\verb"sendwndsize"] Size of level 3 window.
296: Valid values are \verb"0" (default window size),
297: \verb"1"--\verb"7" or \verb"1"--\verb"127" (decimal).
298:
299: \item[\verb"recvthruput"/\verb"sendthruput"] Send/receive throughput.
300: \nopagebreak
301: \begin{quote}
302: \begin{tabbing}
303: 100\=1200\hspace{2em}\=100\=\kill
304: \verb"0"\> default throughput \\
305: \verb"3"\> 75\> \verb"8"\> 2400 \\
306: \verb"4"\> 150\> \verb"9"\> 4800 \\
307: \verb"5"\> 300\> \verb"10"\> 9600 \\
308: \verb"6"\> 600\> \verb"11"\> 19200 \\
309: \verb"7"\> 1200\> \verb"12"\> 48000 \\
310: \end{tabbing}
311: \end{quote}
312: Values in bps decimal.
313:
314: \item[\verb"cug\_req"] If \verb"0" then don't use closed user group, if
315: \verb"1" then use closed user group specified by
316: \verb"cug_index".
317:
318: \item[\verb"cug\_index"] Closed user group in decimal
319: (\verb"00"--\verb"99").
320:
321: \item[\verb"fast\_select\_type"] \verb"0" = don't use/allow fast
322: select.
323: \verb"1" = calling side --- only accept clear in response to
324: fast select, called side --- send clear in response to fast
325: select.
326: % is any of this fast select stuff applicable to ISODE?
327: \verb"2" = clear or accept is valid response to fast select.
328:
329: \item[\verb"rpoa\_req"] If \verb"0" then don't request RPOA
330: (Recognised Private Operating Agency) transit.
331: If \verb"1" then request RPOA transit.
332:
333: \item[\verb"rpoa"] If \verb"rpoa_req" is \verb"1" then this is
334: RPOA transit group in decimal (\verb"0000"--\verb"9999").
335: \end{describe}
336: % actually cug_index and rpoa seem to be ignored in the current version
337: See the SunLink X.25 Programmer's Manual for
338: further explanations of these
339: facilities.
340:
341: \subsubsection{Camtec CCL}
342: There is one tailoring variable for the Camtec X.25 when used
343: with the socket abstraction.%
344: \footnote{The old device level interface is no longer supported.}
345: \begin{describe}
346: \item[\verb"x25\_outgoing\_port"] selects the physical port on the
347: Camtec card for outgoing calls.
348: It may take the value \verb"A", \verb"B" or \verb"#".
349: \verb"A" and \verb"B" are the X.121 WAN ports and \verb"#" is
350: the IEEE 802.3 (Ethernet) port.
351: Incoming calls will be accepted on any port.
352: \end{describe}
353:
354: \subsubsection{Bridge X.25}
355: There are several tailorable variables that can specified for the
356: bridge connection. These are:
357: \begin{describe}
358: \item[\verb|x25\_bridge\_host|] selects the host that runs the
359: tp0bridge being used. This should be a TCP accessible host.
360:
361: \item[\verb|x25\_bridge\_port|] selects the TCP port that the
362: tp0bridge will be listening on. The default for this is port 146 (an
363: internet assigned number), which should be defined in \verb|/etc/services|.
364:
365: \item[\verb|x25\_bridge\_addr|] the X.121 address of the remote host.
366:
367: \item[\verb|x25\_bridge\_listen|] the X.121 address that this host will
368: be listening on for incoming calls via the bridge.
369:
370: \item[\verb|x25\_bridge\_pid|] the protocol id used for listening
371: along with the above address. This is a set of eight hex digits.
372:
373: \item[\verb|x25\_bridge\_discrim|] selects the network layer to use.
374: When attempting to place a call with the bridge code configured as
375: well as real X.25, the string selects the interface to use. If the
376: string is empty, the bridge will always be used. If it is set to
377: ``--'' the bridge will not be used. If the string is anything else, it
378: is compared against the initial portion of the called X.121 address.
379: If there is a match then the bridge is used, otherwise the real
380: interface is called.
381: \end{describe}
382:
383: \section {Accessing the Tailoring File}
384: The tailoring file is read usually when a program attempts or accepts its
385: first connection.
386: The \verb"-lisode" library does this by calling the routine
387: \verb"isodetailor":
388: \begin{quote}\index{isodetailor}\small\begin{verbatim}
389: void isodetailor (myname, wantuser)
390: char *myname;
391: int wantuser;
392: \end{verbatim}\end{quote}
393: The parameters to this procedure are:
394: \begin{describe}
395: \item[\verb"myname":] the name that the program was invoked with
396: (used by the logging package described in Chapter~\ref{logging}); and,
397:
398: \item[\verb"wantuser":] if non-zero,
399: then a user-specific tailoring file,
400: with the name \verb"~/.myname_tailor",
401: should be consulted.
402: \end{describe}
403: Note that in order to ensure consistent logging it is {\bf critical\/} that
404: the call to \verb"isodetailor" be the first call made to {\em any \/} of the
405: ISODE routines.
406:
407: To override the default location of the tailoring file,
408: use the routine \verb"isodesetailor":
409: \begin{quote}\index{isodesetailor}\small\begin{verbatim}
410: char *isodesetailor (file)
411: char *file;
412: \end{verbatim}\end{quote}
413: The parameter to this procedure is:
414: \begin{describe}
415: \item[\verb"file":] the filename to be used instead of the default.
416: Future versions of this routine might act differently.
417: \end{describe}
418: The filename is interpreted relative to the \verb"-lisode" system area.
419: To override this, specify a anchored pathname
420: (e.g., on \unix/, one which starts with \verb"/" or \verb"./").
421: The routine returns the name of the default tailoring file.
422:
423: To set a tailoring variable from some other configuration file,
424: the routines \verb"isodesetvar" and \verb"isodexport" are used:
425: \begin{quote}\index{isodesetvar}\small\begin{verbatim}
426: int isodesetvar (name, value, dynamic)
427: char *name,
428: *value;
429: int dynamic;
430: \end{verbatim}
431: \end{quote}
432: When this routine is invoked,
433: it acts as though
434: \begin{quote}\small\begin{verbatim}
435: name: value
436: \end{verbatim}\end{quote}
437: was found in the tailoring file.
438: The \verb"dynamic" parameter, if non-zero,
439: indicates that \verb"value" may be freed if a subsequent
440: call to \verb"isodesetvar" is made which overrides the previous value.
441:
442: The \verb"isodexport" routine is called after one or more calls to
443: \verb"isodesetvar",
444: it performs any post-processing necessary to resynchronize the tailoring
445: facilities.
446: \begin{quote}\index{isodexport}\small\begin{verbatim}
447: void isodexport ()
448: \end{verbatim}
449: \end{quote}
450: Thus,
451: to read a private tailoring file,
452: \verb"isodesetvar" should be called for each tailoring line.
453: Then,
454: \verb"isodexport" should be called once to resynchronize things.
455:
456: Finally, it may be necessary to access files in the \verb"-lisode" system area.
457: The routine \verb"isodefile" takes an filename and returns an anchored
458: pathname.
459: \begin{quote}\index{isodefile}\small\begin{verbatim}
460: char *isodefile (file, ispgm)
461: char *file;
462: int ispgm;
463: \end{verbatim}\end{quote}
464: The parameters to this procedure are:
465: \begin{describe}
466: \item[\verb"file":] the filename to be expanded;
467: and,
468:
469: \item[\verb"ispgm":] non-zero if the target file is an executable
470: (otherwise it is a database of some kind).
471: \end{describe}
472: This routine is actually a macro which invokes the routine \verb"_isodefile":
473: \begin{quote}\index{\_isodefile}\small\begin{verbatim}
474: char *_isodefile (path, file)
475: char *path,
476: *file;
477: \end{verbatim}\end{quote}
478: The parameters to this procedure are:
479: \begin{describe}
480: \item[\verb"path":] the directory where the filename should be expanded; and,
481:
482: \item[\verb"file":] the filename to be expanded.
483: \end{describe}
484:
485: %%% \section {Changes Since the Last Release}\label{compat:changes}
486: %%% A brief summary of the major changes between v~\compatprevrsn/ and
487: %%% v~\compatvrsn/ are now presented.
488: %%% These are the user-visible changes only;
489: %%% changes of a strictly internal nature are not discussed.
490:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.