More work on data packets

FossilOrigin-Name: bbc6d184bd9c0a39fbcd90c30acea864ee63114bed3392fc827138e04ad2fd4c
This commit is contained in:
7u83@mail.ru
2018-05-10 20:40:51 +00:00
parent 1a32efd570
commit 127bad2fb5
8 changed files with 45 additions and 10 deletions

View File

@ -105,14 +105,15 @@ int dataman_process_keep_alive(struct netconn *nc, uint8_t *rawmsg, int len)
cw_foreach_elem(elem, elems_ptr, elems_len) {
if (cw_get_elem_id(elem) == CAPWAP_ELEM_SESSION_ID){
uint8_t sessid[16];
uint8_t sessid[64];
memset(sessid,0,16);
int sessid_len = cw_get_elem_len(elem);
printf("Sess id len = %d\n",sessid_len);
memcpy(sessid,cw_get_elem_data(elem),sessid_len);
((uint16_t*)sessid)[0]=sessid_len;
memcpy(bstr16_data(sessid),cw_get_elem_data(elem),sessid_len);
struct wtpman * wtpman = wtplist_get_by_session_id(sessid);
if (wtpman){
@ -123,7 +124,7 @@ int dataman_process_keep_alive(struct netconn *nc, uint8_t *rawmsg, int len)
uint8_t * dl = cw_init_data_keep_alive_msg(buffer,NULL);
uint8_t * d=dl+2;
int l = cw_put_elem_session_id(d,sessid,sessid_len);
int l = cw_put_elem_session_id(d,bstr16_data(sessid),sessid_len);
cw_put_word(dl,l);
int total_len = dl-buffer + l+2;

View File

@ -16,6 +16,10 @@
#include "wtplist.h"
void show_cfg (FILE *out, mavl_t ktv)
{
char value[500];

View File

@ -78,14 +78,17 @@ struct wtpman * wtplist_get(const struct sockaddr * addr)
}
struct wtpman * wtplist_get_by_session_id(uint8_t *session_id)
struct wtpman * wtplist_get_by_session_id(bstr16_t *session_id)
{
struct conn search;
struct conn * conn;
memcpy (search.session_id, session_id,16);
search.session_id = session_id;
/*memcpy (search.session_id, session_id,16);*/
conn = connlist_get_by_session_id(connlist,&search);
if (conn == NULL)
return NULL;
return conn->data;
}

View File

@ -13,7 +13,7 @@ extern struct wtpman * wtplist_add(struct wtpman * wtpman);
extern void wtplist_remove(struct wtpman * wtpman);
extern void wtplist_lock();
extern void wtplist_unlock();
extern struct wtpman * wtplist_get_by_session_id(uint8_t *session_id);
extern struct wtpman * wtplist_get_by_session_id(bstr16_t *session_id);
struct connlist * wtplist_get_connlist(void);
#endif