From 3f8d0e4402f51d0f437e90d141b120222ee7c305 Mon Sep 17 00:00:00 2001 From: dongwenze Date: Fri, 9 Dec 2022 17:07:00 +0800 Subject: [PATCH] =?UTF-8?q?OCT=20=E4=BF=AE=E6=94=B9=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E8=A1=A5=E5=85=85=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- srcs/open_dhcp/query.cpp | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/srcs/open_dhcp/query.cpp b/srcs/open_dhcp/query.cpp index 3c146cc..5f12e33 100644 --- a/srcs/open_dhcp/query.cpp +++ b/srcs/open_dhcp/query.cpp @@ -491,8 +491,7 @@ static int delete_dhcpd_rangeset(data19 *req, const char *pRequest) { sprintf(del_range, "%s-%s", saddr, eaddr); cJSON_AddStringToObject(pdel_Item, "dhcpRange", del_range); //judge whether the input has error - if(delRange->key && delRange->value && - (delRange->key == cfig.dhcpRanges[i].rangeStart) && (delRange->value == cfig.dhcpRanges[i].rangeEnd)){ + if(delRange->key && delRange->value && (delRange->value == cfig.dhcpRanges[i].rangeEnd)){ cJSON_AddNumberToObject(pdel_Item, "status", ERR_SUCCESS); cJSON_AddStringToObject(pdel_Item, "message", getErrorEnumDesc(ERR_SUCCESS)); cJSON_AddItemToArray(pdelArray, pdel_Item); @@ -504,6 +503,11 @@ static int delete_dhcpd_rangeset(data19 *req, const char *pRequest) { cJSON_AddStringToObject(pdel_Item, "message", getErrorEnumDesc(ERR_INPUT_PARAMS)); cJSON_AddItemToArray(pdelArray, pdel_Item); } + + hash_map *s = (struct hash_map*)malloc(sizeof(struct hash_map)); + s->key = delRange->key; + s->value = 0; + HASH_REPLACE_INT(delMap, key, s, delRange); } else { //write to dhcpRanges memcpy(&dhcpRanges[resCount], &cfig.dhcpRanges[i], sizeof(struct data13)); @@ -511,6 +515,31 @@ static int delete_dhcpd_rangeset(data19 *req, const char *pRequest) { } } + //输入参数不存在的情况 + if(resCount > cfig.rangeCount - cJSON_GetArraySize(pdhcp_range)){ + cJSON *pdel_Item = cJSON_CreateObject(); + hash_map *s = (struct hash_map*)malloc(sizeof(struct hash_map)); + hash_map *tmp; + char saddr[128]; + char eaddr[128]; + char del_range[256]; + memset(del_range, 0, 256); + + HASH_ITER(hh, delMap, s, tmp){ + if(s->value != 0){ + IP2String(saddr, ntohl(s->key)); + IP2String(eaddr, ntohl(s->value)); + + sprintf(del_range, "%s-%s", saddr, eaddr); + cJSON_AddStringToObject(pdel_Item, "dhcpRange", del_range); + + cJSON_AddNumberToObject(pdel_Item, "status", ERR_ITEM_UNEXISTS); + cJSON_AddStringToObject(pdel_Item, "message", getErrorEnumDesc(ERR_ITEM_UNEXISTS)); + cJSON_AddItemToArray(pdelArray, pdel_Item); + } + } + } + //rewite cfig.dhcpRanges for(int i = 0; i < cfig.rangeCount; i++){ if(i < resCount){