• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include <net/sock.h>
37 
38 /* IrDA Socket */
39 struct irda_sock {
40 	/* struct sock has to be the first member of irda_sock */
41 	struct sock sk;
42 	__u32 saddr;          /* my local address */
43 	__u32 daddr;          /* peer address */
44 
45 	struct lsap_cb *lsap; /* LSAP used by Ultra */
46 	__u8  pid;            /* Protocol IP (PID) used by Ultra */
47 
48 	struct tsap_cb *tsap; /* TSAP used by this connection */
49 	__u8 dtsap_sel;       /* remote TSAP address */
50 	__u8 stsap_sel;       /* local TSAP address */
51 
52 	__u32 max_sdu_size_rx;
53 	__u32 max_sdu_size_tx;
54 	__u32 max_data_size;
55 	__u8  max_header_size;
56 	struct qos_info qos_tx;
57 
58 	__u16_host_order mask;           /* Hint bits mask */
59 	__u16_host_order hints;          /* Hint bits */
60 
61 	void *ckey;           /* IrLMP client handle */
62 	void *skey;           /* IrLMP service handle */
63 
64 	struct ias_object *ias_obj;   /* Our service name + lsap in IAS */
65 	struct iriap_cb *iriap;	      /* Used to query remote IAS */
66 	struct ias_value *ias_result; /* Result of remote IAS query */
67 
68 	hashbin_t *cachelog;		/* Result of discovery query */
69 	__u32 cachedaddr;	/* Result of selective discovery query */
70 
71 	int nslots;           /* Number of slots to use for discovery */
72 
73 	int errno;            /* status of the IAS query */
74 
75 	wait_queue_head_t query_wait;	/* Wait for the answer to a query */
76 	struct timer_list watchdog;	/* Timeout for discovery */
77 
78 	LOCAL_FLOW tx_flow;
79 	LOCAL_FLOW rx_flow;
80 };
81 
irda_sk(struct sock * sk)82 static inline struct irda_sock *irda_sk(struct sock *sk)
83 {
84 	return (struct irda_sock *)sk;
85 }
86 
87 #endif /* AF_IRDA_H */
88