2022-06-11 21:54:11 +00:00
|
|
|
# Copyright (c) 2022 Fantix King https://fantix.pro
|
2022-03-20 22:57:16 +00:00
|
|
|
# kLoop is licensed under Mulan PSL v2.
|
|
|
|
# You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
|
|
# You may obtain a copy of Mulan PSL v2 at:
|
|
|
|
# http://license.coscl.org.cn/MulanPSL2
|
|
|
|
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
|
|
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
|
|
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
|
|
# See the Mulan PSL v2 for more details.
|
|
|
|
|
2022-04-23 18:35:17 +00:00
|
|
|
|
2022-03-20 22:57:16 +00:00
|
|
|
cdef extern from "linux/fs.h" nogil:
|
|
|
|
ctypedef int __kernel_rwf_t
|
|
|
|
|
|
|
|
|
|
|
|
cdef extern from "linux/types.h" nogil:
|
|
|
|
ctypedef int __u8
|
|
|
|
ctypedef int __u16
|
|
|
|
ctypedef int __u64
|
|
|
|
ctypedef int __u32
|
|
|
|
ctypedef int __s32
|
|
|
|
ctypedef int __kernel_time64_t
|
|
|
|
|
|
|
|
|
|
|
|
cdef extern from "linux/time_types.h" nogil:
|
|
|
|
struct __kernel_timespec:
|
|
|
|
__kernel_time64_t tv_sec
|
|
|
|
long long tv_nsec
|
|
|
|
|
|
|
|
|
|
|
|
cdef extern from "linux/tcp.h" nogil:
|
|
|
|
int TCP_ULP
|
|
|
|
|
|
|
|
|
|
|
|
cdef extern from "linux/tls.h" nogil:
|
2022-04-19 22:32:40 +00:00
|
|
|
int TLS_GET_RECORD_TYPE
|
|
|
|
|
2022-03-20 22:57:16 +00:00
|
|
|
__u16 TLS_CIPHER_AES_GCM_256
|
|
|
|
int TLS_CIPHER_AES_GCM_256_IV_SIZE
|
|
|
|
int TLS_CIPHER_AES_GCM_256_SALT_SIZE
|
|
|
|
int TLS_CIPHER_AES_GCM_256_KEY_SIZE
|
|
|
|
int TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE
|
|
|
|
int TLS_TX
|
|
|
|
int TLS_RX
|
|
|
|
|
|
|
|
struct tls_crypto_info:
|
|
|
|
__u16 version
|
|
|
|
__u16 cipher_type
|
|
|
|
|
|
|
|
struct tls12_crypto_info_aes_gcm_256:
|
|
|
|
tls_crypto_info info
|
|
|
|
unsigned char* iv
|
|
|
|
unsigned char* key
|
|
|
|
unsigned char* salt
|
|
|
|
unsigned char* rec_seq
|
|
|
|
|
|
|
|
|
|
|
|
cdef extern from "linux/io_uring.h" nogil:
|
|
|
|
unsigned IORING_SETUP_SQPOLL
|
|
|
|
unsigned IORING_SETUP_SQ_AFF
|
|
|
|
|
|
|
|
unsigned IORING_ENTER_GETEVENTS
|
|
|
|
unsigned IORING_ENTER_SQ_WAKEUP
|
|
|
|
unsigned IORING_ENTER_EXT_ARG
|
|
|
|
|
|
|
|
unsigned IORING_SQ_NEED_WAKEUP
|
|
|
|
unsigned IORING_SQ_CQ_OVERFLOW
|
|
|
|
|
|
|
|
unsigned long long IORING_OFF_SQ_RING
|
|
|
|
unsigned long long IORING_OFF_SQES
|
|
|
|
|
|
|
|
unsigned IORING_TIMEOUT_ABS
|
|
|
|
|
|
|
|
unsigned IOSQE_IO_LINK
|
|
|
|
|
|
|
|
enum Operation:
|
|
|
|
IORING_OP_NOP
|
|
|
|
IORING_OP_CONNECT
|
|
|
|
IORING_OP_SEND
|
|
|
|
IORING_OP_SENDMSG
|
|
|
|
IORING_OP_RECV
|
|
|
|
IORING_OP_RECVMSG
|
2022-05-08 13:55:41 +00:00
|
|
|
IORING_OP_OPENAT
|
|
|
|
IORING_OP_READ
|
|
|
|
IORING_OP_CLOSE
|
2022-03-20 22:57:16 +00:00
|
|
|
|
|
|
|
struct io_sqring_offsets:
|
|
|
|
__u32 head
|
|
|
|
__u32 tail
|
|
|
|
__u32 ring_mask
|
|
|
|
__u32 ring_entries
|
|
|
|
__u32 flags
|
|
|
|
__u32 dropped
|
|
|
|
__u32 array
|
|
|
|
|
|
|
|
struct io_cqring_offsets:
|
|
|
|
__u32 head
|
|
|
|
__u32 tail
|
|
|
|
__u32 ring_mask
|
|
|
|
__u32 ring_entries
|
|
|
|
__u32 overflow
|
|
|
|
__u32 cqes
|
|
|
|
__u32 flags
|
|
|
|
|
|
|
|
struct io_uring_params:
|
|
|
|
__u32 flags
|
|
|
|
__u32 sq_thread_cpu
|
|
|
|
__u32 sq_thread_idle
|
|
|
|
|
|
|
|
# written by the kernel:
|
|
|
|
__u32 sq_entries
|
|
|
|
__u32 cq_entries
|
|
|
|
__u32 features
|
|
|
|
__u32 resv[4]
|
|
|
|
io_sqring_offsets sq_off
|
|
|
|
io_cqring_offsets cq_off
|
|
|
|
|
|
|
|
struct io_uring_sqe:
|
|
|
|
__u8 opcode # type of operation for this sqe
|
|
|
|
__s32 fd # file descriptor to do IO on
|
|
|
|
__u64 off # offset into file
|
|
|
|
__u64 addr # pointer to buffer or iovecs
|
|
|
|
__u32 len # buffer size or number of iovecs
|
|
|
|
__u64 user_data # data to be passed back at completion time
|
|
|
|
__u8 flags # IOSQE_ flags
|
2022-05-08 13:55:41 +00:00
|
|
|
__u32 open_flags
|
2022-03-20 22:57:16 +00:00
|
|
|
|
|
|
|
struct io_uring_cqe:
|
|
|
|
__u64 user_data # data to be passed back at completion time
|
|
|
|
__s32 res # result code for this event
|
|
|
|
|
|
|
|
struct io_uring_getevents_arg:
|
|
|
|
__u64 sigmask
|
|
|
|
__u32 sigmask_sz
|
|
|
|
__u64 ts
|