added possibility to restart channels. works like broadcast facilities without a real process, the user just needs to use the MISDN_ID_DUMMY as l3id (dinfo). This is especially useful if the user Application thinks that there are free channels when the switch from the telco provider thinks there are busy channels, with this restart mechanism they can synchronize, restart_ack will be added when we can test that.

This commit is contained in:
Chrisian Richter 2007-01-09 16:51:47 +00:00
parent d45c93792d
commit 618cd071d2
1 changed files with 16 additions and 0 deletions

View File

@ -939,6 +939,14 @@ l3dss1_facility_req(l3_process_t *pc, u_char pr, void *arg)
}
}
static void
l3dss1_restart_req(l3_process_t *pc, u_char pr, void *arg)
{
if (arg) {
SendMsg(pc, arg, -1);
}
}
static void
l3dss1_release_cmpl(l3_process_t *pc, u_char pr, void *arg)
{
@ -2794,6 +2802,14 @@ dss1_fromup(layer3_t *l3, struct sk_buff *skb, mISDN_head_t *hh)
return(ret);
}
if (!proc && hh->dinfo == MISDN_ID_DUMMY) {
if (hh->prim == (CC_RESTART | REQUEST)) {
l3dss1_restart_req(l3->dummy, hh->prim, skb->len ? skb : NULL);
ret = 0;
}
return(ret);
}
if (!proc && (hh->prim == (CC_RELEASE_COMPLETE | REQUEST)) ) {
/* crich: */
if (l3->debug) l3_debug(l3, "mISDN dss1 sending RELEASE_COMPLETE without proc pr=%04x dinof(%x)", hh->prim, hh->dinfo);