GNU Linux-libre 6.1.90-gnu
[releases.git] / include / uapi / linux / mctp.h
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 /*
3  * Management Component Transport Protocol (MCTP)
4  *
5  * Copyright (c) 2021 Code Construct
6  * Copyright (c) 2021 Google
7  */
8
9 #ifndef __UAPI_MCTP_H
10 #define __UAPI_MCTP_H
11
12 #include <linux/types.h>
13 #include <linux/socket.h>
14 #include <linux/netdevice.h>
15
16 typedef __u8                    mctp_eid_t;
17
18 struct mctp_addr {
19         mctp_eid_t              s_addr;
20 };
21
22 struct sockaddr_mctp {
23         __kernel_sa_family_t    smctp_family;
24         __u16                   __smctp_pad0;
25         unsigned int            smctp_network;
26         struct mctp_addr        smctp_addr;
27         __u8                    smctp_type;
28         __u8                    smctp_tag;
29         __u8                    __smctp_pad1;
30 };
31
32 struct sockaddr_mctp_ext {
33         struct sockaddr_mctp    smctp_base;
34         int                     smctp_ifindex;
35         __u8                    smctp_halen;
36         __u8                    __smctp_pad0[3];
37         __u8                    smctp_haddr[MAX_ADDR_LEN];
38 };
39
40 #define MCTP_NET_ANY            0x0
41
42 #define MCTP_ADDR_NULL          0x00
43 #define MCTP_ADDR_ANY           0xff
44
45 #define MCTP_TAG_MASK           0x07
46 #define MCTP_TAG_OWNER          0x08
47 #define MCTP_TAG_PREALLOC       0x10
48
49 #define MCTP_OPT_ADDR_EXT       1
50
51 #define SIOCMCTPALLOCTAG        (SIOCPROTOPRIVATE + 0)
52 #define SIOCMCTPDROPTAG         (SIOCPROTOPRIVATE + 1)
53
54 struct mctp_ioc_tag_ctl {
55         mctp_eid_t      peer_addr;
56
57         /* For SIOCMCTPALLOCTAG: must be passed as zero, kernel will
58          * populate with the allocated tag value. Returned tag value will
59          * always have TO and PREALLOC set.
60          *
61          * For SIOCMCTPDROPTAG: userspace provides tag value to drop, from
62          * a prior SIOCMCTPALLOCTAG call (and so must have TO and PREALLOC set).
63          */
64         __u8            tag;
65         __u16           flags;
66 };
67
68 #endif /* __UAPI_MCTP_H */