X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=appbridge.cpp;h=cc8d699c7c350196df9ba8f8196b3c4fb7fbd9e0;hp=e94de02b02c2b2dc52786c54728c0539a9197e18;hb=5566f74eb29be75da44e29ba72ee6f015249ce61;hpb=1ba14173313beeae18b600d4c889521822821a07 diff --git a/appbridge.cpp b/appbridge.cpp index e94de02..cc8d699 100644 --- a/appbridge.cpp +++ b/appbridge.cpp @@ -136,6 +136,24 @@ fail: /* create port for interface */ SPRINT(portname, "%s-%d-out", interface_out->name, 0); memset(&port_settings, 0, sizeof(port_settings)); +#ifdef WITH_MISDN + if (interface_out->remote) { + struct admin_list *admin; + admin = admin_first; + while(admin) { + if (admin->remote_name[0] && !strcmp(admin->remote_name, interface_out->remote_app)) + break; + admin = admin->next; + } + if (!admin) { + trace_header("INTERFACE (remote not connected)", DIRECTION_NONE); + add_trace("application", NULL, "%s", interface_out->remote_app); + end_trace(); + goto fail; + } + port = new Premote(PORT_TYPE_REMOTE_OUT, portname, &port_settings, interface_out, admin->sock); + } else +#endif #ifdef WITH_SIP if (interface_out->sip) { port = new Psip(PORT_TYPE_SIP_OUT, portname, &port_settings, interface_out); @@ -156,8 +174,6 @@ fail: #ifdef WITH_MISDN struct mISDNport *mISDNport; int channel = 0; - struct admin_list *admin; - int earlyb; int mode = B_MODE_TRANSPARENT; /* hunt for mISDNport and create Port */ @@ -176,24 +192,12 @@ fail: port = ss5_hunt_line(mISDNport); else #endif - if (mISDNport->ifport->remote) { - admin = admin_first; - while(admin) { - if (admin->remote_name[0] && !strcmp(admin->remote_name, mISDNport->ifport->remote_app)) - break; - admin = admin->next; - } - if (!admin) { - trace_header("INTERFACE (remote not connected)", DIRECTION_NONE); - add_trace("application", NULL, "%s", mISDNport->ifport->remote_app); - end_trace(); - cause = 27; - goto fail; - } - port = new Premote(PORT_TYPE_REMOTE_OUT, mISDNport, portname, &port_settings, channel, mISDNport->ifport->channel_force, mode, admin->sock); - } else - port = new Pdss1((mISDNport->ntmode)?PORT_TYPE_DSS1_NT_OUT:PORT_TYPE_DSS1_TE_OUT, mISDNport, portname, &port_settings, channel, mISDNport->ifport->channel_force, mode); - earlyb = mISDNport->earlyb; +#ifdef ISDN_P_FXS_POTS + if (mISDNport->pots) + port = new Pfxs(PORT_TYPE_POTS_FXS_OUT, mISDNport, portname, &port_settings, mISDNport->ifport->interface, mode); + else +#endif + port = new Pdss1((mISDNport->ntmode)?PORT_TYPE_DSS1_NT_OUT:PORT_TYPE_DSS1_TE_OUT, mISDNport, portname, &port_settings, mISDNport->ifport->interface, channel, mISDNport->ifport->channel_force, mode); #else trace_header("INTERFACE (has no function)", DIRECTION_NONE); add_trace("interface", NULL, "%s", ifname);