359 lines
13 KiB
C
359 lines
13 KiB
C
#pragma once
|
|
|
|
#include "sccsdk.h"
|
|
|
|
#ifdef __cplusplus // If used by C++ code,
|
|
extern "C" {
|
|
// we need to export the C interface
|
|
#endif
|
|
|
|
/**
|
|
* @brief 校验接口 IP 地址
|
|
* @param ifIndex 网卡索引
|
|
* @param pIpAddr 网卡 IP 地址
|
|
* @param pNetMask 网卡子网掩码
|
|
* @param maxIpNumber 网卡最大允许的 IP 地址数
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MALLOC_MEMORY 分配内存失败
|
|
* - -ERR_ITEM_UNEXISTS 找不到合适的网卡
|
|
* - -ERR_UN_SUPPORT 系统不支持该操作
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int VerifyInterfaceIpAddr(int ifIndex, const TCHAR *pIpAddr, const TCHAR *pNetMask, int maxIpNumber);
|
|
|
|
/**
|
|
* @brief 根据网卡 IP地址 获取网卡索引
|
|
* @param[in] pIpAddr 网卡IP地址
|
|
* @param[out] pIfIndex 网卡索引编号
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MALLOC_MEMORY 分配内存失败
|
|
* - -ERR_ITEM_UNEXISTS 找不到合适的网卡
|
|
* - -ERR_UN_SUPPORT 系统不支持该操作
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int GetInterfaceIfIndexByIpAddr(const TCHAR *pIpAddr, ULONG *pIfIndex);
|
|
|
|
/**
|
|
* @brief 根据网卡 GUDI 获取网卡名称
|
|
* @param[in] pGUID 网卡 GUID
|
|
* @param[out] ifName 网卡名称
|
|
* @param[out] pConnStatus 网卡连接状态
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MALLOC_MEMORY 分配内存失败
|
|
* - -ERR_CREATE_COMMOBJECT 创建 COM 对象失败
|
|
* - -ERR_SYS_CALL 调用 COM 接口失败
|
|
* - -ERR_ITEM_UNEXISTS GUID 不存在
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int GetInterfaceNameByGUID(const TCHAR *pGUID, TCHAR ifName[MAX_NETCARD_NAME], int *pConnStatus);
|
|
|
|
/**
|
|
* @brief 根据网卡名获取网卡索引
|
|
* @param[in] pInterfaceName 网卡名称
|
|
* @param[out] pIfIndex 网卡 Index
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_ITEM_UNEXISTS 网卡不存在
|
|
* - -ERR_SYS_CALL 获取操作系统网卡适配器失败
|
|
* - -ERR_MALLOC_MEMORY 分配内存失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int GetInterfaceIfIndexByName(const TCHAR *pInterfaceName, int *pIfIndex);
|
|
|
|
/**
|
|
* @brief 根据网卡名获取网卡 GUID
|
|
* @param[in] ifIndex 网卡索引
|
|
* @param[out] pGuid 网卡 GUID
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_ITEM_UNEXISTS 网卡不存在
|
|
* - -ERR_MEMORY_STR 字符串转 GUID 结构体失败
|
|
* - -ERR_MALLOC_MEMORY 分配内存失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int GetInterfaceGUIDByIfIndex(const int ifIndex, GUID *pGuid);
|
|
|
|
/**
|
|
* @brief 根据网卡名获取网卡 GUID
|
|
* @param[in] pInterfaceName 网卡名称
|
|
* @param[out] pGuid 网卡 GUID
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_ITEM_UNEXISTS 网卡不存在
|
|
* - -ERR_MEMORY_STR 字符串转 GUID 结构体失败
|
|
* - -ERR_MALLOC_MEMORY 分配内存失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int GetInterfaceGUIDByName(const TCHAR *pInterfaceName, GUID *pGuid);
|
|
|
|
int WaitNetAdapterConnected(const TCHAR *pInterfaceName, int timeOutOfMs);
|
|
|
|
/**
|
|
* @brief 获取网卡 NetworkCategory 是否设置为 Private 模式
|
|
* @param[in] pInterfaceName 网卡名称
|
|
* @param[out] pIsPrivate 网卡属性
|
|
* - TRUE Private 模式
|
|
* - FALSE Public 模式
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_CREATE_COMMOBJECT 创建 COM 对象失败
|
|
* - -ERR_SYS_CALL 调用 COM 接口失败
|
|
* - -ERR_ITEM_UNEXISTS 当前网络接口不存在不存在
|
|
* - -ERR_MEMORY_STR 字符集转换失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int GetNetConnectionNetworkCategory(const TCHAR *pInterfaceName, bool *pIsPrivate);
|
|
|
|
/**
|
|
* @brief 启动/停止 Windows 网络共享服务
|
|
* @param[in] ifIndex 网卡索引
|
|
* @param[in] isEnable 启动/停止 Windows 网络共享服务
|
|
* - TRUE 启动服务
|
|
* - FALSE 停止服务
|
|
* @param[in] isSetPrivate 共享连接属性
|
|
* -TRUE 私有连接
|
|
* -FALSE 公共连接
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_CREATE_COMMOBJECT 创建 COM 对象失败
|
|
* - -ERR_SYS_CALL 调用 COM 接口失败
|
|
* - -ERR_ITEM_UNEXISTS GUID 不存在
|
|
* - -ERR_NET_UNCONNECT 网络未连接
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int SetNetIntelnetConnectionSharing(int ifIndex, bool isEnable, bool isSetPrivate);
|
|
|
|
/**
|
|
* @brief 获取当前网络共享服务状态
|
|
* @param[in] ifIndex 网卡名称索引
|
|
* @param[out] pIsEnable 当前网络共享服务状态
|
|
* - TRUE 启动
|
|
* - FALSE 停止
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_CREATE_COMMOBJECT 创建 COM 对象失败
|
|
* - -ERR_SYS_CALL 调用 COM 接口失败
|
|
* - -ERR_ITEM_UNEXISTS GUID 不存在
|
|
* - -ERR_NET_UNCONNECT 网络未连接
|
|
* - -ERR_CALL_COMMOBJECT 获取网络共享状态失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int GetNetIntelnetConnectionSharing(int ifIndex, bool *pIsEnable);
|
|
|
|
/**
|
|
* brief 删除系统所有ICS共享
|
|
* return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - -ERR_PROCESS_RETURN 系统调用执行结束返回失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int RemoveAllIntelnetConnectSharing();
|
|
|
|
/**
|
|
* @brief 设置网卡为 Private/Public 模式
|
|
* @param[in] pInterfaceName pInterfaceName 网卡名称
|
|
* @param[in] isPrivate 网卡 Category 模式
|
|
* - TRUE Private 模式
|
|
* - FALSE Public 模式
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - -ERR_PROCESS_RETURN 系统调用执行结束返回失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int SetNetConnectionNetworkCategory(const TCHAR *pInterfaceName, const bool isPrivate);
|
|
|
|
/**
|
|
* @brief 添加系统路由表项
|
|
* @param[in] pIP 目的 IP 地址
|
|
* @param[in] pMask 目的子网掩码
|
|
* @param[in] pGateway 路由网关
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_UN_SUPPORT IP地址转网络字节序网络地址失败
|
|
* - -ERR_NET_ADD_ROUTE 添加路由表项失败
|
|
* - -ERR_NET_REMOVE_ROUTE 删除路由表项失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int AddRouteTable(const char *pIP, const char *pMask, const char *pGateway);
|
|
|
|
/**
|
|
* @brief 开启 Windows WireGuard NAT 转发功能
|
|
* @param[in] pInterfaceName 网卡名称
|
|
* @param[in] pCidrIpaddr CIDR 网络接口地址
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - -ERR_PROCESS_RETURN 系统调用执行结束返回失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int SetNATRule(const TCHAR *pInterfaceName, const TCHAR *pCidrIpaddr);
|
|
|
|
/**
|
|
* @brief 关闭 Windows WireGuard NAT 转发功能
|
|
* @param pInterfaceName 网卡名称
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - -ERR_PROCESS_RETURN 系统调用执行结束返回失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int RemoveNATRule(const TCHAR *pInterfaceName);
|
|
|
|
#if 0
|
|
/**
|
|
* @brief 设置网络接口IP地址
|
|
* @param[in] pInterfaceName 网卡名称
|
|
* @param[in] pIpaddr IP 地址
|
|
* @param[in] pNetmask 子网掩码
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MALLOC_MEMORY 分配内存失败
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int SetInterfaceIpAddress(const TCHAR *pInterfaceName, const TCHAR *pIpaddr, const TCHAR *pNetmask);
|
|
|
|
/**
|
|
* @brief 获取Windows Hyper-V 虚拟机状态, 必须开启后才能开启NAT转发功能
|
|
* @param[out] pEnabled 当前 Hyper-V 虚拟机状态, TRUE 表示开启, FALSE 表示关闭
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int GetWindowsHyperVStatus(int *pEnabled);
|
|
|
|
/**
|
|
* @brief 启用/禁用 Windows Hyper-V 功能
|
|
* @param[in] enabled TRUE 启用, FALSE 关闭
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - -ERR_PROCESS_RETURN 系统调用执行结束返回失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int EnableWindowsHyperV(bool enabled);
|
|
|
|
/**
|
|
* @brief 设置网卡为 Private/Public 模式
|
|
* @param[in] pInterfaceName 网卡名称
|
|
* @param[in] isPrivate
|
|
* - TRUE Private 模式
|
|
* - FALSE Public 模式
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - -ERR_PROCESS_RETURN 系统调用执行结束返回失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int SetInterfacePrivate(const TCHAR *pInterfaceName, bool isPrivate);
|
|
|
|
/**
|
|
* @brief 获取网卡 NetworkCategory 是否设置为 Private 模式
|
|
* @param[in] pInterfaceName 网卡名称
|
|
* @param[out] pIsPrivateMode 网卡属性
|
|
* - TRUE Private 模式
|
|
* - FALSE Public 模式
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_ITEM_UNEXISTS 设备不存在
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - -ERR_PROCESS_RETURN 系统调用执行结束返回失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int IsInterfacePrivate(const TCHAR *pInterfaceName, bool *pIsPrivateMode);
|
|
|
|
/**
|
|
* @brief 获取网卡接口索引编号
|
|
* @param[in] pInterfaceName 网卡名称
|
|
* @param[out] pIndex 网卡索引
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MALLOC_MEMORY 分配内存失败
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int GetInterfaceIndexByName(const TCHAR *pInterfaceName, int *pIndex);
|
|
|
|
/**
|
|
* @brief 删除接口网络地址
|
|
* @param[in] pInterfaceName 网卡名称
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MALLOC_MEMORY 分配内存失败
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int RemoveInterfaceIpAddress(const TCHAR *pInterfaceName);
|
|
|
|
/**
|
|
* @brief 设置网络接口IP地址
|
|
* @param[in] pInterfaceName 网卡名称
|
|
* @param[in] pCidrIpaddr CIDR类型IP地址
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MALLOC_MEMORY 分配内存失败
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int SetInterfaceIpAddressFromCIDR(const TCHAR *pInterfaceName, const TCHAR *pCidrIpaddr);
|
|
|
|
/**
|
|
* @brief 设置网络接口IP地址
|
|
* @param[in] pInterfaceName 网卡名称
|
|
* @param[in] pIpaddr IP 地址
|
|
* @param[in] pNetmask 子网掩码
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MALLOC_MEMORY 分配内存失败
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int SetInterfaceIpAddress(const TCHAR *pInterfaceName, const TCHAR *pIpaddr, const TCHAR *pNetmask);
|
|
|
|
|
|
/**
|
|
* @brief 获取网络连接NAT功能是否开启
|
|
* @param[in] pInterfaceName 网卡名称
|
|
* @param[out] pIsEnabled 网卡NAT当前是否开启
|
|
* - TRUE NAT 开启
|
|
* - FALSE NAT 关闭
|
|
* @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO
|
|
* - -ERR_INPUT_PARAMS 输入参数错误
|
|
* - -ERR_MEMORY_STR 字符串处理
|
|
* - -ERR_ITEM_UNEXISTS 设备不存在
|
|
* - -ERR_CALL_SHELL 调用系统命令行失败
|
|
* - -ERR_PROCESS_RETURN 系统调用执行结束返回失败
|
|
* - ERR_SUCCESS 成功
|
|
*/
|
|
int IsNetConnectionSharingEnabled(const TCHAR *pInterfaceName, bool *pIsEnabled);
|
|
|
|
/**
|
|
* @brief WireGuard 服务 Windows PowerShell 自定义命令是否安装
|
|
* @return
|
|
* - TRUE 已经安装
|
|
* - FALSE 未安装
|
|
*/
|
|
bool IsCustomNatPSCmdInstalled();
|
|
#endif
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif |