|
|
1.1 root 1: % run this through LaTeX with the appropriate wrapper
2:
3: \chapter {A Complete Example}\label{cook:example}
4: Now, let's consider a complete example.
5: Our application is modeled after the example given in \cite{Courier.BSD}.
6: In short,
7: we wish to implement a remote lookup facility of the \unix/ \file{/etc/passwd}
8: database.
9:
10: \section {Service Definitions}
11: We begin by defining the mundane naming and addressing information for the
12: service.
13: Using the ``standard'' approach described in Section~\ref{service:define},
14: we select:
15: \begin{describe}
16: \item[abstract syntax:] defined in the \man isobjects(5) file as:
17: \begin{quote}\small\begin{verbatim}
18: "local service pci" 1.17.2.n.1
19: \end{verbatim}\end{quote}
20: If we select \verb"n" as the lowest unassigned number in the \verb"1.17.2"
21: subtree, e.g., \verb"7", we might have:
22: \begin{quote}\small\begin{verbatim}
23: "isode passwd lookup pci" 1.17.2.7.1
24: \end{verbatim}\end{quote}
25:
26: \item[application context name:] defined in the \man isobjects(5) file as:
27: \begin{quote}\small\begin{verbatim}
28: "local service" 1.17.2.n.2
29: \end{verbatim}\end{quote}
30: Similarly, for a value of \verb"7" for \verb"n", we have:
31: \begin{quote}\small\begin{verbatim}
32: "isode passwd lookup" 1.17.2.7.2
33: \end{verbatim}\end{quote}
34:
35: \item[{\small application-entity information/presentation address:}]
36: defined with:
37: \begin{quote}\small\begin{verbatim}
38: default servicestore 1.17.4.1.n "" "" #p
39: \end{verbatim}\end{quote}
40: in the \man isoentities(5) file.
41: If we select \verb"p" as the lowest unassigned TSAP ID between \verb"1024"
42: and \verb"2047" inclusive, e.g., \verb"1040", we might have:
43: \begin{quote}\small\begin{verbatim}
44: default passwdstore 1.17.4.1.7 "" "" #1040
45: \end{verbatim}\end{quote}
46:
47: \item[local program:] defined in the \man isoservices(5) file as:
48: \begin{quote}\small\begin{verbatim}
49: "tsap/local service" #p program arg1 arg2 ... argN
50: \end{verbatim}\end{quote}
51: If we select \pgm{ros.lookup} as the \unix/ program implementing this
52: service,
53: we might have something like:
54: \begin{quote}\small\begin{verbatim}
55: "tsap/isode passwd" #1040 ros.lookup
56: \end{verbatim}\end{quote}
57: \end{describe}
58:
59: \section {Remote Operations Module}
60: The remote operations module for the service is placed in \file{lookup.ry}.
61: This file shown in Figure~\ref{passwd:rom} starting on
62: page~\pageref{passwd:rom}.
63:
64: The \file{Makefile} for the service is shown in Figure~\ref{passwd:make}
65: starting on page~\pageref{passwd:make}.
66:
67: \newpage
68: \tagrindfile{passwd-ops}%
69: {Remote Operations Module for the Password Lookup Service}{passwd:rom}
70: \newpage
71: \tagrindfile{passwd-make}{Makefile for the Password Lookup Service}%
72: {passwd:make}
73: \newpage
74:
75: \section {Interactive Initiator}\label{passwd:initiator}
76: The interactive initiator of the service is placed in \file{lookup.c}.
77: This file is shown in Figure~\ref{passwd:init} starting on
78: page~\pageref{passwd:init}.
79:
80: \tagrindfile{passwd-init}{Initiator for the Password Lookup Service}%
81: {passwd:init}
82: \newpage
83:
84: \section {Responder}\label{passwd:responder}
85: The responder for the service is placed in \file{lookupd.c}.
86: This file is shown in Figure~\ref{passwd:resp} starting on
87: page~\pageref{passwd:resp}.
88: Note that if actual network addresses were associated with the service
89: definitions made earlier,
90: then the responder could operate using the static discipline.
91:
92: \tagrindfile{passwd-resp}{Responder for the Password Lookup Service}%
93: {passwd:resp}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.