add rpc update interface

This commit is contained in:
yihaoDeng 2023-09-11 09:26:00 +08:00
parent 9781766009
commit 30a60be214
4 changed files with 55 additions and 40 deletions

View File

@ -192,7 +192,7 @@ int64_t mndGetIpWhiteVer(SMnode *pMnode) {
ver = ipWhiteMgt.ver; ver = ipWhiteMgt.ver;
taosThreadRwlockUnlock(&ipWhiteMgt.rw); taosThreadRwlockUnlock(&ipWhiteMgt.rw);
mDebug("ip-white-mnode ver, %" PRId64 "", ver); mInfo("ip-white-mnode ver, %" PRId64 "", ver);
return ver; return ver;
} }

View File

@ -439,12 +439,12 @@ int32_t transGetInstMgt();
void transHttpEnvDestroy(); void transHttpEnvDestroy();
typedef struct { typedef struct {
int32_t netmask; uint32_t netmask;
int32_t address; uint32_t address;
int32_t network; uint32_t network;
int32_t broadcast; uint32_t broadcast;
char info[32]; char info[32];
int8_t type; int8_t type;
} SubnetUtils; } SubnetUtils;
int32_t subnetInit(SubnetUtils* pUtils, SIpV4Range* pRange); int32_t subnetInit(SubnetUtils* pUtils, SIpV4Range* pRange);

View File

@ -655,14 +655,47 @@ void transDestoryExHandle(void* handle) {
taosMemoryFree(handle); taosMemoryFree(handle);
} }
int32_t subnetInit(SubnetUtils* pUtils, SIpV4Range* pRange) { void subnetIp2int(const char* const ip_addr, uint8_t* dst) {
pUtils->address = pRange->ip; char ip_addr_cpy[20];
char ip[5];
int32_t mask = 0; tstrncpy(ip_addr_cpy, ip_addr, sizeof(ip_addr_cpy));
for (int i = 0; i < pRange->mask; i++) {
mask |= (1 << (31 - i)); char *s_start, *s_end;
s_start = ip_addr_cpy;
s_end = ip_addr_cpy;
int32_t k = 0;
for (k = 0; *s_start != '\0'; s_start = s_end) {
for (s_end = s_start; *s_end != '.' && *s_end != '\0'; s_end++) {
}
if (*s_end == '.') {
*s_end = '\0';
s_end++;
}
dst[k++] = (char)atoi(s_start);
}
}
int32_t subnetInit(SubnetUtils* pUtils, SIpV4Range* pRange) {
if (pRange->mask == 0) {
pUtils->address = pRange->ip;
pUtils->type = 0;
return 0;
}
SIpV4Range tRange = {.ip = pRange->ip, .mask = 0};
char tbuf[32] = {0};
transUtilSIpRangeToStr(&tRange, tbuf);
uint8_t el[4] = {0};
subnetIp2int(tbuf, el);
pUtils->address = (el[0] << 24) | (el[1] << 16) | (el[2] << 8) | (el[0]);
for (int i = 0; i < pRange->mask; i++) {
pUtils->netmask |= (1 << (31 - i));
} }
pUtils->netmask = mask;
pUtils->network = pUtils->address & pUtils->netmask; pUtils->network = pUtils->address & pUtils->netmask;
pUtils->broadcast = (pUtils->network) | (pUtils->netmask ^ 0xFFFFFFFF); pUtils->broadcast = (pUtils->network) | (pUtils->netmask ^ 0xFFFFFFFF);
@ -681,7 +714,15 @@ int32_t subnetCheckIp(SubnetUtils* pUtils, uint32_t ip) {
if (pUtils->type == 0) { if (pUtils->type == 0) {
return pUtils->address == ip; return pUtils->address == ip;
} else { } else {
return pUtils->network >= ip && pUtils->broadcast <= ip; SIpV4Range tRange = {.ip = ip, .mask = 0};
char tbuf[32] = {0};
transUtilSIpRangeToStr(&tRange, tbuf);
uint8_t el[4] = {0};
subnetIp2int(tbuf, el);
ip = (el[0] << 24) | (el[1] << 16) | (el[2] << 8) | (el[0]);
return ip >= pUtils->network && ip <= pUtils->broadcast;
} }
} }

View File

@ -898,32 +898,6 @@ int64_t taosCopyFds(TdSocketPtr pSrcSocket, TdSocketPtr pDestSocket, int64_t len
#endif // endif 0 #endif // endif 0
uint32_t ip2uint(const char *const ip_addr) {
char ip_addr_cpy[20];
char ip[5];
tstrncpy(ip_addr_cpy, ip_addr, sizeof(ip_addr_cpy));
char *s_start, *s_end;
s_start = ip_addr_cpy;
s_end = ip_addr_cpy;
int32_t k;
for (k = 0; *s_start != '\0'; s_start = s_end) {
for (s_end = s_start; *s_end != '.' && *s_end != '\0'; s_end++) {
}
if (*s_end == '.') {
*s_end = '\0';
s_end++;
}
ip[k++] = (char)atoi(s_start);
}
ip[k] = '\0';
return *((uint32_t *)ip);
}
void taosBlockSIGPIPE() { void taosBlockSIGPIPE() {
#ifdef WINDOWS #ifdef WINDOWS
// ASSERT(0); // ASSERT(0);