fixup
[lcr.git] / interface.h
index f7d56c9..040c412 100644 (file)
@@ -8,10 +8,6 @@
 ** interface header file                                                     **
 **                                                                           **
 \*****************************************************************************/ 
-
-#define FLAG_PORT_USE          1
-#define FLAG_PORT_PTP          (1<<1)
-
 enum { /* interface type */
        IF_TYPE_DIRECT,
        IF_TYPE_EXTENSION,
@@ -48,12 +44,32 @@ struct interface_port {
        struct interface        *interface; /* link to interface */
        struct mISDNport        *mISDNport; /* link to port */
        int                     portnum; /* port number */
-       int                     ptp; /* load stack in PTP mode */
+       char                    portname[64]; /* alternately: port name */
+       int                     ptp; /* force load stack in PTP mode */
+       int                     ptmp; /* force load stack in PTP mode */
+       int                     nt; /* load stack in NT-mode */
+       int                     tespecial; /* special TE-mode behavior */
+       int                     l1hold; /* hold layer 1 (1=on, 0=off) */
+       int                     l2hold; /* hold layer 2 (1=force, -1=disable, 0=default) */
+       unsigned int            ss5; /* set, if SS5 signalling enabled, also holds feature bits */
        int                     channel_force; /* forces channel by protocol */
-       struct select_channel   *out_select; /* list of channels to select */
-       struct select_channel   *in_select; /* the same for incoming channels */
-//     int                     open; /* set if port is opened */
+       int                     nodtmf; /* disables DTMF */
+       int                     dtmf_threshold; /* DTMF level threshold */
+       struct select_channel   *out_channel; /* list of channels to select */
+       struct select_channel   *in_channel; /* the same for incoming channels */
        int                     block; /* set if interface is blocked */
+        int                    tout_setup;
+        int                    tout_dialing;
+        int                    tout_proceeding;
+        int                    tout_alerting;
+        int                    tout_disconnect;
+//     int                     tout_hold;
+//     int                     tout_park;
+       int                     dialmax; /* maximum number of digits to dial */
+       int                     nonotify; /* blocks outgoing notify messages  */
+       int                     pots_flash; /* allow flash button / keypulse to hold active call */
+       int                     pots_ring; /* after hangup let calls on hold ring the phone */
+       int                     pots_transfer; /* after hangup, two calls are transfered */
 };
 
 struct interface_msn {
@@ -71,33 +87,72 @@ struct interface_screen {
        int                     result_present; /* presentation type */
 };
 
-struct interface_filter {
-       struct interface_filter *next;
-       int                     filter; /* filter to use */
-       char                    parameter[256]; /* filter parameter */
-};
-
 struct interface {
        struct interface        *next;
        char                    name[64]; /* name of interface */
+       int                     app; /* application to use for interface (0 = PBX) */
+       char                    bridge_if[64]; /* name of destination interface for bridge application */
+       int                     external; /* interface used for external calls */
        int                     extension; /* calls are handled as extension */
        int                     is_tones; /* generate tones */
        int                     is_earlyb; /* bridge tones during call setup */
+       int                     shutdown; /* interface will not automatically be loaded */
        int                     hunt; /* select algorithm */
        int                     hunt_next; /* ifport index to start hunt */
        struct interface_port   *ifport; /* link to interface port list */
        struct interface_msn    *ifmsn; /* link to interface msn list */
        struct interface_screen *ifscreen_in; /* link to screening list */
        struct interface_screen *ifscreen_out; /* link to screening list */
-       struct interface_filter *iffilter; /* link to filter list */
+       int                     tx_gain, rx_gain; /* filter gain */
+       char                    tones_dir[128];
+       char                    pipeline[256]; /* filter pipeline */
+       unsigned char           bf_key[56]; /* filter blowfish */
+       int                     bf_len; /* filter length of blowfish */
+       int                     remote; /* interface is a remote app interface */
+       char                    remote_app[32]; /* name of remote application */
+       char                    remote_context[128]; /* context feld to use for remote application */
+#ifdef WITH_GSM_BS
+       int                     gsm_bs; /* interface is an GSM BS interface */
+       char                    gsm_bs_name[32]; /* name of bs */
+       int                     gsm_bs_hr; /* prefer half rate for MOT calls */
+#if 0
+       int                     gsm_bs_payloads;
+       unsigned char           gsm_bs_payload_types[8];
+#endif
+#endif
+#ifdef WITH_GSM_MS
+       int                     gsm_ms; /* interface is an GSM MS interface */
+       char                    gsm_ms_name[32]; /* name of ms */
+#endif
+#ifdef WITH_SIP
+       int                     sip; /* interface is a SIP interface */
+       char                    sip_local_peer[128];
+       char                    sip_remote_peer[128];
+       char                    sip_asserted_id[128];
+       char                    sip_auth_user[128];
+       char                    sip_auth_password[128];
+       char                    sip_auth_realm[128];
+       int                     sip_register;
+       char                    sip_register_user[128];
+       char                    sip_register_host[128];
+       int                     sip_register_interval; /* interval to register */
+       int                     sip_options_interval; /* timer to keepalive invite/register transactions */
+       char                    sip_public_ip[128];
+       char                    sip_stun_server[128];
+       int                     sip_stun_interval; /* timer to check own IP address */
+       void                    *sip_inst; /* sip instance */
+       unsigned short          rtp_port_from;
+       unsigned short          rtp_port_to;
+#endif
+       int                     rtp_bridge; /* bridge RTP directly (for calls comming from interface) */
 };
 
 struct interface_param {
-       char                    *name;
+       const char              *name;
 /*      return value           (pointer of function)(args ...) */
        int                     (*func)(struct interface *, char *, int, char *, char*);
-       char                    *usage;
-       char                    *help;
+       const char              *usage;
+       const char              *help;
 };
 
 
@@ -108,6 +163,8 @@ extern char interface_error[256];
 struct interface *read_interfaces(void);
 void free_interfaces(struct interface *interface_start);
 void relink_interfaces(void);
+void load_mISDN_port(struct interface_port *ifport);
 void doc_interface(void);
-
+void do_screen(int out, char *id, int idsize, int *type, int *present, const char *interface_name);
+struct interface *getinterfacebyname(const char *name);