|
|
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.