moved local_cfg, remote_cfg ... to cw_ElemData struct
This commit is contained in:
@ -1,8 +1,9 @@
|
||||
include ../Defs.mak
|
||||
|
||||
MFDEPS=../Defs.mak ../LocalDefs.mak
|
||||
|
||||
|
||||
CWSRC=\
|
||||
cw_write_header.c\
|
||||
cw_check_missing_mand.c\
|
||||
cw_clock_lap.c\
|
||||
cw_dbg_elem.c\
|
||||
@ -63,6 +64,7 @@ CWSRC=\
|
||||
cw_strlist_get_id.c\
|
||||
cw_strlist_get_str.c\
|
||||
cw_type_bstr16.c\
|
||||
cw_type_bwstr.c\
|
||||
cw_type_byte.c\
|
||||
cw_type_bool.c\
|
||||
cw_type_str.c\
|
||||
@ -166,7 +168,6 @@ MISCSRC=\
|
||||
bstr_create.c\
|
||||
bstr_create_from_str.c\
|
||||
bstr_replace.c\
|
||||
bstrv_create.c\
|
||||
capwap_inline.c\
|
||||
capwap_strings_board.c\
|
||||
capwap_strings_elem80211.c\
|
||||
@ -182,6 +183,7 @@ MISCSRC=\
|
||||
connlist.c\
|
||||
conn_prepare_image_data_request.c\
|
||||
conn_process_packet.c\
|
||||
cw_decode_msg.c \
|
||||
conn_q_add_packet.c\
|
||||
conn_q_get_packet.c\
|
||||
conn_q_wait_packet.c\
|
||||
@ -218,11 +220,10 @@ MAVLSRC=\
|
||||
mavl_get_ptr.c\
|
||||
mavl_insert_ptr.c\
|
||||
mavl_replace.c\
|
||||
mavl_merge.c\
|
||||
mavliter_get_ptr.c\
|
||||
mavl_cmpstr.c\
|
||||
mavl_freeptr.c \
|
||||
|
||||
mavl_merge.c\
|
||||
|
||||
|
||||
DTLSSRC += dtls_openssl.c \
|
||||
@ -256,7 +257,7 @@ SNAME := $(LIBARCHDIR)/libcw.a
|
||||
DNAME := $(LIBARCHDIR)/libcw.so
|
||||
|
||||
CFLAGS+=-fPIC -DUSE_OPENSSL -I../contrib/openssl-1.1.1f/include/ -O0
|
||||
CFLAGS+=-g -I/home/tube/v/rsrch/libmavl
|
||||
CFLAGS+=-g
|
||||
|
||||
all: $(SNAME) $(DNAME)
|
||||
static: $(SNAME)
|
||||
|
@ -203,7 +203,7 @@ struct conn {
|
||||
int dtls_verify_peer;
|
||||
int dtls_mtu;
|
||||
|
||||
uint8_t dtls_buffer[2048];
|
||||
uint8_t dtls_buffer[4096];
|
||||
int dtls_buffer_len;
|
||||
int dtls_buffer_pos;
|
||||
|
||||
|
@ -90,7 +90,7 @@ struct conn * conn_create(int sock, struct sockaddr * addr, int qsize)
|
||||
/* conn->send_data_packet = conn_send_data_packet;*/
|
||||
|
||||
conn->last_seqnum_received=-1;
|
||||
conn->mtu=1500;
|
||||
conn->mtu=500;
|
||||
|
||||
|
||||
conn->cur_packet=0;
|
||||
@ -102,7 +102,7 @@ struct conn * conn_create(int sock, struct sockaddr * addr, int qsize)
|
||||
|
||||
/* conn->write_data = conn->send_data_packet; */
|
||||
|
||||
conn->dtls_mtu = 1500;
|
||||
conn->dtls_mtu = 500;
|
||||
|
||||
return conn;
|
||||
}
|
||||
|
@ -67,7 +67,8 @@ struct conn * conn_create_noq(int sock, struct sockaddr * addr)
|
||||
|
||||
/* misc settings */
|
||||
conn->last_seqnum_received=-1;
|
||||
conn->mtu=1500;
|
||||
conn->mtu=480;
|
||||
conn->dtls_mtu=500;
|
||||
|
||||
|
||||
conn->cur_packet=0;
|
||||
|
@ -333,7 +333,7 @@ static int process_elements(struct conn *conn, uint8_t * rawmsg, int len,
|
||||
ui = message->states;
|
||||
|
||||
for (ui=message->states; ui->state; ui++){
|
||||
printf("Comparing %d and %d\n", conn->capwap_state, ui->state);
|
||||
/* printf("Comparing %d and %d\n", conn->capwap_state, ui->state);*/
|
||||
if(ui->state==conn->capwap_state){
|
||||
break;
|
||||
}
|
||||
@ -398,7 +398,15 @@ static int process_elements(struct conn *conn, uint8_t * rawmsg, int len,
|
||||
|
||||
|
||||
|
||||
params.conn=conn;
|
||||
/* params.conn=conn;*/
|
||||
|
||||
params.local_cfg=conn->local_cfg;
|
||||
params.remote_cfg=conn->remote_cfg;
|
||||
params.default_cfg=conn->default_cfg;
|
||||
params.global_cfg=conn->global_cfg;
|
||||
params.msgset=conn->msgset;
|
||||
|
||||
|
||||
params.from=from;
|
||||
params.msgdata=message;
|
||||
params.mand_found=mand_found;
|
||||
|
@ -30,7 +30,7 @@ int conn_send_msg(struct conn * conn, uint8_t *rawmsg)
|
||||
hlen = cw_get_hdr_hlen(rawmsg)*4;
|
||||
|
||||
mtu = conn->mtu;
|
||||
mtu = 440;
|
||||
mtu = 9440;
|
||||
mtu = mtu >> 3;
|
||||
mtu = mtu << 3;
|
||||
|
||||
|
@ -547,6 +547,8 @@ int cw_put_msg(struct conn *conn, uint8_t * rawout);
|
||||
char *cw_strdup(const char *s);
|
||||
int cw_stricmp(char const *a, char const *b);
|
||||
|
||||
int cw_write_header(struct cw_ElemHandler * handler, uint8_t * dst, int len);
|
||||
int cw_header_len(struct cw_ElemHandler * handler);
|
||||
|
||||
/**
|
||||
*@}
|
||||
|
@ -14,7 +14,7 @@ int cw_in_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams *
|
||||
return CAPWAP_RESULT_UNRECOGNIZED_MESSAGE_ELEMENT;
|
||||
}
|
||||
|
||||
result = cw_ktv_add(params->conn->remote_cfg, handler->key,
|
||||
result = cw_ktv_add(params->remote_cfg, handler->key,
|
||||
handler->type,NULL, elem_data,elem_len);
|
||||
|
||||
params->elem=result;
|
||||
|
@ -27,7 +27,7 @@ int cw_in_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHandlerP
|
||||
return CAPWAP_RESULT_UNRECOGNIZED_MESSAGE_ELEMENT;
|
||||
}
|
||||
|
||||
cw_ktv_read_struct(params->conn->remote_cfg,handler->type,key,elem_data,elem_len);
|
||||
cw_ktv_read_struct(params->remote_cfg,handler->type,key,elem_data,elem_len);
|
||||
|
||||
return CAPWAP_RESULT_SUCCESS;
|
||||
}
|
||||
|
@ -9,6 +9,6 @@ int cw_in_generic_with_index(struct cw_ElemHandler *eh,
|
||||
|
||||
idx = cw_get_byte(data);
|
||||
sprintf(key,"%s.%d",eh->key,idx);
|
||||
cw_ktv_add(params->conn->remote_cfg,key,eh->type,NULL,data+1,len-1);
|
||||
cw_ktv_add(params->remote_cfg,key,eh->type,NULL,data+1,len-1);
|
||||
return 1;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ int cw_in_idx_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerPara
|
||||
idx=cw_get_byte(elem_data);
|
||||
sprintf(key,handler->key,idx);
|
||||
|
||||
result = cw_ktv_add(params->conn->remote_cfg, key,
|
||||
result = cw_ktv_add(params->remote_cfg, key,
|
||||
handler->type, NULL, elem_data+1,elem_len-1);
|
||||
|
||||
params->elem=result;
|
||||
|
@ -19,7 +19,7 @@ int cw_in_idx_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHand
|
||||
idx = cw_get_byte(elem_data);
|
||||
sprintf(key, handler->key, idx);
|
||||
|
||||
cw_ktv_read_struct(params->conn->remote_cfg,handler->type,key,elem_data+1,elem_len-1);
|
||||
cw_ktv_read_struct(params->remote_cfg,handler->type,key,elem_data+1,elem_len-1);
|
||||
|
||||
return CAPWAP_RESULT_SUCCESS;
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ int cw_in_radio_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHa
|
||||
radio = cw_get_byte(elem_data);
|
||||
sprintf(key,"radio.%d/%s",radio,handler->key);
|
||||
|
||||
cw_ktv_read_struct(params->conn->remote_cfg,handler->type,key,elem_data+1,elem_len-1);
|
||||
cw_ktv_read_struct(params->remote_cfg,handler->type,key,elem_data+1,elem_len-1);
|
||||
|
||||
/*params->elem=result;*/
|
||||
|
||||
|
@ -10,7 +10,6 @@ cw_KTV_t * cw_ktv_add(mavl_t kvtstore, const char *key, const struct cw_Type *ty
|
||||
{
|
||||
cw_KTV_t mdata, *mresult;
|
||||
int exists;
|
||||
printf("KTV ADD: %s\n",key);
|
||||
|
||||
mdata.key=cw_strdup(key);
|
||||
mdata.valguard=valguard;
|
||||
@ -30,8 +29,6 @@ printf("KTV ADD: %s\n",key);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
printf("MAVLCOUNT: %d - %s\n",kvtstore->count, mdata.key);
|
||||
|
||||
mavl_del(kvtstore,&mdata);
|
||||
mresult = mavl_insert(kvtstore, &mdata, &exists);
|
||||
if (exists){
|
||||
|
@ -19,7 +19,7 @@ int cw_out_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams
|
||||
/* search.key=(char*)handler->key;
|
||||
elem = mavl_get(params->conn->local_cfg, &search);
|
||||
*/
|
||||
elem = cw_ktv_get(params->conn->local_cfg,handler->key,NULL);
|
||||
elem = cw_ktv_get(params->local_cfg,handler->key,NULL);
|
||||
|
||||
/* if (elem == NULL && params->conn->default_cfg !=NULL)
|
||||
elem = mavl_get(params->conn->default_cfg, &search);
|
||||
@ -49,7 +49,7 @@ int cw_out_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams
|
||||
/* Size for msg elem header depends on
|
||||
vendor specific payload */
|
||||
/* start = handler->vendor ? 10 : 4; */
|
||||
start = params->conn->header_len(handler);
|
||||
start = cw_header_len(handler);
|
||||
|
||||
if (cw_ktv_cast(elem,handler->type)==NULL){
|
||||
cw_log(LOG_ERR,"Can't put element '%s'- can't cast from %s to %s for key: %s", handler->name,
|
||||
@ -67,9 +67,11 @@ int cw_out_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams
|
||||
return len + cw_put_elem_vendor_hdr(dst, handler->vendor, handler->id, len);
|
||||
|
||||
l = len + cw_put_elem_hdr(dst, handler->id, len); */
|
||||
l = params->conn->write_header(handler,dst,len);
|
||||
l = cw_write_header(handler,dst,len);
|
||||
|
||||
cw_dbg_elem(DBG_ELEM_OUT,params->conn,params->msgdata->type,handler,dst,l);
|
||||
cw_dbg_elem(DBG_ELEM_OUT,NULL,params->msgdata->type,handler,dst,l);
|
||||
/* cw_dbg_elem(DBG_ELEM_OUT,params->conn,params->msgdata->type,handler,dst,l);*/
|
||||
|
||||
return l;
|
||||
}
|
||||
|
||||
|
@ -22,10 +22,10 @@ int cw_out_generic_indexed_enum(struct cw_ElemHandler * handler, struct cw_ElemH
|
||||
|
||||
for(i=0; e[i].name!=NULL; i++) {
|
||||
sprintf(key,"%s/%s",handler->key,e[i].name);
|
||||
result = cw_ktv_base_exists(params->conn->local_cfg,key);
|
||||
result = cw_ktv_base_exists(params->local_cfg,key);
|
||||
if (result==NULL)
|
||||
continue;
|
||||
start = params->conn->header_len(handler);
|
||||
start = cw_header_len(handler);
|
||||
len = 0;
|
||||
if (ie->idxpos==0)
|
||||
len = 1;
|
||||
@ -33,7 +33,7 @@ int cw_out_generic_indexed_enum(struct cw_ElemHandler * handler, struct cw_ElemH
|
||||
if (e[i].fun_out==NULL)
|
||||
len += result->type->put(result,ob+start+len);
|
||||
else
|
||||
len += cw_ktv_write_struct(params->conn->local_cfg,
|
||||
len += cw_ktv_write_struct(params->local_cfg,
|
||||
NULL,e[i].type,key,ob+start+len);
|
||||
|
||||
/* thandler.type=e[i].type;
|
||||
@ -44,7 +44,7 @@ int cw_out_generic_indexed_enum(struct cw_ElemHandler * handler, struct cw_ElemH
|
||||
if (ie->idxpos==len)
|
||||
len++;
|
||||
|
||||
ob += params->conn->write_header(handler,ob,len);
|
||||
ob += cw_write_header(handler,ob,len);
|
||||
|
||||
|
||||
|
||||
@ -52,4 +52,4 @@ int cw_out_generic_indexed_enum(struct cw_ElemHandler * handler, struct cw_ElemH
|
||||
|
||||
return ob-dst;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ int cw_out_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHandler
|
||||
}
|
||||
|
||||
search.key = (char*)handler->key;
|
||||
result = mavl_get_first(params->conn->local_cfg,&search);
|
||||
result = mavl_get_first(params->local_cfg,&search);
|
||||
if (result == NULL ){
|
||||
if (params->elemdata->mand)
|
||||
cw_log(LOG_ERR,"Can't put mandatory message element %s, no data available",handler->name);
|
||||
@ -30,12 +30,12 @@ int cw_out_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHandler
|
||||
return 0;
|
||||
}
|
||||
|
||||
start = params->conn->header_len(handler);
|
||||
start = cw_header_len(handler);
|
||||
|
||||
len = cw_ktv_write_struct(params->conn->local_cfg,
|
||||
params->conn->default_cfg,
|
||||
len = cw_ktv_write_struct(params->local_cfg,
|
||||
params->default_cfg,
|
||||
handler->type,handler->key,dst+start);
|
||||
|
||||
return params->conn->write_header(handler,dst,len);
|
||||
return cw_write_header(handler,dst,len);
|
||||
|
||||
}
|
||||
|
@ -18,18 +18,18 @@ int cw_out_generic_with_index(struct cw_ElemHandler * eh,
|
||||
do {
|
||||
sprintf(key,"%s.%d",eh->key,idx);
|
||||
search.key=key;
|
||||
result = mavl_get_first(params->conn->local_cfg,&search);
|
||||
result = mavl_get_first(params->local_cfg,&search);
|
||||
if (result==NULL)
|
||||
break;
|
||||
if (strncmp(result->key,key,strlen(key))!=0)
|
||||
break;
|
||||
|
||||
start = params->conn->header_len(eh);
|
||||
start = cw_header_len(eh);
|
||||
len = cw_put_byte(ob+start,idx);
|
||||
|
||||
len += result->type->put(result,ob+start+len);
|
||||
|
||||
ob += params->conn->write_header(eh,ob,len);
|
||||
ob += cw_write_header(eh,ob,len);
|
||||
|
||||
idx++;
|
||||
|
||||
|
@ -24,7 +24,7 @@ int cw_out_idx_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHan
|
||||
sprintf(key,handler->key,i);
|
||||
search.key=key;
|
||||
/*elem = mavl_get(params->conn->local_cfg, &search);*/
|
||||
elem = mavl_get_first(params->conn->local_cfg,&search);
|
||||
elem = mavl_get_first(params->local_cfg,&search);
|
||||
if(elem != NULL){
|
||||
printf("Elem key: %s\n",elem->key);
|
||||
}
|
||||
@ -40,12 +40,12 @@ int cw_out_idx_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHan
|
||||
printf("Here we are '%s'! --> %d\n",key,idx);
|
||||
|
||||
len =0;
|
||||
start = mdst + params->conn->header_len(handler);
|
||||
start = mdst + cw_header_len(handler);
|
||||
|
||||
len += cw_put_byte(start+len,idx);
|
||||
len += cw_ktv_write_struct(params->conn->local_cfg,NULL, handler->type,key,start+len);
|
||||
len += cw_ktv_write_struct(params->local_cfg,NULL, handler->type,key,start+len);
|
||||
|
||||
mdst += params->conn->write_header(handler,mdst,len);
|
||||
mdst += cw_write_header(handler,mdst,len);
|
||||
|
||||
|
||||
i=idx+1;
|
||||
|
@ -20,11 +20,11 @@ int cw_out_radio_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerP
|
||||
idx++;
|
||||
}
|
||||
*/
|
||||
radios = cw_ktv_get_byte(params->conn->local_cfg,"wtp-descriptor/max-radios",0);
|
||||
radios = cw_ktv_get_byte(params->local_cfg,"wtp-descriptor/max-radios",0);
|
||||
|
||||
for(i=0;i<radios;i++){
|
||||
l = cw_write_radio_element(handler,params,i,dst+len);
|
||||
cw_dbg_elem(DBG_ELEM_OUT,params->conn,params->msgdata->type,handler,dst,l);
|
||||
cw_dbg_elem(DBG_ELEM_OUT,NULL,params->msgdata->type,handler,dst,l);
|
||||
len+=l;
|
||||
}
|
||||
return len;
|
||||
|
@ -14,19 +14,19 @@ int cw_out_radio_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemH
|
||||
cdst = dst;
|
||||
|
||||
|
||||
offset = params->conn->header_len(handler);
|
||||
offset = cw_header_len(handler);
|
||||
|
||||
i=-1;
|
||||
while(1){
|
||||
char basekey[CW_KTV_MAX_KEY_LEN];
|
||||
cw_KTV_t * result;
|
||||
|
||||
i = cw_ktv_idx_get_next(params->conn->local_cfg,"radio",i+1);
|
||||
i = cw_ktv_idx_get_next(params->local_cfg,"radio",i+1);
|
||||
if (i==-1)
|
||||
break;
|
||||
sprintf(basekey,"radio.%d/%s",i,handler->key);
|
||||
|
||||
result = cw_ktv_base_exists(params->conn->local_cfg,basekey);
|
||||
result = cw_ktv_base_exists(params->local_cfg,basekey);
|
||||
if (result == NULL){
|
||||
continue;
|
||||
}
|
||||
@ -34,10 +34,10 @@ int cw_out_radio_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemH
|
||||
|
||||
l=0;
|
||||
l+=cw_put_byte(cdst+offset+l,i);
|
||||
l+= cw_ktv_write_struct(params->conn->local_cfg,NULL, handler->type,basekey,cdst+offset+l);
|
||||
l+= cw_ktv_write_struct(params->local_cfg,NULL, handler->type,basekey,cdst+offset+l);
|
||||
|
||||
|
||||
cdst+=params->conn->write_header(handler,cdst,l);
|
||||
cdst+=cw_write_header(handler,cdst,l);
|
||||
}
|
||||
return cdst-dst;
|
||||
}
|
||||
@ -57,21 +57,21 @@ int cw_out_traverse0(struct cw_ElemHandler * handler, struct cw_ElemHandlerParam
|
||||
if (sl==NULL){
|
||||
cw_KTV_t * result;
|
||||
sprintf(key,"%s/%s",current,next);
|
||||
result = cw_ktv_base_exists(params->conn->local_cfg,key);
|
||||
result = cw_ktv_base_exists(params->local_cfg,key);
|
||||
if (result != NULL){
|
||||
int offset;
|
||||
int i,l;
|
||||
offset = params->conn->header_len(handler);
|
||||
offset = cw_header_len(handler);
|
||||
printf("Yea! We can do it: %s\n",result->key);
|
||||
for (i=0;i<stack[0];i++){
|
||||
printf("I=%i\n",stack[i+1]);
|
||||
}
|
||||
l= cw_ktv_write_struct(params->conn->local_cfg,params->conn->default_cfg,
|
||||
l= cw_ktv_write_struct(params->local_cfg,params->default_cfg,
|
||||
handler->type,key,dst+offset);
|
||||
|
||||
printf("Write struct len %i\n",l);
|
||||
|
||||
l=params->conn->write_header(handler,dst,l);
|
||||
l=cw_write_header(handler,dst,l);
|
||||
printf("header wr len %d\n",l);
|
||||
if (handler->patch){
|
||||
handler->patch(dst+offset,stack);
|
||||
@ -91,18 +91,18 @@ int cw_out_traverse0(struct cw_ElemHandler * handler, struct cw_ElemHandlerParam
|
||||
|
||||
|
||||
printf("Here we are %s\n",key);
|
||||
cw_dbg_ktv_dump(params->conn->local_cfg,DBG_INFO,"start"," ", "end" );
|
||||
cw_dbg_ktv_dump(params->local_cfg,DBG_INFO,"start"," ", "end" );
|
||||
i=-1;
|
||||
while(1){
|
||||
char basekey[CW_KTV_MAX_KEY_LEN];
|
||||
cw_KTV_t * result;
|
||||
|
||||
i = cw_ktv_idx_get_next(params->conn->local_cfg,key,i+1);
|
||||
i = cw_ktv_idx_get_next(params->local_cfg,key,i+1);
|
||||
if (i==-1)
|
||||
break;
|
||||
sprintf(basekey,"%s.%d",key,i);
|
||||
printf("Our basekey is %s\n",basekey);
|
||||
result = cw_ktv_base_exists(params->conn->local_cfg,basekey);
|
||||
result = cw_ktv_base_exists(params->local_cfg,basekey);
|
||||
if (result == NULL){
|
||||
continue;
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ int cw_process_element(struct cw_ElemHandlerParams *params, int proto, int vendo
|
||||
params->elem=NULL;
|
||||
|
||||
/* try to retrieve a handler for this message element */
|
||||
handler = cw_msgset_get_elemhandler(params->conn->msgset,proto, vendor, elem_id);
|
||||
handler = cw_msgset_get_elemhandler(params->msgset,proto, vendor, elem_id);
|
||||
if (!handler) {
|
||||
|
||||
cw_dbg(DBG_ELEM_ERR, "Unrecognized message element: %d, ignoring",
|
||||
@ -65,7 +65,9 @@ int cw_process_element(struct cw_ElemHandlerParams *params, int proto, int vendo
|
||||
return -1;
|
||||
}
|
||||
|
||||
cw_dbg_elem(DBG_ELEM_IN, params->conn, params->msgdata->type, handler,
|
||||
/*cw_dbg_elem(DBG_ELEM_IN, params->conn, params->msgdata->type, handler,
|
||||
data,len);*/
|
||||
cw_dbg_elem(DBG_ELEM_IN, NULL, params->msgdata->type, handler,
|
||||
data,len);
|
||||
|
||||
if (handler->get == NULL){
|
||||
|
@ -77,7 +77,7 @@ int cw_put_msg(struct conn *conn, uint8_t * rawout)
|
||||
|
||||
data = mlistelem_dataptr(elem);
|
||||
handler = cw_msgset_get_elemhandler(conn->msgset,data->proto,data->vendor,data->id);
|
||||
/* printf("Elem: %d %d %d %s\n", data->proto, data->vendor, data->id, handler->name);*/
|
||||
printf("Elem: %d %d %d %s\n", data->proto, data->vendor, data->id, handler->name);
|
||||
if (handler==NULL){
|
||||
cw_log(LOG_ERR,"Can't put message element %d %d %d, no handler defined.",
|
||||
data->proto,data->vendor,data->id);
|
||||
@ -94,7 +94,15 @@ int cw_put_msg(struct conn *conn, uint8_t * rawout)
|
||||
continue;
|
||||
}
|
||||
|
||||
params.conn=conn;
|
||||
/* params.conn=conn;*/
|
||||
params.local_cfg=conn->local_cfg;
|
||||
params.remote_cfg=conn->remote_cfg;
|
||||
params.default_cfg=conn->default_cfg;
|
||||
params.global_cfg=conn->global_cfg;
|
||||
params.msgset=conn->msgset;
|
||||
|
||||
|
||||
|
||||
params.elemdata = data;
|
||||
params.elem=NULL;
|
||||
params.msgdata=msg;
|
||||
@ -107,10 +115,10 @@ int cw_put_msg(struct conn *conn, uint8_t * rawout)
|
||||
}
|
||||
|
||||
l = handler->put(handler,¶ms,dst+len);
|
||||
|
||||
|
||||
/* if(l>0)
|
||||
cw_dbg_elem(DBG_ELEM_OUT,conn,type,handler,dst+len,l);
|
||||
if (strlen(details)){
|
||||
* if (strlen(details)){
|
||||
cw_dbg(DBG_ELEM_DETAIL," %s",params.debug_details);
|
||||
}
|
||||
*/ len += l;
|
||||
|
@ -32,7 +32,7 @@ int cw_read_ac_descriptor(mavl_t store,
|
||||
struct cw_DescriptorSubelemDef *allowed)
|
||||
{
|
||||
|
||||
cw_ktv_read_struct(params->conn->remote_cfg,acstatus,eh->key,data,len);
|
||||
cw_ktv_read_struct(params->remote_cfg,acstatus,eh->key,data,len);
|
||||
|
||||
if (!allowed)
|
||||
allowed=allowed_default;
|
||||
|
@ -21,7 +21,7 @@ int cw_in_radio_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerPa
|
||||
radio=cw_get_byte(elem_data);
|
||||
sprintf(key,"radio.%d/%s",radio,handler->key);
|
||||
|
||||
result = cw_ktv_add(params->conn->remote_cfg, key,
|
||||
result = cw_ktv_add(params->remote_cfg, key,
|
||||
handler->type, NULL, elem_data+1,elem_len-1);
|
||||
|
||||
params->elem=result;
|
||||
|
@ -29,7 +29,7 @@ int cw_read_wtp_descriptor(mavl_t cfg, struct conn *conn,
|
||||
/* Get number of encryption elements */
|
||||
ncrypt = cw_get_byte(data + 2);
|
||||
if (ncrypt == 0) {
|
||||
if (conn->strict_capwap) {
|
||||
if (0 /*conn->strict_capwap*/) {
|
||||
cw_dbg(DBG_ELEM_ERR,
|
||||
"Bad WTP Descriptor, number of encryption elements is 0.");
|
||||
return CAPWAP_RESULT_UNRECOGNIZED_MESSAGE_ELEMENT;
|
||||
|
@ -1,4 +1,4 @@
|
||||
|
||||
#include "conn.h"
|
||||
#include "msgset.h"
|
||||
#include "cw.h"
|
||||
|
||||
@ -10,3 +10,9 @@ int cw_write_header(struct cw_ElemHandler * handler, uint8_t * dst, int len)
|
||||
return len + cw_put_elem_hdr(dst, handler->id, len);
|
||||
}
|
||||
|
||||
int cw_header_len(struct cw_ElemHandler * handler)
|
||||
{
|
||||
return handler->vendor ? 10 : 4;
|
||||
}
|
||||
|
||||
|
||||
|
@ -10,15 +10,15 @@ int cw_write_radio_element(struct cw_ElemHandler * handler, struct cw_ElemHandle
|
||||
uint8_t * d;
|
||||
|
||||
len =0;
|
||||
|
||||
sprintf(key,"radio.%d/%s",idx,handler->key);
|
||||
|
||||
/*printf("Looking for key: %s\n",key);*/
|
||||
printf("Looking for readio key: %s\n",key);
|
||||
|
||||
search.key=key;
|
||||
elem = mavl_get(params->conn->local_cfg, &search);
|
||||
elem = mavl_get(params->local_cfg, &search);
|
||||
|
||||
if (elem==NULL){
|
||||
printf("Nothing found\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -27,14 +27,17 @@ int cw_write_radio_element(struct cw_ElemHandler * handler, struct cw_ElemHandle
|
||||
d = handler->vendor ? dst+10 : dst+4;
|
||||
|
||||
/* put radio id */
|
||||
|
||||
printf("Putting put byte index: %d\n",idx);
|
||||
|
||||
len += cw_put_byte(d+len,idx);
|
||||
|
||||
len += ((const cw_Type_t*)(handler->type))->put(elem,d+len);
|
||||
/* l = len + cw_put_elem_hdr(dst, handler->id, len);*/
|
||||
|
||||
/* if (handler->vendor)
|
||||
if (handler->vendor)
|
||||
return len + cw_put_elem_vendor_hdr(dst, handler->vendor, handler->id, len);
|
||||
*/
|
||||
|
||||
return len + cw_put_elem_hdr(dst, handler->id, len);
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@ int dtls_bio_read(struct conn *conn, char *out, int maxlen)
|
||||
{
|
||||
int ret;
|
||||
if (conn->dtls_buffer_len == 0) {
|
||||
int len = conn->recv_packet(conn, conn->dtls_buffer, 2048);
|
||||
int len = conn->recv_packet(conn, conn->dtls_buffer, 4096);
|
||||
if (len < 4)
|
||||
return 0;
|
||||
conn->dtls_buffer_len = len - 4;
|
||||
@ -77,7 +77,7 @@ int dtls_bio_read(struct conn *conn, char *out, int maxlen)
|
||||
*/
|
||||
int dtls_bio_write(struct conn *conn, const char *data, int len)
|
||||
{
|
||||
uint8_t buffer[2048];
|
||||
uint8_t buffer[4096];
|
||||
int rc;
|
||||
*((uint32_t *) buffer) = htonl(1 << 24);
|
||||
memcpy(buffer + 4, data, len);
|
||||
|
@ -38,7 +38,7 @@ struct dtls_openssl_data{
|
||||
SSL_CTX * ctx;
|
||||
SSL * ssl;
|
||||
BIO * bio;
|
||||
uint8_t buffer[2048];
|
||||
uint8_t buffer[4096];
|
||||
int len;
|
||||
int pos;
|
||||
};
|
||||
|
@ -147,6 +147,7 @@ extern const struct cw_Type cw_type_byte;
|
||||
extern const struct cw_Type cw_type_word;
|
||||
extern const struct cw_Type cw_type_dword;
|
||||
extern const struct cw_Type cw_type_bstr16;
|
||||
extern const struct cw_Type cw_type_bwstr;
|
||||
extern const struct cw_Type cw_type_str;
|
||||
extern const struct cw_Type cw_type_ipaddress;
|
||||
extern const struct cw_Type cw_type_sysptr;
|
||||
@ -156,6 +157,7 @@ extern const struct cw_Type cw_type_bool;
|
||||
#define CW_TYPE_WORD (&cw_type_word)
|
||||
#define CW_TYPE_DWORD (&cw_type_dword)
|
||||
#define CW_TYPE_BSTR16 (&cw_type_bstr16)
|
||||
#define CW_TYPE_BWSTR (&cw_type_bwstr)
|
||||
#define CW_TYPE_IPADDRESS (&cw_type_ipaddress)
|
||||
#define CW_TYPE_SYSPTR (&cw_type_sysptr)
|
||||
#define CW_TYPE_STR (&cw_type_str)
|
||||
|
@ -295,8 +295,6 @@ int cw_msgset_add(struct cw_MsgSet *set,
|
||||
/* add the message */
|
||||
search.type = msgdef->type;
|
||||
|
||||
printf("Msg type name %s\n",msgdef->name);
|
||||
|
||||
msg = mavl_insert(set->msgdata, &search, &exists);
|
||||
if (msg == NULL) {
|
||||
cw_log(LOG_ERR, "Can't create messae");
|
||||
|
@ -31,13 +31,18 @@ struct cw_ElemData{
|
||||
};
|
||||
|
||||
struct cw_ElemHandlerParams {
|
||||
struct conn * conn;
|
||||
/* struct conn * conn;*/
|
||||
struct cw_MsgData * msgdata;
|
||||
struct cw_ElemData * elemdata;
|
||||
struct sockaddr *from;
|
||||
mavl_t mand_found;
|
||||
cw_KTV_t * elem;
|
||||
char * debug_details;
|
||||
mavl_t remote_cfg;
|
||||
mavl_t local_cfg;
|
||||
mavl_t default_cfg;
|
||||
mavl_t global_cfg;
|
||||
struct cw_MsgSet * msgset;
|
||||
};
|
||||
|
||||
|
||||
|
@ -201,7 +201,7 @@ int netconn_send_capwap_msg(struct netconn * nc, uint8_t *rawmsg, int msglen)
|
||||
|
||||
/* int mtu = nc->mtu; */
|
||||
|
||||
int mtu = 1400;
|
||||
int mtu = 400;
|
||||
|
||||
while (msglen>mtu){
|
||||
cw_set_hdr_flags(rawmsg,CAPWAP_FLAG_HDR_F,1);
|
||||
|
@ -91,7 +91,7 @@ int conn_send_data_msg(struct conn * conn, uint8_t *rawmsg,int len)
|
||||
}
|
||||
|
||||
|
||||
#define MAX_MTU 1500
|
||||
#define MAX_MTU 9500
|
||||
int
|
||||
cw_send_msg( struct conn * conn, uint8_t *msg)
|
||||
{
|
||||
@ -155,7 +155,7 @@ cw_send_msg( struct conn * conn, uint8_t *msg)
|
||||
cw_set_dword(buf+4, conn->fragid<<16 | fragoffset<<3 );
|
||||
|
||||
|
||||
cw_dbg_pkt(DBG_PKT_OUT,conn,buf,packetlen,(struct sockaddr*)&conn->addr);
|
||||
cw_dbg_pkt(DBG_PKT_OUT,conn,buf,msglen+hlen,(struct sockaddr*)&conn->addr);
|
||||
|
||||
return conn->write(conn,buf,msglen + hlen);
|
||||
|
||||
|
Reference in New Issue
Block a user