From 2064f7dba105231375451be3ca8d22befdb2b3ee Mon Sep 17 00:00:00 2001 From: 7u83 <7u83@mail.ru> Date: Tue, 30 Aug 2022 22:13:22 +0200 Subject: [PATCH] put out a correct WTP Descriptor, even if no data is available --- src/cw/cw_write_descriptor_subelem.c | 17 ++++------------- src/mod/capwap/capwap_out_wtp_descriptor.c | 8 ++++---- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/cw/cw_write_descriptor_subelem.c b/src/cw/cw_write_descriptor_subelem.c index a5c19f99..c7df7651 100644 --- a/src/cw/cw_write_descriptor_subelem.c +++ b/src/cw/cw_write_descriptor_subelem.c @@ -17,32 +17,23 @@ int cw_write_descriptor_subelem (uint8_t *dst, cw_Cfg_t ** cfg_list, sprintf (key, "%s/%s", parent_key, CW_SKEY_VENDOR); vendor_s = cw_cfg_get_l (cfg_list, key, NULL); - if (vendor_s == NULL) { - cw_log (LOG_ERR, "Can't put subelem %s, no value of type found.", key); + cw_log (LOG_ERR, "Can't put subelem %s, no value found. Setting zero.", key); vendor_s = "0"; } vendor = atoi(vendor_s); - - - sprintf (key, "%s/%s", parent_key, CW_SKEY_VERSION); -// cw_Val_t * val = cw_cfg_get_val_l(cfg_list, key, CW_TYPE_BSTR16); version = cw_cfg_get_bstr16_l(cfg_list,key,NULL); - - //version = cw_cfg_get_bstr16 (cfg, key, NULL); - - if (version == NULL) { - cw_log (LOG_ERR, "Can't put subelem %s, no value of type Bstr16 found.", key); - return 0; + cw_log (LOG_ERR, "Can't put subelem %s, no value found. Setting zero.", key); + version = bstr16_create_from_str("0.0.0.0"); } d = dst; /* put vendor */ - d += cw_put_dword(d, vendor); //->type->put (vendor, d); + d += cw_put_dword(d, vendor); /* put version */ d += cw_put_dword (d, (subelem_id << 16) | bstr16_len(version)); diff --git a/src/mod/capwap/capwap_out_wtp_descriptor.c b/src/mod/capwap/capwap_out_wtp_descriptor.c index 7b64dbf4..e6a97b6c 100644 --- a/src/mod/capwap/capwap_out_wtp_descriptor.c +++ b/src/mod/capwap/capwap_out_wtp_descriptor.c @@ -37,11 +37,13 @@ int capwap_out_wtp_descriptor(struct cw_ElemHandler * eh, sprintf(key,"%s/%s",eh->key,CW_SKEY_MAX_RADIOS); val = cw_cfg_get_byte_l(params->cfg_list,key, 0); - d+=cw_put_byte(d,val); - if (val<=0){ + if (val<0){ cw_dbg(DBG_WARN,"Cannot get value for %s, setting to 0", CW_SKEY_MAX_RADIOS); d+=cw_put_byte(d,0); } + else{ + d+=cw_put_byte(d,val); + } sprintf(key,"%s/%s",eh->key,CW_SKEY_RADIOS_IN_USE); val = cw_cfg_get_byte_l(params->cfg_list,key, 0); @@ -52,8 +54,6 @@ int capwap_out_wtp_descriptor(struct cw_ElemHandler * eh, d+=cw_put_encryption_subelems(d,0); -/*cw_ktv_dump(params->conn->local_cfg,DBG_INFO,"*** ktv dump ***","","*** end of dump ***");*/ - /* hardware version sub element */ sprintf(key,"%s/%s",eh->key,CW_SKEY_HARDWARE); d+=cw_write_descriptor_subelem (d, params->cfg_list,