Annotation of 43BSDReno/contrib/isode-beta/doc/manual/tailoring.tex, revision 1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.