xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/linux/tipc.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 /**
2  * Interface for Linux TIPC sockets, /usr/include/linux/tipc.h
3  *
4  * Copyright: Public Domain
5  * License:   Public Domain
6  * Authors:   Leandro Lucarella
7  */
8 
9 module core.sys.linux.tipc;
10 
11 version (linux):
12 extern (C) nothrow @nogc:
13 @system:
14 
15 struct tipc_portid
16 {
17         uint ref_;
18         uint node;
19 }
20 
21 struct tipc_name
22 {
23         uint type;
24         uint instance;
25 }
26 
27 struct tipc_name_seq
28 {
29         uint type;
30         uint lower;
31         uint upper;
32 }
33 
34 struct tipc_subscr
35 {
36         tipc_name_seq seq;
37         uint timeout;
38         uint filter;
39         ubyte[8] usr_handle;
40 }
41 
42 struct tipc_event
43 {
44         uint event;
45         uint found_lower;
46         uint found_upper;
47         tipc_portid port;
48         tipc_subscr s;
49 }
50 
51 struct sockaddr_tipc
52 {
53         ushort family;
54         ubyte addrtype;
55         byte scope_;
56         union Addr
57         {
58                 tipc_portid id;
59                 tipc_name_seq nameseq;
60                 static struct Name
61                 {
62                         tipc_name name;
63                         uint domain;
64                 }
65                 Name name;
66         }
67         Addr addr;
68 }
69 
tipc_addr(uint zone,uint cluster,uint node)70 uint tipc_addr(uint zone, uint cluster, uint node)
71 {
72         return (zone << 24) | (cluster << 12) | node;
73 }
74 
75 unittest
76 {
77         assert (tipc_addr(0, 0, 0) == 0);
78         assert (tipc_addr(1, 1, 1) == 16781313);
79         assert (tipc_addr(2, 1, 27) == 33558555);
80         assert (tipc_addr(3, 1, 63) == 50335807);
81 }
82 
tipc_zone(uint addr)83 uint tipc_zone(uint addr)
84 {
85         return addr >> 24;
86 }
87 
88 unittest
89 {
90         assert (tipc_zone(0u) == 0);
91         assert (tipc_zone(16781313u) == 1);
92         assert (tipc_zone(33558555u) == 2);
93         assert (tipc_zone(50335807u) == 3);
94 }
95 
tipc_cluster(uint addr)96 uint tipc_cluster(uint addr)
97 {
98         return (addr >> 12) & 0xfff;
99 }
100 
101 unittest
102 {
103         assert (tipc_cluster(0u) == 0);
104         assert (tipc_cluster(16781313u) == 1);
105         assert (tipc_cluster(33558555u) == 1);
106         assert (tipc_cluster(50335807u) == 1);
107 }
108 
tipc_node(uint addr)109 uint tipc_node(uint addr)
110 {
111         return addr & 0xfff;
112 }
113 
114 unittest
115 {
116         assert (tipc_node(0u) == 0);
117         assert (tipc_node(16781313u) == 1);
118         assert (tipc_node(33558555u) == 27);
119         assert (tipc_node(50335807u) == 63);
120 }
121 
122 enum: int
123 {
124         TIPC_CFG_SRV    = 0,
125         TIPC_TOP_SRV    = 1,
126         TIPC_RESERVED_TYPES = 64,
127 }
128 
129 enum: int
130 {
131         TIPC_ZONE_SCOPE    = 1,
132         TIPC_CLUSTER_SCOPE = 2,
133         TIPC_NODE_SCOPE    = 3,
134 }
135 
136 enum: int
137 {
138         TIPC_MAX_USER_MSG_SIZE = 66000,
139 }
140 
141 enum: int
142 {
143         TIPC_LOW_IMPORTANCE      = 0,
144         TIPC_MEDIUM_IMPORTANCE   = 1,
145         TIPC_HIGH_IMPORTANCE     = 2,
146         TIPC_CRITICAL_IMPORTANCE = 3,
147 }
148 
149 enum: int
150 {
151         TIPC_OK     = 0,
152         TIPC_ERR_NO_NAME   = 1,
153         TIPC_ERR_NO_PORT   = 2,
154         TIPC_ERR_NO_NODE   = 3,
155         TIPC_ERR_OVERLOAD  = 4,
156         TIPC_CONN_SHUTDOWN = 5,
157 }
158 
159 enum: int
160 {
161         TIPC_SUB_PORTS    = 0x01,
162         TIPC_SUB_SERVICE  = 0x02,
163         TIPC_SUB_CANCEL   = 0x04,
164 }
165 
166 version (none) enum: int
167 {
168         TIPC_SUB_NO_BIND_EVTS   = 0x04,
169         TIPC_SUB_NO_UNBIND_EVTS = 0x08,
170         TIPC_SUB_SINGLE_EVT     = 0x10,
171 }
172 
173 enum: int
174 {
175         TIPC_WAIT_FOREVER = ~0,
176 }
177 
178 enum: int
179 {
180 
181         TIPC_PUBLISHED      = 1,
182         TIPC_WITHDRAWN      = 2,
183         TIPC_SUBSCR_TIMEOUT = 3,
184 }
185 
186 enum: int
187 {
188         AF_TIPC    = 30,
189         PF_TIPC    = 30,
190         SOL_TIPC          = 271,
191         TIPC_ADDR_NAMESEQ = 1,
192         TIPC_ADDR_MCAST   = 1,
193         TIPC_ADDR_NAME    = 2,
194         TIPC_ADDR_ID      = 3,
195 }
196 
197 enum: int
198 {
199         TIPC_ERRINFO  = 1,
200         TIPC_RETDATA  = 2,
201         TIPC_DESTNAME = 3,
202 }
203 
204 enum: int
205 {
206         TIPC_IMPORTANCE     = 127,
207         TIPC_SRC_DROPPABLE  = 128,
208         TIPC_DEST_DROPPABLE = 129,
209         TIPC_CONN_TIMEOUT   = 130,
210 }
211 
212