tipc_config.h
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037: #ifndef _LINUX_TIPC_CONFIG_H_
038: #define _LINUX_TIPC_CONFIG_H_
039:
040: #include <linux/types.h>
041: #include <linux/string.h>
042: #include <asm/byteorder.h>
043:
044: #include <arpa/inet.h>
045:
046:
047:
048:
049:
050:
051:
052:
053:
054:
055:
056:
057:
058:
059:
060:
061:
062:
063:
064:
065:
066:
067:
068:
069:
070:
071: #define TIPC_CMD_NOOP 0x0000
072: #define TIPC_CMD_GET_NODES 0x0001
073: #define TIPC_CMD_GET_MEDIA_NAMES 0x0002
074: #define TIPC_CMD_GET_BEARER_NAMES 0x0003
075: #define TIPC_CMD_GET_LINKS 0x0004
076: #define TIPC_CMD_SHOW_NAME_TABLE 0x0005
077: #define TIPC_CMD_SHOW_PORTS 0x0006
078: #define TIPC_CMD_SHOW_LINK_STATS 0x000B
079: #define TIPC_CMD_SHOW_STATS 0x000F
080:
081:
082:
083:
084:
085:
086:
087:
088: #define TIPC_CMD_GET_REMOTE_MNG 0x4003
089: #define TIPC_CMD_GET_MAX_PORTS 0x4004
090: #define TIPC_CMD_GET_MAX_PUBL 0x4005
091: #define TIPC_CMD_GET_MAX_SUBSCR 0x4006
092: #define TIPC_CMD_GET_MAX_ZONES 0x4007
093: #define TIPC_CMD_GET_MAX_CLUSTERS 0x4008
094: #define TIPC_CMD_GET_MAX_NODES 0x4009
095: #define TIPC_CMD_GET_MAX_SLAVES 0x400A
096: #define TIPC_CMD_GET_NETID 0x400B
097:
098: #define TIPC_CMD_ENABLE_BEARER 0x4101
099: #define TIPC_CMD_DISABLE_BEARER 0x4102
100: #define TIPC_CMD_SET_LINK_TOL 0x4107
101: #define TIPC_CMD_SET_LINK_PRI 0x4108
102: #define TIPC_CMD_SET_LINK_WINDOW 0x4109
103: #define TIPC_CMD_SET_LOG_SIZE 0x410A
104: #define TIPC_CMD_DUMP_LOG 0x410B
105: #define TIPC_CMD_RESET_LINK_STATS 0x410C
106:
107:
108:
109:
110:
111:
112:
113: #define TIPC_CMD_SET_NODE_ADDR 0x8001
114: #define TIPC_CMD_SET_REMOTE_MNG 0x8003
115: #define TIPC_CMD_SET_MAX_PORTS 0x8004
116: #define TIPC_CMD_SET_MAX_PUBL 0x8005
117: #define TIPC_CMD_SET_MAX_SUBSCR 0x8006
118: #define TIPC_CMD_SET_MAX_ZONES 0x8007
119: #define TIPC_CMD_SET_MAX_CLUSTERS 0x8008
120: #define TIPC_CMD_SET_MAX_NODES 0x8009
121: #define TIPC_CMD_SET_MAX_SLAVES 0x800A
122: #define TIPC_CMD_SET_NETID 0x800B
123:
124:
125:
126:
127:
128:
129:
130: #define TIPC_CMD_NOT_NET_ADMIN 0xC001
131:
132:
133:
134:
135:
136: #define TIPC_TLV_NONE 0
137: #define TIPC_TLV_VOID 1
138: #define TIPC_TLV_UNSIGNED 2
139: #define TIPC_TLV_STRING 3
140: #define TIPC_TLV_LARGE_STRING 4
141: #define TIPC_TLV_ULTRA_STRING 5
142:
143: #define TIPC_TLV_ERROR_STRING 16
144: #define TIPC_TLV_NET_ADDR 17
145: #define TIPC_TLV_MEDIA_NAME 18
146: #define TIPC_TLV_BEARER_NAME 19
147: #define TIPC_TLV_LINK_NAME 20
148: #define TIPC_TLV_NODE_INFO 21
149: #define TIPC_TLV_LINK_INFO 22
150: #define TIPC_TLV_BEARER_CONFIG 23
151: #define TIPC_TLV_LINK_CONFIG 24
152: #define TIPC_TLV_NAME_TBL_QUERY 25
153: #define TIPC_TLV_PORT_REF 26
154:
155:
156:
157:
158:
159: #define TIPC_MAX_MEDIA_NAME 16
160: #define TIPC_MAX_IF_NAME 16
161: #define TIPC_MAX_BEARER_NAME 32
162: #define TIPC_MAX_LINK_NAME 60
163:
164:
165:
166:
167:
168: #define TIPC_MIN_LINK_PRI 0
169: #define TIPC_DEF_LINK_PRI 10
170: #define TIPC_MAX_LINK_PRI 31
171: #define TIPC_MEDIA_LINK_PRI (TIPC_MAX_LINK_PRI + 1)
172:
173:
174:
175:
176:
177: #define TIPC_MIN_LINK_TOL 50
178: #define TIPC_DEF_LINK_TOL 1500
179: #define TIPC_MAX_LINK_TOL 30000
180:
181: #if (TIPC_MIN_LINK_TOL < 16)
182: #error "TIPC_MIN_LINK_TOL is too small (abort limit may be NaN)"
183: #endif
184:
185:
186:
187:
188:
189: #define TIPC_MIN_LINK_WIN 16
190: #define TIPC_DEF_LINK_WIN 50
191: #define TIPC_MAX_LINK_WIN 150
192:
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_SET(void *tlv, __u16 type, void *data, __u16 len)
282: {
283: struct tlv_desc *tlv_ptr;
284: int tlv_len;
285:
286: tlv_len = TLV_LENGTH(len);
287: tlv_ptr = (struct tlv_desc *)tlv;
288: tlv_ptr->tlv_type = htons(type);
289: tlv_ptr->tlv_len = htons(tlv_len);
290: if (len && data)
291: memcpy(TLV_DATA(tlv_ptr), data, tlv_len);
292: return TLV_SPACE(len);
293: }
294:
295:
296:
297:
298:
299:
300: struct tlv_list_desc {
301: struct tlv_desc *tlv_ptr;
302: __u32 tlv_space;
303: };
304:
305: static __inline__ void TLV_LIST_INIT(struct tlv_list_desc *list,
306: void *data, __u32 space)
307: {
308: list->tlv_ptr = (struct tlv_desc *)data;
309: list->tlv_space = space;
310: }
311:
312: static __inline__ int TLV_LIST_EMPTY(struct tlv_list_desc *list)
313: {
314: return (list->tlv_space == 0);
315: }
316:
317: static __inline__ int TLV_LIST_CHECK(struct tlv_list_desc *list, __u16 exp_type)
318: {
319: return TLV_CHECK(list->tlv_ptr, list->tlv_space, exp_type);
320: }
321:
322: static __inline__ void *TLV_LIST_DATA(struct tlv_list_desc *list)
323: {
324: return TLV_DATA(list->tlv_ptr);
325: }
326:
327: static __inline__ void TLV_LIST_STEP(struct tlv_list_desc *list)
328: {
329: __u16 tlv_space = TLV_ALIGN(ntohs(list->tlv_ptr->tlv_len));
330:
331: list->tlv_ptr = (struct tlv_desc *)((char *)list->tlv_ptr + tlv_space);
332: list->tlv_space -= tlv_space;
333: }
334:
335:
336:
337:
338:
339: #define TIPC_GENL_NAME "TIPC"
340: #define TIPC_GENL_VERSION 0x1
341: #define TIPC_GENL_CMD 0x1
342:
343:
344:
345:
346: struct tipc_genlmsghdr {
347: __u32 dest;
348: __u16 cmd;
349: __u16 reserved;
350: };
351:
352: #define TIPC_GENL_HDRLEN NLMSG_ALIGN(sizeof(struct tipc_genlmsghdr))
353:
354:
355:
356:
357:
358:
359:
360:
361:
362: struct tipc_cfg_msg_hdr {
363: __be32 tcm_len;
364: __be16 tcm_type;
365: __be16 tcm_flags;
366: char tcm_reserved[8];
367: };
368:
369: #define TCM_F_REQUEST 0x1
370: #define TCM_F_MORE 0x2
371:
372: #define TCM_ALIGN(datalen) (((datalen)+3) & ~3)
373: #define TCM_LENGTH(datalen) (sizeof(struct tipc_cfg_msg_hdr) + datalen)
374: #define TCM_SPACE(datalen) (TCM_ALIGN(TCM_LENGTH(datalen)))
375: #define TCM_DATA(tcm_hdr) ((void *)((char *)(tcm_hdr) + TCM_LENGTH(0)))
376:
377: static __inline__ int TCM_SET(void *msg, __u16 cmd, __u16 flags,
378: void *data, __u16 data_len)
379: {
380: struct tipc_cfg_msg_hdr *tcm_hdr;
381: int msg_len;
382:
383: msg_len = TCM_LENGTH(data_len);
384: tcm_hdr = (struct tipc_cfg_msg_hdr *)msg;
385: tcm_hdr->tcm_len = htonl(msg_len);
386: tcm_hdr->tcm_type = htons(cmd);
387: tcm_hdr->tcm_flags = htons(flags);
388: if (data_len && data)
389: memcpy(TCM_DATA(msg), data, data_len);
390: return TCM_SPACE(data_len);
391: }
392:
393: #endif
394:
© Andrew Scott 2006 -
2025,
All Rights Reserved