now gives warning if mISDN branch is wrong.
[lcr.git] / lcrsocket.h
diff --git a/lcrsocket.h b/lcrsocket.h
new file mode 100644 (file)
index 0000000..a34820d
--- /dev/null
@@ -0,0 +1,185 @@
+/*****************************************************************************\
+**                                                                           **
+** Linux Call Router                                                         **
+**                                                                           **
+**---------------------------------------------------------------------------**
+** Copyright: Andreas Eversberg                                              **
+**                                                                           **
+** Administration tool header file                                           **
+**                                                                           **
+\*****************************************************************************/
+
+#define SOCKET_NAME "/var/run/LCR.socket"
+
+/* structures that define message between admin-tool and pbx */
+
+enum { /* messages */
+       ADMIN_REQUEST_CMD_INTERFACE,
+       ADMIN_RESPONSE_CMD_INTERFACE,
+       ADMIN_REQUEST_CMD_ROUTE,
+       ADMIN_RESPONSE_CMD_ROUTE,
+       ADMIN_REQUEST_CMD_DIAL,
+       ADMIN_RESPONSE_CMD_DIAL,
+       ADMIN_REQUEST_CMD_RELEASE,
+       ADMIN_RESPONSE_CMD_RELEASE,
+       ADMIN_REQUEST_CMD_BLOCK,
+       ADMIN_RESPONSE_CMD_BLOCK,
+       ADMIN_REQUEST_STATE,
+       ADMIN_RESPONSE_STATE,
+       ADMIN_RESPONSE_S_REMOTE,
+       ADMIN_RESPONSE_S_INTERFACE,
+       ADMIN_RESPONSE_S_PORT,
+       ADMIN_RESPONSE_S_EPOINT,
+       ADMIN_RESPONSE_S_JOIN,
+       ADMIN_CALL_SETUP,
+       ADMIN_CALL_SETUP_ACK,
+       ADMIN_CALL_PROCEEDING,
+       ADMIN_CALL_ALERTING,
+       ADMIN_CALL_CONNECT,
+       ADMIN_CALL_DISCONNECT,
+       ADMIN_CALL_RELEASE,
+       ADMIN_CALL_NOTIFY,
+       ADMIN_TRACE_REQUEST,
+       ADMIN_TRACE_RESPONSE,
+       ADMIN_MESSAGE,
+};
+
+struct admin_response_cmd {
+       int             error;          /* error code 0 = ok*/
+       char            message[256];   /* info / response text */
+       int             block;
+       int             portnum;
+};
+
+struct admin_response_state {
+       char            version_string[64];
+       struct tm       tm;
+       char            logfile[128];
+       int             interfaces;
+       int             remotes;
+       int             joins;
+       int             epoints;
+       int             ports;
+};
+
+struct admin_response_interface {
+       char            interface_name[32];
+       int             portnum;
+       int             block;
+       int             ntmode;
+       int             ptp;
+       int             pri;
+       int             extension;
+       int             use; /* number of ports that use this interface */
+       int             l1link; /* down(0) or up(1) */
+       int             l2link; /* down(0) or up(1) */
+       int             channels;
+       char            busy[256]; /* if port is idle(0) busy(1) */
+       unsigned long   port[256]; /* current port */
+};
+
+struct admin_response_remote {
+       char            name[32]; /* name of remote application */
+};
+
+struct admin_response_join {
+       unsigned long   serial; /* join serial number */
+       char            remote[32]; /* remote application name */
+       unsigned long   partyline;
+};
+
+struct admin_response_epoint {
+       unsigned long   serial;
+       unsigned long   join; /* link to join */
+//     int             join_notify; /* if relation notified on hold */
+//     int             join_hold; /* if relation on hold */
+       int             rx_state;
+       int             tx_state;
+       int             state;
+       char            terminal[16];
+       char            callerid[64];
+       char            dialing[64];
+       char            action[32];
+       int             park; /* if parked */
+       int             park_len;
+       unsigned char   park_callid[8];
+       int             crypt; /* crypt state */
+};
+
+struct admin_response_port {
+       unsigned long   serial; /* port serial number */
+       char            name[64]; /* name of port */
+       unsigned long   epoint; /* link to epoint */
+       int             state;
+       int             isdn; /* if port is isdn */
+       int             isdn_chan; /* bchannel number */
+       int             isdn_hold; /* on hold */
+       int             isdn_ces; /* ces to use (>=0)*/
+};
+
+struct admin_call {
+       char            interface[64]; /* name of port */
+       char            callerid[64]; /* use caller id */
+       char            dialing[64]; /* number to dial */
+       int             present; /* presentation */
+       int             cause; /* cause to send */
+       int             location;
+       int             notify;
+       int             bc_capa;
+       int             bc_mode;
+       int             bc_info1;
+       int             hlc;
+       int             exthlc;
+};
+
+struct admin_trace_req {
+       int             detail;
+       char            category;
+       int             port;
+       char            interface[64];
+       char            caller[34];
+       char            dialing[64];
+};
+
+struct admin_trace_rsp {
+       char            text[1024];
+};
+
+struct admin_msg {
+       int             type; /* type of message */
+       unsigned long   ref; /* reference to individual endpoints */
+       union parameter param; /* parameter union */
+};
+
+struct admin_message {
+       int message; /* type of admin message */
+       union u {
+               struct admin_response_cmd       x;
+               struct admin_response_state     s;
+               struct admin_response_interface i;
+               struct admin_response_port      p;
+               struct admin_response_epoint    e;
+               struct admin_response_join      j;
+               struct admin_response_remote    r;
+               struct admin_call               call;
+               struct admin_msg                msg;
+               struct admin_trace_req          trace_req;
+               struct admin_trace_rsp          trace_rsp;
+       } u;
+};
+
+/* call states */
+enum {
+       ADMIN_STATE_IDLE,
+       ADMIN_STATE_IN_SETUP,
+       ADMIN_STATE_OUT_SETUP,
+       ADMIN_STATE_IN_OVERLAP,
+       ADMIN_STATE_OUT_OVERLAP,
+       ADMIN_STATE_IN_PROCEEDING,
+       ADMIN_STATE_OUT_PROCEEDING,
+       ADMIN_STATE_IN_ALERTING,
+       ADMIN_STATE_OUT_ALERTING,
+       ADMIN_STATE_CONNECT,
+       ADMIN_STATE_IN_DISCONNECT,
+       ADMIN_STATE_OUT_DISCONNECT,
+};