$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$ %$% %$% $%$ ISDN "c" file $%$ %$% %$% $%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$ /* ISDN layer 3 msg parameter- cause- */ /* Feberuary 11, 1985 */ char *cocausemsg[0x65] = { /* LOCUSER */ "User side", /* LOCPNET */ "Local private network", /* LOCLNET */ "Local network", /* LOCTNET */ "Transit network", /* LOCRNET */ "Remote local network", /* LOCRPNET*/ "Remote private network", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* ABANDON */ "Call abandoned", /* ORIFRAUD*/ "Invalid calling directory number", /* NORMTR */ "Normal call termination", /* USERBUSY*/ "User busy", /* NORESPON*/ "No user responding", /* WAITDEST*/ "This call waiting at destination", /* CIROPER */ "Circuit operational", /* CALLREJ */ "Call rejected", /* NUMCHANG*/ "Destination number changed", /* RCHARREJ*/ "Reverse charging rejected", /* CALLSUSP*/ "Call suspend", /* CALLRESU*/ "Call resumed", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* MSGOUT */ "Messages out-of-sync", /* RESFAIL */ "Line restriction fails", /* SPARE */ "", /* CIROUT */ "Circuit out-of-order", /* NOCHANN */ "No channel available", /* NODESTOB*/ "Destination not obtainable", /* DESTOUT */ "Destination out of order", /* DEGRADE */ "Degraded service(excessive error rate)", /* TNETOUT */ "Transit network out of order", /* TDELAY */ "Transit delay range cannot be achieved", /* THROUPUT*/ "Throughput range cannot be achieved", /* NETFAIL */ "Network failure", /* NETCONG */ "Network congestion", /* INFODIS */ "User info discarded locally", /* CHANOTCO*/ "Incompatible channel id", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* NOVERLAP*/ "Overlap sending not allowed", /* NOFACISU*/ "Requested facility not subscribed", /* NOREVERS*/ "Reverse charging not allowed", /* OUTBARRE*/ "Outgoing calls barred", /* OUTBACUG*/ "Outgoing calls barred with CUG", /* INBARRE */ "Incoming calls barred", /* INBACUG */ "Incoming calls barred with CUG", /* NOWAITSU*/ "Call waiting not subscribed", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* NOBEARER*/ "Bearer capability not implemented", /* NOCHTYPE*/ "Channel type not implemented", /* NOTRANSI*/ "Transit network selection not implement", /* NOMESSIM*/ "Message not implemented", /* NOFACIRE*/ "Requested facility not implemented", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* NOCREF */ "No call reference available", /* INVACREF*/ "Invalid call reference value", /* NOCHANID*/ "Identified channel does not exist", /* NOCALLID*/ "Call identity does not exist", /* CALLIDUS*/ "Call identity in use", /* INVDIGIT*/ "Invalid digit value for number", /* NOCUGID */ "Non-existent closed user group", /* NODESTCU*/ "Destination address not member of CUG", /* INCOMDET*/ "Incompatible destination", /* NOABBRE */ "Non-existent abbreviated address entry", /* DESTMISS*/ "Destination address( direct call )misssing", /* TRANSNEX*/ "Transit network does not exist", /* IFACIPAR*/ "Invalid facility parameter", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* SPARE */ "", /* NOMESSTY*/ "Message type non-existent or not implement", /* MESSCLST*/ "Message not compatible with call state", /* NOINFELE*/ "Information element non-existent", /* INELECON*/ "Invalid information element contents" .c #include "ctsk.h" #include "co.dbse.h" #define VINIT 0 /* verbose initially off */ sq}@~ int msgdelay = 1; /* 1 means no delay */ int msgerrors = 1; /* 1 means no errors */ int cocpvrb = VINIT; int col3vrb = VINIT; int col2avrb = VINIT; int col2bvrb = VINIT; int col1a1vrb = VINIT; int col1a2vrb = VINIT; int col1b1vrb = VINIT; int acctme = 0; int acctca = 0; int acctcc = 0; int acctcp = 0; int acctl3 = 0; int acctl2 = 0; int acctl1 = 0; /************************/ /* */ /* CENTRAL OFFICE */ /* */ /************************/ cocon(){ char *p,bfr[BLEN]; int i,j,k,len; /* clear the screen */ fprintf(COCON,"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); fprintf(COCON,"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); fprintf(COCON,"****************************************\n"); fprintf(COCON,"****************************************\n"); fprintf(COCON,"** **\n"); fprintf(COCON,"** ISDN Technology Transfer Package **\n"); fprintf(COCON,"** Copyright 1985 **\n"); fprintf(COCON,"** Bell Communications Research, Inc. **\n"); fprintf(COCON,"** **\n"); fprintf(COCON,"****************************************\n"); fprintf(COCON,"****************************************\n\n"); fprintf(COCON,"****************************************\n"); fprintf(COCON,"****************************************\n"); fprintf(COCON,"** **\n"); fprintf(COCON,"** ISDN Exchange Emulation **\n"); fprintf(COCON,"** **\n"); fprintf(COCON,"****************************************\n"); fprintf(COCON,"****************************************\n\n"); while(1){ if(len=string(IPCTTY,BLEN,p=bfr)){ if(sscanf(&p,"*stat*")){ fprintf(COCON,"Call Attmpts %6d\n",acctca); fprintf(COCON,"Call Cmpltns %6d\n\n",acctcc); fprintf(COCON,"L1 Sent/Rcvd %6d\n",acctl1); fprintf(COCON,"Link Failure %6d\n\n",acctme); fprintf(COCON,"L2 Processed %6d\n",acctl2); fprintf(COCON,"L3 Processed %6d\n",acctl3); fprintf(COCON,"CP Processed %6d\n",acctcp); fprintf(COCON,"All L2+L3+CP %6d\n\n",acctl2+acctl3+cctcp); if(sscanf(&p,"*clr*")){ acctme = 0; acctca = 0; acctcc = 0; acctcp = 0; acctcp = 0; acctl3 = 0; acctl2 = 0; acctl1 = 0; fprintf(COCON,"Cleared\n"); } } else if(sscanf(&p,"*vrb*")){ cocpvrb = 0; col3vrb = 0; col2avrb = 0; col2bvrb = 0; col1a1vrb = 0; col1a2vrb = 0; col1b1vrb = 0; while(*p){ if(sscanf(&p,"*cp*")) cocpvrb = 1; else if(sscanf(&p,"*l3*")) col3vrb = 1; else if(sscanf(&p,"*l2*")) col2avrb=col2bvrb = 1; else if(sscanf(&p,"*l1*")) col1a1vrb=col1a2vrb=col1b1vrb=1; else while((*p)&&(*p!=' ')) ++p; } } else if(sscanf(&p,"*delay*",&i)){ if(sscanf(&p,"*on*",&i)) msgdelay = 0; else if(sscanf(&p,"*off*",&i)) msgdelay = 1; if(msgdelay == 0) fprintf(COCON,"Line delay on\n\n"); else fprintf(COCON,"Line delay off\n\n"); } else if(sscanf(&p,"*err*",&i)){ if(sscanf(&p,"*on*",&i)) msgerrors = 0; else if(sscanf(&p,"*off*",&i)) msgerrors = 1; if(msgerrors == 0) fprintf(COCON,"Line errors on\n\n"); else fprintf(COCON,"Line errors off\n\n"); } /* print out stack area sizes for all process id */ else if(sscanf(&p,"*stk*",&i)){ dmpstk(COCON); } /* send a message to the MSP */ else if(sscanf(&p,"*msp*",&i)){ fprintf(COPRPH,"%s",p); } else if(sscanf(&p,"*admin*",&i)){ fprintf(COPRPH,"AD START",p); fprintf(COPRPH,"AD CHTG",p); fprintf(COPRPH,"AD GLOC",p); fprintf(COPRPH,"AD 0050",p); fprintf(COPRPH,"AD DEL",p); fprintf(COPRPH,"AD WNKI",p); fprintf(COPRPH,"AD",p); fprintf(COPRPH,"AD CHTG",p); fprintf(COPRPH,"AD GLOC",p); fprintf(COPRPH,"AD 0050",p); fprintf(COPRPH,"AD DEL",p); fprintf(COPRPH,"AD WNKO",p); fprintf(COPRPH,"AD",p); fprintf(COPRPH,"AD END",p); } /* printout the call records */ else if(sscanf(&p,"*cr*",&i)){ if(sscanf(&p,"%d*",&i)) dpcallrec(i); else{ if(ncallrecs) for(i=0;i= 0){ LX fprintf(COCON,"Password validation succeeds\n",i); RX dnrec[j].module=callrec[i].module; dnrec[j].line=callrec[i].line; if(dnrec[j].tei != 127) dnrec[j].tei=callrec[i].tei; dnrec[j].rscode=l3msg.usinf[0]; send_l3(NTFACIAK,i,NULL,NULL,""); LX fprintf(COCON,"NEXT STATE: NULL\n\n"); RX break; } LX fprintf(COCON,"WARNING: Password validation fails\n",i); RX send_l3(NTFACIRJ,i,LOCUSER,IFACIPAR,""); LX fprintf(COCON,"NEXT STATE: NULL\n\n"); RX break; /* end of case NTFACI */ case NTRLCOMP: LX fprintf(COCON,"RELEASE COMP request from L3\n"); RX if((j=callrec[i].link) != IDLE){ if(callrec[j].link==i){ send_l3(NTRELEASE,j,l3msg.loca,l3msg.caus,l3msg.usinf); callrec[j].link= IDLE; callrec[j].cpstate=FINAL; } } callrec[i].cpstate = NULL; callrec[i].link = IDLE; LX fprintf(COCON,"NEXT STATE: NULL\n"); RX delete(i); LX fprintf(COCON,"Deallocate Call Record (%d)\n\n",i); RX break; case NTALERT: LX fprintf(COCON,"ALERT request from L3\n"); RX if((j=search_callrec(callrec[i].module,callrec[i].line,callrec[i].sapi,callrec[i].callref,127,TEION))>=0){ j = sort[j]; callrec[i].bch=callrec[j].bch; for(k=0;k<=(callrec[j].bcap[0]&255);++k) callrec[i].bcap[k]=callrec[j].bcap[k]; for(k=0;k<=(callrec[j].lowcomp[0]&255);++k) callrec[i].lowcomp[k]=callrec[j].lowcomp[k]; for(k=0;k=0){ callrec[i].bch=callrec[j=sort[j]].bch; for(k=0;k<=(callrec[j].bcap[0]&255);++k) callrec[i].bcap[k]=callrec[j].bcap[k]; for(k=0;k<=(callrec[j].lowcomp[0]&255);++k) callrec[i].lowcomp[k]=callrec[j].lowcomp[k]; for(k=0;k=0){ send_l3(NTRELEASE,k=sort[k],LOCLNET,NORMTR,l3msg.usinf); callrec[k].cpstate=FINAL;