int send_call_proceeding(SOCKET *sock) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_CALL_PROC); q_assign(&dsc,QF_call_ref,sock->call_ref); if (sock->sig->mode == sm_net) { int vpci,vci; sock->pvc.sap_family = AF_ATMPVC; vpci = sock->sig->signaling_pvc.sap_addr.itf; sock->pvc.sap_addr.itf = get_itf(sock->sig,&vpci); sock->pvc.sap_addr.vpi = vpci; vci = get_vci(sock->pvc.sap_addr.itf); if (vci < 0) { (void) q_close(&dsc); return vci; } sock->pvc.sap_addr.vci = vci; } if (sock->sig->mode != sm_user) { q_assign(&dsc,QF_vpi,sock->pvc.sap_addr.vpi); q_assign(&dsc,QF_vci,sock->pvc.sap_addr.vci); } if (sock->ep_ref >= 0) q_assign(&dsc,QF_ep_ref,sock->ep_ref); if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); return 0; }
void saal_okay(SIG_ENTITY *sig) { SOCKET *curr; trace_msg("SAAL came up"); #ifdef THOMFLEX /* * Some versions of the Thomson Thomflex 5000 won't do any signaling before * they get a RESTART. Whenever SAAL comes up, this may indicate that the * switch got booted, so we send that RESTART. We also have to clear all * pending connections, which isn't that nice ... Note that the rest of the * RESTART state machine is not implemented, so the RESTART ACKNOWLEDGE * will yield a warning. */ { Q_DSC dsc; int size; clear_all_calls(sig); q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,QMSG_RESTART); q_assign(&dsc,QF_call_ref,0); q_assign(&dsc,QF_rst_class,ATM_RST_ALL_VC); if ((size = q_close(&dsc)) >= 0) to_signaling(sig,q_buffer,size); } #endif if (!t309) return; stop_timer(t309); t309 = NULL; for (curr = sockets; curr; curr = curr->next) if (curr->sig == sig && curr->call_state != cs_null) send_status_enq(curr); }
void to_uni(SIG_ENTITY *sig,void *msg,int size) { if (q_open(&in_dsc,msg,size) < 0) { abort_call(sig,msg,size); return; } process_uni(sig,msg); if (q_close(&in_dsc) < 0) diag(COMPONENT,DIAG_ERROR,"q_close returned <0 in to_uni"); }
static void send_conn_avail(SOCKET *sock) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_CONN_AVAIL); q_assign(&dsc,QF_call_ref,sock->call_ref); if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); }
static void send_status_enq(SOCKET *sock) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_STATUS_ENQ); q_assign(&dsc,QF_call_ref,sock->call_ref); if (sock->ep_ref >= 0) q_assign(&dsc,QF_ep_ref,sock->ep_ref); if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); /* @@@ should start T322 */ }
static void send_drop_party_ack(SIG_ENTITY *sig,unsigned long call_ref, unsigned short ep_ref,unsigned char cause) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_DROP_PARTY_ACK); q_assign(&dsc,QF_call_ref,call_ref); q_assign(&dsc,QF_ep_ref,ep_ref); q_assign(&dsc,QF_cause,cause); if ((size = q_close(&dsc)) >= 0) to_signaling(sig,q_buffer,size); }
static void send_restart_ack(SIG_ENTITY *sig,unsigned long call_ref,int vpi, int vci) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_REST_ACK); q_assign(&dsc,QF_call_ref,call_ref); if (!vpi && !vci) q_assign(&dsc,QF_rst_class,ATM_RST_ALL_VC); else { q_assign(&dsc,QF_rst_class,ATM_RST_IND_VC); q_assign(&dsc,QF_vpi,vpi); q_assign(&dsc,QF_vci,vci); } if ((size = q_close(&dsc)) >= 0) to_signaling(sig,q_buffer,size); }
static void send_status(SIG_ENTITY *sig,SOCKET *sock,unsigned long call_ref, unsigned char cause,...) { va_list ap; Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_STATUS); if (sock) { q_assign(&dsc,QF_call_ref,sock->call_ref); q_assign(&dsc,QF_call_state,(int) sock->call_state); if (sock->ep_ref >= 0) { q_assign(&dsc,QF_ep_ref,sock->ep_ref); q_assign(&dsc,QF_ep_state,eps_map[sock->call_state]); } } else { q_assign(&dsc,QF_call_ref,call_ref); q_assign(&dsc,QF_call_state,0); /* U0 - Null / REST 0 - Null */ } q_assign(&dsc,QF_cause,cause); va_start(ap,cause); switch (cause) { case ATM_CV_UNKNOWN_MSG_TYPE: case ATM_CV_INCOMP_MSG: q_assign(&dsc,QF_bad_msg_type,va_arg(ap,unsigned int)); break; case ATM_CV_MAND_IE_MISSING: case ATM_CV_INVALID_IE: { unsigned char ie; ie = va_arg(ap,unsigned int); q_write(&dsc,QF_ie_id6,&ie,1); break; } default: ; } va_end(ap); if ((size = q_close(&dsc)) >= 0) to_signaling(sig,q_buffer,size); }
INT4 WriteTopo (void) /*********************************************************************** * *_Title WriteTopo - Write final topography solution to file * *_DESC Write final topography solution to file * *_HIST June 13 2002 Janet Barrett, Original version * July 29 2002 JB, Replaced ioct with ioct1 to prevent the image * from being reoriented *_END ************************************************************************/ { INT4 limits[3][2]; INT4 nvals,slen,ival; FLOAT4 rval; INT4 ret; INT4 ioct1; topo.fileid = 0; topo.naxes = 3; topo.order = 1; topo.core_dims[0] = ins; topo.suffix_dims[0] = 0; (void) strcpy(topo.axnames[0],"SAMPLE"); topo.core_dims[1] = inl; topo.suffix_dims[1] = 0; (void) strcpy(topo.axnames[1],"LINE"); topo.core_dims[2] = 1; topo.suffix_dims[2] = 0; (void) strcpy(topo.axnames[2],"BAND"); topo.pixel_type = 3; topo.scale[0] = 0.0; topo.scale[1] = 1.0; (void) u_type_keys(topo.pixel_type,&topo.item_bytes, topo.core_type,sizeof(topo.core_type),&ret); if (ret) { strcpy(C_MSG->pcpmsg,"Error creating output topo file."); pcpmessage(C_MSG->pcpmsg); return(-1); } (void) q_set_sys_keys(&topo.fileid,topo.naxes,topo.order, topo.core_dims,topo.suffix_dims,(CHAR *)topo.axnames, sizeof(topo.axnames[0]),topo.item_bytes, topo.core_type,topo.scale,&ret); if (ret) { strcpy(C_MSG->pcpmsg,"Error creating output topo file."); pcpmessage(C_MSG->pcpmsg); return(-2); } (void) q_open(&topo.fileid,fid,topofile,3,0," ",0,0,1,0,&ret); if (ret) { strcpy(C_MSG->pcpmsg,"Error opening output topo file."); pcpmessage(C_MSG->pcpmsg); return(-3); } ioct1 = 1; (void) zlineout(&cdum[n2],nx,ny,&cdum[n3],ins,inl,scale,ioct1,cosemi); limits[0][0] = 1; limits[0][1] = ins; limits[1][0] = 1; limits[1][1] = inl; limits[2][0] = 1; limits[2][1] = 1; (void) q_lio_cbrick(topo.fileid,2,limits,(void *)(&cdum[n3]),&ret); if (ret) { strcpy(C_MSG->pcpmsg,"Error writing data to output topo file."); pcpmessage(C_MSG->pcpmsg); return(-5); } (void) q_close(topo.fileid,1,&ret); if (ret) { strcpy(C_MSG->pcpmsg,"Error closing output topo file."); pcpmessage(C_MSG->pcpmsg); return(-6); } return(0); }
void send_release(SOCKET *sock,unsigned char reason,...) { va_list ap; Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_RELEASE); q_assign(&dsc,QF_call_ref,sock->call_ref); q_assign(&dsc,QF_cause,reason); va_start(ap,reason); switch (reason) { case ATM_CV_TIMER_EXP: { char buf[4]; sprintf(buf,"%d",va_arg(ap,int)); q_write(&dsc,QF_timer,buf,3); break; } default: } va_end(ap); if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); } void send_release_complete(SIG_ENTITY *sig,unsigned long call_ref, unsigned char cause,...) { va_list ap; Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_REL_COMP); q_assign(&dsc,QF_call_ref,call_ref); if (cause) { q_assign(&dsc,QF_cause,cause); va_start(ap,cause); switch (cause) { case ATM_CV_INVALID_IE: { unsigned char ie; ie = va_arg(ap,int); q_write(&dsc,QF_ie_id6,&ie,1); } break; default: } va_end(ap); } if ((size = q_close(&dsc)) >= 0) to_signaling(sig,q_buffer,size); } void send_modify_reject(SOCKET *sock,unsigned char reason) { Q_DSC dsc; int size; q_create(&dsc,q_buffer,MAX_Q_MSG); q_assign(&dsc,QF_msg_type,ATM_MSG_MODIFY_REJ); q_assign(&dsc,QF_call_ref,sock->call_ref); q_assign(&dsc,QF_cause,reason); if ((size = q_close(&dsc)) >= 0) to_signaling(sock->sig,q_buffer,size); }