2019-06-03 20:19:04 +08:00
|
|
|
#pragma once
|
|
|
|
|
|
2020-08-03 14:58:26 +08:00
|
|
|
//#define KNI_CMSG_TLV_NR_MAX 64
|
2019-06-03 20:19:04 +08:00
|
|
|
struct kni_cmsg;
|
|
|
|
|
struct kni_cmsg_serialize_header;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum kni_cmsg_errno{
|
|
|
|
|
KNI_CMSG_INVALID_FORMAT = -1,
|
|
|
|
|
KNI_CMSG_BUFF_NOT_ENOUGH = -2,
|
2019-06-04 21:18:55 +08:00
|
|
|
KNI_CMSG_INVALID_TYPE = -3,
|
|
|
|
|
KNI_CMSG_TYPE_UNSET = -4,
|
2019-06-03 20:19:04 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum tfe_cmsg_tlv_type
|
|
|
|
|
{
|
|
|
|
|
/* TCP restore information */
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_SEQ = 0x0,
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_ACK = 0x1,
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_MSS_CLIENT = 0x2,
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_MSS_SERVER = 0x3,
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_WSACLE_CLIENT = 0x4,
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_WSACLE_SERVER = 0x5,
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_SACK_CLIENT = 0x6,
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_SACK_SERVER = 0x7,
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_TS_CLIENT = 0x8,
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_TS_SERVER = 0x9,
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_PROTOCOL = 0xa,
|
2019-06-05 15:42:46 +08:00
|
|
|
TFE_CMSG_TCP_RESTORE_WINDOW_CLIENT = 0xb,
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_WINDOW_SERVER = 0xc,
|
2020-04-07 11:19:52 +08:00
|
|
|
TFE_CMSG_TCP_RESTORE_INFO_PACKET_CUR_DIR = 0xd,
|
2021-04-20 14:17:38 +08:00
|
|
|
TFE_CMSG_TCP_RESTORE_TS_CLIENT_VAL = 0xe,
|
|
|
|
|
TFE_CMSG_TCP_RESTORE_TS_SERVER_VAL = 0xf,
|
2019-06-03 20:19:04 +08:00
|
|
|
|
2023-04-28 18:03:22 +08:00
|
|
|
TFE_CMSG_POLICY_ID = 0x10, // size uint64_t
|
2019-06-03 20:19:04 +08:00
|
|
|
TFE_CMSG_STREAM_TRACE_ID = 0x11,
|
2023-04-28 18:03:22 +08:00
|
|
|
TFE_CMSG_TCP_OPTION_PROFILE_ID, // size int
|
|
|
|
|
TFE_CMSG_DECRYPTION_PROFILE_ID, // size int
|
|
|
|
|
TFE_CMSG_KEYRING_FOR_TRUSTED_ID, // size int
|
|
|
|
|
TFE_CMSG_KEYRING_FOR_UNTRUSTED, // size int
|
2019-06-03 20:19:04 +08:00
|
|
|
|
|
|
|
|
TFE_CMSG_SSL_INTERCEPT_STATE, //size uint64_t, 0-passthrough, 1-intercept, 2-shutdown, referer from enum ssl_stream_action
|
|
|
|
|
TFE_CMSG_SSL_UPSTREAM_LATENCY, //size uint64_t, milisecond
|
|
|
|
|
TFE_CMSG_SSL_DOWNSTREAM_LATENCY, //size uint64_t, milisecond
|
|
|
|
|
TFE_CMSG_SSL_UPSTREAM_VERSION, //string, SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 unknown
|
2019-06-05 15:42:46 +08:00
|
|
|
TFE_CMSG_SSL_DOWNSTREAM_VERSION,
|
2019-06-03 20:19:04 +08:00
|
|
|
TFE_CMSG_SSL_PINNING_STATE, //size uint64_t, 0-not pinning 1-pinning 2-maybe pinning
|
2019-06-05 15:42:46 +08:00
|
|
|
TFE_CMSG_SSL_CERT_VERIFY, //uint16_t
|
2019-09-18 15:56:59 +08:00
|
|
|
TFE_CMSG_SSL_ERROR, //string
|
|
|
|
|
TFE_CMSG_SRC_MAC,
|
|
|
|
|
TFE_CMSG_DST_MAC,
|
2020-07-29 13:56:58 +08:00
|
|
|
|
|
|
|
|
/* TCP option information */
|
2023-04-28 18:03:22 +08:00
|
|
|
TFE_CMSG_DOWNSTREAM_TCP_MSS_ENABLE,
|
|
|
|
|
TFE_CMSG_DOWNSTREAM_TCP_MSS_VALUE,
|
|
|
|
|
TFE_CMSG_DOWNSTREAM_TCP_NODELAY,
|
2020-08-03 14:58:26 +08:00
|
|
|
TFE_CMSG_DOWNSTREAM_TCP_TTL,
|
|
|
|
|
TFE_CMSG_DOWNSTREAM_TCP_KEEPALIVE,
|
|
|
|
|
TFE_CMSG_DOWNSTREAM_TCP_KEEPCNT,
|
|
|
|
|
TFE_CMSG_DOWNSTREAM_TCP_KEEPIDLE,
|
|
|
|
|
TFE_CMSG_DOWNSTREAM_TCP_KEEPINTVL,
|
|
|
|
|
TFE_CMSG_DOWNSTREAM_TCP_USER_TIMEOUT,
|
2023-04-28 18:03:22 +08:00
|
|
|
|
|
|
|
|
TFE_CMSG_UPSTREAM_TCP_MSS_ENABLE,
|
|
|
|
|
TFE_CMSG_UPSTREAM_TCP_MSS_VALUE,
|
|
|
|
|
TFE_CMSG_UPSTREAM_TCP_NODELAY,
|
|
|
|
|
TFE_CMSG_UPSTREAM_TCP_TTL,
|
|
|
|
|
TFE_CMSG_UPSTREAM_TCP_KEEPALIVE,
|
|
|
|
|
TFE_CMSG_UPSTREAM_TCP_KEEPCNT,
|
2020-08-03 14:58:26 +08:00
|
|
|
TFE_CMSG_UPSTREAM_TCP_KEEPIDLE,
|
|
|
|
|
TFE_CMSG_UPSTREAM_TCP_KEEPINTVL,
|
|
|
|
|
TFE_CMSG_UPSTREAM_TCP_USER_TIMEOUT,
|
2023-04-28 18:03:22 +08:00
|
|
|
|
|
|
|
|
TFE_CMSG_HIT_NO_INTERCEPT, // size uint8_t
|
2020-08-03 14:58:26 +08:00
|
|
|
TFE_CMSG_TCP_PASSTHROUGH,
|
2023-04-28 18:03:22 +08:00
|
|
|
TFE_CMSG_TCP_DECRYPTED_TRAFFIC_STEERING,
|
2020-08-24 11:33:41 +08:00
|
|
|
|
|
|
|
|
// share session attribute
|
|
|
|
|
TFE_CMSG_SRC_SUB_ID, // string max size 256
|
|
|
|
|
TFE_CMSG_DST_SUB_ID, // string max size 256
|
|
|
|
|
TFE_CMSG_SRC_ASN, // string max size 64
|
|
|
|
|
TFE_CMSG_DST_ASN, // string max size 64
|
|
|
|
|
TFE_CMSG_SRC_ORGANIZATION, // string max size 256
|
|
|
|
|
TFE_CMSG_DST_ORGANIZATION, // string max size 256
|
|
|
|
|
TFE_CMSG_SRC_IP_LOCATION_COUNTRY, // string max size 256
|
|
|
|
|
TFE_CMSG_DST_IP_LOCATION_COUNTRY, // string max size 256
|
|
|
|
|
TFE_CMSG_SRC_IP_LOCATION_PROVINE, // string max size 256
|
|
|
|
|
TFE_CMSG_DST_IP_LOCATION_PROVINE, // string max size 256
|
|
|
|
|
TFE_CMSG_SRC_IP_LOCATION_CITY, // string max size 256
|
|
|
|
|
TFE_CMSG_DST_IP_LOCATION_CITY, // string max size 256
|
2022-02-08 16:14:10 +08:00
|
|
|
TFE_CMSG_SRC_IP_LOCATION_SUBDIVISION,
|
|
|
|
|
TFE_CMSG_DST_IP_LOCATION_SUBDIVISION,
|
2020-09-22 18:16:19 +08:00
|
|
|
//ja3 fingerprint
|
|
|
|
|
TFE_CMSG_SSL_CLIENT_JA3_FINGERPRINT,
|
2020-10-12 17:00:13 +08:00
|
|
|
//fqdn cat id
|
|
|
|
|
TFE_CMSG_FQDN_CAT_ID_NUM, // uint32_t
|
|
|
|
|
TFE_CMSG_FQDN_CAT_ID_VAL, // string max size 8 * sizeof(uint32_t)
|
2020-12-04 17:21:50 +08:00
|
|
|
//cmsg common_direction
|
|
|
|
|
TFE_CMSG_COMMON_DIRECTION,
|
2022-01-18 16:31:32 +08:00
|
|
|
TFE_CMSG_SSL_PASSTHROUGH_REASON,
|
2020-08-24 11:33:41 +08:00
|
|
|
//cmsg tlv max
|
2020-08-03 14:58:26 +08:00
|
|
|
KNI_CMSG_TLV_NR_MAX,
|
2019-06-03 20:19:04 +08:00
|
|
|
};
|
|
|
|
|
|
2020-08-25 14:27:34 +08:00
|
|
|
extern const char * tfe_cmsg_tlv_type_to_string[KNI_CMSG_TLV_NR_MAX];
|
|
|
|
|
|
2020-10-12 17:00:13 +08:00
|
|
|
|
2019-06-03 20:19:04 +08:00
|
|
|
struct kni_cmsg* kni_cmsg_init();
|
|
|
|
|
void kni_cmsg_destroy(struct kni_cmsg *cmsg);
|
|
|
|
|
int kni_cmsg_get(struct kni_cmsg *cmsg, uint16_t type, uint16_t *size, unsigned char **pvalue);
|
|
|
|
|
int kni_cmsg_set(struct kni_cmsg *cmsg, uint16_t type, const unsigned char *value, uint16_t size);
|
|
|
|
|
uint16_t kni_cmsg_serialize_size_get(struct kni_cmsg *cmsg);
|
|
|
|
|
int kni_cmsg_serialize(struct kni_cmsg *cmsg, unsigned char *buff, uint16_t bufflen, uint16_t *serialize_len);
|
|
|
|
|
int kni_cmsg_deserialize(const unsigned char *data, uint16_t len, struct kni_cmsg** pcmsg);
|
2020-08-25 14:27:34 +08:00
|
|
|
|
|
|
|
|
void tfe_cmsg_enum_to_string();
|