11da177e4SLinus Torvalds /* 21da177e4SLinus Torvalds CMTP implementation for Linux Bluetooth stack (BlueZ). 31da177e4SLinus Torvalds Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org> 41da177e4SLinus Torvalds 51da177e4SLinus Torvalds This program is free software; you can redistribute it and/or modify 61da177e4SLinus Torvalds it under the terms of the GNU General Public License version 2 as 71da177e4SLinus Torvalds published by the Free Software Foundation; 81da177e4SLinus Torvalds 91da177e4SLinus Torvalds THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 101da177e4SLinus Torvalds OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 111da177e4SLinus Torvalds FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. 121da177e4SLinus Torvalds IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY 131da177e4SLinus Torvalds CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES 141da177e4SLinus Torvalds WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 151da177e4SLinus Torvalds ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 161da177e4SLinus Torvalds OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 171da177e4SLinus Torvalds 181da177e4SLinus Torvalds ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, 191da177e4SLinus Torvalds COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS 201da177e4SLinus Torvalds SOFTWARE IS DISCLAIMED. 211da177e4SLinus Torvalds */ 221da177e4SLinus Torvalds 231da177e4SLinus Torvalds #ifndef __CMTP_H 241da177e4SLinus Torvalds #define __CMTP_H 251da177e4SLinus Torvalds 261da177e4SLinus Torvalds #include <linux/types.h> 271da177e4SLinus Torvalds #include <net/bluetooth/bluetooth.h> 281da177e4SLinus Torvalds 29*713baf3dSColin Ian King #define BTNAMSIZ 21 301da177e4SLinus Torvalds 311da177e4SLinus Torvalds /* CMTP ioctl defines */ 321da177e4SLinus Torvalds #define CMTPCONNADD _IOW('C', 200, int) 331da177e4SLinus Torvalds #define CMTPCONNDEL _IOW('C', 201, int) 341da177e4SLinus Torvalds #define CMTPGETCONNLIST _IOR('C', 210, int) 351da177e4SLinus Torvalds #define CMTPGETCONNINFO _IOR('C', 211, int) 361da177e4SLinus Torvalds 371da177e4SLinus Torvalds #define CMTP_LOOPBACK 0 381da177e4SLinus Torvalds 391da177e4SLinus Torvalds struct cmtp_connadd_req { 40e0e185efSSzymon Janc int sock; /* Connected socket */ 411da177e4SLinus Torvalds __u32 flags; 421da177e4SLinus Torvalds }; 431da177e4SLinus Torvalds 441da177e4SLinus Torvalds struct cmtp_conndel_req { 451da177e4SLinus Torvalds bdaddr_t bdaddr; 461da177e4SLinus Torvalds __u32 flags; 471da177e4SLinus Torvalds }; 481da177e4SLinus Torvalds 491da177e4SLinus Torvalds struct cmtp_conninfo { 501da177e4SLinus Torvalds bdaddr_t bdaddr; 511da177e4SLinus Torvalds __u32 flags; 521da177e4SLinus Torvalds __u16 state; 531da177e4SLinus Torvalds int num; 541da177e4SLinus Torvalds }; 551da177e4SLinus Torvalds 561da177e4SLinus Torvalds struct cmtp_connlist_req { 571da177e4SLinus Torvalds __u32 cnum; 581da177e4SLinus Torvalds struct cmtp_conninfo __user *ci; 591da177e4SLinus Torvalds }; 601da177e4SLinus Torvalds 611da177e4SLinus Torvalds int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock); 621da177e4SLinus Torvalds int cmtp_del_connection(struct cmtp_conndel_req *req); 631da177e4SLinus Torvalds int cmtp_get_connlist(struct cmtp_connlist_req *req); 641da177e4SLinus Torvalds int cmtp_get_conninfo(struct cmtp_conninfo *ci); 651da177e4SLinus Torvalds 661da177e4SLinus Torvalds /* CMTP session defines */ 671da177e4SLinus Torvalds #define CMTP_INTEROP_TIMEOUT (HZ * 5) 681da177e4SLinus Torvalds #define CMTP_INITIAL_MSGNUM 0xff00 691da177e4SLinus Torvalds 701da177e4SLinus Torvalds struct cmtp_session { 711da177e4SLinus Torvalds struct list_head list; 721da177e4SLinus Torvalds 731da177e4SLinus Torvalds struct socket *sock; 741da177e4SLinus Torvalds 751da177e4SLinus Torvalds bdaddr_t bdaddr; 761da177e4SLinus Torvalds 771da177e4SLinus Torvalds unsigned long state; 781da177e4SLinus Torvalds unsigned long flags; 791da177e4SLinus Torvalds 801da177e4SLinus Torvalds uint mtu; 811da177e4SLinus Torvalds 821da177e4SLinus Torvalds char name[BTNAMSIZ]; 831da177e4SLinus Torvalds 847176522cSPeter Hurley atomic_t terminate; 85fada4ac3SSzymon Janc struct task_struct *task; 861da177e4SLinus Torvalds 871da177e4SLinus Torvalds wait_queue_head_t wait; 881da177e4SLinus Torvalds 891da177e4SLinus Torvalds int ncontroller; 901da177e4SLinus Torvalds int num; 911da177e4SLinus Torvalds struct capi_ctr ctrl; 921da177e4SLinus Torvalds 931da177e4SLinus Torvalds struct list_head applications; 941da177e4SLinus Torvalds 951da177e4SLinus Torvalds unsigned long blockids; 961da177e4SLinus Torvalds int msgnum; 971da177e4SLinus Torvalds 981da177e4SLinus Torvalds struct sk_buff_head transmit; 991da177e4SLinus Torvalds 1001da177e4SLinus Torvalds struct sk_buff *reassembly[16]; 1011da177e4SLinus Torvalds }; 1021da177e4SLinus Torvalds 1031da177e4SLinus Torvalds struct cmtp_application { 1041da177e4SLinus Torvalds struct list_head list; 1051da177e4SLinus Torvalds 1061da177e4SLinus Torvalds unsigned long state; 1071da177e4SLinus Torvalds int err; 1081da177e4SLinus Torvalds 1091da177e4SLinus Torvalds __u16 appl; 1101da177e4SLinus Torvalds __u16 mapping; 1111da177e4SLinus Torvalds 1121da177e4SLinus Torvalds __u16 msgnum; 1131da177e4SLinus Torvalds }; 1141da177e4SLinus Torvalds 1151da177e4SLinus Torvalds struct cmtp_scb { 1161da177e4SLinus Torvalds int id; 1171da177e4SLinus Torvalds int data; 1181da177e4SLinus Torvalds }; 1191da177e4SLinus Torvalds 1201da177e4SLinus Torvalds int cmtp_attach_device(struct cmtp_session *session); 1211da177e4SLinus Torvalds void cmtp_detach_device(struct cmtp_session *session); 1221da177e4SLinus Torvalds 1231da177e4SLinus Torvalds void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb); 1241da177e4SLinus Torvalds 1251da177e4SLinus Torvalds /* CMTP init defines */ 1261da177e4SLinus Torvalds int cmtp_init_sockets(void); 1271da177e4SLinus Torvalds void cmtp_cleanup_sockets(void); 1281da177e4SLinus Torvalds 1291da177e4SLinus Torvalds #endif /* __CMTP_H */ 130