add rpc update interface
This commit is contained in:
parent
9781766009
commit
30a60be214
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue