Work on idx out struct ...
FossilOrigin-Name: 08213179f58d212281597094d8c20229f7baebbc0e97a2fc991a8a1be9119682
This commit is contained in:
parent
95d8beb1f1
commit
5591784c8b
@ -4,8 +4,8 @@
|
|||||||
<Project Name="wtp" Path="wtp.project" Active="No"/>
|
<Project Name="wtp" Path="wtp.project" Active="No"/>
|
||||||
<Project Name="mod_cipwap" Path="mod_cipwap.project" Active="No"/>
|
<Project Name="mod_cipwap" Path="mod_cipwap.project" Active="No"/>
|
||||||
<Project Name="mod_capwap" Path="mod_capwap.project" Active="No"/>
|
<Project Name="mod_capwap" Path="mod_capwap.project" Active="No"/>
|
||||||
<Project Name="mod_cisco" Path="mod_cisco.project" Active="Yes"/>
|
<Project Name="mod_cisco" Path="mod_cisco.project" Active="No"/>
|
||||||
<Project Name="libcw" Path="libcw.project" Active="No"/>
|
<Project Name="libcw" Path="libcw.project" Active="Yes"/>
|
||||||
<Project Name="mod_capwap80211" Path="mod_capwap80211.project" Active="No"/>
|
<Project Name="mod_capwap80211" Path="mod_capwap80211.project" Active="No"/>
|
||||||
<Project Name="mod_fortinet" Path="mod_fortinet.project" Active="No"/>
|
<Project Name="mod_fortinet" Path="mod_fortinet.project" Active="No"/>
|
||||||
<BuildMatrix>
|
<BuildMatrix>
|
||||||
|
@ -284,6 +284,9 @@
|
|||||||
<File Name="src/cw/cw_in_generic_enum.c"/>
|
<File Name="src/cw/cw_in_generic_enum.c"/>
|
||||||
<File Name="src/cw/cw_in_radio_generic_struct.c"/>
|
<File Name="src/cw/cw_in_radio_generic_struct.c"/>
|
||||||
<File Name="src/cw/cw_write_header.c"/>
|
<File Name="src/cw/cw_write_header.c"/>
|
||||||
|
<File Name="src/cw/cw_in_idx_generic.c"/>
|
||||||
|
<File Name="src/cw/cw_in_idx_generic_struct.c"/>
|
||||||
|
<File Name="src/cw/cw_out_idx_generic_struct.c"/>
|
||||||
</VirtualDirectory>
|
</VirtualDirectory>
|
||||||
</VirtualDirectory>
|
</VirtualDirectory>
|
||||||
<Description/>
|
<Description/>
|
||||||
|
@ -60,8 +60,11 @@ CWSRC=\
|
|||||||
cw_in_generic.c\
|
cw_in_generic.c\
|
||||||
cw_in_generic_struct.c\
|
cw_in_generic_struct.c\
|
||||||
cw_in_radio_generic_struct.c\
|
cw_in_radio_generic_struct.c\
|
||||||
|
cw_in_idx_generic.c\
|
||||||
|
cw_in_idx_generic_struct.c\
|
||||||
cw_in_generic_enum.c\
|
cw_in_generic_enum.c\
|
||||||
cw_out_generic_struct.c\
|
cw_out_generic_struct.c\
|
||||||
|
cw_out_idx_generic_struct.c\
|
||||||
cw_init_data_keep_alive_msg.c\
|
cw_init_data_keep_alive_msg.c\
|
||||||
cw_inline.c\
|
cw_inline.c\
|
||||||
cw_in_wtp_reboot_statistics.c\
|
cw_in_wtp_reboot_statistics.c\
|
||||||
|
13
src/cw/cw.h
13
src/cw/cw.h
@ -386,10 +386,15 @@ int cw_setup_dtls(struct conn * conn, mavl_t cfg, const char *prefix, char * de
|
|||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
int cw_in_generic(struct conn * conn, struct cw_ElemHandler * handler,
|
|
||||||
uint8_t * elem_data, int elem_len, struct sockaddr * from);
|
int cw_in_idx_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params,
|
||||||
*/
|
uint8_t * elem_data, int elem_len);
|
||||||
|
int cw_in_idx_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params,
|
||||||
|
uint8_t * elem_data, int elem_len);
|
||||||
|
|
||||||
|
int cw_out_idx_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params
|
||||||
|
, uint8_t * dst);
|
||||||
|
|
||||||
int cw_in_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params,
|
int cw_in_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params,
|
||||||
uint8_t * elem_data, int elem_len);
|
uint8_t * elem_data, int elem_len);
|
||||||
|
25
src/cw/cw_in_idx_generic.c
Normal file
25
src/cw/cw_in_idx_generic.c
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#include "cw.h"
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
|
int cw_in_idx_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params,
|
||||||
|
uint8_t * elem_data, int elem_len)
|
||||||
|
{
|
||||||
|
char key[CW_KTV_MAX_KEY_LEN];
|
||||||
|
cw_KTV_t * result;
|
||||||
|
int idx;
|
||||||
|
|
||||||
|
if (!handler->type){
|
||||||
|
cw_log(LOG_ERR,"Can't handle element: %s, no type defined",handler->name);
|
||||||
|
return CAPWAP_RESULT_UNRECOGNIZED_MESSAGE_ELEMENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
idx=cw_get_byte(elem_data);
|
||||||
|
sprintf(key,handler->key,idx);
|
||||||
|
|
||||||
|
result = cw_ktv_add(params->conn->remote_cfg, key,
|
||||||
|
handler->type, elem_data+1,elem_len-1);
|
||||||
|
|
||||||
|
params->elem=result;
|
||||||
|
|
||||||
|
return CAPWAP_RESULT_SUCCESS;
|
||||||
|
}
|
25
src/cw/cw_in_idx_generic_struct.c
Normal file
25
src/cw/cw_in_idx_generic_struct.c
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
#include "capwap.h"
|
||||||
|
#include "msgset.h"
|
||||||
|
#include "ktv.h"
|
||||||
|
#include "log.h"
|
||||||
|
#include "cw.h"
|
||||||
|
|
||||||
|
int cw_in_idx_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params,
|
||||||
|
uint8_t * elem_data, int elem_len)
|
||||||
|
{
|
||||||
|
char key[CW_KTV_MAX_KEY_LEN];
|
||||||
|
int idx;
|
||||||
|
|
||||||
|
if (!handler->type){
|
||||||
|
cw_log(LOG_ERR,"Can't handle element: %s, no type defined",handler->name);
|
||||||
|
return CAPWAP_RESULT_UNRECOGNIZED_MESSAGE_ELEMENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
return CAPWAP_RESULT_SUCCESS;
|
||||||
|
}
|
51
src/cw/cw_out_idx_generic_struct.c
Normal file
51
src/cw/cw_out_idx_generic_struct.c
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
#include "cw.h"
|
||||||
|
#include "dbg.h"
|
||||||
|
|
||||||
|
int cw_out_idx_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params
|
||||||
|
, uint8_t * dst)
|
||||||
|
{
|
||||||
|
char key[CW_KTV_MAX_KEY_LEN];
|
||||||
|
struct cw_KTV * elem, search;
|
||||||
|
|
||||||
|
int len,i,l;
|
||||||
|
int radios;
|
||||||
|
int fint, sr;
|
||||||
|
|
||||||
|
len =0;
|
||||||
|
|
||||||
|
i=0;
|
||||||
|
|
||||||
|
|
||||||
|
do {
|
||||||
|
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);
|
||||||
|
if(elem != NULL){
|
||||||
|
printf("Elem key: %s",elem->key);
|
||||||
|
}
|
||||||
|
sr = sscanf(elem->key,handler->key,&fint);
|
||||||
|
|
||||||
|
if (sr!=1)
|
||||||
|
break;
|
||||||
|
if (fint<=i)
|
||||||
|
break;
|
||||||
|
|
||||||
|
printf("Here we are '%s'! --> %d\n",key,fint);
|
||||||
|
i=fint+1;
|
||||||
|
|
||||||
|
}while(1);
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
|
||||||
|
radios = cw_ktv_get_byte(params->conn->local_cfg,"wtp-descriptor/max-radios",0);
|
||||||
|
|
||||||
|
for(i=1;i<radios+1;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);
|
||||||
|
len+=l;
|
||||||
|
}
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
@ -500,9 +500,9 @@ static struct cw_ElemHandler handlers[] = {
|
|||||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||||
5,5, /* min/max length */
|
5,5, /* min/max length */
|
||||||
cisco_ap_regulatory_domain, /* type */
|
cisco_ap_regulatory_domain, /* type */
|
||||||
"cisco/regulatory-domain", /* Key */
|
"cisco/regulatory-domain/%03d", /* Key */
|
||||||
cw_in_radio_generic_struct, /* get */
|
cw_in_idx_generic_struct, /* get */
|
||||||
NULL /* put */
|
cw_out_idx_generic_struct /* put */
|
||||||
},
|
},
|
||||||
|
|
||||||
{0,0,0,0,0,0,0,0}
|
{0,0,0,0,0,0,0,0}
|
||||||
|
@ -205,6 +205,7 @@ int join(struct conn * conn, struct cw_DiscoveryResult * dis)
|
|||||||
mavliter_init(&ii,dis->prio_ip);
|
mavliter_init(&ii,dis->prio_ip);
|
||||||
|
|
||||||
mavliter_foreach(&ii){
|
mavliter_foreach(&ii){
|
||||||
|
int rc;
|
||||||
cw_KTV_t * val,*ac;
|
cw_KTV_t * val,*ac;
|
||||||
mavl_t rcfg;
|
mavl_t rcfg;
|
||||||
char * rk;
|
char * rk;
|
||||||
@ -234,7 +235,9 @@ int join(struct conn * conn, struct cw_DiscoveryResult * dis)
|
|||||||
|
|
||||||
sock_strtoaddr(ipstr,(struct sockaddr*)(&sockaddr));
|
sock_strtoaddr(ipstr,(struct sockaddr*)(&sockaddr));
|
||||||
sock_setport((struct sockaddr*)&sockaddr,5246);
|
sock_setport((struct sockaddr*)&sockaddr,5246);
|
||||||
run_join_d(conn,(struct sockaddr*)(&sockaddr));
|
rc = run_join_d(conn,(struct sockaddr*)(&sockaddr));
|
||||||
|
if (rc)
|
||||||
|
return 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user