143 lines
4.0 KiB
C
143 lines
4.0 KiB
C
#pragma once
|
|
|
|
#define USED_PORTMAP_TUNNEL (0)
|
|
/**
|
|
* @brief WireGuard key 最大长度
|
|
*/
|
|
#define WG_KEY_MAX (64)
|
|
|
|
/**
|
|
* @brief 操作系统最大网卡数
|
|
*/
|
|
#define NET_CARD_MAX (32)
|
|
|
|
/**
|
|
* @brief IP 字符串最大长度(支持IPv6)
|
|
*/
|
|
#define MAX_IP_LEN (48)
|
|
|
|
/**
|
|
* @brief IP 字符串最小长度
|
|
*/
|
|
#define MIN_IP_LEN (7)
|
|
|
|
/**
|
|
* @brief 网卡名称字符串最大长度(支持IPv6)
|
|
*/
|
|
#define MAX_NETCARD_NAME (64)
|
|
|
|
/**
|
|
* @brief SCG 服务 ID
|
|
*
|
|
*/
|
|
typedef enum {
|
|
WG_TUNNEL_SCG_ID = 3, ///< 隧道服务
|
|
WG_CTRL_SCG_ID = 4 ///< 隧道控制服务
|
|
} SCG_SVR_ID;
|
|
|
|
/**
|
|
* @brief 协议加密类型
|
|
*
|
|
*/
|
|
typedef enum {
|
|
CRYPTO_NONE = 0, ///< 不加密
|
|
CRYPTO_BASE64 = 1, ///< BASE64 字符串编码
|
|
CRYPTO_AES128 = 2, ///< AES 128位秘钥 加密
|
|
CRYPTO_3DES = 3, ///< 3DES 加密
|
|
CRYPTO_AES256 = 4, ///< AES 256 位秘钥加密
|
|
CRYPTO_MAX,
|
|
} PROTO_CRYPTO_TYPE;
|
|
|
|
/**
|
|
* @brief 网络连接状态
|
|
*
|
|
*/
|
|
typedef enum {
|
|
STATUS_DISCONNECTED = 0, ///< 连接已断开连接
|
|
STATUS_CONNECTING, ///< 连接正在进行连接
|
|
STATUS_CONNECTED, ///< 连接处于连接状态
|
|
STATUS_DISCONNECTING, ///< 连接正在断开连接
|
|
STATUS_HARDWARE_NOT_PRESENT, ///< 连接的硬件(例如网络接口卡 (NIC) )不存在
|
|
STATUS_HARDWARE_DISABLED, ///< 连接的硬件存在,但未启用
|
|
STATUS_HARDWARE_MALFUNCTION, ///< 连接的硬件中发生了故障
|
|
STATUS_MEDIA_DISCONNECTED, ///< 媒体(例如网络电缆)断开连接
|
|
STATUS_AUTHENTICATING, ///< 连接正在等待身份验证发生
|
|
STATUS_AUTHENTICATION_SUCCEEDED, ///< 身份验证在此连接上成功
|
|
STATUS_AUTHENTICATION_FAILED, ///< 此连接上身份验证失败
|
|
STATUS_INVALID_ADDRESS, ///< 地址无效
|
|
STATUS_CREDENTIALS_REQUIRED, ///< 需要安全凭据
|
|
STATUS_ACTION_REQUIRED, ///< 连接需要其它动作
|
|
STATUS_ACTION_REQUIRED_RETRY, ///< 重试连接其它动作
|
|
STATUS_CONNECT_FAILED, ///< 连接失败
|
|
} NET_CONNECT_STATUS;
|
|
|
|
/**
|
|
* @brief 日志等级
|
|
*
|
|
*/
|
|
enum LOG_LEVEL {
|
|
LOG_TRACE = 0, ///< TRACE 日志等级
|
|
LOG_DEBUG, ///< DEBUG 日志等级
|
|
LOG_INFO, ///< INFO 日志等级
|
|
LOG_WARN, ///< WARN 日志等级
|
|
LOG_ERROR, ///< ERROR 日志等级
|
|
LOG_CRITICAL, ///< CRITICAL 日志等级
|
|
LOG_OFF ///< 关闭日志
|
|
};
|
|
|
|
/**
|
|
* @brief Hash 算法类型
|
|
*
|
|
*/
|
|
typedef enum {
|
|
HASH_MD2 = 0, ///< MD2 HASH 算法
|
|
HASH_MD4, ///< MD4 HASH 算法
|
|
HASH_MD5, ///< MD5 HASH 算法
|
|
HASH_SHA1, ///< SHA1 HASH 算法
|
|
HASH_SHA256, ///< SHA256 HASH 算法
|
|
HASH_SHA384, ///< SHA384 HASH 算法
|
|
HASH_SHA512 ///< SHA512 HASH 算法
|
|
} HASH_TYPE;
|
|
|
|
/**
|
|
* @brief 网络共享模式
|
|
*
|
|
*/
|
|
typedef enum {
|
|
ICS_SHARE_MODE = 0, ///< Internet Share Mode(ICS) 模式
|
|
NAT_SHARE_MODE = 1 ///< Net Address Translation(NAT) 模式
|
|
} NET_SHARE_MODE;
|
|
|
|
/**
|
|
*
|
|
* @brief 虚拟主机配置信息
|
|
*/
|
|
typedef struct {
|
|
int vmId; ///< 用户虚拟机 ID
|
|
CHAR vmName[MAX_PATH]; ///< 用户虚拟机名称
|
|
CHAR svrPublicKey[64]; ///< 用户服务端公钥
|
|
CHAR vmNetwork[MAX_IP_LEN]; ///< 用户虚拟机网络地址
|
|
CHAR scgGateWay[MAX_PATH]; ///< 用户服务端接入网关
|
|
CHAR scgTunnelGw[MAX_PATH]; ///< 用户隧道接入网关
|
|
} VM_CFG, *PVM_CFG;
|
|
|
|
/**
|
|
*
|
|
* @brief 客户端用户相关配置信息
|
|
*/
|
|
typedef struct {
|
|
int scgCtrlAppId; ///< 用户接入网关控制 ID
|
|
int scgTunnelAppId; ///< 用户接入网关隧道 ID
|
|
CHAR cliPrivateKey[64]; ///< 用户客户端私钥
|
|
CHAR cliPublicKey[64]; ///< 用户客户端公钥
|
|
CHAR cliAddress[MAX_IP_LEN]; ///< 用户客户端隧道IP地址
|
|
PVM_CFG pVMConfig; ///< 用户虚拟机配置列表
|
|
int tolVM; ///< 用户虚拟机配置最大数
|
|
} USER_CLIENT_CONFIG, *PUSER_CLIENT_CONFIG;
|
|
|
|
typedef struct {
|
|
int svrListenPort; ///< 用户服务端监听端口
|
|
CHAR svrPrivateKey[64]; ///< 用户服务端公钥
|
|
CHAR svrAddress[MAX_IP_LEN]; ///< 用户服务端隧道 IP 地址
|
|
} USER_SERVER_CONFIG, *PUSER_SERVER_CONFIG;
|