xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/mctp.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*f80ad8b4SAndroid Build Coastguard Worker /*
3*f80ad8b4SAndroid Build Coastguard Worker  * Management Component Transport Protocol (MCTP)
4*f80ad8b4SAndroid Build Coastguard Worker  *
5*f80ad8b4SAndroid Build Coastguard Worker  * Copyright (c) 2021 Code Construct
6*f80ad8b4SAndroid Build Coastguard Worker  * Copyright (c) 2021 Google
7*f80ad8b4SAndroid Build Coastguard Worker  */
8*f80ad8b4SAndroid Build Coastguard Worker 
9*f80ad8b4SAndroid Build Coastguard Worker #ifndef __UAPI_MCTP_H
10*f80ad8b4SAndroid Build Coastguard Worker #define __UAPI_MCTP_H
11*f80ad8b4SAndroid Build Coastguard Worker 
12*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h>
13*f80ad8b4SAndroid Build Coastguard Worker #include <linux/socket.h>
14*f80ad8b4SAndroid Build Coastguard Worker #include <linux/netdevice.h>
15*f80ad8b4SAndroid Build Coastguard Worker 
16*f80ad8b4SAndroid Build Coastguard Worker typedef __u8			mctp_eid_t;
17*f80ad8b4SAndroid Build Coastguard Worker 
18*f80ad8b4SAndroid Build Coastguard Worker struct mctp_addr {
19*f80ad8b4SAndroid Build Coastguard Worker 	mctp_eid_t		s_addr;
20*f80ad8b4SAndroid Build Coastguard Worker };
21*f80ad8b4SAndroid Build Coastguard Worker 
22*f80ad8b4SAndroid Build Coastguard Worker struct sockaddr_mctp {
23*f80ad8b4SAndroid Build Coastguard Worker 	__kernel_sa_family_t	smctp_family;
24*f80ad8b4SAndroid Build Coastguard Worker 	__u16			__smctp_pad0;
25*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int		smctp_network;
26*f80ad8b4SAndroid Build Coastguard Worker 	struct mctp_addr	smctp_addr;
27*f80ad8b4SAndroid Build Coastguard Worker 	__u8			smctp_type;
28*f80ad8b4SAndroid Build Coastguard Worker 	__u8			smctp_tag;
29*f80ad8b4SAndroid Build Coastguard Worker 	__u8			__smctp_pad1;
30*f80ad8b4SAndroid Build Coastguard Worker };
31*f80ad8b4SAndroid Build Coastguard Worker 
32*f80ad8b4SAndroid Build Coastguard Worker struct sockaddr_mctp_ext {
33*f80ad8b4SAndroid Build Coastguard Worker 	struct sockaddr_mctp	smctp_base;
34*f80ad8b4SAndroid Build Coastguard Worker 	int			smctp_ifindex;
35*f80ad8b4SAndroid Build Coastguard Worker 	__u8			smctp_halen;
36*f80ad8b4SAndroid Build Coastguard Worker 	__u8			__smctp_pad0[3];
37*f80ad8b4SAndroid Build Coastguard Worker 	__u8			smctp_haddr[MAX_ADDR_LEN];
38*f80ad8b4SAndroid Build Coastguard Worker };
39*f80ad8b4SAndroid Build Coastguard Worker 
40*f80ad8b4SAndroid Build Coastguard Worker #define MCTP_NET_ANY		0x0
41*f80ad8b4SAndroid Build Coastguard Worker 
42*f80ad8b4SAndroid Build Coastguard Worker #define MCTP_ADDR_NULL		0x00
43*f80ad8b4SAndroid Build Coastguard Worker #define MCTP_ADDR_ANY		0xff
44*f80ad8b4SAndroid Build Coastguard Worker 
45*f80ad8b4SAndroid Build Coastguard Worker #define MCTP_TAG_MASK		0x07
46*f80ad8b4SAndroid Build Coastguard Worker #define MCTP_TAG_OWNER		0x08
47*f80ad8b4SAndroid Build Coastguard Worker #define MCTP_TAG_PREALLOC	0x10
48*f80ad8b4SAndroid Build Coastguard Worker 
49*f80ad8b4SAndroid Build Coastguard Worker #define MCTP_OPT_ADDR_EXT	1
50*f80ad8b4SAndroid Build Coastguard Worker 
51*f80ad8b4SAndroid Build Coastguard Worker #define SIOCMCTPALLOCTAG	(SIOCPROTOPRIVATE + 0)
52*f80ad8b4SAndroid Build Coastguard Worker #define SIOCMCTPDROPTAG		(SIOCPROTOPRIVATE + 1)
53*f80ad8b4SAndroid Build Coastguard Worker #define SIOCMCTPALLOCTAG2	(SIOCPROTOPRIVATE + 2)
54*f80ad8b4SAndroid Build Coastguard Worker #define SIOCMCTPDROPTAG2	(SIOCPROTOPRIVATE + 3)
55*f80ad8b4SAndroid Build Coastguard Worker 
56*f80ad8b4SAndroid Build Coastguard Worker /* Deprecated: use mctp_ioc_tag_ctl2 / TAG2 ioctls instead, which defines the
57*f80ad8b4SAndroid Build Coastguard Worker  * MCTP network ID as part of the allocated tag. Using this assumes the default
58*f80ad8b4SAndroid Build Coastguard Worker  * net ID for allocated tags, which may not give correct behaviour on system
59*f80ad8b4SAndroid Build Coastguard Worker  * with multiple networks configured.
60*f80ad8b4SAndroid Build Coastguard Worker  */
61*f80ad8b4SAndroid Build Coastguard Worker struct mctp_ioc_tag_ctl {
62*f80ad8b4SAndroid Build Coastguard Worker 	mctp_eid_t	peer_addr;
63*f80ad8b4SAndroid Build Coastguard Worker 
64*f80ad8b4SAndroid Build Coastguard Worker 	/* For SIOCMCTPALLOCTAG: must be passed as zero, kernel will
65*f80ad8b4SAndroid Build Coastguard Worker 	 * populate with the allocated tag value. Returned tag value will
66*f80ad8b4SAndroid Build Coastguard Worker 	 * always have TO and PREALLOC set.
67*f80ad8b4SAndroid Build Coastguard Worker 	 *
68*f80ad8b4SAndroid Build Coastguard Worker 	 * For SIOCMCTPDROPTAG: userspace provides tag value to drop, from
69*f80ad8b4SAndroid Build Coastguard Worker 	 * a prior SIOCMCTPALLOCTAG call (and so must have TO and PREALLOC set).
70*f80ad8b4SAndroid Build Coastguard Worker 	 */
71*f80ad8b4SAndroid Build Coastguard Worker 	__u8		tag;
72*f80ad8b4SAndroid Build Coastguard Worker 	__u16		flags;
73*f80ad8b4SAndroid Build Coastguard Worker };
74*f80ad8b4SAndroid Build Coastguard Worker 
75*f80ad8b4SAndroid Build Coastguard Worker struct mctp_ioc_tag_ctl2 {
76*f80ad8b4SAndroid Build Coastguard Worker 	/* Peer details: network ID, peer EID, local EID. All set by the
77*f80ad8b4SAndroid Build Coastguard Worker 	 * caller.
78*f80ad8b4SAndroid Build Coastguard Worker 	 *
79*f80ad8b4SAndroid Build Coastguard Worker 	 * Local EID must be MCTP_ADDR_NULL or MCTP_ADDR_ANY in current
80*f80ad8b4SAndroid Build Coastguard Worker 	 * kernels.
81*f80ad8b4SAndroid Build Coastguard Worker 	 */
82*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int	net;
83*f80ad8b4SAndroid Build Coastguard Worker 	mctp_eid_t	peer_addr;
84*f80ad8b4SAndroid Build Coastguard Worker 	mctp_eid_t	local_addr;
85*f80ad8b4SAndroid Build Coastguard Worker 
86*f80ad8b4SAndroid Build Coastguard Worker 	/* Set by caller, but no flags defined currently. Must be 0 */
87*f80ad8b4SAndroid Build Coastguard Worker 	__u16		flags;
88*f80ad8b4SAndroid Build Coastguard Worker 
89*f80ad8b4SAndroid Build Coastguard Worker 	/* For SIOCMCTPALLOCTAG2: must be passed as zero, kernel will
90*f80ad8b4SAndroid Build Coastguard Worker 	 * populate with the allocated tag value. Returned tag value will
91*f80ad8b4SAndroid Build Coastguard Worker 	 * always have TO and PREALLOC set.
92*f80ad8b4SAndroid Build Coastguard Worker 	 *
93*f80ad8b4SAndroid Build Coastguard Worker 	 * For SIOCMCTPDROPTAG2: userspace provides tag value to drop, from
94*f80ad8b4SAndroid Build Coastguard Worker 	 * a prior SIOCMCTPALLOCTAG2 call (and so must have TO and PREALLOC set).
95*f80ad8b4SAndroid Build Coastguard Worker 	 */
96*f80ad8b4SAndroid Build Coastguard Worker 	__u8		tag;
97*f80ad8b4SAndroid Build Coastguard Worker 
98*f80ad8b4SAndroid Build Coastguard Worker };
99*f80ad8b4SAndroid Build Coastguard Worker 
100*f80ad8b4SAndroid Build Coastguard Worker #endif /* __UAPI_MCTP_H */
101