|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T n
Length: 4905 (0x1329)
Types: TextFile
Names: »net_init.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z«
└─⟦de7628f85⟧
└─⟦this⟧ »isode-6.0/quipu/net_init.c«
/* net_init.c - Init network section of DSA process */
#ifndef lint
static char *rcsid = "$Header: /f/osi/quipu/RCS/net_init.c,v 7.1 89/12/19 16:20:38 mrose Exp $";
#endif
/*
* $Header: /f/osi/quipu/RCS/net_init.c,v 7.1 89/12/19 16:20:38 mrose Exp $
*
*
* $Log: net_init.c,v $
* Revision 7.1 89/12/19 16:20:38 mrose
* sync
*
* Revision 7.0 89/11/23 22:17:46 mrose
* Release 6.0
*
*/
/*
* NOTICE
*
* Acquisition, use, and distribution of this module and related
* materials are subject to the restrictions of a license agreement.
* Consult the Preface in the User's Manual for the full terms of
* this agreement.
*
*/
/* LINTLIBRARY */
#include "rosap.h"
#include "tsap.h"
#include "quipu/util.h"
#include "quipu/connection.h"
#include "quipu/oid.h"
extern LLog * log_dsap;
extern char * mydsaname;
extern OID acse_pci;
extern OID x500_da_ac;
extern OID x500_ds_ac;
extern OID quipu_ds_ac;
extern OID x500_da_as;
extern OID x500_ds_as;
extern OID quipu_ds_as;
extern struct PSAPctxlist * x500_da_pcdl;
extern struct PSAPctxlist * x500_ds_pcdl;
extern struct PSAPctxlist * quipu_ds_pcdl;
extern DN mydsadn;
extern struct PSAPaddr * mydsaaddr;
extern struct PSAPaddr * psap_cpy();
static int TMagic (vecp, vec, td)
int *vecp;
char **vec;
struct TSAPdisconnect *td;
{
int sd;
struct TSAPstart tss;
register struct TSAPstart *ts = &tss;
if (TInit (*vecp, vec, ts, td) == NOTOK)
return NOTOK;
sd = ts -> ts_sd;
if (TConnResponse (sd, &ts -> ts_called, ts -> ts_expedited, NULLCP, 0,
NULLQOS, td) == NOTOK)
return NOTOK;
if (TSaveState (sd, vec + 1, td) == NOTOK)
return NOTOK;
vec[*vecp = 2] = NULL;
return OK;
}
net_init()
{
int ntries,
ontty;
struct TSAPdisconnect td_s;
struct TSAPdisconnect * td = &(td_s);
Entry my_entry;
DLOG(log_dsap, LLOG_TRACE, ("Net Starting"));
isodetailor("server", 0);
/*
* ds_init should have been called already to cover the possibility of
* the entry for this dsa being held remotely.
*/
if((my_entry = local_find_entry(mydsadn, TRUE)) == NULLENTRY)
{
LLOG(log_dsap, LLOG_EXCEPTIONS, ("net_init - can't find own entry"));
return(NOTOK);
}
/*
* Duplication of effort with the address for this dsa is going on
*/
mydsaaddr = psap_cpy(my_entry->e_dsainfo->dsa_addr);
if((acse_pci = oid_cpy(DIR_ACSE)) == NULLOID)
{
LLOG(log_dsap, LLOG_EXCEPTIONS, ("acse pci version 1 OID not found"));
return NOTOK;
}
x500_da_ac = oid_cpy (DIR_ACCESS_AC);
x500_ds_ac = oid_cpy (DIR_SYSTEM_AC);
quipu_ds_ac = oid_cpy (DIR_QUIPU_AC);
x500_da_as = oid_cpy (DIR_ACCESS_AS);
x500_ds_as = oid_cpy (DIR_SYSTEM_AS);
quipu_ds_as = oid_cpy (DIR_QUIPU_AS);
x500_da_pcdl->pc_nctx = 2;
x500_da_pcdl->pc_ctx[0].pc_id = 1;
x500_da_pcdl->pc_ctx[0].pc_asn = oid_cpy(x500_da_as);
x500_da_pcdl->pc_ctx[0].pc_atn = NULLOID;
x500_da_pcdl->pc_ctx[1].pc_id = 3;
x500_da_pcdl->pc_ctx[1].pc_asn = oid_cpy(acse_pci);
x500_da_pcdl->pc_ctx[1].pc_atn = NULLOID;
x500_ds_pcdl->pc_nctx = 2;
x500_ds_pcdl->pc_ctx[0].pc_id = 1;
x500_ds_pcdl->pc_ctx[0].pc_asn = oid_cpy(x500_ds_as);
x500_ds_pcdl->pc_ctx[0].pc_atn = NULLOID;
x500_ds_pcdl->pc_ctx[1].pc_id = 3;
x500_ds_pcdl->pc_ctx[1].pc_asn = oid_cpy(acse_pci);
x500_ds_pcdl->pc_ctx[1].pc_atn = NULLOID;
quipu_ds_pcdl->pc_nctx = 2;
quipu_ds_pcdl->pc_ctx[0].pc_id = 1;
quipu_ds_pcdl->pc_ctx[0].pc_asn = oid_cpy(quipu_ds_as);
quipu_ds_pcdl->pc_ctx[0].pc_atn = NULLOID;
quipu_ds_pcdl->pc_ctx[1].pc_id = 3;
quipu_ds_pcdl->pc_ctx[1].pc_asn = oid_cpy(acse_pci);
quipu_ds_pcdl->pc_ctx[1].pc_atn = NULLOID;
ntries = 6, ontty = isatty (2);
while (TNetListenAux (&mydsaaddr -> pa_addr.sa_addr, TMagic, td)
== NOTOK) {
LLOG (log_dsap, LLOG_EXCEPTIONS,
("TNetListen failed on address %s",
paddr2str (mydsaaddr, NULLNA)));
if (td -> td_cc > 0) {
if (ontty)
(void) fprintf (stderr,
"TNetListen: [%s] %*.*s\nAddress: %s\n",
TErrString (td -> td_reason), td -> td_cc,
td -> td_cc, td -> td_data,
paddr2str (mydsaaddr, NULLNA));
LLOG (log_dsap, LLOG_FATAL,
("TNetListen: [%s] %*.*s", TErrString (td -> td_reason),
td -> td_cc, td -> td_cc, td -> td_data));
}
else {
if (ontty)
(void) fprintf (stderr, "TNetListen: [%s]\nAddress: %s\n",
TErrString (td -> td_reason),
paddr2str (mydsaaddr, NULLNA));
LLOG (log_dsap, LLOG_FATAL,
("TNetListen: [%s]", TErrString (td -> td_reason)));
}
if (ontty || td -> td_reason != DR_CONGEST || --ntries < 1)
return NOTOK;
LLOG (log_dsap, LLOG_FATAL,
("sleeping for 5 minutes, will continue retrying %d more time%s",
ntries, ntries != 1 ? "s" : ""));
sleep ((unsigned) 300);
}
return OK;
}