diff options
Diffstat (limited to 'net/irda/irnet/irnet_irda.h')
-rw-r--r-- | net/irda/irnet/irnet_irda.h | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/net/irda/irnet/irnet_irda.h b/net/irda/irnet/irnet_irda.h new file mode 100644 index 000000000000..f2fecd32d8f6 --- /dev/null +++ b/net/irda/irnet/irnet_irda.h | |||
@@ -0,0 +1,186 @@ | |||
1 | /* | ||
2 | * IrNET protocol module : Synchronous PPP over an IrDA socket. | ||
3 | * | ||
4 | * Jean II - HPL `00 - <jt@hpl.hp.com> | ||
5 | * | ||
6 | * This file contains all definitions and declarations necessary for the | ||
7 | * IRDA part of the IrNET module (dealing with IrTTP, IrIAS and co). | ||
8 | * This file is a private header, so other modules don't want to know | ||
9 | * what's in there... | ||
10 | */ | ||
11 | |||
12 | #ifndef IRNET_IRDA_H | ||
13 | #define IRNET_IRDA_H | ||
14 | |||
15 | /***************************** INCLUDES *****************************/ | ||
16 | /* Please add other headers in irnet.h */ | ||
17 | |||
18 | #include "irnet.h" /* Module global include */ | ||
19 | |||
20 | /************************ CONSTANTS & MACROS ************************/ | ||
21 | |||
22 | /* | ||
23 | * Name of the service (socket name) used by IrNET | ||
24 | */ | ||
25 | /* IAS object name (or part of it) */ | ||
26 | #define IRNET_SERVICE_NAME "IrNetv1" | ||
27 | /* IAS attribute */ | ||
28 | #define IRNET_IAS_VALUE "IrDA:TinyTP:LsapSel" | ||
29 | /* LMP notify name for client (only for /proc/net/irda/irlmp) */ | ||
30 | #define IRNET_NOTIFY_NAME "IrNET socket" | ||
31 | /* LMP notify name for server (only for /proc/net/irda/irlmp) */ | ||
32 | #define IRNET_NOTIFY_NAME_SERV "IrNET server" | ||
33 | |||
34 | /****************************** TYPES ******************************/ | ||
35 | |||
36 | /* | ||
37 | * This is the main structure where we store all the data pertaining to | ||
38 | * the IrNET server (listen for connection requests) and the root | ||
39 | * of the IrNET socket list | ||
40 | */ | ||
41 | typedef struct irnet_root | ||
42 | { | ||
43 | irnet_socket s; /* To pretend we are a client... */ | ||
44 | |||
45 | /* Generic stuff */ | ||
46 | int magic; /* Paranoia */ | ||
47 | int running; /* Are we operational ? */ | ||
48 | |||
49 | /* Link list of all IrNET instances opened */ | ||
50 | hashbin_t * list; | ||
51 | spinlock_t spinlock; /* Serialize access to the list */ | ||
52 | /* Note : the way hashbin has been designed is absolutely not | ||
53 | * reentrant, beware... So, we blindly protect all with spinlock */ | ||
54 | |||
55 | /* Handle for the hint bit advertised in IrLMP */ | ||
56 | void * skey; | ||
57 | |||
58 | /* Server socket part */ | ||
59 | struct ias_object * ias_obj; /* Our service name + lsap in IAS */ | ||
60 | |||
61 | } irnet_root; | ||
62 | |||
63 | |||
64 | /**************************** PROTOTYPES ****************************/ | ||
65 | |||
66 | /* ----------------------- CONTROL CHANNEL ----------------------- */ | ||
67 | static void | ||
68 | irnet_post_event(irnet_socket *, | ||
69 | irnet_event, | ||
70 | __u32, | ||
71 | __u32, | ||
72 | char *, | ||
73 | __u16); | ||
74 | /* ----------------------- IRDA SUBROUTINES ----------------------- */ | ||
75 | static inline int | ||
76 | irnet_open_tsap(irnet_socket *); | ||
77 | static inline __u8 | ||
78 | irnet_ias_to_tsap(irnet_socket *, | ||
79 | int, | ||
80 | struct ias_value *); | ||
81 | static inline int | ||
82 | irnet_find_lsap_sel(irnet_socket *); | ||
83 | static inline int | ||
84 | irnet_connect_tsap(irnet_socket *); | ||
85 | static inline int | ||
86 | irnet_discover_next_daddr(irnet_socket *); | ||
87 | static inline int | ||
88 | irnet_discover_daddr_and_lsap_sel(irnet_socket *); | ||
89 | static inline int | ||
90 | irnet_dname_to_daddr(irnet_socket *); | ||
91 | /* ------------------------ SERVER SOCKET ------------------------ */ | ||
92 | static inline int | ||
93 | irnet_daddr_to_dname(irnet_socket *); | ||
94 | static inline irnet_socket * | ||
95 | irnet_find_socket(irnet_socket *); | ||
96 | static inline int | ||
97 | irnet_connect_socket(irnet_socket *, | ||
98 | irnet_socket *, | ||
99 | struct qos_info *, | ||
100 | __u32, | ||
101 | __u8); | ||
102 | static inline void | ||
103 | irnet_disconnect_server(irnet_socket *, | ||
104 | struct sk_buff *); | ||
105 | static inline int | ||
106 | irnet_setup_server(void); | ||
107 | static inline void | ||
108 | irnet_destroy_server(void); | ||
109 | /* ---------------------- IRDA-TTP CALLBACKS ---------------------- */ | ||
110 | static int | ||
111 | irnet_data_indication(void *, /* instance */ | ||
112 | void *, /* sap */ | ||
113 | struct sk_buff *); | ||
114 | static void | ||
115 | irnet_disconnect_indication(void *, | ||
116 | void *, | ||
117 | LM_REASON, | ||
118 | struct sk_buff *); | ||
119 | static void | ||
120 | irnet_connect_confirm(void *, | ||
121 | void *, | ||
122 | struct qos_info *, | ||
123 | __u32, | ||
124 | __u8, | ||
125 | struct sk_buff *); | ||
126 | static void | ||
127 | irnet_flow_indication(void *, | ||
128 | void *, | ||
129 | LOCAL_FLOW); | ||
130 | static void | ||
131 | irnet_status_indication(void *, | ||
132 | LINK_STATUS, | ||
133 | LOCK_STATUS); | ||
134 | static void | ||
135 | irnet_connect_indication(void *, | ||
136 | void *, | ||
137 | struct qos_info *, | ||
138 | __u32, | ||
139 | __u8, | ||
140 | struct sk_buff *); | ||
141 | /* -------------------- IRDA-IAS/LMP CALLBACKS -------------------- */ | ||
142 | static void | ||
143 | irnet_getvalue_confirm(int, | ||
144 | __u16, | ||
145 | struct ias_value *, | ||
146 | void *); | ||
147 | static void | ||
148 | irnet_discovervalue_confirm(int, | ||
149 | __u16, | ||
150 | struct ias_value *, | ||
151 | void *); | ||
152 | #ifdef DISCOVERY_EVENTS | ||
153 | static void | ||
154 | irnet_discovery_indication(discinfo_t *, | ||
155 | DISCOVERY_MODE, | ||
156 | void *); | ||
157 | static void | ||
158 | irnet_expiry_indication(discinfo_t *, | ||
159 | DISCOVERY_MODE, | ||
160 | void *); | ||
161 | #endif | ||
162 | /* -------------------------- PROC ENTRY -------------------------- */ | ||
163 | #ifdef CONFIG_PROC_FS | ||
164 | static int | ||
165 | irnet_proc_read(char *, | ||
166 | char **, | ||
167 | off_t, | ||
168 | int); | ||
169 | #endif /* CONFIG_PROC_FS */ | ||
170 | |||
171 | /**************************** VARIABLES ****************************/ | ||
172 | |||
173 | /* | ||
174 | * The IrNET server. Listen to connection requests and co... | ||
175 | */ | ||
176 | static struct irnet_root irnet_server; | ||
177 | |||
178 | /* Control channel stuff (note : extern) */ | ||
179 | struct irnet_ctrl_channel irnet_events; | ||
180 | |||
181 | /* The /proc/net/irda directory, defined elsewhere... */ | ||
182 | #ifdef CONFIG_PROC_FS | ||
183 | extern struct proc_dir_entry *proc_irda; | ||
184 | #endif /* CONFIG_PROC_FS */ | ||
185 | |||
186 | #endif /* IRNET_IRDA_H */ | ||