ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / net / irda / af_irda.h
1 /*********************************************************************
2  *                
3  * Filename:      af_irda.h
4  * Version:       1.0
5  * Description:   IrDA sockets declarations
6  * Status:        Stable
7  * Author:        Dag Brattli <dagb@cs.uit.no>
8  * Created at:    Tue Dec  9 21:13:12 1997
9  * Modified at:   Fri Jan 28 13:16:32 2000
10  * Modified by:   Dag Brattli <dagb@cs.uit.no>
11  * 
12  *     Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved.
13  *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
14  *      
15  *     This program is free software; you can redistribute it and/or 
16  *     modify it under the terms of the GNU General Public License as 
17  *     published by the Free Software Foundation; either version 2 of 
18  *     the License, or (at your option) any later version.
19  *  
20  *     Neither Dag Brattli nor University of Tromsø admit liability nor
21  *     provide warranty for any of this software. This material is 
22  *     provided "AS-IS" and at no charge.
23  *     
24  ********************************************************************/
25
26 #ifndef AF_IRDA_H
27 #define AF_IRDA_H
28
29 #include <linux/irda.h>
30 #include <net/irda/irda.h>
31 #include <net/irda/iriap.h>             /* struct iriap_cb */
32 #include <net/irda/irias_object.h>      /* struct ias_value */
33 #include <net/irda/irlmp.h>             /* struct lsap_cb */
34 #include <net/irda/irttp.h>             /* struct tsap_cb */
35 #include <net/irda/discovery.h>         /* struct discovery_t */
36
37 /* IrDA Socket */
38 struct irda_sock {
39         __u32 saddr;          /* my local address */
40         __u32 daddr;          /* peer address */
41
42         struct lsap_cb *lsap; /* LSAP used by Ultra */
43         __u8  pid;            /* Protocol IP (PID) used by Ultra */
44
45         struct tsap_cb *tsap; /* TSAP used by this connection */
46         __u8 dtsap_sel;       /* remote TSAP address */
47         __u8 stsap_sel;       /* local TSAP address */
48         
49         __u32 max_sdu_size_rx;
50         __u32 max_sdu_size_tx;
51         __u32 max_data_size;
52         __u8  max_header_size;
53         struct qos_info qos_tx;
54
55         __u16_host_order mask;           /* Hint bits mask */
56         __u16_host_order hints;          /* Hint bits */
57
58         void *ckey;           /* IrLMP client handle */
59         void *skey;           /* IrLMP service handle */
60
61         struct ias_object *ias_obj;   /* Our service name + lsap in IAS */
62         struct iriap_cb *iriap;       /* Used to query remote IAS */
63         struct ias_value *ias_result; /* Result of remote IAS query */
64
65         hashbin_t *cachelog;            /* Result of discovery query */
66         __u32 cachedaddr;       /* Result of selective discovery query */
67
68         int nslots;           /* Number of slots to use for discovery */
69
70         int errno;            /* status of the IAS query */
71
72         struct sock *sk;
73         wait_queue_head_t query_wait;   /* Wait for the answer to a query */
74         struct timer_list watchdog;     /* Timeout for discovery */
75
76         LOCAL_FLOW tx_flow;
77         LOCAL_FLOW rx_flow;
78 };
79
80 #define irda_sk(__sk) ((struct irda_sock *)(__sk)->sk_protinfo)
81
82 #endif /* AF_IRDA_H */