Lines Matching refs:ic
208 isdn_ctrl ic; in deflect_extern_action() local
220 ic.driver = cs->ics.driver; in deflect_extern_action()
221 ic.arg = cs->ics.arg; in deflect_extern_action()
227 ic.command = ISDN_CMD_HANGUP; in deflect_extern_action()
228 i = divert_if.ll_cmd(&ic); in deflect_extern_action()
240 ic.command = ISDN_CMD_ALERT; in deflect_extern_action()
241 if ((i = divert_if.ll_cmd(&ic))) { in deflect_extern_action()
255 ic.command = ISDN_CMD_REDIR; in deflect_extern_action()
256 if ((i = divert_if.ll_cmd(&ic))) { in deflect_extern_action()
385 static int isdn_divert_icall(isdn_ctrl *ic) in isdn_divert_icall() argument
397 if (((dv->rule.callopt == 1) && (ic->command == ISDN_STAT_ICALLW)) || in isdn_divert_icall()
398 ((dv->rule.callopt == 2) && (ic->command == ISDN_STAT_ICALL))) in isdn_divert_icall()
400 if (!(dv->rule.drvid & (1L << ic->driver))) in isdn_divert_icall()
402 if ((dv->rule.si1) && (dv->rule.si1 != ic->parm.setup.si1)) in isdn_divert_icall()
404 if ((dv->rule.si2) && (dv->rule.si2 != ic->parm.setup.si2)) in isdn_divert_icall()
408 p1 = ic->parm.setup.eazmsn; in isdn_divert_icall()
424 (ic->parm.setup.phone[0])) { in isdn_divert_icall()
426 p1 = ic->parm.setup.phone; in isdn_divert_icall()
460 cs->ics = *ic; /* copy incoming data */ in isdn_divert_icall()
478 strcpy(ic->parm.setup.eazmsn, in isdn_divert_icall()
480 ic->parm.setup.screen = dv->rule.screen; in isdn_divert_icall()
481 strlcpy(ic->parm.setup.phone, dv->rule.to_nr, sizeof(ic->parm.setup.phone)); in isdn_divert_icall()
495 (ic->command == ISDN_STAT_ICALLW) ? "1" : "0", in isdn_divert_icall()
593 static int interrogate_success(isdn_ctrl *ic, struct call_struc *cs) in interrogate_success() argument
595 char *src = ic->parm.dss1_io.data; in interrogate_success()
596 int restlen = ic->parm.dss1_io.datalen; in interrogate_success()
643 sprintf(stp, "%d 0x%lx %d %s ", DIVERT_REPORT, ic->parm.dss1_io.ll_id, in interrogate_success()
644 cnt++, divert_if.drv_to_name(ic->driver)); in interrogate_success()
682 static int prot_stat_callback(isdn_ctrl *ic) in prot_stat_callback() argument
691 if (ic->driver == cs->ics.driver) { 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()
696 switch (ic->arg) { in prot_stat_callback()
699 ic->parm.dss1_io.ll_id, in prot_stat_callback()
700 ic->parm.dss1_io.timeout); in prot_stat_callback()
712 i = interrogate_success(ic, cs); in prot_stat_callback()
715 ic->parm.dss1_io.ll_id, i); in prot_stat_callback()
727 printk(KERN_WARNING "dss1_divert unknown invoke answer %lx\n", ic->arg); in prot_stat_callback()
773 static int isdn_divert_stat_callback(isdn_ctrl *ic) in isdn_divert_stat_callback() argument
782 if ((ic->driver == cs->ics.driver) && in isdn_divert_stat_callback()
783 (ic->arg == cs->ics.arg)) { in isdn_divert_stat_callback()
784 switch (ic->command) { 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()
802 sprintf(cs->info, "999 0x%lx 0x%x\n", cs->divert_id, (int)(ic->command)); in isdn_divert_stat_callback()
829 int ll_callback(isdn_ctrl *ic) in ll_callback() argument
831 switch (ic->command) { in ll_callback()
834 return (isdn_divert_icall(ic)); in ll_callback()
838 if ((ic->arg & 0xFF) == ISDN_PTYPE_EURO) { in ll_callback()
839 if (ic->arg != DSS1_STAT_INVOKE_BRD) in ll_callback()
840 return (prot_stat_callback(ic)); in ll_callback()
847 return (isdn_divert_stat_callback(ic)); in ll_callback()