1 | /* |
2 | CMTP implementation for Linux Bluetooth stack (BlueZ). |
3 | Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org> |
4 | |
5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License version 2 as |
7 | published by the Free Software Foundation; |
8 | |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
10 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
11 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. |
12 | IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY |
13 | CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES |
14 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
15 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
16 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
17 | |
18 | ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, |
19 | COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS |
20 | SOFTWARE IS DISCLAIMED. |
21 | */ |
22 | |
23 | #ifndef __CMTP_H |
24 | #define __CMTP_H |
25 | |
26 | #include <linux/types.h> |
27 | #include <net/bluetooth/bluetooth.h> |
28 | |
29 | #define BTNAMSIZ 21 |
30 | |
31 | /* CMTP ioctl defines */ |
32 | #define CMTPCONNADD _IOW('C', 200, int) |
33 | #define CMTPCONNDEL _IOW('C', 201, int) |
34 | #define CMTPGETCONNLIST _IOR('C', 210, int) |
35 | #define CMTPGETCONNINFO _IOR('C', 211, int) |
36 | |
37 | #define CMTP_LOOPBACK 0 |
38 | |
39 | struct cmtp_connadd_req { |
40 | int sock; /* Connected socket */ |
41 | __u32 flags; |
42 | }; |
43 | |
44 | struct cmtp_conndel_req { |
45 | bdaddr_t bdaddr; |
46 | __u32 flags; |
47 | }; |
48 | |
49 | struct cmtp_conninfo { |
50 | bdaddr_t bdaddr; |
51 | __u32 flags; |
52 | __u16 state; |
53 | int num; |
54 | }; |
55 | |
56 | struct cmtp_connlist_req { |
57 | __u32 cnum; |
58 | struct cmtp_conninfo __user *ci; |
59 | }; |
60 | |
61 | int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock); |
62 | int cmtp_del_connection(struct cmtp_conndel_req *req); |
63 | int cmtp_get_connlist(struct cmtp_connlist_req *req); |
64 | int cmtp_get_conninfo(struct cmtp_conninfo *ci); |
65 | |
66 | /* CMTP session defines */ |
67 | #define CMTP_INTEROP_TIMEOUT (HZ * 5) |
68 | #define CMTP_INITIAL_MSGNUM 0xff00 |
69 | |
70 | struct cmtp_session { |
71 | struct list_head list; |
72 | |
73 | struct socket *sock; |
74 | |
75 | bdaddr_t bdaddr; |
76 | |
77 | unsigned long state; |
78 | unsigned long flags; |
79 | |
80 | uint mtu; |
81 | |
82 | char name[BTNAMSIZ]; |
83 | |
84 | atomic_t terminate; |
85 | struct task_struct *task; |
86 | |
87 | wait_queue_head_t wait; |
88 | |
89 | int ncontroller; |
90 | int num; |
91 | struct capi_ctr ctrl; |
92 | |
93 | struct list_head applications; |
94 | |
95 | unsigned long blockids; |
96 | int msgnum; |
97 | |
98 | struct sk_buff_head transmit; |
99 | |
100 | struct sk_buff *reassembly[16]; |
101 | }; |
102 | |
103 | struct cmtp_application { |
104 | struct list_head list; |
105 | |
106 | unsigned long state; |
107 | int err; |
108 | |
109 | __u16 appl; |
110 | __u16 mapping; |
111 | |
112 | __u16 msgnum; |
113 | }; |
114 | |
115 | struct cmtp_scb { |
116 | int id; |
117 | int data; |
118 | }; |
119 | |
120 | int cmtp_attach_device(struct cmtp_session *session); |
121 | void cmtp_detach_device(struct cmtp_session *session); |
122 | |
123 | void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb); |
124 | |
125 | /* CMTP init defines */ |
126 | int cmtp_init_sockets(void); |
127 | void cmtp_cleanup_sockets(void); |
128 | |
129 | #endif /* __CMTP_H */ |
130 | |