WTP can run discoveryw/o memory leaks
This commit is contained in:
@ -883,7 +883,7 @@ struct cw_MsgSet * capwap_register_msg_set(struct cw_MsgSet * set, int mode){
|
||||
return NULL;
|
||||
|
||||
cw_dbg(DBG_INFO,"CAPWAP: Register messages");
|
||||
|
||||
|
||||
cw_msgset_add(set,messages, handlers);
|
||||
|
||||
cw_msgset_add_states(set,statemachine_states);
|
||||
|
@ -29,8 +29,6 @@ int capwap_in_capwap_control_ip_address(struct cw_ElemHandler *eh,
|
||||
struct cw_ElemHandlerParams *params,
|
||||
uint8_t * data, int len)
|
||||
{
|
||||
return 0;
|
||||
stop();
|
||||
|
||||
char key[CW_CFG_MAX_KEY_LEN];
|
||||
int idx;
|
||||
@ -40,11 +38,14 @@ int capwap_in_capwap_control_ip_address(struct cw_ElemHandler *eh,
|
||||
|
||||
/* printf("SKEY is %s , idx: %d\n",key,idx);*/
|
||||
|
||||
sprintf(key,"%s/address.%d",eh->key,idx);
|
||||
cw_ktv_add(params->cfg,key,CW_TYPE_IPADDRESS,NULL,data,len-2);
|
||||
sprintf(key,"%s.%d/address",eh->key,idx);
|
||||
CW_TYPE_IPADDRESS->read(params->cfg,key,data,len-2,eh->param);
|
||||
|
||||
// cw_ktv_add(params->cfg,key,CW_TYPE_IPADDRESS,NULL,data,len-2);
|
||||
|
||||
sprintf(key,"%s/wtps.%d",eh->key,idx);
|
||||
cw_ktv_add(params->cfg,key,CW_TYPE_WORD,NULL,data+len-2,2);
|
||||
sprintf(key,"%s.%d/wtps",eh->key,idx);
|
||||
CW_TYPE_WORD->read(params->cfg,key,data+len-2,2,eh->param);
|
||||
// cw_ktv_add(params->cfg,key,CW_TYPE_WORD,NULL,data+len-2,2);
|
||||
|
||||
/* if (handler-id == CW_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS) {
|
||||
struct sockaddr_in addr;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user