Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
uapi
linux
tipc.h
Go to the documentation of this file.
1
/*
2
* include/linux/tipc.h: Include file 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 <linux/types.h>
41
42
/*
43
* TIPC addressing primitives
44
*/
45
46
struct
tipc_portid
{
47
__u32
ref
;
48
__u32
node
;
49
};
50
51
struct
tipc_name
{
52
__u32
type
;
53
__u32
instance
;
54
};
55
56
struct
tipc_name_seq
{
57
__u32
type
;
58
__u32
lower
;
59
__u32
upper
;
60
};
61
62
static
inline
__u32
tipc_addr(
unsigned
int
zone
,
63
unsigned
int
cluster
,
64
unsigned
int
node
)
65
{
66
return
(zone << 24) | (cluster << 12) | node;
67
}
68
69
static
inline
unsigned
int
tipc_zone(
__u32
addr
)
70
{
71
return
addr >> 24;
72
}
73
74
static
inline
unsigned
int
tipc_cluster(
__u32
addr
)
75
{
76
return
(addr >> 12) & 0xfff;
77
}
78
79
static
inline
unsigned
int
tipc_node
(
__u32
addr)
80
{
81
return
addr & 0xfff;
82
}
83
84
/*
85
* Application-accessible port name types
86
*/
87
88
#define TIPC_CFG_SRV 0
/* configuration service name type */
89
#define TIPC_TOP_SRV 1
/* topology service name type */
90
#define TIPC_RESERVED_TYPES 64
/* lowest user-publishable name type */
91
92
/*
93
* Publication scopes when binding port names and port name sequences
94
*/
95
96
#define TIPC_ZONE_SCOPE 1
97
#define TIPC_CLUSTER_SCOPE 2
98
#define TIPC_NODE_SCOPE 3
99
100
/*
101
* Limiting values for messages
102
*/
103
104
#define TIPC_MAX_USER_MSG_SIZE 66000U
105
106
/*
107
* Message importance levels
108
*/
109
110
#define TIPC_LOW_IMPORTANCE 0
111
#define TIPC_MEDIUM_IMPORTANCE 1
112
#define TIPC_HIGH_IMPORTANCE 2
113
#define TIPC_CRITICAL_IMPORTANCE 3
114
115
/*
116
* Msg rejection/connection shutdown reasons
117
*/
118
119
#define TIPC_OK 0
120
#define TIPC_ERR_NO_NAME 1
121
#define TIPC_ERR_NO_PORT 2
122
#define TIPC_ERR_NO_NODE 3
123
#define TIPC_ERR_OVERLOAD 4
124
#define TIPC_CONN_SHUTDOWN 5
125
126
/*
127
* TIPC topology subscription service definitions
128
*/
129
130
#define TIPC_SUB_PORTS 0x01
/* filter for port availability */
131
#define TIPC_SUB_SERVICE 0x02
/* filter for service availability */
132
#define TIPC_SUB_CANCEL 0x04
/* cancel a subscription */
133
134
#define TIPC_WAIT_FOREVER (~0)
/* timeout for permanent subscription */
135
136
struct
tipc_subscr
{
137
struct
tipc_name_seq
seq
;
/* name sequence of interest */
138
__u32
timeout
;
/* subscription duration (in ms) */
139
__u32
filter
;
/* bitmask of filter options */
140
char
usr_handle
[8];
/* available for subscriber use */
141
};
142
143
#define TIPC_PUBLISHED 1
/* publication event */
144
#define TIPC_WITHDRAWN 2
/* withdraw event */
145
#define TIPC_SUBSCR_TIMEOUT 3
/* subscription timeout event */
146
147
struct
tipc_event
{
148
__u32
event
;
/* event type */
149
__u32
found_lower
;
/* matching name seq instances */
150
__u32
found_upper
;
/* " " " " */
151
struct
tipc_portid
port
;
/* associated port */
152
struct
tipc_subscr
s
;
/* associated subscription */
153
};
154
155
/*
156
* Socket API
157
*/
158
159
#ifndef AF_TIPC
160
#define AF_TIPC 30
161
#endif
162
163
#ifndef PF_TIPC
164
#define PF_TIPC AF_TIPC
165
#endif
166
167
#ifndef SOL_TIPC
168
#define SOL_TIPC 271
169
#endif
170
171
#define TIPC_ADDR_NAMESEQ 1
172
#define TIPC_ADDR_MCAST 1
173
#define TIPC_ADDR_NAME 2
174
#define TIPC_ADDR_ID 3
175
176
struct
sockaddr_tipc
{
177
unsigned
short
family
;
178
unsigned
char
addrtype
;
179
signed
char
scope
;
180
union
{
181
struct
tipc_portid
id
;
182
struct
tipc_name_seq
nameseq
;
183
struct
{
184
struct
tipc_name
name
;
185
__u32
domain
;
186
}
name
;
187
}
addr
;
188
};
189
190
/*
191
* Ancillary data objects supported by recvmsg()
192
*/
193
194
#define TIPC_ERRINFO 1
/* error info */
195
#define TIPC_RETDATA 2
/* returned data */
196
#define TIPC_DESTNAME 3
/* destination name */
197
198
/*
199
* TIPC-specific socket option values
200
*/
201
202
#define TIPC_IMPORTANCE 127
/* Default: TIPC_LOW_IMPORTANCE */
203
#define TIPC_SRC_DROPPABLE 128
/* Default: based on socket type */
204
#define TIPC_DEST_DROPPABLE 129
/* Default: based on socket type */
205
#define TIPC_CONN_TIMEOUT 130
/* Default: 8000 (ms) */
206
#define TIPC_NODE_RECVQ_DEPTH 131
/* Default: none (read only) */
207
#define TIPC_SOCK_RECVQ_DEPTH 132
/* Default: none (read only) */
208
209
#endif
Generated on Thu Jan 10 2013 14:53:54 for Linux Kernel by
1.8.2