0
0
mirror of https://github.com/OpenVPN/openvpn3.git synced 2024-09-20 12:12:15 +02:00
openvpn3/openvpn/dco/ovpn_dco_linux.h
Antonio Quartulli 446558a735
ovpn-dco: include latest UAPI header in codebase
In order to avoid a useless dependency on the ovpn-dco tree, directly
include the ovpn_dco_linuc.h UAPI header in the codebase.

This is the only external requirement to build core with DCO support.

Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
2023-06-05 15:48:34 +02:00

257 lines
6.0 KiB
C

/* SPDX-License-Identifier: (GPL-2.0-only WITH Linux-syscall-note) OR MIT */
/*
* OpenVPN data channel accelerator
*
* Copyright (C) 2019-2023 OpenVPN, Inc.
*
* Author: James Yonan <james@openvpn.net>
* Antonio Quartulli <antonio@openvpn.net>
*/
#ifndef _UAPI_LINUX_OVPN_DCO_H_
#define _UAPI_LINUX_OVPN_DCO_H_
#define OVPN_NL_NAME "ovpn-dco-v2"
#define OVPN_NL_MULTICAST_GROUP_PEERS "peers"
/**
* enum ovpn_nl_commands - supported netlink commands
*/
enum ovpn_nl_commands {
/**
* @OVPN_CMD_UNSPEC: unspecified command to catch errors
*/
OVPN_CMD_UNSPEC = 0,
/**
* @OVPN_CMD_NEW_PEER: Configure peer with its crypto keys
*/
OVPN_CMD_NEW_PEER,
/**
* @OVPN_CMD_SET_PEER: Tweak parameters for an existing peer
*/
OVPN_CMD_SET_PEER,
/**
* @OVPN_CMD_DEL_PEER: Remove peer from internal table
*/
OVPN_CMD_DEL_PEER,
OVPN_CMD_NEW_KEY,
OVPN_CMD_SWAP_KEYS,
OVPN_CMD_DEL_KEY,
/**
* @OVPN_CMD_GET_PEER: Retrieve the status of a peer or all peers
*/
OVPN_CMD_GET_PEER,
};
enum ovpn_cipher_alg {
/**
* @OVPN_CIPHER_ALG_NONE: No encryption - reserved for debugging only
*/
OVPN_CIPHER_ALG_NONE = 0,
/**
* @OVPN_CIPHER_ALG_AES_GCM: AES-GCM AEAD cipher with any allowed key size
*/
OVPN_CIPHER_ALG_AES_GCM,
/**
* @OVPN_CIPHER_ALG_CHACHA20_POLY1305: ChaCha20Poly1305 AEAD cipher
*/
OVPN_CIPHER_ALG_CHACHA20_POLY1305,
};
enum ovpn_del_peer_reason {
__OVPN_DEL_PEER_REASON_FIRST,
OVPN_DEL_PEER_REASON_TEARDOWN = __OVPN_DEL_PEER_REASON_FIRST,
OVPN_DEL_PEER_REASON_USERSPACE,
OVPN_DEL_PEER_REASON_EXPIRED,
OVPN_DEL_PEER_REASON_TRANSPORT_ERROR,
OVPN_DEL_PEER_REASON_TRANSPORT_DISCONNECT,
__OVPN_DEL_PEER_REASON_AFTER_LAST
};
enum ovpn_key_slot {
__OVPN_KEY_SLOT_FIRST,
OVPN_KEY_SLOT_PRIMARY = __OVPN_KEY_SLOT_FIRST,
OVPN_KEY_SLOT_SECONDARY,
__OVPN_KEY_SLOT_AFTER_LAST,
};
enum ovpn_netlink_attrs {
OVPN_ATTR_UNSPEC = 0,
OVPN_ATTR_IFINDEX,
OVPN_ATTR_NEW_PEER,
OVPN_ATTR_SET_PEER,
OVPN_ATTR_DEL_PEER,
OVPN_ATTR_NEW_KEY,
OVPN_ATTR_SWAP_KEYS,
OVPN_ATTR_DEL_KEY,
OVPN_ATTR_GET_PEER,
__OVPN_ATTR_AFTER_LAST,
OVPN_ATTR_MAX = __OVPN_ATTR_AFTER_LAST - 1,
};
enum ovpn_netlink_key_dir_attrs {
OVPN_KEY_DIR_ATTR_UNSPEC = 0,
OVPN_KEY_DIR_ATTR_CIPHER_KEY,
OVPN_KEY_DIR_ATTR_NONCE_TAIL,
__OVPN_KEY_DIR_ATTR_AFTER_LAST,
OVPN_KEY_DIR_ATTR_MAX = __OVPN_KEY_DIR_ATTR_AFTER_LAST - 1,
};
enum ovpn_netlink_new_key_attrs {
OVPN_NEW_KEY_ATTR_UNSPEC = 0,
OVPN_NEW_KEY_ATTR_PEER_ID,
OVPN_NEW_KEY_ATTR_KEY_SLOT,
OVPN_NEW_KEY_ATTR_KEY_ID,
OVPN_NEW_KEY_ATTR_CIPHER_ALG,
OVPN_NEW_KEY_ATTR_ENCRYPT_KEY,
OVPN_NEW_KEY_ATTR_DECRYPT_KEY,
__OVPN_NEW_KEY_ATTR_AFTER_LAST,
OVPN_NEW_KEY_ATTR_MAX = __OVPN_NEW_KEY_ATTR_AFTER_LAST - 1,
};
enum ovpn_netlink_del_key_attrs {
OVPN_DEL_KEY_ATTR_UNSPEC = 0,
OVPN_DEL_KEY_ATTR_PEER_ID,
OVPN_DEL_KEY_ATTR_KEY_SLOT,
__OVPN_DEL_KEY_ATTR_AFTER_LAST,
OVPN_DEL_KEY_ATTR_MAX = __OVPN_DEL_KEY_ATTR_AFTER_LAST - 1,
};
enum ovpn_netlink_swap_keys_attrs {
OVPN_SWAP_KEYS_ATTR_UNSPEC = 0,
OVPN_SWAP_KEYS_ATTR_PEER_ID,
__OVPN_SWAP_KEYS_ATTR_AFTER_LAST,
OVPN_SWAP_KEYS_ATTR_MAX = __OVPN_SWAP_KEYS_ATTR_AFTER_LAST - 1,
};
enum ovpn_netlink_new_peer_attrs {
OVPN_NEW_PEER_ATTR_UNSPEC = 0,
OVPN_NEW_PEER_ATTR_PEER_ID,
OVPN_NEW_PEER_ATTR_SOCKADDR_REMOTE,
OVPN_NEW_PEER_ATTR_SOCKET,
OVPN_NEW_PEER_ATTR_IPV4,
OVPN_NEW_PEER_ATTR_IPV6,
OVPN_NEW_PEER_ATTR_LOCAL_IP,
__OVPN_NEW_PEER_ATTR_AFTER_LAST,
OVPN_NEW_PEER_ATTR_MAX = __OVPN_NEW_PEER_ATTR_AFTER_LAST - 1,
};
enum ovpn_netlink_set_peer_attrs {
OVPN_SET_PEER_ATTR_UNSPEC = 0,
OVPN_SET_PEER_ATTR_PEER_ID,
OVPN_SET_PEER_ATTR_KEEPALIVE_INTERVAL,
OVPN_SET_PEER_ATTR_KEEPALIVE_TIMEOUT,
__OVPN_SET_PEER_ATTR_AFTER_LAST,
OVPN_SET_PEER_ATTR_MAX = __OVPN_SET_PEER_ATTR_AFTER_LAST - 1,
};
enum ovpn_netlink_del_peer_attrs {
OVPN_DEL_PEER_ATTR_UNSPEC = 0,
OVPN_DEL_PEER_ATTR_REASON,
OVPN_DEL_PEER_ATTR_PEER_ID,
__OVPN_DEL_PEER_ATTR_AFTER_LAST,
OVPN_DEL_PEER_ATTR_MAX = __OVPN_DEL_PEER_ATTR_AFTER_LAST - 1,
};
enum ovpn_netlink_get_peer_attrs {
OVPN_GET_PEER_ATTR_UNSPEC = 0,
OVPN_GET_PEER_ATTR_PEER_ID,
__OVPN_GET_PEER_ATTR_AFTER_LAST,
OVPN_GET_PEER_ATTR_MAX = __OVPN_GET_PEER_ATTR_AFTER_LAST - 1,
};
enum ovpn_netlink_get_peer_response_attrs {
OVPN_GET_PEER_RESP_ATTR_UNSPEC = 0,
OVPN_GET_PEER_RESP_ATTR_PEER_ID,
OVPN_GET_PEER_RESP_ATTR_SOCKADDR_REMOTE,
OVPN_GET_PEER_RESP_ATTR_IPV4,
OVPN_GET_PEER_RESP_ATTR_IPV6,
OVPN_GET_PEER_RESP_ATTR_LOCAL_IP,
OVPN_GET_PEER_RESP_ATTR_LOCAL_PORT,
OVPN_GET_PEER_RESP_ATTR_KEEPALIVE_INTERVAL,
OVPN_GET_PEER_RESP_ATTR_KEEPALIVE_TIMEOUT,
OVPN_GET_PEER_RESP_ATTR_VPN_RX_BYTES,
OVPN_GET_PEER_RESP_ATTR_VPN_TX_BYTES,
OVPN_GET_PEER_RESP_ATTR_VPN_RX_PACKETS,
OVPN_GET_PEER_RESP_ATTR_VPN_TX_PACKETS,
OVPN_GET_PEER_RESP_ATTR_LINK_RX_BYTES,
OVPN_GET_PEER_RESP_ATTR_LINK_TX_BYTES,
OVPN_GET_PEER_RESP_ATTR_LINK_RX_PACKETS,
OVPN_GET_PEER_RESP_ATTR_LINK_TX_PACKETS,
__OVPN_GET_PEER_RESP_ATTR_AFTER_LAST,
OVPN_GET_PEER_RESP_ATTR_MAX = __OVPN_GET_PEER_RESP_ATTR_AFTER_LAST - 1,
};
enum ovpn_netlink_peer_stats_attrs {
OVPN_PEER_STATS_ATTR_UNSPEC = 0,
OVPN_PEER_STATS_BYTES,
OVPN_PEER_STATS_PACKETS,
__OVPN_PEER_STATS_ATTR_AFTER_LAST,
OVPN_PEER_STATS_ATTR_MAX = __OVPN_PEER_STATS_ATTR_AFTER_LAST - 1,
};
enum ovpn_netlink_peer_attrs {
OVPN_PEER_ATTR_UNSPEC = 0,
OVPN_PEER_ATTR_PEER_ID,
OVPN_PEER_ATTR_SOCKADDR_REMOTE,
OVPN_PEER_ATTR_IPV4,
OVPN_PEER_ATTR_IPV6,
OVPN_PEER_ATTR_LOCAL_IP,
OVPN_PEER_ATTR_KEEPALIVE_INTERVAL,
OVPN_PEER_ATTR_KEEPALIVE_TIMEOUT,
OVPN_PEER_ATTR_ENCRYPT_KEY,
OVPN_PEER_ATTR_DECRYPT_KEY,
OVPN_PEER_ATTR_RX_STATS,
OVPN_PEER_ATTR_TX_STATS,
__OVPN_PEER_ATTR_AFTER_LAST,
OVPN_PEER_ATTR_MAX = __OVPN_PEER_ATTR_AFTER_LAST - 1,
};
enum ovpn_netlink_packet_attrs {
OVPN_PACKET_ATTR_UNSPEC = 0,
OVPN_PACKET_ATTR_PACKET,
OVPN_PACKET_ATTR_PEER_ID,
__OVPN_PACKET_ATTR_AFTER_LAST,
OVPN_PACKET_ATTR_MAX = __OVPN_PACKET_ATTR_AFTER_LAST - 1,
};
enum ovpn_ifla_attrs {
IFLA_OVPN_UNSPEC = 0,
IFLA_OVPN_MODE,
__IFLA_OVPN_AFTER_LAST,
IFLA_OVPN_MAX = __IFLA_OVPN_AFTER_LAST - 1,
};
enum ovpn_mode {
__OVPN_MODE_FIRST = 0,
OVPN_MODE_P2P = __OVPN_MODE_FIRST,
OVPN_MODE_MP,
__OVPN_MODE_AFTER_LAST,
};
#endif /* _UAPI_LINUX_OVPN_DCO_H_ */