Cplusplus dot com

本文介绍了C++中的数学库cmath,提供了链接到官方网站的资源,方便读者查阅详细的函数和常量说明。
这是lanDns通过web设置的.h文件,其中包含用到的结构体,函数等信息,用于完善我的CLI程序,现在你只用把添加一个lanDns的CLI程序写出来就行,设置已有的lanDns的程序先不写 #ifndef DM_DNSPROXYSHELL_H #define DM_DNSPROXYSHELL_H #include <stdint.h> #include “common/applError.h” #include “midware/tpConfig.h” #ifdef __cplusplus extern “C” { #endif #define DNSPROXY_LEN_SWITCH 8 /* “on” / “off” / #define DNSPROXY_LEN_STATUS 8 / “on” / “off” / #define DNSPROXY_LEN_ID 16 / 规则/实例 ID */ /* 名称类 / #define DNSPROXY_LEN_NAME32 32 / 短名称(规则名等) / #define DNSPROXY_LEN_NAME64 64 / 长名称(服务器名等) */ /* DNSSEC 特有 / #define DNSPROXY_LEN_ACTION 16 / DNSSEC 行为: validate/drop/pass 等 / #define DNSPROXY_LEN_VERIFIED_STATUS 32 / DNSSEC诊断查询返回的状态 */ /* LAN DNS 特有 / #define DNSPROXY_LEN_TYPE 16 / 规则类型: forward/ip/cname 等 */ #define DNSPROXY_LEN_INTERFACES 512 /网络接口列表长度/ #define DNSPROXY_MAX_RULES 120 /* 地址/URL / #define DNSPROXY_LEN_SERVER_IP 64 / DNSSEC/DoT 单个IPv4/IPv6/主机名 / #define DNSPROXY_LEN_SERVER_URL 160 / DoHURL */ /* 域名/别名 */ #define DNSPROXY_LEN_DOMAIN 128 #define DNSPROXY_LEN_CNAME 128 /* JSON/CSV 列表(原样存储) */ #define DNSPROXY_LEN_JSON256 256 #define DNSPROXY_LEN_IFLIST DNSPROXY_LEN_JSON256 #define DNSPROXY_LEN_ALIASES DNSPROXY_LEN_JSON256 #define DNSPROXY_LEN_LAN_NETWORKS DNSPROXY_LEN_JSON256 #define DNSPROXY_LEN_DNS_SERVER DNSPROXY_LEN_JSON256 #define DNSPROXY_LEN_IPV4_ADDRS DNSPROXY_LEN_JSON256 #define DNSPROXY_LEN_IPV6_ADDRS DNSPROXY_LEN_JSON256 #define DNSPROXYSHELL_SUB_NAME “dnsProxyShell” /* LAN变更通知 / #define DNSSERVER_LAN_ACTION_ADD 0 #define DNSSERVER_LAN_ACTION_DELETE 1 #define DNSSERVER_LAN_ACTION_MODIFY 2 #define DNSSERVER_LAN_ACTION_IP_CHANGE 3 // / DNSSEC (config) / // typedef struct { char switch_s[DNSPROXY_LEN_SWITCH]; / “on”/“off” / char action[DNSPROXY_LEN_ACTION]; / validate/drop/pass 等 / char server1[DNSPROXY_LEN_SERVER_IP]; char server2[DNSPROXY_LEN_SERVER_IP]; uint32_t mask; / bit0 switch, bit1 action, bit2 server1, bit3 server2 */ } CFG_DNSSEC_GBL_T; /* 用于表示DNSSEC诊断查询返回的单条IP和状态 */ typedef struct { char ip[DNSPROXY_LEN_SERVER_IP]; char status[DNSPROXY_LEN_VERIFIED_STATUS]; } DNSSEC_DIAGNOSE_IP_STATUS_T; /* 用于在OP层和HTTP层之间传递DNSSEC诊断的完整结果,这个结构对应最终JSON响应中的 ‘result’ 对象 */ typedef struct { int result_count; DNSSEC_DIAGNOSE_IP_STATUS_T *results; // 动态数组 } DNSSEC_DIAGNOSE_RESULT_T; APPL_ERRCODE dmDnssecCfgCheck(const CFG_DNSSEC_GBL_T *cfg); APPL_ERRCODE dmDnssecCfgGet(CFG_DNSSEC_GBL_T *cfg); APPL_ERRCODE dmDnssecCfgSet(const CFG_DNSSEC_GBL_T *cfg); APPL_ERRCODE opDnsProxyShellDnssecDiagnose(const char *domain, const char *type, const char *dns_server, DNSSEC_DIAGNOSE_RESULT_T **result_out); void opDnsProxyShellDnssecResultFree(DNSSEC_DIAGNOSE_RESULT_T *result); // /* DoH (config) / // typedef struct { char switch_s[DNSPROXY_LEN_SWITCH]; uint32_t mask; / bit0 switch */ } CFG_DOH_GBL_T; typedef struct { int index; /* 由 key 后缀或 id 解析 / char id[DNSPROXY_LEN_ID]; char name[DNSPROXY_LEN_NAME64]; char server[DNSPROXY_LEN_SERVER_URL]; char status[DNSPROXY_LEN_STATUS]; / “on”/“off” / uint8_t custom; / 0/1 */ } CFG_DOH_SERVER_T; typedef struct { uint32_t max_rules; } CFG_DOH_META_T; APPL_ERRCODE dmDohCfgGlobalGet(CFG_DOH_GBL_T *cfg); APPL_ERRCODE dmDohCfgGlobalSet(const CFG_DOH_GBL_T *cfg); APPL_ERRCODE dmDohCfgServerGetAll(CFG_DOH_SERVER_T ***pp); APPL_ERRCODE dmDohCfgServerListFree(CFG_DOH_SERVER_T **lst); APPL_ERRCODE dmDohCfgServerAdd(const CFG_DOH_SERVER_T *ent); APPL_ERRCODE dmDohCfgServerSet(const CFG_DOH_SERVER_T ent); / by index or id */ APPL_ERRCODE dmDohCfgServerDelByKey(const char *key); APPL_ERRCODE dmDohCfgMetaGet(CFG_DOH_META_T *meta); APPL_ERRCODE dmDohCfgMetaSet(const CFG_DOH_META_T *meta); APPL_ERRCODE dmDohCfgServerDelById(unsigned id); void dmDohCfgServerKeyGetById(unsigned id, char *out, size_t outlen); // /* DoT (config) */ // typedef struct { char switch_s[DNSPROXY_LEN_SWITCH]; uint32_t mask; } CFG_DOT_GBL_T; typedef struct { int index; char id[DNSPROXY_LEN_ID]; char name[DNSPROXY_LEN_NAME64]; char server1[DNSPROXY_LEN_SERVER_IP]; char server2[DNSPROXY_LEN_SERVER_IP]; char status[DNSPROXY_LEN_STATUS]; uint8_t custom; } CFG_DOT_SERVER_T; typedef struct { uint32_t max_rules; } CFG_DOT_META_T; APPL_ERRCODE dmDotCfgGlobalGet(CFG_DOT_GBL_T *cfg); APPL_ERRCODE dmDotCfgGlobalSet(const CFG_DOT_GBL_T *cfg); APPL_ERRCODE dmDotCfgServerGetAll(CFG_DOT_SERVER_T ***pp); APPL_ERRCODE dmDotCfgServerListFree(CFG_DOT_SERVER_T **lst); APPL_ERRCODE dmDotCfgServerAdd(const CFG_DOT_SERVER_T *ent); APPL_ERRCODE dmDotCfgServerSet(const CFG_DOT_SERVER_T *ent); APPL_ERRCODE dmDotCfgServerDelByKey(const char *key); APPL_ERRCODE dmDotCfgMetaGet(CFG_DOT_META_T *meta); APPL_ERRCODE dmDotCfgMetaSet(const CFG_DOT_META_T *meta); APPL_ERRCODE dmDotCfgServerDelById(unsigned id); void dmDotCfgServerKeyGetById(unsigned id, char *out, size_t outlen); // /* DNS Cache (config) / // typedef struct { char switch_s[DNSPROXY_LEN_SWITCH]; uint32_t ttl; uint32_t mask; / bit0 switch, bit1 ttl */ } CFG_DNSCACHE_GBL_T; APPL_ERRCODE dmDnsCacheCfgGet(CFG_DNSCACHE_GBL_T *cfg); APPL_ERRCODE dmDnsCacheCfgSet(const CFG_DNSCACHE_GBL_T *cfg); // /* DNS Override (config) / // typedef struct { char switch_s[DNSPROXY_LEN_SWITCH]; char server1[DNSPROXY_LEN_SERVER_IP]; char server2[DNSPROXY_LEN_SERVER_IP]; char interface_list[DNSPROXY_LEN_IFLIST]; uint32_t mask; / bit0 switch, bit1 server1, bit2 server2, bit3 interfaces */ } CFG_DNSOVERRIDE_GBL_T; /* DNS Override与Interface映射结构 / typedef struct { char interface[DNSPROXY_LEN_NAME32]; / 接口名称 / uint32_t index; / 索引,用于排序 */ } CFG_DNSOVR_IF_MAP_T; APPL_ERRCODE dmDnsOvrCfgGet(CFG_DNSOVERRIDE_GBL_T *cfg); APPL_ERRCODE dmDnsOvrCfgSet(const CFG_DNSOVERRIDE_GBL_T *cfg); /* Interface映射函数声明 */ APPL_ERRCODE dmDnsOvrIfMapAdd(const char *interface, uint32_t index); APPL_ERRCODE dmDnsOvrIfMapDelAll(void); APPL_ERRCODE dmDnsOvrIfMapGetAll(char ***pp); void dmDnsOvrIfMapListFree(char **lst); // /* LAN DNS Server (rules, config) / // typedef struct { int index; char id[DNSPROXY_LEN_ID]; char name[DNSPROXY_LEN_NAME32]; / 规则名/显示名 / char type[DNSPROXY_LEN_TYPE]; / forward/ip/cname / char domain[DNSPROXY_LEN_DOMAIN]; char aliases[DNSPROXY_LEN_ALIASES]; char status[DNSPROXY_LEN_STATUS]; / “on”/“off” */ char lan_networks[DNSPROXY_LEN_LAN_NETWORKS]; char dns_server[DNSPROXY_LEN_DNS_SERVER]; uint32_t ttl; char cname[DNSPROXY_LEN_CNAME]; char ipv4_addrs[DNSPROXY_LEN_IPV4_ADDRS]; char ipv6_addrs[DNSPROXY_LEN_IPV6_ADDRS]; char dns_server1[DNSPROXY_LEN_SERVER_IP]; char dns_server2[DNSPROXY_LEN_SERVER_IP]; } CFG_DNSSERVER_RULE_T; typedef struct { uint32_t max_rules; } CFG_DNSSERVER_META_T; typedef struct { char interfaces[DNSPROXY_LEN_INTERFACES]; uint32_t mask; } CFG_DNSPS_NETWORK_T; /* DNS规则与aliases映射结构 / typedef struct { char rule_id[DNSPROXY_LEN_ID]; / 关联的规则ID / char alias[DNSPROXY_LEN_DOMAIN]; / 别名 / uint32_t index; / 索引,用于排序 */ } CFG_DNSSERVER_ALIAS_MAP_T; /* DNS规则与lan neteorks映射结构 / typedef struct { char rule_id[DNSPROXY_LEN_ID]; / 关联的规则ID / char lan_name[DNSPROXY_LEN_NAME32]; / LAN网络名称 / uint32_t index; / 索引,用于排序 */ } CFG_DNSSERVER_LAN_MAP_T; typedef struct { uint8_t rpz_activated; // 0=false, 1=true } CFG_DNSPS_META_T; // /* EXTERN_PROTOTYPES */ // #ifndef DNSPROXYSHELL_M_NAME #define DNSPROXYSHELL_M_NAME “DM_DNSPROXYSHELL” #endif #define DNSPROXYSHELL_CALLOC(count, size) pal_calloc(count, size, DNSPROXYSHELL_M_NAME) #define DNSPROXYSHELL_MALLOC(size) pal_alloc(size, DNSPROXYSHELL_M_NAME) #define DNSPROXYSHELL_FREE(ptr) pal_free(ptr) /* LAN DNS 规则操作 */ APPL_ERRCODE dmDnsServerRuleGetAll(CFG_DNSSERVER_RULE_T ***pp); APPL_ERRCODE dmDnsServerRuleListFree(CFG_DNSSERVER_RULE_T **lst); APPL_ERRCODE dmDnsServerRuleAdd(const CFG_DNSSERVER_RULE_T *ent); APPL_ERRCODE dmDnsServerRuleSet(const CFG_DNSSERVER_RULE_T *ent); APPL_ERRCODE dmDnsServerRuleDelByKey(const char *key); APPL_ERRCODE dmDnsServerMetaGet(CFG_DNSSERVER_META_T *meta); APPL_ERRCODE dmDnsServerMetaSet(CFG_DNSSERVER_META_T *meta); APPL_ERRCODE dmDnsServerRuleDelById(unsigned id); APPL_ERRCODE dmDnsProxyNetworkGet(CFG_DNSPS_NETWORK_T *cfg); APPL_ERRCODE dmDnsProxyNetworkSet(const CFG_DNSPS_NETWORK_T *cfg); APPL_ERRCODE dmDnsProxyDispToCIDR(const char *disp, char *out_cidr, size_t out_len); APPL_ERRCODE dmDnsProxyUpdateNetworkInterfaces(void); void dmDnsServerRuleKeyGetById(unsigned id, char *out, size_t outlen); /* Alias映射函数声明 */ APPL_ERRCODE dmDnsServerAliasMapAdd(const char *rule_id, const char *alias, uint32_t index); APPL_ERRCODE dmDnsServerAliasMapDelByRuleId(const char *rule_id); APPL_ERRCODE dmDnsServerAliasMapGetByRuleId(const char *rule_id, char ***pp); void dmDnsServerAliasMapListFree(char **lst); /* LAN映射函数声明 */ APPL_ERRCODE dmDnsServerLanMapAdd(const char *rule_id, const char *lan_name, uint32_t index); APPL_ERRCODE dmDnsServerLanMapDelByRuleId(const char *rule_id); APPL_ERRCODE dmDnsServerLanMapGetByRuleId(const char *rule_id, char ***pp); void dmDnsServerLanMapListFree(char **lst); /* LAN变更通知接口 */ APPL_ERRCODE dmDnsServerNotifyLanChange(const char *lan_name, int action); // /* STATE getters (read-only) / // / DNSSEC State / typedef struct { char switch_s[DNSPROXY_LEN_SWITCH]; char action[DNSPROXY_LEN_ACTION]; char server1[DNSPROXY_LEN_SERVER_IP]; char server2[DNSPROXY_LEN_SERVER_IP]; uint32_t diagnose_code; / diagnosecode */ } STATE_DNSSEC_T; APPL_ERRCODE dmStateDnssecGet(STATE_DNSSEC_T *st); /* DoH State */ typedef struct { char switch_s[DNSPROXY_LEN_SWITCH]; uint32_t activeCount; uint32_t max_rules; } STATE_DOH_GBL_T; typedef struct { int index; char id[DNSPROXY_LEN_ID]; char name[DNSPROXY_LEN_NAME64]; char server[DNSPROXY_LEN_SERVER_URL]; char status[DNSPROXY_LEN_STATUS]; uint8_t custom; } STATE_DOH_SERVER_T; APPL_ERRCODE dmStateDohGlobalGet(STATE_DOH_GBL_T *st); APPL_ERRCODE dmStateDohServerGetAll(STATE_DOH_SERVER_T ***pp); APPL_ERRCODE dmStateDohServerListFree(STATE_DOH_SERVER_T **lst); /* DoT State */ typedef struct { char switch_s[DNSPROXY_LEN_SWITCH]; uint32_t activeCount; uint32_t max_rules; } STATE_DOT_GBL_T; typedef struct { int index; char id[DNSPROXY_LEN_ID]; char name[DNSPROXY_LEN_NAME64]; char server_list[DNSPROXY_LEN_JSON256]; /* [“ip1”,“ip2”] 原样 */ char status[DNSPROXY_LEN_STATUS]; uint8_t custom; } STATE_DOT_SERVER_T; APPL_ERRCODE dmStateDotGlobalGet(STATE_DOT_GBL_T *st); APPL_ERRCODE dmStateDotServerGetAll(STATE_DOT_SERVER_T ***pp); APPL_ERRCODE dmStateDotServerListFree(STATE_DOT_SERVER_T **lst); /* Cache State */ typedef struct { char switch_s[DNSPROXY_LEN_SWITCH]; uint32_t ttl; uint32_t entriesIpv4; uint32_t entriesIpv6; } STATE_DNSCACHE_T; APPL_ERRCODE dmStateDnsCacheGet(STATE_DNSCACHE_T *st); /* Override State */ typedef struct { char switch_s[DNSPROXY_LEN_SWITCH]; char server1[DNSPROXY_LEN_SERVER_IP]; char server2[DNSPROXY_LEN_SERVER_IP]; char interface_list[DNSPROXY_LEN_IFLIST]; } STATE_DNSOVR_T; APPL_ERRCODE dmStateDnsOverrideGet(STATE_DNSOVR_T *st); /* DNS Server Aggregate State */ typedef struct { uint32_t activeRuleCount; uint32_t totalrules; uint32_t max_rules; } STATE_DNSSERVER_AGGR_T; /* DNS Server Rule State / typedef struct { int index; char id[DNSPROXY_LEN_ID]; char name[DNSPROXY_LEN_NAME32]; char type[DNSPROXY_LEN_TYPE]; / forward/ip/cname */ char domain[DNSPROXY_LEN_DOMAIN]; char aliases[DNSPROXY_LEN_ALIASES]; char status[DNSPROXY_LEN_STATUS]; char lan_networks[DNSPROXY_LEN_LAN_NETWORKS]; char dns_server[DNSPROXY_LEN_DNS_SERVER]; uint32_t ttl; char cname[DNSPROXY_LEN_CNAME]; char ipv4_addrs[DNSPROXY_LEN_IPV4_ADDRS]; char ipv6_addrs[DNSPROXY_LEN_IPV6_ADDRS]; } STATE_DNSSERVER_RULE_T; APPL_ERRCODE dmStateDnsServerAggGet(STATE_DNSSERVER_AGGR_T *st); APPL_ERRCODE dmStateDnsServerRuleGetAll(STATE_DNSSERVER_RULE_T ***pp); APPL_ERRCODE dmStateDnsServerRuleListFree(STATE_DNSSERVER_RULE_T **lst); #ifdef __cplusplus } #endif #endif
最新发布
10-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值