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