xref: /linux/include/uapi/linux/kcm.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2ab7ac4ebSTom Herbert /*
3ab7ac4ebSTom Herbert  * Kernel Connection Multiplexor
4ab7ac4ebSTom Herbert  *
5ab7ac4ebSTom Herbert  * Copyright (c) 2016 Tom Herbert <tom@herbertland.com>
6ab7ac4ebSTom Herbert  *
7ab7ac4ebSTom Herbert  * This program is free software; you can redistribute it and/or modify
8ab7ac4ebSTom Herbert  * it under the terms of the GNU General Public License version 2
9ab7ac4ebSTom Herbert  * as published by the Free Software Foundation.
10ab7ac4ebSTom Herbert  *
11ab7ac4ebSTom Herbert  * User API to clone KCM sockets and attach transport socket to a KCM
12ab7ac4ebSTom Herbert  * multiplexor.
13ab7ac4ebSTom Herbert  */
14ab7ac4ebSTom Herbert 
15ab7ac4ebSTom Herbert #ifndef KCM_KERNEL_H
16ab7ac4ebSTom Herbert #define KCM_KERNEL_H
17ab7ac4ebSTom Herbert 
18ab7ac4ebSTom Herbert struct kcm_attach {
19ab7ac4ebSTom Herbert 	int fd;
20ab7ac4ebSTom Herbert 	int bpf_fd;
21ab7ac4ebSTom Herbert };
22ab7ac4ebSTom Herbert 
23ab7ac4ebSTom Herbert struct kcm_unattach {
24ab7ac4ebSTom Herbert 	int fd;
25ab7ac4ebSTom Herbert };
26ab7ac4ebSTom Herbert 
27ab7ac4ebSTom Herbert struct kcm_clone {
28ab7ac4ebSTom Herbert 	int fd;
29ab7ac4ebSTom Herbert };
30ab7ac4ebSTom Herbert 
31ab7ac4ebSTom Herbert #define SIOCKCMATTACH	(SIOCPROTOPRIVATE + 0)
32ab7ac4ebSTom Herbert #define SIOCKCMUNATTACH	(SIOCPROTOPRIVATE + 1)
33ab7ac4ebSTom Herbert #define SIOCKCMCLONE	(SIOCPROTOPRIVATE + 2)
34ab7ac4ebSTom Herbert 
35ab7ac4ebSTom Herbert #define KCMPROTO_CONNECTED	0
36ab7ac4ebSTom Herbert 
37ab7ac4ebSTom Herbert /* Socket options */
38ab7ac4ebSTom Herbert #define KCM_RECV_DISABLE	1
39ab7ac4ebSTom Herbert 
40ab7ac4ebSTom Herbert #endif
41ab7ac4ebSTom Herbert 
42