//#define __u16 unsigned short
//#define __u32 unsigned int
+extern unsigned int new_remote;
/*
* constructor for a new join
*/
JoinRemote::JoinRemote(unsigned int serial, char *remote_name, int remote_id) : Join()
{
- PDEBUG(DEBUG_JOIN, "Constructor(new join)");
union parameter param;
SCPY(j_remote_name, remote_name);
j_remote_id = remote_id;
j_type = JOIN_TYPE_REMOTE;
+ j_remote_ref = new_remote++;
+
+ PDEBUG(DEBUG_JOIN, "Constructor(new join) ref=%d\n", j_remote_ref);
j_epoint_id = serial; /* this is the endpoint, if created by epoint */
if (j_epoint_id)
- PDEBUG(DEBUG_JOIN, "New remote join connected to endpoint id %lu and application %s\n", j_epoint_id, remote_name);
+ PDEBUG(DEBUG_JOIN, "New remote join connected to endpoint id %lu and application %s (ref=%d)\n", j_epoint_id, remote_name, j_remote_ref);
/* send new ref to remote socket */
memset(¶m, 0, sizeof(union parameter));
if (serial)
- param.direction = 1; /* new ref from lcr */
- /* the j_serial is assigned by Join() parent. this is sent as new ref */
- if (admin_message_from_join(j_remote_id, j_serial, MESSAGE_NEWREF, ¶m)<0)
+ param.newref.direction = 1; /* new ref from lcr */
+ if (admin_message_from_lcr(j_remote_id, j_remote_ref, MESSAGE_NEWREF, ¶m)<0)
FATAL("No socket with remote application '%s' found, this shall not happen. because we already created one.\n", j_remote_name);
}
if (epoint_id != j_epoint_id)
return;
+ PDEBUG(DEBUG_JOIN, "Message %d of endpoint %d from LCR to remote (ref=%d)\n", message_type, j_epoint_id, j_remote_ref);
+
/* look for Remote's interface */
- if (admin_message_from_join(j_remote_id, j_serial, message_type, param)<0) {
+ if (admin_message_from_lcr(j_remote_id, j_remote_ref, message_type, param)<0) {
PERROR("No socket with remote application '%s' found, this shall not happen. Closing socket shall cause release of all joins.\n", j_remote_name);
return;
}
{
struct lcr_msg *message;
+ PDEBUG(DEBUG_JOIN, "Message %d of endpoint %d from remote to LCR (ref=%d)\n", message_type, j_epoint_id, j_remote_ref);
+
/* create relation if no relation exists */
if (!j_epoint_id) {
class Endpoint *epoint;
if (!(epoint = new Endpoint(0, j_serial)))
FATAL("No memory for Endpoint instance\n");
j_epoint_id = epoint->ep_serial;
- if (!(epoint->ep_app = new DEFAULT_ENDPOINT_APP(epoint, 1))) // outgoing
- FATAL("No memory for Endpoint Application instance\n");
+ PDEBUG(DEBUG_JOIN, "Created endpoint %d\n", j_epoint_id);
+ epoint->ep_app = new_endpointapp(epoint, 1, EAPP_TYPE_PBX); // outgoing
}
+#ifdef WITH_MISDN
/* set serial on bchannel message
* also ref is given, so we send message with ref */
if (message_type == MESSAGE_BCHANNEL) {
message_bchannel_from_remote(this, param->bchannel.type, param->bchannel.handle);
return;
}
+#endif
/* cannot just forward, because param is not of container "struct lcr_msg" */
message = message_create(j_serial, j_epoint_id, JOIN_TO_EPOINT, message_type);
}
}
-void message_bchannel_to_remote(unsigned int remote_id, unsigned int ref, int type, unsigned int handle, int tx_gain, int rx_gain, char *pipeline, unsigned char *crypt, int crypt_len, int crypt_type)
-{
- union parameter param;
-
- memset(¶m, 0, sizeof(union parameter));
- param.bchannel.type = type;
- param.bchannel.handle = handle;
- param.bchannel.tx_gain = tx_gain;
- param.bchannel.rx_gain = rx_gain;
- if (pipeline)
- SCPY(param.bchannel.pipeline, pipeline);
- if (crypt_len)
- memcpy(param.bchannel.crypt, crypt, crypt_len);
- param.bchannel.crypt_type = crypt_type;
- if (admin_message_from_join(remote_id, ref, MESSAGE_BCHANNEL, ¶m)<0) {
- PERROR("No socket with remote id %d found, this happens, if the socket is closed before all bchannels are imported.\n", remote_id);
- return;
- }
-}
-