1 /* 2 * see notice in l1oip.c 3 */ 4 5 /* debugging */ 6 #define DEBUG_L1OIP_INIT 0x00010000 7 #define DEBUG_L1OIP_SOCKET 0x00020000 8 #define DEBUG_L1OIP_MGR 0x00040000 9 #define DEBUG_L1OIP_MSG 0x00080000 10 11 /* enable to disorder received bchannels by sequence 2143658798... */ 12 /* 13 #define REORDER_DEBUG 14 */ 15 16 /* frames */ 17 #define L1OIP_MAX_LEN 2048 /* max packet size form l2 */ 18 #define L1OIP_MAX_PERFRAME 1400 /* max data size in one frame */ 19 20 21 /* timers */ 22 #define L1OIP_KEEPALIVE 15 23 #define L1OIP_TIMEOUT 65 24 25 26 /* socket */ 27 #define L1OIP_DEFAULTPORT 931 28 29 30 /* channel structure */ 31 struct l1oip_chan { 32 struct dchannel *dch; 33 struct bchannel *bch; 34 u32 tx_counter; /* counts xmit bytes/packets */ 35 u32 rx_counter; /* counts recv bytes/packets */ 36 u32 codecstate; /* used by codec to save data */ 37 #ifdef REORDER_DEBUG 38 int disorder_flag; 39 struct sk_buff *disorder_skb; 40 u32 disorder_cnt; 41 #endif 42 }; 43 44 45 /* card structure */ 46 struct l1oip { 47 struct list_head list; 48 49 /* card */ 50 int registered; /* if registered with mISDN */ 51 char name[MISDN_MAX_IDLEN]; 52 int idx; /* card index */ 53 int pri; /* 1=pri, 0=bri */ 54 int d_idx; /* current dchannel number */ 55 int b_num; /* number of bchannels */ 56 u32 id; /* id of connection */ 57 int ondemand; /* if transmis. is on demand */ 58 int bundle; /* bundle channels in one frm */ 59 int codec; /* codec to use for transmis. */ 60 int limit; /* limit number of bchannels */ 61 62 /* timer */ 63 struct timer_list keep_tl; 64 struct timer_list timeout_tl; 65 int timeout_on; 66 struct work_struct workq; 67 68 /* socket */ 69 struct socket *socket; /* if set, socket is created */ 70 struct completion socket_complete;/* completion of sock thread */ 71 struct task_struct *socket_thread; 72 spinlock_t socket_lock; /* access sock outside thread */ 73 u32 remoteip; /* if all set, ip is assigned */ 74 u16 localport; /* must always be set */ 75 u16 remoteport; /* must always be set */ 76 struct sockaddr_in sin_local; /* local socket name */ 77 struct sockaddr_in sin_remote; /* remote socket name */ 78 struct msghdr sendmsg; /* ip message to send */ 79 struct kvec sendiov; /* iov for message */ 80 81 /* frame */ 82 struct l1oip_chan chan[128]; /* channel instances */ 83 }; 84 85 extern int l1oip_law_to_4bit(u8 *data, int len, u8 *result, u32 *state); 86 extern int l1oip_4bit_to_law(u8 *data, int len, u8 *result); 87 extern int l1oip_alaw_to_ulaw(u8 *data, int len, u8 *result); 88 extern int l1oip_ulaw_to_alaw(u8 *data, int len, u8 *result); 89 extern void l1oip_4bit_free(void); 90 extern int l1oip_4bit_alloc(int ulaw); 91