static void l3_1tr6_rel(struct l3_process *pc, u_char pr, void *arg) { struct sk_buff *skb = arg; u_char *p; p = skb->data; if ((p = findie(p, skb->len, WE0_cause, 0))) { if (p[1] > 0) { pc->para.cause = p[2]; if (p[1] > 1) pc->para.loc = p[3]; else pc->para.loc = 0; } else { pc->para.cause = 0; pc->para.loc = 0; } } else { pc->para.cause = NO_CAUSE; l3_1tr6_error(pc, "missing REL cause", skb); return; } dev_kfree_skb(skb); StopAllL3Timer(pc); newl3state(pc, 0); l3_1TR6_message(pc, MT_N1_REL_ACK, PROTO_DIS_N1); pc->st->l3.l3l4(pc->st, CC_RELEASE | INDICATION, pc); release_l3_process(pc); }
static void l3_1tr6_rel(struct PStack *st, u_char pr, void *arg) { struct sk_buff *skb = arg; u_char *p; p = skb->data; if ((p = findie(p, skb->len, WE0_cause, 0))) { if (p[1] > 0) { st->pa->cause = p[2]; if (p[1] > 1) st->pa->loc = p[3]; else st->pa->loc = 0; } else { st->pa->cause = 0; st->pa->loc = 0; } } else st->pa->cause = -1; SET_SKB_FREE(skb); dev_kfree_skb(skb, FREE_READ); StopAllL3Timer(st); newl3state(st, 0); l3_1TR6_message(st, MT_N1_REL_ACK, PROTO_DIS_N1); st->l3.l3l4(st, CC_RELEASE_IND, NULL); }
static void l3_1tr6_t308_1(struct l3_process *pc, u_char pr, void *arg) { L3DelTimer(&pc->timer); l3_1TR6_message(pc, MT_N1_REL, PROTO_DIS_N1); L3AddTimer(&pc->timer, T308, CC_T308_2); newl3state(pc, 19); }
static void l3_1tr6_release_req(struct l3_process *pc, u_char pr, void *arg) { StopAllL3Timer(pc); newl3state(pc, 19); l3_1TR6_message(pc, MT_N1_REL, PROTO_DIS_N1); L3AddTimer(&pc->timer, T308, CC_T308_1); }
static void l3_1tr6_t308_1(struct PStack *st, u_char pr, void *arg) { L3DelTimer(&st->l3.timer); l3_1TR6_message(st, MT_N1_REL, PROTO_DIS_N1); L3AddTimer(&st->l3.timer, st->l3.t308, CC_T308_2); newl3state(st, 19); }
static void l3_1tr6_release_req(struct PStack *st, u_char pr, void *arg) { StopAllL3Timer(st); newl3state(st, 19); l3_1TR6_message(st, MT_N1_REL, PROTO_DIS_N1); L3AddTimer(&st->l3.timer, st->l3.t308, CC_T308_1); }
static void l3_1tr6_alert_req(struct l3_process *pc, u_char pr, void *arg) { newl3state(pc, 7); l3_1TR6_message(pc, MT_N1_ALERT, PROTO_DIS_N1); }
static void l3_1tr6_alert_req(struct PStack *st, u_char pr, void *arg) { newl3state(st, 7); l3_1TR6_message(st, MT_N1_ALERT, PROTO_DIS_N1); }