125981136fb13bcacf5f475f3e0ec750341e1e671Christopher Ferris/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
2224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
3e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * include/uapi/linux/tipc.h: Header for TIPC socket interface
4224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
50543f743b6f5bc5c0652568c763e6dfb9ddce647Christopher Ferris * Copyright (c) 2003-2006, 2015-2016 Ericsson AB
6224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Copyright (c) 2005, 2010-2011, Wind River Systems
7224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * All rights reserved.
8224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
9224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Redistribution and use in source and binary forms, with or without
10224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * modification, are permitted provided that the following conditions are met:
11224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
12224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 1. Redistributions of source code must retain the above copyright
13224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *    notice, this list of conditions and the following disclaimer.
14224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 2. Redistributions in binary form must reproduce the above copyright
15224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *    notice, this list of conditions and the following disclaimer in the
16224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *    documentation and/or other materials provided with the distribution.
17224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 3. Neither the names of the copyright holders nor the names of its
18224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *    contributors may be used to endorse or promote products derived from
19224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *    this software without specific prior written permission.
20224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
21224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Alternatively, this software may be distributed under the terms of the
22224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * GNU General Public License ("GPL") version 2 as published by the Free
23224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Software Foundation.
24224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng *
25224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
29224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * POSSIBILITY OF SUCH DAMAGE.
36224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
37224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
38224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef _LINUX_TIPC_H_
39224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define _LINUX_TIPC_H_
40224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
41224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/types.h>
42314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#include <linux/sockios.h>
43224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
44224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
45224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * TIPC addressing primitives
46224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
47224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
48224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct tipc_portid {
49224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32 ref;
50224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32 node;
51224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
52224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
53224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct tipc_name {
54224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32 type;
55224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32 instance;
56224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
57224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
58224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct tipc_name_seq {
59224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32 type;
60224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32 lower;
61224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32 upper;
62224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
63224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
646e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris/* TIPC Address Size, Offset, Mask specification for Z.C.N
656e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris */
666e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_NODE_BITS          12
676e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_CLUSTER_BITS       12
686e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_ZONE_BITS          8
696e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris
706e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_NODE_OFFSET        0
716e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_CLUSTER_OFFSET     TIPC_NODE_BITS
726e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_ZONE_OFFSET        (TIPC_CLUSTER_OFFSET + TIPC_CLUSTER_BITS)
736e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris
746e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_NODE_SIZE          ((1UL << TIPC_NODE_BITS) - 1)
756e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_CLUSTER_SIZE       ((1UL << TIPC_CLUSTER_BITS) - 1)
766e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_ZONE_SIZE          ((1UL << TIPC_ZONE_BITS) - 1)
776e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris
786e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_NODE_MASK		(TIPC_NODE_SIZE << TIPC_NODE_OFFSET)
796e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_CLUSTER_MASK	(TIPC_CLUSTER_SIZE << TIPC_CLUSTER_OFFSET)
806e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_ZONE_MASK		(TIPC_ZONE_SIZE << TIPC_ZONE_OFFSET)
816e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris
826e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris#define TIPC_ZONE_CLUSTER_MASK (TIPC_ZONE_MASK | TIPC_CLUSTER_MASK)
836e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris
84224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstatic inline __u32 tipc_addr(unsigned int zone,
85224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			      unsigned int cluster,
86224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			      unsigned int node)
87224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng{
886e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris	return (zone << TIPC_ZONE_OFFSET) |
896e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris		(cluster << TIPC_CLUSTER_OFFSET) |
906e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris		node;
91224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}
92224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
93224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstatic inline unsigned int tipc_zone(__u32 addr)
94224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng{
956e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris	return addr >> TIPC_ZONE_OFFSET;
96224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}
97224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
98224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstatic inline unsigned int tipc_cluster(__u32 addr)
99224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng{
1006e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris	return (addr & TIPC_CLUSTER_MASK) >> TIPC_CLUSTER_OFFSET;
101224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}
102224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
103224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstatic inline unsigned int tipc_node(__u32 addr)
104224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng{
1056e3550f2a1c3909fb75be068f7ae9009f7e8622aChristopher Ferris	return addr & TIPC_NODE_MASK;
106224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}
107224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
108224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
109224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Application-accessible port name types
110224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
111224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
112224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_CFG_SRV		0	/* configuration service name type */
113224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_TOP_SRV		1	/* topology service name type */
114314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define TIPC_LINK_STATE		2	/* link state name type */
115224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_RESERVED_TYPES	64	/* lowest user-publishable name type */
116224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
117224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
118224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Publication scopes when binding port names and port name sequences
119224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
120224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
121224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_ZONE_SCOPE		1
122224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_CLUSTER_SCOPE	2
123224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_NODE_SCOPE		3
124224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
125224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
126224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Limiting values for messages
127224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
128224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
129224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_MAX_USER_MSG_SIZE	66000U
130224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
131224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
132224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Message importance levels
133224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
134224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
135224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_LOW_IMPORTANCE		0
136224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_MEDIUM_IMPORTANCE		1
137224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_HIGH_IMPORTANCE		2
138224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_CRITICAL_IMPORTANCE	3
139224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
140224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
141224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Msg rejection/connection shutdown reasons
142224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
143224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
144224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_OK			0
145224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_ERR_NO_NAME	1
146224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_ERR_NO_PORT	2
147224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_ERR_NO_NODE	3
148224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_ERR_OVERLOAD	4
149224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_CONN_SHUTDOWN	5
150224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
151224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
152224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * TIPC topology subscription service definitions
153224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
154224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
155224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_SUB_PORTS		0x01	/* filter for port availability */
156224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_SUB_SERVICE	0x02	/* filter for service availability */
157224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_SUB_CANCEL		0x04	/* cancel a subscription */
158224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
159224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_WAIT_FOREVER	(~0)	/* timeout for permanent subscription */
160224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
161224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct tipc_subscr {
162224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	struct tipc_name_seq seq;	/* name sequence of interest */
163224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32 timeout;			/* subscription duration (in ms) */
164224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32 filter;			/* bitmask of filter options */
165224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	char usr_handle[8];		/* available for subscriber use */
166224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
167224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
168224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_PUBLISHED		1	/* publication event */
169224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_WITHDRAWN		2	/* withdraw event */
170224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_SUBSCR_TIMEOUT	3	/* subscription timeout event */
171224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
172224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct tipc_event {
173224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32 event;			/* event type */
174224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32 found_lower;		/* matching name seq instances */
175224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32 found_upper;		/*    "      "    "     "      */
176224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	struct tipc_portid port;	/* associated port */
177224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	struct tipc_subscr s;		/* associated subscription */
178224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
179224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
180224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
181224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Socket API
182224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
183224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
184224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef AF_TIPC
185224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define AF_TIPC		30
186224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif
187224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
188224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef PF_TIPC
189224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PF_TIPC		AF_TIPC
190224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif
191224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
192224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef SOL_TIPC
193224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define SOL_TIPC	271
194224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif
195224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
196224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_ADDR_NAMESEQ	1
197224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_ADDR_MCAST		1
198224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_ADDR_NAME		2
199224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_ADDR_ID		3
200224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
201224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct sockaddr_tipc {
202224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	unsigned short family;
203224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	unsigned char  addrtype;
204224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	signed   char  scope;
205224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	union {
206224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng		struct tipc_portid id;
207224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng		struct tipc_name_seq nameseq;
208224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng		struct {
209224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			struct tipc_name name;
210224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			__u32 domain;
211224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng		} name;
212224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	} addr;
213224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
214224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
215224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
216224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Ancillary data objects supported by recvmsg()
217224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
218224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
219224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_ERRINFO	1	/* error info */
220224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_RETDATA	2	/* returned data */
221224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_DESTNAME	3	/* destination name */
222224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
223224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
2240543f743b6f5bc5c0652568c763e6dfb9ddce647Christopher Ferris * TIPC-specific socket option names
225224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
226224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
227224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_IMPORTANCE		127	/* Default: TIPC_LOW_IMPORTANCE */
228224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_SRC_DROPPABLE	128	/* Default: based on socket type */
229224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_DEST_DROPPABLE	129	/* Default: based on socket type */
230224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_CONN_TIMEOUT	130	/* Default: 8000 (ms)  */
231224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_NODE_RECVQ_DEPTH	131	/* Default: none (read only) */
232224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TIPC_SOCK_RECVQ_DEPTH	132	/* Default: none (read only) */
2330543f743b6f5bc5c0652568c763e6dfb9ddce647Christopher Ferris#define TIPC_MCAST_BROADCAST    133     /* Default: TIPC selects. No arg */
2340543f743b6f5bc5c0652568c763e6dfb9ddce647Christopher Ferris#define TIPC_MCAST_REPLICAST    134     /* Default: TIPC selects. No arg */
235a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris#define TIPC_GROUP_JOIN         135     /* Takes struct tipc_group_req* */
236a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris#define TIPC_GROUP_LEAVE        136     /* No argument */
237a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris
238a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris/*
239a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris * Flag values
240a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris */
241a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris#define TIPC_GROUP_LOOPBACK     0x1  /* Receive copy of sent msg when match */
242a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris#define TIPC_GROUP_MEMBER_EVTS  0x2  /* Receive membership events in socket */
243a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris
244a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferrisstruct tipc_group_req {
245a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris	__u32 type;      /* group id */
246a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris	__u32 instance;  /* member id */
247a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris	__u32 scope;     /* zone/cluster/node */
248a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris	__u32 flags;
249a1a109eed086336ef38a07b9f90e3d7c786f850eChristopher Ferris};
250224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
251314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris/*
252314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * Maximum sizes of TIPC bearer-related names (including terminating NULL)
253314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * The string formatting for each name element is:
254314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * media: media
255314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * interface: media:interface name
256314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * link: Z.C.N:interface-Z.C.N:interface
257314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris *
258314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris */
259314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris
260314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define TIPC_MAX_MEDIA_NAME	16
261314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define TIPC_MAX_IF_NAME	16
262314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define TIPC_MAX_BEARER_NAME	32
263314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define TIPC_MAX_LINK_NAME	60
264314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris
265314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define SIOCGETLINKNAME		SIOCPROTOPRIVATE
266314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris
267314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferrisstruct tipc_sioc_ln_req {
268314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris	__u32 peer;
269314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris	__u32 bearer_id;
270314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris	char linkname[TIPC_MAX_LINK_NAME];
271314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris};
272224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif
273