WTP can run discoveryw/o memory leaks

This commit is contained in:
2022-08-15 00:51:38 +02:00
parent daa808f9a2
commit df5e2bcbb7
19 changed files with 308 additions and 216 deletions

View File

@ -2360,7 +2360,7 @@ static int preprocess_join_request(struct cw_Conn *conn)
return 0;
stop();
/*
use_ac_version = cw_ktv_get_bool(conn->local_cfg,"cisco/wtp-use-ac-version",0);
if (use_ac_version){
@ -2385,5 +2385,6 @@ static int preprocess_join_request(struct cw_Conn *conn)
cw_msgset_add(conn->msgset,messages75, handlers75);
}
}
*/
return 1;
}

View File

@ -8,32 +8,41 @@ int cisco_out_wtp_descriptor(struct cw_ElemHandler * eh,
struct cw_ElemHandlerParams * params, uint8_t * dst)
{
stop();
char key[CW_CFG_MAX_KEY_LEN];
int len;
/* // XXX Dummy WTP Descriptor Header */
uint8_t *d;
cw_Val_t * val;
int rc;
d = dst+4;
sprintf(key,"%s/%s",eh->key,CW_SKEY_MAX_RADIOS);
val = cw_ktv_get(params->cfg,key, CW_TYPE_BYTE);
if (val != NULL)
d+=val->type->put(val,d);
else{
cw_dbg(DBG_WARN,"Cannot get value for %s, setting to 0", CW_SKEY_MAX_RADIOS);
sprintf(key,"%s/%s",eh->key,"max-radios");
rc = cw_generic_write_l(params->cfg_list, CW_TYPE_BYTE,key,
d, eh->param);
// val = cw_ktv_get(params->cfg,key, CW_TYPE_BYTE);
if (rc==-1){
cw_dbg(DBG_WARN,"Cannot get value for %s, setting to 0", key);
d+=cw_put_byte(d,0);
}
else {
d+=rc;
}
sprintf(key,"%s/%s",eh->key,CW_SKEY_RADIOS_IN_USE);
val = cw_ktv_get(params->cfg,key, CW_TYPE_BYTE);
if (val != NULL){
d+=val->type->put(val,d);
rc = cw_generic_write_l(params->cfg_list, CW_TYPE_BYTE,key,
d, eh->param);
// val = cw_ktv_get(params->cfg,key, CW_TYPE_BYTE);
if (rc != -1){
cw_dbg(DBG_WARN,"Cannot get value for %s, setting to 0", key);
d+=cw_put_byte(d,0);
}
else{
d+=cw_put_byte(d,0); /*radios in use*/
d+=rc; /*radios in use*/
}
d+=cw_put_encryption_capabilities_7(d,1);

View File

@ -58,6 +58,7 @@ static struct cw_MsgSet * register_messages(struct cw_MsgSet *set, int mode)
case CW_MOD_MODE_CAPWAP:
{
capwap_mod->register_messages(set, CW_MOD_MODE_CAPWAP);
capwap80211_mod->register_messages(set, CW_MOD_MODE_BINDINGS);
cisco_register_msg_set(set,CW_MOD_MODE_CAPWAP);
@ -229,10 +230,13 @@ int static setup_cfg(struct cw_Conn * conn)
// conn->header_len=header_len;
security = cw_setup_dtls(conn,conn->global_cfg,"cisco",CAPWAP_CIPHER);
cw_cfg_set_int(conn->local_cfg,"ac-descriptor/security",security);
if (conn->role == CW_ROLE_AC){
cw_cfg_set_int(conn->local_cfg,"ac-descriptor/security",security);
if (conn->default_cfg==NULL){
conn->default_cfg=cw_cfg_create();
// if (conn->default_cfg==NULL){
// conn->default_cfg=cw_cfg_create();
// }
}