static void tei_id_chk_req(struct FsmInst *fi, int event, void *arg) { teimgr_t *tm = fi->userdata; u_char *dp = arg; int tei; tei = *(dp+3) >> 1; if (tm->debug) tm->tei_m.printdebug(fi, "identity check req tei %d", tei); if ((tm->l2->tei != -1) && ((tei == GROUP_TEI) || (tei == tm->l2->tei))) { mISDN_FsmDelTimer(&tm->t202, 4); mISDN_FsmChangeState(&tm->tei_m, ST_TEI_NOP); put_tei_msg(tm, ID_CHK_RES, random_ri(), tm->l2->tei); } }
static void tei_id_chk_req(struct FsmInst *fi, int event, void *arg) { struct PStack *st = fi->userdata; struct sk_buff *skb = arg; int tei; tei = skb->data[4] >> 1; if (st->ma.debug) st->ma.tei_m.printdebug(&st->ma.tei_m, "identity check req tei %d", tei); if ((st->l2.tei != -1) && ((tei == GROUP_TEI) || (tei == st->l2.tei))) { FsmDelTimer(&st->ma.t202, 4); FsmChangeState(&st->ma.tei_m, ST_TEI_NOP); put_tei_msg(st, ID_CHK_RES, random_ri(), st->l2.tei); } }
static void tei_id_request(struct FsmInst *fi, int event, void *arg) { struct PStack *st = fi->userdata; if (st->l2.tei != -1) { st->ma.tei_m.printdebug(&st->ma.tei_m, "assign request for already assigned tei %d", st->l2.tei); return; } st->ma.ri = random_ri(); if (st->ma.debug) st->ma.tei_m.printdebug(&st->ma.tei_m, "assign request ri %d", st->ma.ri); put_tei_msg(st, ID_REQUEST, st->ma.ri, 127); FsmChangeState(&st->ma.tei_m, ST_TEI_IDREQ); FsmAddTimer(&st->ma.t202, st->ma.T202, EV_T202, NULL, 1); st->ma.N202 = 3; }
static void tei_id_request(struct FsmInst *fi, int event, void *arg) { teimgr_t *tm = fi->userdata; if (tm->l2->tei != -1) { tm->tei_m.printdebug(&tm->tei_m, "assign request for allready assigned tei %d", tm->l2->tei); return; } tm->ri = random_ri(); if (tm->debug) tm->tei_m.printdebug(&tm->tei_m, "assign request ri %d", tm->ri); put_tei_msg(tm, ID_REQUEST, tm->ri, 127); mISDN_FsmChangeState(fi, ST_TEI_IDREQ); mISDN_FsmAddTimer(&tm->t202, tm->T202, EV_T202, NULL, 1); tm->N202 = 3; }
static void tei_id_req_tout(struct FsmInst *fi, int event, void *arg) { struct PStack *st = fi->userdata; struct IsdnCardState *cs; if (--st->ma.N202) { st->ma.ri = random_ri(); if (st->ma.debug) st->ma.tei_m.printdebug(&st->ma.tei_m, "assign req(%d) ri %d", 4 - st->ma.N202, st->ma.ri); put_tei_msg(st, ID_REQUEST, st->ma.ri, 127); FsmAddTimer(&st->ma.t202, st->ma.T202, EV_T202, NULL, 3); } else { st->ma.tei_m.printdebug(&st->ma.tei_m, "assign req failed"); L3L2(st, MDL_ERROR | RESPONSE, 0); cs = (struct IsdnCardState *) st->l1.hardware; mdl_remove(cs); FsmChangeState(fi, ST_TEI_NOP); } }
static void tei_id_req_tout(struct FsmInst *fi, int event, void *arg) { teimgr_t *tm = fi->userdata; struct sk_buff *skb; if (--tm->N202) { tm->ri = random_ri(); if (tm->debug) tm->tei_m.printdebug(fi, "assign req(%d) ri %d", 4 - tm->N202, tm->ri); put_tei_msg(tm, ID_REQUEST, tm->ri, 127); mISDN_FsmAddTimer(&tm->t202, tm->T202, EV_T202, NULL, 3); } else { tm->tei_m.printdebug(fi, "assign req failed"); skb = create_link_skb(MDL_ERROR | REQUEST, 0, 0, NULL, 0); if (!skb) return; if (tei_l2(tm->l2, skb)) dev_kfree_skb(skb); // cs->cardmsg(cs, MDL_REMOVE | REQUEST, NULL); mISDN_FsmChangeState(fi, ST_TEI_NOP); } }