add rpc update interface

This commit is contained in:
yihaoDeng 2023-09-02 17:17:15 +08:00
parent f11763f6ab
commit b8e9b00564
1 changed files with 25 additions and 15 deletions

View File

@ -198,24 +198,29 @@ typedef struct {
int8_t type; int8_t type;
} SubnetUtils; } SubnetUtils;
int32_t subnetInit(SubnetUtils* pUtils, char* range) { int32_t cvtIp2Int(char* ip, int16_t* dest) {
strncpy(pUtils->info, range, strlen(range)); int k = 0;
char* start = ip;
char* end = start;
int16_t ip[5] = {0}; for (k = 0; *start != 0; start = end) {
int k = 0; for (end = start; *end != '.' && *end != '/' && *end != 0; end++) {
char* start = pUtils->info;
char* end = start;
for (k = 0; *start != '\0'; start = end) {
for (end = start; *end != '.' && *end != '/' && *end != '\0'; end++) {
//
} }
if (*end == '.' || *end == '/') { if (*end == '.' || *end == '/') {
*end = '\0'; *end = 0;
end++; end++;
} }
ip[k++] = atoi(start); dest[k++] = atoi(start);
} }
return k;
}
int32_t subnetInit(SubnetUtils* pUtils, char* range) {
char buf[32] = {0};
strncpy(pUtils->info, range, strlen(range));
strncpy(buf, range, strlen(range));
int16_t ip[5] = {0};
int8_t k = cvtIp2Int(buf, ip);
if (k < 4) { if (k < 4) {
return -1; return -1;
} }
@ -225,7 +230,7 @@ int32_t subnetInit(SubnetUtils* pUtils, char* range) {
} }
for (int i = 0; i < ip[4]; i++) { for (int i = 0; i < ip[4]; i++) {
pUtils->netmask |= (32 - i); pUtils->netmask |= (1 << (31 - i));
} }
pUtils->network = pUtils->address & pUtils->netmask; pUtils->network = pUtils->address & pUtils->netmask;
@ -234,7 +239,12 @@ int32_t subnetInit(SubnetUtils* pUtils, char* range) {
return 0; return 0;
} }
int32_t subnetIsInRange(SubnetUtils* pUtils, uint32_t ip) { int32_t subnetDebugInfoToBuf(SubnetUtils* pUtils, char* buf) {
sprintf(buf, "raw: %s, address: %d, netmask:%d, network:%d, broadcast:%d", pUtils->info, pUtils->address,
pUtils->netmask, pUtils->network, pUtils->broadcast);
return 0;
}
int32_t subnetCheckIp(SubnetUtils* pUtils, uint32_t ip) {
// impl later // impl later
if (pUtils == NULL) return false; if (pUtils == NULL) return false;
if (pUtils->type == 0) { if (pUtils->type == 0) {
@ -250,7 +260,7 @@ static bool uvCheckIp(char* range, int32_t ip) {
if (subnetInit(&subnet, range) != 0) { if (subnetInit(&subnet, range) != 0) {
return false; return false;
} }
return subnetIsInRange(&subnet, ip); return subnetCheckIp(&subnet, ip);
} }
static void uvWhiteListDestroy(SHashObj* pWhiteList) { static void uvWhiteListDestroy(SHashObj* pWhiteList) {