/*
* constructor
*/
-Premote::Premote(int type, char *portname, struct port_settings *settings, struct interface *interface, int remote_id) : Port(type, portname, settings)
+Premote::Premote(int type, char *portname, struct port_settings *settings, struct interface *interface, int remote_id) : Port(type, portname, settings, interface)
{
union parameter param;
p_callerinfo.itype = (interface->extension)?INFO_ITYPE_ISDN_EXTENSION:INFO_ITYPE_ISDN;
p_r_ref = new_remote++;
SCPY(p_r_remote_app, interface->remote_app);
- SCPY(p_r_interface_name, interface->name);
p_r_tones = (interface->is_tones == IS_YES);
/* send new ref to remote socket */
switch (message_type) {
case MESSAGE_SETUP:
struct interface *interface;
- interface = getinterfacebyname(p_r_interface_name);
+ interface = getinterfacebyname(p_interface_name);
if (!interface) {
- PERROR("Cannot find interface %s.\n", p_r_interface_name);
+ PERROR("Cannot find interface %s.\n", p_interface_name);
return 0;
}
/* attach only if not already */
else
SCPY(param->setup.dialinginfo.context, "lcr");
}
+ /* screen */
+ memcpy(&p_callerinfo, ¶m->setup.callerinfo, sizeof(p_callerinfo));
+ memcpy(&p_redirinfo, ¶m->setup.redirinfo, sizeof(p_redirinfo));
+ do_screen(1, p_callerinfo.id, sizeof(p_callerinfo.id), &p_callerinfo.ntype, &p_callerinfo.present, p_interface_name);
+ do_screen(1, p_callerinfo.id2, sizeof(p_callerinfo.id2), &p_callerinfo.ntype2, &p_callerinfo.present2, p_interface_name);
+ do_screen(1, p_redirinfo.id, sizeof(p_redirinfo.id), &p_redirinfo.ntype, &p_redirinfo.present, p_interface_name);
+ memcpy(¶m->setup.callerinfo, &p_callerinfo, sizeof(p_callerinfo));
+ memcpy(¶m->setup.redirinfo, &p_redirinfo, sizeof(p_redirinfo));
new_state(PORT_STATE_OUT_SETUP);
break;
break;
case MESSAGE_SETUP:
- interface = getinterfacebyname(p_r_interface_name);
+ interface = getinterfacebyname(p_interface_name);
if (!interface) {
- PERROR("Cannot find interface %s.\n", p_r_interface_name);
+ PERROR("Cannot find interface %s.\n", p_interface_name);
return;
}