1 /*****************************************************************************\
5 **---------------------------------------------------------------------------**
6 ** Copyright: Andreas Eversberg **
8 ** interface header file **
10 \*****************************************************************************/
12 enum { /* interface type */
17 /* channel selection -1 is reserved for "no ie" */
19 #define CHANNEL_ANY -3
20 #define CHANNEL_FREE -100
23 enum { HUNT_LINEAR = 0,
33 enum { IS_DEFAULT = 0,
38 struct select_channel {
39 struct select_channel *next;
43 struct interface_port {
44 struct interface_port *next;
45 struct interface *interface; /* link to interface */
46 struct mISDNport *mISDNport; /* link to port */
47 int portnum; /* port number */
48 char portname[64]; /* alternately: port name */
49 int ptp; /* force load stack in PTP mode */
50 int ptmp; /* force load stack in PTP mode */
51 int nt; /* load stack in NT-mode */
52 int l2hold; /* hold layer 2 (1=force, -1=disable */
53 int channel_force; /* forces channel by protocol */
54 int nodtmf; /* disables DTMF */
55 struct select_channel *out_channel; /* list of channels to select */
56 struct select_channel *in_channel; /* the same for incoming channels */
57 int block; /* set if interface is blocked */
67 struct interface_msn {
68 struct interface_msn *next;
69 char msn[64]; /* msn */
72 struct interface_screen {
73 struct interface_screen *next;
74 char match[64]; /* what caller id to match */
75 int match_type; /* number type */
76 int match_present; /* presentation type */
77 char result[64]; /* what caller id to change to */
78 int result_type; /* number type */
79 int result_present; /* presentation type */
83 struct interface *next;
84 char name[64]; /* name of interface */
85 int extension; /* calls are handled as extension */
86 int is_tones; /* generate tones */
87 int is_earlyb; /* bridge tones during call setup */
88 int hunt; /* select algorithm */
89 int hunt_next; /* ifport index to start hunt */
90 struct interface_port *ifport; /* link to interface port list */
91 struct interface_msn *ifmsn; /* link to interface msn list */
92 struct interface_screen *ifscreen_in; /* link to screening list */
93 struct interface_screen *ifscreen_out; /* link to screening list */
94 int tx_gain, rx_gain; /* filter gain */
95 char pipeline[256]; /* filter pipeline */
96 unsigned char bf_key[56]; /* filter blowfish */
97 int bf_len; /* filter length of blowfish */
100 struct interface_param {
102 /* return value (pointer of function)(args ...) */
103 int (*func)(struct interface *, char *, int, char *, char*);
109 extern struct interface *interface_first;
110 extern struct interface *interface_newlist;
112 extern char interface_error[256];
113 struct interface *read_interfaces(void);
114 void free_interfaces(struct interface *interface_start);
115 void relink_interfaces(void);
116 void load_port(struct interface_port *ifport);
117 void doc_interface(void);
118 void do_screen(int out, char *id, int idsize, int *type, int *present, struct interface *interface);