diff --git a/Common/ret_errno.h b/Common/ret_errno.h index bf9688cb8..a702f6936 100644 --- a/Common/ret_errno.h +++ b/Common/ret_errno.h @@ -33,6 +33,20 @@ typedef uint ret_code; #define RET_IPINVALID (uint)((uint)NETCONFIG_MODULE<<16|1) #define RET_BRNAMEERR (uint)((uint)NETCONFIG_MODULE<<16|1) +/* VLANCONFIG_MODULE 0x00050000 ~ 0x0005ffff*/ +#define RET_VIDNUM_INVALID (uint)((uint)VLAN_CONFIG_MODULE<<16|1) +#define RET_VID_INVALID (uint)((uint)VLAN_CONFIG_MODULE<<16|1) +#define RET_VID_EXIST (uint)((uint)VLAN_CONFIG_MODULE<<16|1) +#define RET_VID_NOT_EXIST (uint)((uint)VLAN_CONFIG_MODULE<<16|1) +#define RET_INTERFACE_NOT_EXIST (uint)((uint)VLAN_CONFIG_MODULE<<16|1) +#define RET_ATTR_INVALID (uint)((uint)VLAN_CONFIG_MODULE<<16|1) +#define RET_OPTYPE_ERR (uint)((uint)VLAN_CONFIG_MODULE<<16|1) +#define RET_SYS_VCONFIG_ERR (uint)((uint)VLAN_CONFIG_MODULE<<16|1) +#define RET_SYS_IFCONFIG_ERR (uint)((uint)VLAN_CONFIG_MODULE<<16|1) +#define RET_SYS_FILEOP_ERR (uint)((uint)VLAN_CONFIG_MODULE<<16|1) + + + #define ERR_STR_LEN 64 /* 错误码描述 */ @@ -56,7 +70,18 @@ typedef uint ret_code; { RET_SRCERR, "ConfigSourceErr"},\ \ { RET_IPINVALID, "IpInvalid"},\ - { RET_BRNAMEERR, "BrNameInvalid"}\ + { RET_BRNAMEERR, "BrNameInvalid"},\ +\ + { RET_VIDNUM_INVALID, "VidNumInvalid"},\ + { RET_VID_INVALID, "VidValueInvalid"},\ + { RET_VID_EXIST, "VidHasExist"},\ + { RET_VID_NOT_EXIST, "VidHasNotExist"},\ + { RET_INTERFACE_NOT_EXIST, "InterfaceHasNotExist"},\ + { RET_ATTR_INVALID, "AttrInvalid"},\ + { RET_OPTYPE_ERR, "OperationTypeError"},\ + { RET_SYS_VCONFIG_ERR, "SystemVconfigError"},\ + { RET_SYS_IFCONFIG_ERR, "SystemIfconfigError"},\ + { RET_SYS_FILEOP_ERR, "SystemFileOperationError"}\ } struct err_disc { 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 f6a6fe1ad..db3225ff3 100644 --- a/Platform/user/configm/config-server/vlan_config/vlan_config.c +++ b/Platform/user/configm/config-server/vlan_config/vlan_config.c @@ -359,7 +359,7 @@ ret_code add_vlan_sub_interface(char *if_name, int *vlan_bitmap) status = system(buf); if(status != 0){ printf("[vlan]add_vlan_sub_if: subif status error. (%s)\n", strerror(errno)); - return RET_SYSERR; + return RET_SYS_VCONFIG_ERR; } memset(buf, 0, SYSCALL_BUF_LEN); @@ -370,7 +370,7 @@ ret_code add_vlan_sub_interface(char *if_name, int *vlan_bitmap) status = system(buf); if(status != 0){ printf("[vlan]add_vlan_sub_if: ifconfig subif status error. (%s)\n", strerror(errno)); - return RET_SYSERR; + return RET_SYS_IFCONFIG_ERR; } memset(buf, 0, SYSCALL_BUF_LEN); @@ -468,7 +468,7 @@ ret_code add_interface_vlan(interface_vlan_info *if_vlan_info) } else{ printf("[vlan]add_interface_vlan: LINK-TYPE attr(%d) input error.\n", new_attr); - return RET_INPUTERR; + return RET_ATTR_INVALID; } /* ȫֽӿvlanݽṹ */ @@ -619,7 +619,7 @@ ret_code del_vlan_sub_interface(char *if_name, int *vlan_bitmap) status = system(buf); if(status != 0){ printf("[vlan]del_vlan_sub_if:status error. (%s)\n", strerror(errno)); - return RET_ERR; + return RET_SYS_VCONFIG_ERR; } memset(buf, 0, SYSCALL_BUF_LEN); memset(tmp_brname, 0, BR_VLAN_NAME_LEN); @@ -633,7 +633,7 @@ ret_code del_vlan_sub_interface(char *if_name, int *vlan_bitmap) /* br-vlxx, */ if(br_is_exist(br_vlname) == FALSE){ printf("[vlan]del_vlan_sub_interface: %s is not exist, error,return.\n", br_vlname); - return RET_ERR; + return RET_UNKNOWN; } /* brctl delifɾbr-vlϵvlanӽӿ */ @@ -650,7 +650,7 @@ ret_code del_vlan_sub_interface(char *if_name, int *vlan_bitmap) status = system(buf); if(status != 0){ printf("[vlan]del_vlan_sub_if:status error. (%s)\n",strerror(errno)); - return RET_ERR; + return RET_SYS_VCONFIG_ERR; } memset(buf, 0, SYSCALL_BUF_LEN); @@ -933,9 +933,11 @@ ret_code vlan_save_conf_file_add(interface_vlan_info *if_vlan_info) for(vid = VID_MIN; vid <= VID_MAX; vid++){ if(vlan_bitmap_check(if_vlan_info->vlan_bitmap, vid)){ (void)if_vlan2subif(if_vlan_info->if_name, vid, subif); + printf("[vlan]save_conf_file_add: vid is %d, subif is %s\n", vid, subif); ip_conf_file_set(subif, addr_name, addr_buff); } } + printf("[vlan]save_conf_file_add: save file add end.\n"); return RET_OK; } @@ -952,7 +954,7 @@ ret_code vlan_conf_file_del(char *if_name, char *address) status = system(buf); if(status != 0){ printf("[vlan]vlan_conf_file_del1: status error. (%s)\n", strerror(errno)); - return RET_SYSERR; + return RET_SYS_FILEOP_ERR; } memset(buf, 0, 100); @@ -960,7 +962,7 @@ ret_code vlan_conf_file_del(char *if_name, char *address) status = system(buf); if(status != 0){ printf("[vlan]vlan_conf_file_del2: status error. (%s)\n", strerror(errno)); - return RET_SYSERR; + return RET_SYS_FILEOP_ERR; } memset(buf, 0, 100); @@ -986,7 +988,8 @@ ret_code vlan_save_conf_file_del(interface_vlan_info *if_vlan_info) if(!if_vlan_info){ return RET_NULLP; } - //ifnode = get_ifnode_from_global(if_vlan_info->if_name); + //ifnode = get_ifnode_from_global(if_vlan_info->if_name); + printf("[vlan]vlan_save_conf_file_del: begin.\n"); for(vid = VID_MIN; vid <= VID_MAX; vid++){ if(vlan_bitmap_check(if_vlan_info->vlan_bitmap, vid)){ (void)if_vlan2subif(if_vlan_info->if_name, vid, subif); @@ -998,6 +1001,7 @@ ret_code vlan_save_conf_file_del(interface_vlan_info *if_vlan_info) } } } + printf("[vlan]vlan_save_conf_file_del: save file del end.\n"); return RET_OK; } @@ -1021,7 +1025,7 @@ ret_code vlan_save_conf_file(interface_vlan_info *if_vlan_info) } else{ printf("[vlan]vlan_save_conf_file: OP_TYPE ERROR.return\n"); - ret = RET_UNKNOWN; + ret = RET_OPTYPE_ERR; } return ret; } @@ -1055,7 +1059,7 @@ ret_code refresh_if_vlan_info(interface_vlan_info *if_vlan_info) } else { printf("[vlan]refresh_if_vlan_info: OP_TYPE ERROR.return\n"); - ret = RET_UNKNOWN; + ret = RET_OPTYPE_ERR; } return ret; @@ -1105,7 +1109,7 @@ ret_code del_interface_vlan(interface_vlan_info *if_vlan_info) } else { printf("[vlan]del_interface_vlan: LINK-TYPE attr(%d) input error.\n", old_attr); - return RET_UNKNOWN; + return RET_ATTR_INVALID; } /* ȫֽӿvlanݽṹ */ ret = refresh_if_vlan_info(if_vlan_info); @@ -1195,7 +1199,7 @@ ret_code interface_vlan_set(interface_vlan_info *if_vlan_info) } else{ printf("[vlan]interface_vlan_set: op_type error.\n"); - ret = RET_INPUTERR; + ret = RET_OPTYPE_ERR; } return ret; } @@ -1263,7 +1267,7 @@ ret_code vlan_config_json_parse(pointer input, interface_vlan_info *if_vlan_info ret = RET_INPUTERR; goto out; } - cJSON *node; + cJSON *node = NULL; for(i = 0; i < if_num; i++){ /* ÿӿڵop_typeֵ */ @@ -1320,7 +1324,7 @@ ret_code vlan_config_json_parse(pointer input, interface_vlan_info *if_vlan_info } else { printf("[vlan]vlan_config_json_parse: errror: is not trunk or access.\n"); - ret = RET_INPUTERR; + ret = RET_ATTR_INVALID; goto out; } cJSON *vId = cJSON_GetObjectItem(node, "vid"); @@ -1353,7 +1357,6 @@ ret_code vlan_config_json_parse(pointer input, interface_vlan_info *if_vlan_info ret = vid_value_chk(item->valueint); if(ret != RET_OK){ printf("[vlan]vlan_config_json_parse: vid check failed.\n"); - ret = RET_INPUTERR; goto out; } vlan_bitmap_set(if_vlan_info[i].vlan_bitmap, item->valueint); @@ -1388,36 +1391,17 @@ ret_code vlan_config_proc(uint source, uint config_type, interface_vlan_info if_vlan_info[MAX_INTERFACES] = {0}; printf("[vlan]===config-proc begin.===\n"); /* · */ - if(source == CONFIG_FROM_WEB){ - ret = vlan_config_json_parse(input, if_vlan_info, &if_vl_num); + ret = vlan_config_json_parse(input, if_vlan_info, &if_vl_num); + if(ret != RET_OK){ + printf("[vlan]vlan_config_proc: source:%d, json parse failed(%d).\n", source, ret); + return ret; + } + for(i = 0; i < if_vl_num; i++){ + ret = interface_vlan_set(&if_vlan_info[i]); if(ret != RET_OK){ - printf("[vlan]vlan_config_proc: source:%d, json parse failed(%d).\n", source, ret); + printf("[vlan]vlan_config_proc: source:%d, vlan set failed(%d).\n", source, ret); return ret; } - for(i = 0; i < if_vl_num; i++){ - ret = interface_vlan_set(&if_vlan_info[i]); - if(ret != RET_OK){ - printf("[vlan]vlan_config_proc: source:%d, vlan set failed(%d).\n", source, ret); - return ret; - } - } - } - - /* ûָ */ - else if(source == CONFIG_FROM_RECOVER1){ - ret = vlan_config_json_parse(input, if_vlan_info, &if_vl_num); - if(ret != RET_OK){ - printf("[vlan]vlan_config_proc: source:%d, json parse failed(%d).\n", source, ret); - return ret; - } - - for(i = 0; i < if_vl_num; i++){ - ret = interface_vlan_set(&if_vlan_info[i]); - if(ret != RET_OK){ - printf("[vlan]vlan_config_proc: source:%d, vlan set failed(%d).\n", source, ret); - return ret; - } - } } return RET_OK; @@ -1509,7 +1493,15 @@ ret_code vlan_get_json_parse(int *interface, pointer input) } cJSON *ifName = cJSON_GetObjectItem(node, "if-name"); if(!ifName){ - continue; + //continue; + printf("[vlan]vlan_get_json_parse: json has no ifName node.\n"); + ret = RET_INPUTERR; + goto out; + } + if(NULL == ifName->valuestring){ + printf("[vlan]vlan_get_json_parse: ifName->valuestring is null.\n"); + ret = RET_INPUTERR; + goto out; } //if_vlan_info[i].if_name= ifName->valuestring;//memcpy /* ҵ˶Ӧifnode,Ӧ±1 */ @@ -1559,7 +1551,7 @@ ret_code vlan_config_format_json(int *interface, pointer output, int *output_len 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); cJSON_AddItemToObject(js_list, "vid", js_vid = cJSON_CreateArray()); - for(vid = 0; vid < MAX_VLAN;vid++){ + 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)); } @@ -1637,7 +1629,7 @@ ret_code vlan_get_from_conf_file(int *interface) char line[FILE_BUF_LINE] = {0}; if(!(fp = fopen(ETC_NETWORK_IFS, "r"))){ printf("[vlan]vlan_get_from_conf_file: file open failed.\n"); - return RET_ERR; + return RET_SYS_FILEOP_ERR; } //fseek(fp,0,SEEK_END); //rewind(fp); @@ -1825,7 +1817,7 @@ ret_code vid_value_chk(int vid) { if(!(vid >= VID_MIN && vid <= VID_MAX)){ printf("[vlan]vid_value_chk: vid value error,return error\n"); - return RET_INPUTERR; + return RET_VID_INVALID; } return RET_OK; } @@ -1856,7 +1848,7 @@ ret_code vid_num_chk(char *if_name, operation_type op_type, int num) } if(op_type == OP_ADD && total > EACH_PORT_MAX_VLAN_NUM){ printf("[vlan]vid_num_chk: ADD operation's total vid num > EACH_PORT_MAX_VLAN_NUM\n"); - return RET_INPUTERR; + return RET_VIDNUM_INVALID; } return RET_OK; @@ -1873,7 +1865,7 @@ ret_code if_attr_chk(interface_vlan_info *if_vlan_info) { if(if_vlan_info->attr != LINK_TYPE_TRUNK){ printf("[vlan]if_attr_chk: now we only support link-type trunk.\n"); - return RET_INPUTERR; + return RET_ATTR_INVALID; } return RET_OK; } @@ -1899,7 +1891,7 @@ ret_code op_type_add_chk(interface_vlan_info *if_vlan_info) if(vlan_bitmap_check(if_vlan_info->vlan_bitmap, vid) && vlan_bitmap_check(g_if_vlan_info[ifnode].vlan_bitmap, vid)){ printf("[vlan]op_type_add_chk: Already have vid[%d], now return\n", vid); - return RET_INPUTERR; + return RET_VID_EXIST; } } return RET_OK; @@ -1919,7 +1911,7 @@ ret_code op_type_del_chk(interface_vlan_info *if_vlan_info) ifnode = get_ifnode_from_global(if_vlan_info->if_name); if(ifnode == -1){ printf("[vlan]op_type_del_chk: get_ifnode failed.\n"); - ret = RET_INPUTERR; + ret = RET_INTERFACE_NOT_EXIST; goto out; } @@ -1928,7 +1920,7 @@ ret_code op_type_del_chk(interface_vlan_info *if_vlan_info) if(vlan_bitmap_check(if_vlan_info->vlan_bitmap, vid) && !vlan_bitmap_check(g_if_vlan_info[ifnode].vlan_bitmap, vid)){ printf("[vlan]op_type_del_chk: node[%d] do not have vid[%d], now return\n", ifnode, vid); - ret = RET_INPUTERR; + ret = RET_VID_NOT_EXIST; goto out; } } @@ -1957,7 +1949,7 @@ ret_code op_type_chk(interface_vlan_info *if_vlan_info) } else { printf("[vlan]op_type_chk: op_type error.\n"); - ret = RET_INPUTERR; + ret = RET_OPTYPE_ERR; } return ret; } @@ -1972,7 +1964,7 @@ ret_code if_name_chk(interface_vlan_info *if_vlan_info) { if(!(strcmp(if_vlan_info->if_name, ""))){ printf("[vlan]if_name_chk: if-name is emptyp, return error.\n"); - return RET_ERR; + return RET_INPUTERR; } return RET_OK; } @@ -2190,7 +2182,7 @@ ret_code vlan_config_chk(uint source,uint *config_type, } else { printf("[vlan]vlan_config_chk: oper_type is unknown(%d).\n", oper_type); - ret = RET_UNKNOWN; + ret = RET_OPTYPE_ERR; } out: