|
|
1.1 root 1: /* net_init.c - Init network section of DSA process */
2:
3: #ifndef lint
4: static char *rcsid = "$Header: /f/osi/quipu/RCS/net_init.c,v 7.2 90/07/09 14:46:19 mrose Exp $";
5: #endif
6:
7: /*
8: * $Header: /f/osi/quipu/RCS/net_init.c,v 7.2 90/07/09 14:46:19 mrose Exp $
9: *
10: *
11: * $Log: net_init.c,v $
12: * Revision 7.2 90/07/09 14:46:19 mrose
13: * sync
14: *
15: * Revision 7.1 89/12/19 16:20:38 mrose
16: * sync
17: *
18: * Revision 7.0 89/11/23 22:17:46 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 "rosap.h"
37: #include "tsap.h"
38: #include "quipu/util.h"
39: #include "quipu/connection.h"
40: #include "quipu/oid.h"
41:
42: extern LLog * log_dsap;
43: extern char * mydsaname;
44:
45: extern OID acse_pci;
46: extern OID x500_da_ac;
47: extern OID x500_ds_ac;
48: extern OID quipu_ds_ac;
49: extern OID x500_da_as;
50: extern OID x500_ds_as;
51: extern OID quipu_ds_as;
52: extern struct PSAPctxlist * x500_da_pcdl;
53: extern struct PSAPctxlist * x500_ds_pcdl;
54: extern struct PSAPctxlist * quipu_ds_pcdl;
55:
56: extern DN mydsadn;
57: extern struct PSAPaddr * mydsaaddr;
58:
59: extern struct PSAPaddr * psap_cpy();
60:
61: static int TMagic (vecp, vec, td)
62: int *vecp;
63: char **vec;
64: struct TSAPdisconnect *td;
65: {
66: int sd;
67: struct TSAPstart tss;
68: register struct TSAPstart *ts = &tss;
69:
70: if (TInit (*vecp, vec, ts, td) == NOTOK)
71: return NOTOK;
72: sd = ts -> ts_sd;
73:
74: if (TConnResponse (sd, &ts -> ts_called, ts -> ts_expedited, NULLCP, 0,
75: NULLQOS, td) == NOTOK)
76: return NOTOK;
77:
78: if (TSaveState (sd, vec + 1, td) == NOTOK)
79: return NOTOK;
80: vec[*vecp = 2] = NULL;
81:
82: return OK;
83: }
84:
85: net_init()
86: {
87: int ntries,
88: ontty;
89: struct TSAPdisconnect td_s;
90: struct TSAPdisconnect * td = &(td_s);
91: Entry my_entry;
92:
93: DLOG(log_dsap, LLOG_TRACE, ("Net Starting"));
94: isodetailor("server", 0);
95:
96: /*
97: * ds_init should have been called already to cover the possibility of
98: * the entry for this dsa being held remotely.
99: */
100: if((my_entry = local_find_entry(mydsadn, TRUE)) == NULLENTRY)
101: {
102: LLOG(log_dsap, LLOG_EXCEPTIONS, ("net_init - can't find own entry"));
103: return(NOTOK);
104: }
105:
106: /*
107: * Duplication of effort with the address for this dsa is going on
108: */
109: mydsaaddr = psap_cpy(my_entry->e_dsainfo->dsa_addr);
110:
111: if((acse_pci = oid_cpy(DIR_ACSE)) == NULLOID)
112: {
113: LLOG(log_dsap, LLOG_EXCEPTIONS, ("acse pci version 1 OID not found"));
114: return NOTOK;
115: }
116:
117: x500_da_ac = oid_cpy (DIR_ACCESS_AC);
118: x500_ds_ac = oid_cpy (DIR_SYSTEM_AC);
119: quipu_ds_ac = oid_cpy (DIR_QUIPU_AC);
120: x500_da_as = oid_cpy (DIR_ACCESS_AS);
121: x500_ds_as = oid_cpy (DIR_SYSTEM_AS);
122: quipu_ds_as = oid_cpy (DIR_QUIPU_AS);
123:
124: x500_da_pcdl->pc_nctx = 2;
125: x500_da_pcdl->pc_ctx[0].pc_id = DIR_ACCESS_PC_ID;
126: x500_da_pcdl->pc_ctx[0].pc_asn = oid_cpy(x500_da_as);
127: x500_da_pcdl->pc_ctx[0].pc_atn = NULLOID;
128: x500_da_pcdl->pc_ctx[1].pc_id = DIR_ACSE_PC_ID;
129: x500_da_pcdl->pc_ctx[1].pc_asn = oid_cpy(acse_pci);
130: x500_da_pcdl->pc_ctx[1].pc_atn = NULLOID;
131:
132: x500_ds_pcdl->pc_nctx = 2;
133: x500_ds_pcdl->pc_ctx[0].pc_id = DIR_SYSTEM_PC_ID;
134: x500_ds_pcdl->pc_ctx[0].pc_asn = oid_cpy(x500_ds_as);
135: x500_ds_pcdl->pc_ctx[0].pc_atn = NULLOID;
136: x500_ds_pcdl->pc_ctx[1].pc_id = DIR_ACSE_PC_ID;
137: x500_ds_pcdl->pc_ctx[1].pc_asn = oid_cpy(acse_pci);
138: x500_ds_pcdl->pc_ctx[1].pc_atn = NULLOID;
139:
140: quipu_ds_pcdl->pc_nctx = 2;
141: quipu_ds_pcdl->pc_ctx[0].pc_id = DIR_QUIPU_PC_ID;
142: quipu_ds_pcdl->pc_ctx[0].pc_asn = oid_cpy(quipu_ds_as);
143: quipu_ds_pcdl->pc_ctx[0].pc_atn = NULLOID;
144: quipu_ds_pcdl->pc_ctx[1].pc_id = DIR_ACSE_PC_ID;
145: quipu_ds_pcdl->pc_ctx[1].pc_asn = oid_cpy(acse_pci);
146: quipu_ds_pcdl->pc_ctx[1].pc_atn = NULLOID;
147:
148: ntries = 6, ontty = isatty (2);
149: while (TNetListenAux (&mydsaaddr -> pa_addr.sa_addr, TMagic, td)
150: == NOTOK) {
151: LLOG (log_dsap, LLOG_EXCEPTIONS,
152: ("TNetListen failed on address %s",
153: paddr2str (mydsaaddr, NULLNA)));
154: if (td -> td_cc > 0) {
155: if (ontty)
156: (void) fprintf (stderr,
157: "TNetListen: [%s] %*.*s\nAddress: %s\n",
158: TErrString (td -> td_reason), td -> td_cc,
159: td -> td_cc, td -> td_data,
160: paddr2str (mydsaaddr, NULLNA));
161: LLOG (log_dsap, LLOG_FATAL,
162: ("TNetListen: [%s] %*.*s", TErrString (td -> td_reason),
163: td -> td_cc, td -> td_cc, td -> td_data));
164: }
165: else {
166: if (ontty)
167: (void) fprintf (stderr, "TNetListen: [%s]\nAddress: %s\n",
168: TErrString (td -> td_reason),
169: paddr2str (mydsaaddr, NULLNA));
170: LLOG (log_dsap, LLOG_FATAL,
171: ("TNetListen: [%s]", TErrString (td -> td_reason)));
172: }
173:
174: if (ontty || td -> td_reason != DR_CONGEST || --ntries < 1)
175: return NOTOK;
176:
177: LLOG (log_dsap, LLOG_FATAL,
178: ("sleeping for 5 minutes, will continue retrying %d more time%s",
179: ntries, ntries != 1 ? "s" : ""));
180: sleep ((unsigned) 300);
181: }
182:
183: return OK;
184: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.