|
|
1.1 root 1: /* acsapaddr.c - application entity information -- lookup */
2:
3: #ifndef lint
4: static char *rcsid = "$Header: /f/osi/acsap/RCS/acsapaddr.c,v 7.2 90/07/27 08:41:46 mrose Exp $";
5: #endif
6:
7: /*
8: * $Header: /f/osi/acsap/RCS/acsapaddr.c,v 7.2 90/07/27 08:41:46 mrose Exp $
9: *
10: *
11: * $Log: acsapaddr.c,v $
12: * Revision 7.2 90/07/27 08:41:46 mrose
13: * update
14: *
15: * Revision 7.1 90/07/09 14:30:27 mrose
16: * sync
17: *
18: * Revision 7.0 89/11/23 21:21:45 mrose
19: * Release 6.0
20: *
21: */
22:
23: /*
24: * NOTICE
25: *
26: * Acquisition, use, and distribution of this module and related
27: * materials are subject to the restrictions of a license agreement.
28: * Consult the Preface in the User's Manual for the full terms of
29: * this agreement.
30: *
31: */
32:
33:
34: /* LINTLIBRARY */
35:
36: #include <stdio.h>
37: #include "psap.h"
38: #include "isoaddrs.h"
39: #include "tailor.h"
40:
41:
42: #ifndef NOSTUB
43: AEI str2aei_stub ();
44: struct PSAPaddr *aei2addr_stub ();
45: #endif
46:
47: AEI str2aei_dse ();
48: struct PSAPaddr *aei2addr_dse ();
49:
50: /* DATA */
51:
52: #ifndef NOSTUB
53: static char fallback1[BUFSIZ],
54: fallback2[BUFSIZ],
55: fallback3[BUFSIZ];
56: #endif
57:
58: static struct PSAPaddr *(*lookup) () = NULL;
59:
60: /* */
61:
62: /* backwards compatibility... */
63:
64: static struct mapping {
65: char *m_key;
66: char *m_value;
67: } sac2cn[] = {
68: "iso ftam", "filestore",
69: "iso vt", "terminal",
70: "iso cmip", "mib",
71: "isode passwd lookup demo",
72: "passwdstore",
73: "isode shell", "shell",
74: "IRP Z39.50", "Z39.50",
75: "pp qmgr interface","pp qmgr",
76:
77: NULL
78: };
79:
80: /* */
81:
82: AEI _str2aei (designator, qualifier, context, interactive)
83: char *designator,
84: *qualifier,
85: *context;
86: int interactive;
87: {
88: AEI aei;
89: register struct mapping *m;
90:
91: if (qualifier == NULLCP) {
92: if (context)
93: for (m = sac2cn; m -> m_key; m++)
94: if (strcmp (m -> m_key, context) == 0) {
95: qualifier = m -> m_value;
96: break;
97: }
98:
99: if (qualifier == NULLCP)
100: qualifier = context ? context: "default";
101: }
102:
103: if (context == NULLCP) {
104: for (m = sac2cn; m -> m_key; m++)
105: if (strcmp (m -> m_value, qualifier) == 0) {
106: context = m -> m_key;
107: break;
108: }
109:
110: if (context == NULLCP)
111: context = qualifier;
112: }
113:
114: isodetailor (NULLCP, 0);
115: LLOG (addr_log, LLOG_TRACE,
116: ("str2aei \"%s\" \"%s\" \"%s\" %d",
117: designator, qualifier, context, interactive));
118:
119: aei = NULL, lookup = NULL;
120: PY_pepy[0] = NULL;
121:
122: if (ns_enabled) {
123: if (aei = str2aei_dse (designator, qualifier, context, interactive)) {
124: lookup = aei2addr_dse;
125: #ifndef NOSTUB
126: (void) strcpy (fallback1, designator);
127: (void) strcpy (fallback2, context);
128: (void) strcpy (fallback3, qualifier);
129: goto out;
130: #endif
131: }
132: else
133: SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
134: ("DSE lookup of service \"%s\" \"%s\" \"%s\" failed",
135: designator, context, qualifier));
136: }
137:
138: #ifndef NOSTUB
139: if (aei = str2aei_stub (designator, qualifier))
140: lookup = aei2addr_stub;
141: else
142: SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
143: ("stub DSE lookup of service \"%s\" \"%s\" \"%s\" failed",
144: designator, context, qualifier));
145: #endif
146:
147: #ifndef NOSTUB
148: out: ;
149: #endif
150: SLOG (addr_log, LLOG_TRACE, NULLCP,
151: ("str2aei returns %s", aei ? sprintaei (aei) : "NULLAEI"));
152:
153: return aei;
154: }
155:
156: /* */
157:
158: struct PSAPaddr *aei2addr (aei)
159: AEI aei;
160: {
161: struct PSAPaddr *pa;
162:
163: isodetailor (NULLCP, 0);
164: SLOG (addr_log, LLOG_TRACE, NULLCP, ("aei2addr %s", sprintaei (aei)));
165:
166: PY_pepy[0] = NULL;
167:
168: if (lookup) {
169: pa = (*lookup) (aei);
170: #ifndef NOSTUB
171: if (pa == NULLPA
172: && lookup == aei2addr_dse
173: && (aei = str2aei_stub (fallback1, fallback2, fallback3, 0))
174: && (pa = aei2addr_stub (aei))) {
175: SLOG (addr_log, LLOG_NOTICE, NULLCP,
176: ("fallback use of stub DSE succeeded"));
177: }
178: #endif
179:
180: lookup = NULL;
181: }
182: else
183: pa = NULLPA;
184:
185: SLOG (addr_log, LLOG_TRACE, NULLCP,
186: ("aei2addr returns %s", paddr2str (pa, NULLNA)));
187:
188: return pa;
189: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.