mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-28 20:02:17 +00:00
![Matt Johnston](/assets/img/avatar_default.png)
This change adds a couple of new ioctls for mctp sockets: SIOCMCTPALLOCTAG and SIOCMCTPDROPTAG. These ioctls provide facilities for explicit allocation / release of tags, overriding the automatic allocate-on-send/release-on-reply and timeout behaviours. This allows userspace more control over messages that may not fit a simple request/response model. In order to indicate a pre-allocated tag to the sendmsg() syscall, we introduce a new flag to the struct sockaddr_mctp.smctp_tag value: MCTP_TAG_PREALLOC. Additional changes from Jeremy Kerr <jk@codeconstruct.com.au>. Contains a fix that was: Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Matt Johnston <matt@codeconstruct.com.au> Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au> Signed-off-by: David S. Miller <davem@davemloft.net>
68 lines
1.5 KiB
C
68 lines
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
|
/*
|
|
* Management Component Transport Protocol (MCTP)
|
|
*
|
|
* Copyright (c) 2021 Code Construct
|
|
* Copyright (c) 2021 Google
|
|
*/
|
|
|
|
#ifndef __UAPI_MCTP_H
|
|
#define __UAPI_MCTP_H
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/socket.h>
|
|
#include <linux/netdevice.h>
|
|
|
|
typedef __u8 mctp_eid_t;
|
|
|
|
struct mctp_addr {
|
|
mctp_eid_t s_addr;
|
|
};
|
|
|
|
struct sockaddr_mctp {
|
|
__kernel_sa_family_t smctp_family;
|
|
__u16 __smctp_pad0;
|
|
unsigned int smctp_network;
|
|
struct mctp_addr smctp_addr;
|
|
__u8 smctp_type;
|
|
__u8 smctp_tag;
|
|
__u8 __smctp_pad1;
|
|
};
|
|
|
|
struct sockaddr_mctp_ext {
|
|
struct sockaddr_mctp smctp_base;
|
|
int smctp_ifindex;
|
|
__u8 smctp_halen;
|
|
__u8 __smctp_pad0[3];
|
|
__u8 smctp_haddr[MAX_ADDR_LEN];
|
|
};
|
|
|
|
#define MCTP_NET_ANY 0x0
|
|
|
|
#define MCTP_ADDR_NULL 0x00
|
|
#define MCTP_ADDR_ANY 0xff
|
|
|
|
#define MCTP_TAG_MASK 0x07
|
|
#define MCTP_TAG_OWNER 0x08
|
|
#define MCTP_TAG_PREALLOC 0x10
|
|
|
|
#define MCTP_OPT_ADDR_EXT 1
|
|
|
|
#define SIOCMCTPALLOCTAG (SIOCPROTOPRIVATE + 0)
|
|
#define SIOCMCTPDROPTAG (SIOCPROTOPRIVATE + 1)
|
|
|
|
struct mctp_ioc_tag_ctl {
|
|
mctp_eid_t peer_addr;
|
|
|
|
/* For SIOCMCTPALLOCTAG: must be passed as zero, kernel will
|
|
* populate with the allocated tag value. Returned tag value will
|
|
* always have TO and PREALLOC set.
|
|
*
|
|
* For SIOCMCTPDROPTAG: userspace provides tag value to drop, from
|
|
* a prior SIOCMCTPALLOCTAG call (and so must have TO and PREALLOC set).
|
|
*/
|
|
__u8 tag;
|
|
__u16 flags;
|
|
};
|
|
|
|
#endif /* __UAPI_MCTP_H */
|