This source file includes following definitions.
- TLV_OK
- TLV_CHECK
- TLV_GET_LEN
- TLV_SET_LEN
- TLV_CHECK_TYPE
- TLV_SET_TYPE
- TLV_SET
- TLV_LIST_INIT
- TLV_LIST_EMPTY
- TLV_LIST_CHECK
- TLV_LIST_DATA
- TLV_LIST_STEP
- TCM_SET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #ifndef _LINUX_TIPC_CONFIG_H_
39 #define _LINUX_TIPC_CONFIG_H_
40
41 #include <linux/types.h>
42 #include <linux/string.h>
43 #include <linux/tipc.h>
44 #include <asm/byteorder.h>
45
46 #ifndef __KERNEL__
47 #include <arpa/inet.h>
48 #endif
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 #define TIPC_CMD_NOOP 0x0000
76 #define TIPC_CMD_GET_NODES 0x0001
77 #define TIPC_CMD_GET_MEDIA_NAMES 0x0002
78 #define TIPC_CMD_GET_BEARER_NAMES 0x0003
79 #define TIPC_CMD_GET_LINKS 0x0004
80 #define TIPC_CMD_SHOW_NAME_TABLE 0x0005
81 #define TIPC_CMD_SHOW_PORTS 0x0006
82 #define TIPC_CMD_SHOW_LINK_STATS 0x000B
83 #define TIPC_CMD_SHOW_STATS 0x000F
84
85
86
87
88
89
90
91
92 #define TIPC_CMD_GET_REMOTE_MNG 0x4003
93 #define TIPC_CMD_GET_MAX_PORTS 0x4004
94 #define TIPC_CMD_GET_MAX_PUBL 0x4005
95 #define TIPC_CMD_GET_MAX_SUBSCR 0x4006
96 #define TIPC_CMD_GET_MAX_ZONES 0x4007
97 #define TIPC_CMD_GET_MAX_CLUSTERS 0x4008
98 #define TIPC_CMD_GET_MAX_NODES 0x4009
99 #define TIPC_CMD_GET_MAX_SLAVES 0x400A
100 #define TIPC_CMD_GET_NETID 0x400B
101
102 #define TIPC_CMD_ENABLE_BEARER 0x4101
103 #define TIPC_CMD_DISABLE_BEARER 0x4102
104 #define TIPC_CMD_SET_LINK_TOL 0x4107
105 #define TIPC_CMD_SET_LINK_PRI 0x4108
106 #define TIPC_CMD_SET_LINK_WINDOW 0x4109
107 #define TIPC_CMD_SET_LOG_SIZE 0x410A
108 #define TIPC_CMD_DUMP_LOG 0x410B
109 #define TIPC_CMD_RESET_LINK_STATS 0x410C
110
111
112
113
114
115
116
117 #define TIPC_CMD_SET_NODE_ADDR 0x8001
118 #define TIPC_CMD_SET_REMOTE_MNG 0x8003
119 #define TIPC_CMD_SET_MAX_PORTS 0x8004
120 #define TIPC_CMD_SET_MAX_PUBL 0x8005
121 #define TIPC_CMD_SET_MAX_SUBSCR 0x8006
122 #define TIPC_CMD_SET_MAX_ZONES 0x8007
123 #define TIPC_CMD_SET_MAX_CLUSTERS 0x8008
124 #define TIPC_CMD_SET_MAX_NODES 0x8009
125 #define TIPC_CMD_SET_MAX_SLAVES 0x800A
126 #define TIPC_CMD_SET_NETID 0x800B
127
128
129
130
131
132
133
134 #define TIPC_CMD_NOT_NET_ADMIN 0xC001
135
136
137
138
139
140 #define TIPC_TLV_NONE 0
141 #define TIPC_TLV_VOID 1
142 #define TIPC_TLV_UNSIGNED 2
143 #define TIPC_TLV_STRING 3
144 #define TIPC_TLV_LARGE_STRING 4
145 #define TIPC_TLV_ULTRA_STRING 5
146
147 #define TIPC_TLV_ERROR_STRING 16
148 #define TIPC_TLV_NET_ADDR 17
149 #define TIPC_TLV_MEDIA_NAME 18
150 #define TIPC_TLV_BEARER_NAME 19
151 #define TIPC_TLV_LINK_NAME 20
152 #define TIPC_TLV_NODE_INFO 21
153 #define TIPC_TLV_LINK_INFO 22
154 #define TIPC_TLV_BEARER_CONFIG 23
155 #define TIPC_TLV_LINK_CONFIG 24
156 #define TIPC_TLV_NAME_TBL_QUERY 25
157 #define TIPC_TLV_PORT_REF 26
158
159
160
161
162
163 #define TIPC_MIN_LINK_PRI 0
164 #define TIPC_DEF_LINK_PRI 10
165 #define TIPC_MAX_LINK_PRI 31
166 #define TIPC_MEDIA_LINK_PRI (TIPC_MAX_LINK_PRI + 1)
167
168
169
170
171
172 #define TIPC_MIN_LINK_TOL 50
173 #define TIPC_DEF_LINK_TOL 1500
174 #define TIPC_MAX_LINK_TOL 30000
175
176 #if (TIPC_MIN_LINK_TOL < 16)
177 #error "TIPC_MIN_LINK_TOL is too small (abort limit may be NaN)"
178 #endif
179
180
181
182
183
184 #define TIPC_MIN_LINK_WIN 16
185 #define TIPC_DEF_LINK_WIN 50
186 #define TIPC_MAX_LINK_WIN 8191
187
188
189
190
191
192 #define TIPC_DEF_LINK_UDP_MTU 14000
193
194 struct tipc_node_info {
195 __be32 addr;
196 __be32 up;
197 };
198
199 struct tipc_link_info {
200 __be32 dest;
201 __be32 up;
202 char str[TIPC_MAX_LINK_NAME];
203 };
204
205 struct tipc_bearer_config {
206 __be32 priority;
207 __be32 disc_domain;
208 char name[TIPC_MAX_BEARER_NAME];
209 };
210
211 struct tipc_link_config {
212 __be32 value;
213 char name[TIPC_MAX_LINK_NAME];
214 };
215
216 #define TIPC_NTQ_ALLTYPES 0x80000000
217
218 struct tipc_name_table_query {
219 __be32 depth;
220 __be32 type;
221 __be32 lowbound;
222 __be32 upbound;
223 };
224
225
226
227
228
229
230
231
232 #define TIPC_CFG_TLV_ERROR "\x80"
233 #define TIPC_CFG_NOT_NET_ADMIN "\x81"
234 #define TIPC_CFG_NOT_ZONE_MSTR "\x82"
235 #define TIPC_CFG_NO_REMOTE "\x83"
236 #define TIPC_CFG_NOT_SUPPORTED "\x84"
237 #define TIPC_CFG_INVALID_VALUE "\x85"
238
239
240
241
242
243
244
245
246
247
248 struct tlv_desc {
249 __be16 tlv_len;
250 __be16 tlv_type;
251 };
252
253 #define TLV_ALIGNTO 4
254
255 #define TLV_ALIGN(datalen) (((datalen)+(TLV_ALIGNTO-1)) & ~(TLV_ALIGNTO-1))
256 #define TLV_LENGTH(datalen) (sizeof(struct tlv_desc) + (datalen))
257 #define TLV_SPACE(datalen) (TLV_ALIGN(TLV_LENGTH(datalen)))
258 #define TLV_DATA(tlv) ((void *)((char *)(tlv) + TLV_LENGTH(0)))
259
260 static inline int TLV_OK(const void *tlv, __u16 space)
261 {
262
263
264
265
266
267
268
269
270
271 return (space >= TLV_SPACE(0)) &&
272 (ntohs(((struct tlv_desc *)tlv)->tlv_len) <= space);
273 }
274
275 static inline int TLV_CHECK(const void *tlv, __u16 space, __u16 exp_type)
276 {
277 return TLV_OK(tlv, space) &&
278 (ntohs(((struct tlv_desc *)tlv)->tlv_type) == exp_type);
279 }
280
281 static inline int TLV_GET_LEN(struct tlv_desc *tlv)
282 {
283 return ntohs(tlv->tlv_len);
284 }
285
286 static inline void TLV_SET_LEN(struct tlv_desc *tlv, __u16 len)
287 {
288 tlv->tlv_len = htons(len);
289 }
290
291 static inline int TLV_CHECK_TYPE(struct tlv_desc *tlv, __u16 type)
292 {
293 return (ntohs(tlv->tlv_type) == type);
294 }
295
296 static inline void TLV_SET_TYPE(struct tlv_desc *tlv, __u16 type)
297 {
298 tlv->tlv_type = htons(type);
299 }
300
301 static inline int TLV_SET(void *tlv, __u16 type, void *data, __u16 len)
302 {
303 struct tlv_desc *tlv_ptr;
304 int tlv_len;
305
306 tlv_len = TLV_LENGTH(len);
307 tlv_ptr = (struct tlv_desc *)tlv;
308 tlv_ptr->tlv_type = htons(type);
309 tlv_ptr->tlv_len = htons(tlv_len);
310 if (len && data) {
311 memcpy(TLV_DATA(tlv_ptr), data, len);
312 memset(TLV_DATA(tlv_ptr) + len, 0, TLV_SPACE(len) - tlv_len);
313 }
314 return TLV_SPACE(len);
315 }
316
317
318
319
320
321
322 struct tlv_list_desc {
323 struct tlv_desc *tlv_ptr;
324 __u32 tlv_space;
325 };
326
327 static inline void TLV_LIST_INIT(struct tlv_list_desc *list,
328 void *data, __u32 space)
329 {
330 list->tlv_ptr = (struct tlv_desc *)data;
331 list->tlv_space = space;
332 }
333
334 static inline int TLV_LIST_EMPTY(struct tlv_list_desc *list)
335 {
336 return (list->tlv_space == 0);
337 }
338
339 static inline int TLV_LIST_CHECK(struct tlv_list_desc *list, __u16 exp_type)
340 {
341 return TLV_CHECK(list->tlv_ptr, list->tlv_space, exp_type);
342 }
343
344 static inline void *TLV_LIST_DATA(struct tlv_list_desc *list)
345 {
346 return TLV_DATA(list->tlv_ptr);
347 }
348
349 static inline void TLV_LIST_STEP(struct tlv_list_desc *list)
350 {
351 __u16 tlv_space = TLV_ALIGN(ntohs(list->tlv_ptr->tlv_len));
352
353 list->tlv_ptr = (struct tlv_desc *)((char *)list->tlv_ptr + tlv_space);
354 list->tlv_space -= tlv_space;
355 }
356
357
358
359
360
361 #define TIPC_GENL_NAME "TIPC"
362 #define TIPC_GENL_VERSION 0x1
363 #define TIPC_GENL_CMD 0x1
364
365
366
367
368 struct tipc_genlmsghdr {
369 __u32 dest;
370 __u16 cmd;
371 __u16 reserved;
372 };
373
374 #define TIPC_GENL_HDRLEN NLMSG_ALIGN(sizeof(struct tipc_genlmsghdr))
375
376
377
378
379
380
381
382
383
384 struct tipc_cfg_msg_hdr {
385 __be32 tcm_len;
386 __be16 tcm_type;
387 __be16 tcm_flags;
388 char tcm_reserved[8];
389 };
390
391 #define TCM_F_REQUEST 0x1
392 #define TCM_F_MORE 0x2
393
394 #define TCM_ALIGN(datalen) (((datalen)+3) & ~3)
395 #define TCM_LENGTH(datalen) (sizeof(struct tipc_cfg_msg_hdr) + datalen)
396 #define TCM_SPACE(datalen) (TCM_ALIGN(TCM_LENGTH(datalen)))
397 #define TCM_DATA(tcm_hdr) ((void *)((char *)(tcm_hdr) + TCM_LENGTH(0)))
398
399 static inline int TCM_SET(void *msg, __u16 cmd, __u16 flags,
400 void *data, __u16 data_len)
401 {
402 struct tipc_cfg_msg_hdr *tcm_hdr;
403 int msg_len;
404
405 msg_len = TCM_LENGTH(data_len);
406 tcm_hdr = (struct tipc_cfg_msg_hdr *)msg;
407 tcm_hdr->tcm_len = htonl(msg_len);
408 tcm_hdr->tcm_type = htons(cmd);
409 tcm_hdr->tcm_flags = htons(flags);
410 if (data_len && data) {
411 memcpy(TCM_DATA(msg), data, data_len);
412 memset(TCM_DATA(msg) + data_len, 0, TCM_SPACE(data_len) - msg_len);
413 }
414 return TCM_SPACE(data_len);
415 }
416
417 #endif