[wtp] move overly deep indented wtp descriptor config parser into function
This commit is contained in:
parent
aa5af8056b
commit
3b7c0adda7
123
src/wtp/wtp.c
123
src/wtp/wtp.c
@ -740,6 +740,73 @@ static int wtp_parsing_cfg_boardinfo_element(config_t *config)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set info descriptor of WTP */
|
||||||
|
static int wtp_parsing_cfg_descriptor_info(config_t *config)
|
||||||
|
{
|
||||||
|
config_setting_t *configSetting;
|
||||||
|
int count, i;
|
||||||
|
|
||||||
|
configSetting = config_lookup(config, "application.descriptor.info");
|
||||||
|
if (!configSetting)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
count = config_setting_length(configSetting);
|
||||||
|
for (i = 0; i < count; i++) {
|
||||||
|
config_setting_t *configElement;
|
||||||
|
LIBCONFIG_LOOKUP_INT_ARG configVendor;
|
||||||
|
const char *configType;
|
||||||
|
const char *configValue;
|
||||||
|
int lengthValue;
|
||||||
|
unsigned short type;
|
||||||
|
struct capwap_wtpdescriptor_desc_subelement *desc;
|
||||||
|
|
||||||
|
configElement = config_setting_get_elem(configSetting, i);
|
||||||
|
if (!configElement)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (config_setting_lookup_int(configElement, "idvendor", &configVendor) != CONFIG_TRUE) {
|
||||||
|
capwap_logging_error("Invalid configuration file, element application.descriptor.info.idvendor not found");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config_setting_lookup_string(configElement, "type", &configType) != CONFIG_TRUE) {
|
||||||
|
capwap_logging_error("Invalid configuration file, element application.descriptor.info.type not found");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config_setting_lookup_string(configElement, "value", &configValue) != CONFIG_TRUE) {
|
||||||
|
capwap_logging_error("Invalid configuration file, element application.descriptor.info.value not found");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
lengthValue = strlen(configValue);
|
||||||
|
if (lengthValue >= CAPWAP_WTPDESC_SUBELEMENT_MAXDATA) {
|
||||||
|
capwap_logging_error("Invalid configuration file, application.descriptor.info.value string length exceeded");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcmp(configType, "hardware")) {
|
||||||
|
type = CAPWAP_WTPDESC_SUBELEMENT_HARDWAREVERSION;
|
||||||
|
} else if (!strcmp(configType, "software")) {
|
||||||
|
type = CAPWAP_WTPDESC_SUBELEMENT_SOFTWAREVERSION;
|
||||||
|
} else if (!strcmp(configType, "boot")) {
|
||||||
|
type = CAPWAP_WTPDESC_SUBELEMENT_BOOTVERSION;
|
||||||
|
} else if (!strcmp(configType, "other")) {
|
||||||
|
type = CAPWAP_WTPDESC_SUBELEMENT_OTHERVERSION;
|
||||||
|
} else {
|
||||||
|
capwap_logging_error("Invalid configuration file, unknown application.descriptor.info.type value");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
desc = (struct capwap_wtpdescriptor_desc_subelement*)capwap_array_get_item_pointer(g_wtp.descriptor.descsubelement, g_wtp.descriptor.descsubelement->count);
|
||||||
|
desc->vendor = (unsigned long)configVendor;
|
||||||
|
desc->type = type;
|
||||||
|
desc->data = (uint8_t*)capwap_duplicate_string(configValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Parsing configuration */
|
/* Parsing configuration */
|
||||||
static int wtp_parsing_configuration_1_0(config_t* config) {
|
static int wtp_parsing_configuration_1_0(config_t* config) {
|
||||||
int i;
|
int i;
|
||||||
@ -953,60 +1020,8 @@ static int wtp_parsing_configuration_1_0(config_t* config) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Set info descriptor of WTP */
|
/* Set info descriptor of WTP */
|
||||||
configSetting = config_lookup(config, "application.descriptor.info");
|
if (wtp_parsing_cfg_descriptor_info(config) != 1)
|
||||||
if (configSetting != NULL) {
|
return 0;
|
||||||
int count = config_setting_length(configSetting);
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
config_setting_t* configElement = config_setting_get_elem(configSetting, i);
|
|
||||||
if (configElement != NULL) {
|
|
||||||
LIBCONFIG_LOOKUP_INT_ARG configVendor;
|
|
||||||
if (config_setting_lookup_int(configElement, "idvendor", &configVendor) == CONFIG_TRUE) {
|
|
||||||
const char* configType;
|
|
||||||
if (config_setting_lookup_string(configElement, "type", &configType) == CONFIG_TRUE) {
|
|
||||||
const char* configValue;
|
|
||||||
if (config_setting_lookup_string(configElement, "value", &configValue) == CONFIG_TRUE) {
|
|
||||||
int lengthValue = strlen(configValue);
|
|
||||||
if (lengthValue < CAPWAP_WTPDESC_SUBELEMENT_MAXDATA) {
|
|
||||||
unsigned short type;
|
|
||||||
struct capwap_wtpdescriptor_desc_subelement* desc;
|
|
||||||
|
|
||||||
if (!strcmp(configType, "hardware")) {
|
|
||||||
type = CAPWAP_WTPDESC_SUBELEMENT_HARDWAREVERSION;
|
|
||||||
} else if (!strcmp(configType, "software")) {
|
|
||||||
type = CAPWAP_WTPDESC_SUBELEMENT_SOFTWAREVERSION;
|
|
||||||
} else if (!strcmp(configType, "boot")) {
|
|
||||||
type = CAPWAP_WTPDESC_SUBELEMENT_BOOTVERSION;
|
|
||||||
} else if (!strcmp(configType, "other")) {
|
|
||||||
type = CAPWAP_WTPDESC_SUBELEMENT_OTHERVERSION;
|
|
||||||
} else {
|
|
||||||
capwap_logging_error("Invalid configuration file, unknown application.descriptor.info.type value");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
desc = (struct capwap_wtpdescriptor_desc_subelement*)capwap_array_get_item_pointer(g_wtp.descriptor.descsubelement, g_wtp.descriptor.descsubelement->count);
|
|
||||||
desc->vendor = (unsigned long)configVendor;
|
|
||||||
desc->type = type;
|
|
||||||
desc->data = (uint8_t*)capwap_duplicate_string(configValue);
|
|
||||||
} else {
|
|
||||||
capwap_logging_error("Invalid configuration file, application.descriptor.info.value string length exceeded");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
capwap_logging_error("Invalid configuration file, element application.descriptor.info.value not found");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
capwap_logging_error("Invalid configuration file, element application.descriptor.info.type not found");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
capwap_logging_error("Invalid configuration file, element application.descriptor.info.idvendor not found");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set ECN of WTP */
|
/* Set ECN of WTP */
|
||||||
if (config_lookup_string(config, "application.ecn", &configString) == CONFIG_TRUE) {
|
if (config_lookup_string(config, "application.ecn", &configString) == CONFIG_TRUE) {
|
||||||
|
Loading…
Reference in New Issue
Block a user