From 32b1fd5a464ba4da502092ce2573651f5cdcd31e Mon Sep 17 00:00:00 2001 From: yinbin <yinbin@cmhi.chinamobile.com> Date: Fri, 30 Aug 2019 03:18:37 -0700 Subject: [PATCH] =?UTF-8?q?Add=20aaa-12=20=E4=BF=AE=E6=94=B9vlan=20get=20j?= =?UTF-8?q?son=E5=B0=81=E8=A3=85=20SOL=20=E4=BF=AE=E6=94=B9vlan=20get=20js?= =?UTF-8?q?on=E5=B0=81=E8=A3=85=20=E4=BF=AE=E6=94=B9=E4=BA=BA=EF=BC=9Ayinb?= =?UTF-8?q?in=20=E6=A3=80=E8=A7=86=E4=BA=BA=EF=BC=9Ayinbin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yinbin <yinbin@cmhi.chinamobile.com> --- .../config-server/include/vlan_config.h | 4 +- .../config-server/vlan_config/vlan_config.c | 55 ++++++++++++++----- 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/Platform/user/configm/config-server/include/vlan_config.h b/Platform/user/configm/config-server/include/vlan_config.h index da7a4f1af..561b95c82 100644 --- a/Platform/user/configm/config-server/include/vlan_config.h +++ b/Platform/user/configm/config-server/include/vlan_config.h @@ -159,13 +159,13 @@ ret_code vlan_config_json_parse_test(char *path, interface_vlan_info *if_vlan_in ret_code vlan_config_json_parse_test1(operation_type op_type, interface_vlan_info *if_vlan_info, int *if_vlnum); ret_code vlan_config_chk_test(operation_type op_type); ret_code interface_vlan_check(interface_vlan_info *if_vlan_info); -ret_code if_attr_chk(interface_vlan_info *if_vlan_info); +ret_code if_attr_chk(interface_link_attr attr); ret_code op_type_chk(interface_vlan_info *if_vlan_info); ret_code op_type_add_chk(interface_vlan_info *if_vlan_info); ret_code op_type_del_chk(interface_vlan_info *if_vlan_info); ret_code vid_value_chk(int vid); ret_code vid_num_chk(char *if_name, operation_type op_type, int num); -ret_code if_name_chk(interface_vlan_info *if_vlan_info); +ret_code if_name_chk(char *if_name); ret_code vlan_config_set_chk(uint source, pointer input); ret_code vlan_operate_parse(pointer input, int *operate_type); ret_code vlan_config_get_chk(uint source, pointer input); diff --git a/Platform/user/configm/config-server/vlan_config/vlan_config.c b/Platform/user/configm/config-server/vlan_config/vlan_config.c index db3225ff3..0fac73439 100644 --- a/Platform/user/configm/config-server/vlan_config/vlan_config.c +++ b/Platform/user/configm/config-server/vlan_config/vlan_config.c @@ -1503,6 +1503,13 @@ ret_code vlan_get_json_parse(int *interface, pointer input) ret = RET_INPUTERR; goto out; } + + ret = if_name_chk(ifName->valuestring); + if(ret != RET_OK){ + printf("[vlan-chk]vlan_get_json_parse: if-name-chk failed.\n"); + goto out; + } + //if_vlan_info[i].if_name= ifName->valuestring;//memcpy /* ����ҵ��˶�Ӧ��ifnode,���Ӧ�±���1 */ ifnode = get_ifnode_from_global(ifName->valuestring); @@ -1529,10 +1536,10 @@ ret_code vlan_config_format_json(int *interface, pointer output, int *output_len { cJSON *root = NULL, *arr = NULL, *js_list = NULL, *js_vid = NULL; char *out = NULL; - int i, j, vid; + int i, j, vid, ret = RET_OK; root = cJSON_CreateObject(); if(!root){ - printf("[vlan]cJSON_CreateObject1 error.\n"); + printf("[vlan]vlan_config_format_json: cJSON create root failed.\n"); return RET_ERR; } cJSON_AddItemToObject(root, "if-vlan", arr = cJSON_CreateArray()); @@ -1543,20 +1550,30 @@ ret_code vlan_config_format_json(int *interface, pointer output, int *output_len } js_list = cJSON_CreateObject(); if(!js_list){ - printf("[vlan]cJSON_CreateObject2 error.\n"); + printf("[vlan]vlan_config_format_json: cJSON create js_list failed.\n"); cJSON_Delete(root); return RET_ERR; } cJSON_AddStringToObject(js_list , "if-name", g_if_vlan_info[i].if_name); - cJSON_AddNumberToObject(js_list , "if-attr", g_if_vlan_info[i].attr); + if(g_if_vlan_info[i].attr == LINK_TYPE_TRUNK){ + cJSON_AddStringToObject(js_list , "if-attr", "trunk"); + } + //else if(g_if_vlan_info[i].attr == LINK_TYPE_ACCESS){ + //cJSON_AddStringToObject(js_list , "if-attr", "access"); + //} + else { + printf("[vlan]vlan_config_format_json: if-atrtr error.\n"); + cJSON_Delete(root); + return RET_ERR; + + } cJSON_AddItemToObject(js_list, "vid", js_vid = cJSON_CreateArray()); for(vid = VID_MIN; vid <= VID_MAX;vid++){ if(vlan_bitmap_check(g_if_vlan_info[i].vlan_bitmap, vid)){ cJSON_AddItemToArray(js_vid, cJSON_CreateNumber(vid)); } } - cJSON_AddItemToArray(arr, js_list); } out = cJSON_PrintUnformatted(root); @@ -1568,8 +1585,10 @@ ret_code vlan_config_format_json(int *interface, pointer output, int *output_len *output_len = strlen(out) + 1; memcpy(output, out, *output_len); xfree(out); - cJSON_Delete(root); - return RET_OK; + if(root){ + cJSON_Delete(root); + } + return ret; } @@ -1861,9 +1880,9 @@ ret_code vid_num_chk(char *if_name, operation_type op_type, int num) * ���: * ����ֵ: ************************************************************/ -ret_code if_attr_chk(interface_vlan_info *if_vlan_info) +ret_code if_attr_chk(interface_link_attr attr) { - if(if_vlan_info->attr != LINK_TYPE_TRUNK){ + if(attr != LINK_TYPE_TRUNK){ printf("[vlan]if_attr_chk: now we only support link-type trunk.\n"); return RET_ATTR_INVALID; } @@ -1939,6 +1958,10 @@ ret_code op_type_chk(interface_vlan_info *if_vlan_info) { int ifnode, vid, i; ret_code ret = RET_OK; + if(!if_vlan_info){ + printf("[vlan]op_type_chk: input is null.\n"); + return RET_NULLP; + } /* ADD����У�� */ if(if_vlan_info->op_type == OP_ADD){ ret = op_type_add_chk(if_vlan_info); @@ -1960,10 +1983,14 @@ ret_code op_type_chk(interface_vlan_info *if_vlan_info) * ���: * ����ֵ: ************************************************************/ -ret_code if_name_chk(interface_vlan_info *if_vlan_info) +ret_code if_name_chk(char *if_name) { - if(!(strcmp(if_vlan_info->if_name, ""))){ - printf("[vlan]if_name_chk: if-name is emptyp, return error.\n"); + if(!if_name){ + printf("[vlan]if_name_chk: if_name null.\n"); + return RET_NULLP; + } + if(!(strcmp(if_name, ""))){ + printf("[vlan]if_name_chk: if-name is empty string, return error.\n"); return RET_INPUTERR; } return RET_OK; @@ -1985,14 +2012,14 @@ ret_code interface_vlan_check(interface_vlan_info *if_vlan_info) printf("[vlan]interface_vlan_check: ifname=%s, op_type=%d, attr=%d\n", if_vlan_info->if_name, if_vlan_info->op_type, if_vlan_info->attr); /* if_nameУ�� */ - ret = if_name_chk(if_vlan_info); + ret = if_name_chk(if_vlan_info->if_name); if(ret != RET_OK){ printf("[vlan-chk]interface_vlan_check: if-name-chk failed.\n"); goto out; } /* if_attrУ�� */ - ret = if_attr_chk(if_vlan_info); + ret = if_attr_chk(if_vlan_info->attr); if(ret != RET_OK){ printf("[vlan-chk]interface_vlan_check: if-attr-chk failed.\n"); goto out;