- /* d-message */
- switch(frm->prim)
- {
- case MGR_SHORTSTATUS | INDICATION:
- case MGR_SHORTSTATUS | CONFIRM:
- switch(frm->dinfo) {
- case SSTATUS_L1_ACTIVATED:
- l1l2l3_trace_header(mISDNport, NULL, PH_ACTIVATE | (frm->prim & 0x3), DIRECTION_IN);
- end_trace();
- goto ss_act;
- case SSTATUS_L1_DEACTIVATED:
- l1l2l3_trace_header(mISDNport, NULL, PH_DEACTIVATE | (frm->prim & 0x3), DIRECTION_IN);
- end_trace();
- goto ss_deact;
- case SSTATUS_L2_ESTABLISHED:
- l1l2l3_trace_header(mISDNport, NULL, DL_ESTABLISH | (frm->prim & 0x3), DIRECTION_IN);
- end_trace();
- goto ss_estab;
- case SSTATUS_L2_RELEASED:
- l1l2l3_trace_header(mISDNport, NULL, DL_RELEASE | (frm->prim & 0x3), DIRECTION_IN);
- end_trace();
- goto ss_rel;
- }
- break;
+ mISDN_write_frame(mISDNdevice, msg->data, mISDNport->upper_id | FLG_MSG_DOWN,
+ MGR_TIMER | RESPONSE, 0, 0, NULL, TIMEOUT_1SEC);
+
+ PDEBUG(DEBUG_ISDN, "timer-indication port %d it=%p\n", mISDNport->portnum, it);
+ test_and_clear_bit(FLG_TIMER_RUNING, (long unsigned int *)&it->Flags);
+ ret = it->function(it->data);
+ } else
+ {
+ PDEBUG(DEBUG_ISDN, "timer-indication not handled\n");
+ }
+ goto out;
+ }
+
+ /* find the mISDNport that belongs to the stack */
+ mISDNport = mISDNport_first;
+ while(mISDNport)
+ {
+ if ((frm->addr&MASTER_ID_MASK) == (unsigned int)(mISDNport->upper_id&MASTER_ID_MASK))
+ break;
+ mISDNport = mISDNport->next;
+ }
+ if (!mISDNport)
+ {
+ PERROR("message belongs to no mISDNport: prim(0x%x) addr(0x%x) msg->len(%d)\n", frm->prim, frm->addr, msg->len);
+ goto out;
+ }