Commit | Line | Data |
---|---|---|
1da177e4 LT |
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, | |
6819bc2e | 149 | __u16, |
1da177e4 LT |
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 | |
1da177e4 LT |
162 | |
163 | /**************************** VARIABLES ****************************/ | |
164 | ||
165 | /* | |
166 | * The IrNET server. Listen to connection requests and co... | |
167 | */ | |
168 | static struct irnet_root irnet_server; | |
169 | ||
170 | /* Control channel stuff (note : extern) */ | |
171 | struct irnet_ctrl_channel irnet_events; | |
172 | ||
173 | /* The /proc/net/irda directory, defined elsewhere... */ | |
174 | #ifdef CONFIG_PROC_FS | |
175 | extern struct proc_dir_entry *proc_irda; | |
176 | #endif /* CONFIG_PROC_FS */ | |
177 | ||
178 | #endif /* IRNET_IRDA_H */ |