Lines Matching refs:cs
61 struct call_struc *cs = (struct call_struc *) arg; in deflect_timer_expire() local
64 del_timer(&cs->timer); /* delete active timer */ in deflect_timer_expire()
67 switch (cs->akt_state) { in deflect_timer_expire()
69 cs->ics.command = ISDN_CMD_HANGUP; /* cancel action */ in deflect_timer_expire()
70 divert_if.ll_cmd(&cs->ics); in deflect_timer_expire()
72 cs->akt_state = DEFLECT_AUTODEL; /* delete after timeout */ in deflect_timer_expire()
73 cs->timer.expires = jiffies + (HZ * AUTODEL_TIME); in deflect_timer_expire()
74 add_timer(&cs->timer); in deflect_timer_expire()
79 cs->ics.command = ISDN_CMD_REDIR; /* protocol */ in deflect_timer_expire()
80 strlcpy(cs->ics.parm.setup.phone, cs->deflect_dest, sizeof(cs->ics.parm.setup.phone)); in deflect_timer_expire()
81 strcpy(cs->ics.parm.setup.eazmsn, "Testtext delayed"); in deflect_timer_expire()
82 divert_if.ll_cmd(&cs->ics); in deflect_timer_expire()
84 cs->akt_state = DEFLECT_AUTODEL; /* delete after timeout */ in deflect_timer_expire()
85 cs->timer.expires = jiffies + (HZ * AUTODEL_TIME); in deflect_timer_expire()
86 add_timer(&cs->timer); in deflect_timer_expire()
93 if (cs->prev) in deflect_timer_expire()
94 cs->prev->next = cs->next; /* forward link */ in deflect_timer_expire()
96 divert_head = cs->next; in deflect_timer_expire()
97 if (cs->next) in deflect_timer_expire()
98 cs->next->prev = cs->prev; /* back link */ in deflect_timer_expire()
100 kfree(cs); in deflect_timer_expire()
119 struct call_struc *cs; in cf_command() local
158 if (!(cs = kmalloc(sizeof(struct call_struc), GFP_ATOMIC))) in cf_command()
160 init_timer(&cs->timer); in cf_command()
161 cs->info[0] = '\0'; in cf_command()
162 cs->timer.function = deflect_timer_expire; in cf_command()
163 cs->timer.data = (ulong) cs; /* pointer to own structure */ in cf_command()
164 cs->ics.driver = drvid; in cf_command()
165 cs->ics.command = ISDN_CMD_PROT_IO; /* protocol specific io */ in cf_command()
166 cs->ics.arg = DSS1_CMD_INVOKE; /* invoke supplementary service */ in cf_command()
167 cs->ics.parm.dss1_io.proc = (mode == 1) ? 7 : (mode == 2) ? 11 : 8; /* operation */ in cf_command()
168 cs->ics.parm.dss1_io.timeout = 4000; /* from ETS 300 207-1 */ in cf_command()
169 cs->ics.parm.dss1_io.datalen = p - tmp; /* total len */ in cf_command()
170 cs->ics.parm.dss1_io.data = tmp; /* start of buffer */ in cf_command()
173 cs->ics.parm.dss1_io.ll_id = next_id++; /* id for callback */ in cf_command()
175 *procid = cs->ics.parm.dss1_io.ll_id; in cf_command()
177 sprintf(cs->info, "%d 0x%lx %s%s 0 %s %02x %d%s%s\n", in cf_command()
179 cs->ics.parm.dss1_io.ll_id, in cf_command()
181 divert_if.drv_to_name(cs->ics.driver), in cf_command()
188 retval = divert_if.ll_cmd(&cs->ics); /* execute command */ in cf_command()
191 cs->prev = NULL; in cf_command()
193 cs->next = divert_head; in cf_command()
194 divert_head = cs; in cf_command()
197 kfree(cs); in cf_command()
207 struct call_struc *cs; in deflect_extern_action() local
213 cs = divert_head; /* start of parameter list */ in deflect_extern_action()
214 while (cs) { in deflect_extern_action()
215 if (cs->divert_id == callid) break; /* found */ in deflect_extern_action()
216 cs = cs->next; in deflect_extern_action()
218 if (!cs) return (-EINVAL); /* invalid callid */ in deflect_extern_action()
220 ic.driver = cs->ics.driver; in deflect_extern_action()
221 ic.arg = cs->ics.arg; in deflect_extern_action()
223 if (cs->akt_state == DEFLECT_AUTODEL) return (i); /* no valid call */ in deflect_extern_action()
226 del_timer(&cs->timer); in deflect_extern_action()
230 cs->akt_state = DEFLECT_AUTODEL; /* delete after timeout */ in deflect_extern_action()
231 cs->timer.expires = jiffies + (HZ * AUTODEL_TIME); in deflect_extern_action()
232 add_timer(&cs->timer); in deflect_extern_action()
237 if (cs->akt_state == DEFLECT_ALERT) return (0); in deflect_extern_action()
239 del_timer(&cs->timer); in deflect_extern_action()
243 cs->akt_state = DEFLECT_AUTODEL; /* delete after timeout */ in deflect_extern_action()
244 cs->timer.expires = jiffies + (HZ * AUTODEL_TIME); in deflect_extern_action()
245 add_timer(&cs->timer); in deflect_extern_action()
248 cs->akt_state = DEFLECT_ALERT; in deflect_extern_action()
252 del_timer(&cs->timer); in deflect_extern_action()
253 strlcpy(cs->ics.parm.setup.phone, to_nr, sizeof(cs->ics.parm.setup.phone)); in deflect_extern_action()
254 strcpy(cs->ics.parm.setup.eazmsn, "Testtext manual"); in deflect_extern_action()
258 cs->akt_state = DEFLECT_AUTODEL; /* delete after timeout */ in deflect_extern_action()
259 cs->timer.expires = jiffies + (HZ * AUTODEL_TIME); in deflect_extern_action()
260 add_timer(&cs->timer); in deflect_extern_action()
263 cs->akt_state = DEFLECT_ALERT; in deflect_extern_action()
389 struct call_struc *cs = NULL; in isdn_divert_icall() local
453 if (!(cs = kmalloc(sizeof(struct call_struc), GFP_ATOMIC))) in isdn_divert_icall()
455 init_timer(&cs->timer); in isdn_divert_icall()
456 cs->info[0] = '\0'; in isdn_divert_icall()
457 cs->timer.function = deflect_timer_expire; in isdn_divert_icall()
458 cs->timer.data = (ulong) cs; /* pointer to own structure */ in isdn_divert_icall()
460 cs->ics = *ic; /* copy incoming data */ in isdn_divert_icall()
461 if (!cs->ics.parm.setup.phone[0]) strcpy(cs->ics.parm.setup.phone, "0"); in isdn_divert_icall()
462 if (!cs->ics.parm.setup.eazmsn[0]) strcpy(cs->ics.parm.setup.eazmsn, "0"); in isdn_divert_icall()
463 cs->ics.parm.setup.screen = dv->rule.screen; in isdn_divert_icall()
465 cs->timer.expires = jiffies + (HZ * dv->rule.waittime); in isdn_divert_icall()
467 cs->timer.expires = jiffies + (HZ * extern_wait_max); in isdn_divert_icall()
469 cs->timer.expires = 0; in isdn_divert_icall()
470 cs->akt_state = dv->rule.action; in isdn_divert_icall()
472 cs->divert_id = next_id++; /* new sequence number */ in isdn_divert_icall()
474 cs->prev = NULL; in isdn_divert_icall()
475 if (cs->akt_state == DEFLECT_ALERT) { in isdn_divert_icall()
476 strcpy(cs->deflect_dest, dv->rule.to_nr); in isdn_divert_icall()
477 if (!cs->timer.expires) { in isdn_divert_icall()
482 cs->akt_state = DEFLECT_AUTODEL; /* delete after timeout */ in isdn_divert_icall()
483 cs->timer.expires = jiffies + (HZ * AUTODEL_TIME); in isdn_divert_icall()
488 cs->deflect_dest[0] = '\0'; in isdn_divert_icall()
491 sprintf(cs->info, "%d 0x%lx %s %s %s %s 0x%x 0x%x %d %d %s\n", in isdn_divert_icall()
492 cs->akt_state, in isdn_divert_icall()
493 cs->divert_id, in isdn_divert_icall()
494 divert_if.drv_to_name(cs->ics.driver), in isdn_divert_icall()
496 cs->ics.parm.setup.phone, in isdn_divert_icall()
497 cs->ics.parm.setup.eazmsn, in isdn_divert_icall()
498 cs->ics.parm.setup.si1, in isdn_divert_icall()
499 cs->ics.parm.setup.si2, in isdn_divert_icall()
500 cs->ics.parm.setup.screen, in isdn_divert_icall()
502 cs->deflect_dest); in isdn_divert_icall()
505 put_info_buffer(cs->info); in isdn_divert_icall()
506 kfree(cs); /* remove */ in isdn_divert_icall()
517 if (cs) { in isdn_divert_icall()
518 cs->prev = NULL; in isdn_divert_icall()
520 cs->next = divert_head; in isdn_divert_icall()
521 divert_head = cs; in isdn_divert_icall()
522 if (cs->timer.expires) add_timer(&cs->timer); in isdn_divert_icall()
525 put_info_buffer(cs->info); in isdn_divert_icall()
534 struct call_struc *cs, *cs1; in deleteprocs() local
538 cs = divert_head; in deleteprocs()
540 while (cs) { in deleteprocs()
541 del_timer(&cs->timer); in deleteprocs()
542 cs1 = cs; in deleteprocs()
543 cs = cs->next; in deleteprocs()
593 static int interrogate_success(isdn_ctrl *ic, struct call_struc *cs) in interrogate_success() argument
684 struct call_struc *cs, *cs1; in prot_stat_callback() local
688 cs = divert_head; /* start of list */ in prot_stat_callback()
690 while (cs) { in prot_stat_callback()
691 if (ic->driver == cs->ics.driver) { in prot_stat_callback()
692 switch (cs->ics.arg) { in prot_stat_callback()
694 if ((cs->ics.parm.dss1_io.ll_id == ic->parm.dss1_io.ll_id) && in prot_stat_callback()
695 (cs->ics.parm.dss1_io.hl_id == ic->parm.dss1_io.hl_id)) { in prot_stat_callback()
698 sprintf(cs->info, "128 0x%lx 0x%x\n", in prot_stat_callback()
701 put_info_buffer(cs->info); in prot_stat_callback()
705 switch (cs->ics.parm.dss1_io.proc) { in prot_stat_callback()
708 put_info_buffer(cs->info); in prot_stat_callback()
712 i = interrogate_success(ic, cs); in prot_stat_callback()
714 sprintf(cs->info, "%d 0x%lx %d\n", DIVERT_REPORT, in prot_stat_callback()
716 put_info_buffer(cs->info); in prot_stat_callback()
720 printk(KERN_WARNING "dss1_divert: unknown proc %d\n", cs->ics.parm.dss1_io.proc); in prot_stat_callback()
730 cs1 = cs; /* remember structure */ in prot_stat_callback()
731 cs = NULL; in prot_stat_callback()
741 printk(KERN_WARNING "dss1_divert unknown cmd 0x%lx\n", cs->ics.arg); in prot_stat_callback()
744 cs = cs->next; in prot_stat_callback()
775 struct call_struc *cs, *cs1; in isdn_divert_stat_callback() local
780 cs = divert_head; /* start of list */ in isdn_divert_stat_callback()
781 while (cs) { in isdn_divert_stat_callback()
782 if ((ic->driver == cs->ics.driver) && in isdn_divert_stat_callback()
783 (ic->arg == cs->ics.arg)) { in isdn_divert_stat_callback()
786 sprintf(cs->info, "129 0x%lx\n", cs->divert_id); in isdn_divert_stat_callback()
787 del_timer(&cs->timer); in isdn_divert_stat_callback()
788 cs->ics.driver = -1; in isdn_divert_stat_callback()
792 sprintf(cs->info, "130 0x%lx %s\n", cs->divert_id, ic->parm.num); in isdn_divert_stat_callback()
796 sprintf(cs->info, "131 0x%lx\n", cs->divert_id); in isdn_divert_stat_callback()
797 del_timer(&cs->timer); in isdn_divert_stat_callback()
798 cs->ics.driver = -1; in isdn_divert_stat_callback()
802 sprintf(cs->info, "999 0x%lx 0x%x\n", cs->divert_id, (int)(ic->command)); in isdn_divert_stat_callback()
805 put_info_buffer(cs->info); in isdn_divert_stat_callback()
808 cs1 = cs; in isdn_divert_stat_callback()
809 cs = cs->next; in isdn_divert_stat_callback()