Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
l1oip.h
Go to the documentation of this file.
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 */
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 */
67 
68  /* socket */
69  struct socket *socket; /* if set, socket is created */
70  struct completion socket_complete;/* completion of sock 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);