File Coverage

tipc.h
Criterion Covered Total %
statement 8 8 100.0
branch n/a
condition n/a
subroutine n/a
pod n/a
total 8 8 100.0


line stmt bran cond sub pod time code
1             /*
2             * include/uapi/linux/tipc.h: Header for TIPC socket interface
3             *
4             * Copyright (c) 2003-2006, Ericsson AB
5             * Copyright (c) 2005, 2010-2011, Wind River Systems
6             * All rights reserved.
7             *
8             * Redistribution and use in source and binary forms, with or without
9             * modification, are permitted provided that the following conditions are met:
10             *
11             * 1. Redistributions of source code must retain the above copyright
12             * notice, this list of conditions and the following disclaimer.
13             * 2. Redistributions in binary form must reproduce the above copyright
14             * notice, this list of conditions and the following disclaimer in the
15             * documentation and/or other materials provided with the distribution.
16             * 3. Neither the names of the copyright holders nor the names of its
17             * contributors may be used to endorse or promote products derived from
18             * this software without specific prior written permission.
19             *
20             * Alternatively, this software may be distributed under the terms of the
21             * GNU General Public License ("GPL") version 2 as published by the Free
22             * Software Foundation.
23             *
24             * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25             * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26             * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27             * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28             * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29             * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30             * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31             * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32             * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33             * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34             * POSSIBILITY OF SUCH DAMAGE.
35             */
36              
37             #ifndef _LINUX_TIPC_H_
38             #define _LINUX_TIPC_H_
39              
40             #include
41             #include
42              
43             /*
44             * TIPC addressing primitives
45             */
46              
47             struct tipc_portid {
48             __u32 ref;
49             __u32 node;
50             };
51              
52             struct tipc_name {
53             __u32 type;
54             __u32 instance;
55             };
56              
57             struct tipc_name_seq {
58             __u32 type;
59             __u32 lower;
60             __u32 upper;
61             };
62              
63 18           static __inline__ __u32 tipc_addr(unsigned int zone,
64             unsigned int cluster,
65             unsigned int node)
66             {
67 18           return (zone << 24) | (cluster << 12) | node;
68             }
69              
70 17           static __inline__ unsigned int tipc_zone(__u32 addr)
71             {
72 17           return addr >> 24;
73             }
74              
75 17           static __inline__ unsigned int tipc_cluster(__u32 addr)
76             {
77 17           return (addr >> 12) & 0xfff;
78             }
79              
80 17           static __inline__ unsigned int tipc_node(__u32 addr)
81             {
82 17           return addr & 0xfff;
83             }
84              
85             /*
86             * Application-accessible port name types
87             */
88              
89             #define TIPC_CFG_SRV 0 /* configuration service name type */
90             #define TIPC_TOP_SRV 1 /* topology service name type */
91             #define TIPC_LINK_STATE 2 /* link state name type */
92             #define TIPC_RESERVED_TYPES 64 /* lowest user-publishable name type */
93              
94             /*
95             * Publication scopes when binding port names and port name sequences
96             */
97              
98             #define TIPC_ZONE_SCOPE 1
99             #define TIPC_CLUSTER_SCOPE 2
100             #define TIPC_NODE_SCOPE 3
101              
102             /*
103             * Limiting values for messages
104             */
105              
106             #define TIPC_MAX_USER_MSG_SIZE 66000U
107              
108             /*
109             * Message importance levels
110             */
111              
112             #define TIPC_LOW_IMPORTANCE 0
113             #define TIPC_MEDIUM_IMPORTANCE 1
114             #define TIPC_HIGH_IMPORTANCE 2
115             #define TIPC_CRITICAL_IMPORTANCE 3
116              
117             /*
118             * Msg rejection/connection shutdown reasons
119             */
120              
121             #define TIPC_OK 0
122             #define TIPC_ERR_NO_NAME 1
123             #define TIPC_ERR_NO_PORT 2
124             #define TIPC_ERR_NO_NODE 3
125             #define TIPC_ERR_OVERLOAD 4
126             #define TIPC_CONN_SHUTDOWN 5
127              
128             /*
129             * TIPC topology subscription service definitions
130             */
131              
132             #define TIPC_SUB_PORTS 0x01 /* filter for port availability */
133             #define TIPC_SUB_SERVICE 0x02 /* filter for service availability */
134             #define TIPC_SUB_CANCEL 0x04 /* cancel a subscription */
135              
136             #define TIPC_WAIT_FOREVER (~0) /* timeout for permanent subscription */
137              
138             struct tipc_subscr {
139             struct tipc_name_seq seq; /* name sequence of interest */
140             __u32 timeout; /* subscription duration (in ms) */
141             __u32 filter; /* bitmask of filter options */
142             char usr_handle[8]; /* available for subscriber use */
143             };
144              
145             #define TIPC_PUBLISHED 1 /* publication event */
146             #define TIPC_WITHDRAWN 2 /* withdraw event */
147             #define TIPC_SUBSCR_TIMEOUT 3 /* subscription timeout event */
148              
149             struct tipc_event {
150             __u32 event; /* event type */
151             __u32 found_lower; /* matching name seq instances */
152             __u32 found_upper; /* " " " " */
153             struct tipc_portid port; /* associated port */
154             struct tipc_subscr s; /* associated subscription */
155             };
156              
157             /*
158             * Socket API
159             */
160              
161             #ifndef AF_TIPC
162             #define AF_TIPC 30
163             #endif
164              
165             #ifndef PF_TIPC
166             #define PF_TIPC AF_TIPC
167             #endif
168              
169             #ifndef SOL_TIPC
170             #define SOL_TIPC 271
171             #endif
172              
173             #define TIPC_ADDR_NAMESEQ 1
174             #define TIPC_ADDR_MCAST 1
175             #define TIPC_ADDR_NAME 2
176             #define TIPC_ADDR_ID 3
177              
178             struct sockaddr_tipc {
179             unsigned short family;
180             unsigned char addrtype;
181             signed char scope;
182             union {
183             struct tipc_portid id;
184             struct tipc_name_seq nameseq;
185             struct {
186             struct tipc_name name;
187             __u32 domain;
188             } name;
189             } addr;
190             };
191              
192             /*
193             * Ancillary data objects supported by recvmsg()
194             */
195              
196             #define TIPC_ERRINFO 1 /* error info */
197             #define TIPC_RETDATA 2 /* returned data */
198             #define TIPC_DESTNAME 3 /* destination name */
199              
200             /*
201             * TIPC-specific socket option values
202             */
203              
204             #define TIPC_IMPORTANCE 127 /* Default: TIPC_LOW_IMPORTANCE */
205             #define TIPC_SRC_DROPPABLE 128 /* Default: based on socket type */
206             #define TIPC_DEST_DROPPABLE 129 /* Default: based on socket type */
207             #define TIPC_CONN_TIMEOUT 130 /* Default: 8000 (ms) */
208             #define TIPC_NODE_RECVQ_DEPTH 131 /* Default: none (read only) */
209             #define TIPC_SOCK_RECVQ_DEPTH 132 /* Default: none (read only) */
210              
211             /*
212             * Maximum sizes of TIPC bearer-related names (including terminating NULL)
213             * The string formatting for each name element is:
214             * media: media
215             * interface: media:interface name
216             * link: Z.C.N:interface-Z.C.N:interface
217             *
218             */
219              
220             #define TIPC_MAX_MEDIA_NAME 16
221             #define TIPC_MAX_IF_NAME 16
222             #define TIPC_MAX_BEARER_NAME 32
223             #define TIPC_MAX_LINK_NAME 60
224              
225             #define SIOCGETLINKNAME SIOCPROTOPRIVATE
226              
227             struct tipc_sioc_ln_req {
228             __u32 peer;
229             __u32 bearer_id;
230             char linkname[TIPC_MAX_LINK_NAME];
231             };
232             #endif