more progress in new ktv storage

FossilOrigin-Name: a2c26a366de1946feb707439302b22de2e3d02f7621d0834fdf242852b28639c
This commit is contained in:
7u83@mail.ru
2018-03-15 19:07:17 +00:00
parent 8b2e36e912
commit 15cca4e553
40 changed files with 411 additions and 310 deletions

View File

@ -132,7 +132,7 @@ int capwap_in_wtp_board_data(struct cw_ElemHandler *eh, struct cw_ElemHandlerPar
mavl_t cfg = params->conn->remote_cfg;
sprintf(vendor_key,"%s/%s",eh->key,CW_KEY_VENDOR);
sprintf(vendor_key,"%s/%s",eh->key,CW_SKEY_VENDOR);
cw_ktv_add(cfg,vendor_key,CW_TYPE_DWORD,data,len);

View File

@ -15,8 +15,12 @@ int cisco_in_wtp_descriptor(struct cw_ElemHandler *eh, struct cw_ElemHandlerPara
extern int cisco_out_ac_descriptor(struct conn *conn, struct cw_action_out *a,
uint8_t * dst);
extern int cisco_out_wtp_descriptor(struct conn *conn, struct cw_action_out *a,
uint8_t * dst);
int cisco_out_wtp_descriptor(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params
, uint8_t * dst);
extern int cisco_out_board_data_options(struct conn *conn, struct cw_action_out *a,
uint8_t * dst);

View File

@ -43,7 +43,7 @@
#include "cw/msgset.h"
#include "cw/ktv.h"
#include "cw/keys.h"
static struct cw_ElemHandler handlers[] = {
{
@ -52,8 +52,9 @@ static struct cw_ElemHandler handlers[] = {
0,0, /* Vendor / Proto */
4,128, /* min/max length */
NULL, /* type */
"wtp_descriptor", /* Key */
cisco_in_wtp_descriptor /* get */
CW_KEY_WTP_DESCRIPTOR, /* Key */
cisco_in_wtp_descriptor, /* get */
cisco_out_wtp_descriptor /* put */
}
,
{
@ -62,8 +63,9 @@ static struct cw_ElemHandler handlers[] = {
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
1,512, /* min/max length */
CW_TYPE_BSTR16, /* type */
"wtp_name", /* Key */
cw_in_generic /* handler */
CW_KEY_WTP_NAME, /* Key */
cw_in_generic, /* get */
cw_out_generic /* put */
}
,
@ -71,10 +73,11 @@ static struct cw_ElemHandler handlers[] = {
"Board Data Options", /* name */
CW_CISCO_BOARD_DATA_OPTIONS, /* Element ID */
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
2,2, /* min/max length */
4,4, /* min/max length */
CW_TYPE_DWORD, /* type */
"cisco_board_data_options", /* Key */
cw_in_generic /* handler */
"cisco/board-data-options", /* Key */
cw_in_generic, /* handler */
cw_out_generic /* put */
}
,
{0,0,0,0,0,0,0,0}

View File

@ -27,10 +27,10 @@ int cisco_in_wtp_descriptor(struct cw_ElemHandler *eh, struct cw_ElemHandlerPara
{
static struct cw_DescriptorSubelemDef allowed[] = {
{CW_VENDOR_ID_CISCO,CW_SUBELEM_WTP_HARDWARE_VERSION, CW_KEY_HARDWARE, 1024,0},
{CW_VENDOR_ID_CISCO,CW_SUBELEM_WTP_SOFTWARE_VERSION, CW_KEY_SOFTWARE, 1024.0},
{CW_VENDOR_ID_CISCO,CW_SUBELEM_WTP_BOOTLOADER_VERSION, CW_KEY_BOOTLOADER, 1024.0},
{CW_VENDOR_ID_CISCO,CW_SUBELEM_WTP_OTHERSOFTWARE_VERSION, CW_KEY_OTHER_SOFTWARE, 1024.0},
{CW_VENDOR_ID_CISCO,CW_SUBELEM_WTP_HARDWARE_VERSION, CW_SKEY_HARDWARE, 1024,0},
{CW_VENDOR_ID_CISCO,CW_SUBELEM_WTP_SOFTWARE_VERSION, CW_SKEY_SOFTWARE, 1024.0},
{CW_VENDOR_ID_CISCO,CW_SUBELEM_WTP_BOOTLOADER_VERSION, CW_SKEY_BOOTLOADER, 1024.0},
{CW_VENDOR_ID_CISCO,CW_SUBELEM_WTP_OTHERSOFTWARE_VERSION, CW_SKEY_OTHER_SOFTWARE, 1024.0},
{0,0, NULL, 0,0}
};

View File

@ -5,29 +5,86 @@
#include "cisco.h"
#include "cw/ktv.h"
#include "cw/keys.h"
#include "cw/dbg.h"
//#extern mbag_t cisco_config_wtp;
int cisco_out_wtp_descriptor(struct conn *conn, struct cw_action_out *a, uint8_t * dst)
int cisco_out_wtp_descriptor(struct cw_ElemHandler * eh, struct cw_ElemHandlerParams * params
, uint8_t * dst)
{
// mbag_t mbag = cisco_config_wtp;
mbag_t mbag = NULL;
// XXX Dummy WTP Descriptor Header
uint8_t *d = dst+4;
char key[256];
int len;
/* // XXX Dummy WTP Descriptor Header */
uint8_t *d;
cw_KTV_t * val;
d = dst+4;
/*cw_ktv_init_byte(&val,8);*/
sprintf(key,"%s/%s",eh->key,CW_SKEY_MAX_RADIOS);
val = cw_ktv_get(params->conn->local_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);
d+=cw_put_byte(d,0);
}
sprintf(key,"%s/%s",eh->key,CW_SKEY_RADIOS_IN_USE);
val = cw_ktv_get(params->conn->local_cfg,key, CW_TYPE_BYTE);
if (val != NULL){
d+=val->type->put(val,d);
}
else{
d+=cw_put_byte(d,0); /*radios in use*/
}
//int n =conn->radios->count;
//printf("radio count %d\n",n);
/*len = handler->type->put(elem,dst+start);*/
d+=cw_put_byte(d,conn->radios->count); //max radios
d+=cw_put_byte(d,2); //radios in use
d+=cw_put_encryption_capabilities_7(d,1);
mbag_item_t * i;
/* d += cw_put_dword(d, bstrv_get_vendor_id(v));
d += cw_put_dword(d, (subelem_id << 16) | bstrv_len(v));
d += cw_put_data(d, bstrv_data(v), bstrv_len(v));
*/
/* sprintf(key,"%s/%s/%s",eh->key,CW_SKEY_HARDWARE,CW_SKEY_VENDOR);
vendor = cw_ktv_get(params->conn->local_cfg,key,CW_TYPE_DWORD);
sprintf(key,"%s/%s/%s",eh->key,CW_SKEY_HARDWARE,CW_SKEY_VENDOR);
version = cw_ktv_get(params->conn->local_cfg,key,CW_TYPE_BSTR16);
if (vendor == NULL){
cw_log(LOG_ERR, "Can't send %s, not found.", key);
}
*/
/* hardware version sub element */
sprintf(key,"%s/%s",eh->key,CW_SKEY_HARDWARE);
d+=cw_write_descriptor_subelem (d, params->conn->local_cfg,
CW_SUBELEM_WTP_HARDWARE_VERSION, key);
/* software version sub element */
sprintf(key,"%s/%s",eh->key,CW_SKEY_SOFTWARE);
d+=cw_write_descriptor_subelem (d, params->conn->local_cfg,
CW_SUBELEM_WTP_SOFTWARE_VERSION, key);
/* bootloader version sub element */
sprintf(key,"%s/%s",eh->key,CW_SKEY_BOOTLOADER);
d+=cw_write_descriptor_subelem (d, params->conn->local_cfg,
CW_SUBELEM_WTP_BOOTLOADER_VERSION, key);
/* mbag_item_t * i;
i = mbag_get(mbag,CW_ITEM_WTP_HARDWARE_VERSION);
*/
/* if ( i ) {
d += cw_put_version(d,CW_SUBELEM_WTP_HARDWARE_VERSION,i->u2.data);
}
@ -36,7 +93,7 @@ mbag_t mbag = NULL;
}
*/
i = mbag_get(mbag,CW_ITEM_WTP_SOFTWARE_VERSION);
/*i = mbag_get(mbag,CW_ITEM_WTP_SOFTWARE_VERSION);*/
/*
if ( i ) {
d += cw_put_version(d,CW_SUBELEM_WTP_SOFTWARE_VERSION,i->u2.data);
@ -54,6 +111,6 @@ mbag_t mbag = NULL;
}
*/
int len = d-dst-4;
return len + cw_put_elem_hdr(dst,a->elem_id,len);
len = d-dst-4;
return len + cw_put_elem_hdr(dst,eh->id,len);
}