cisco stuff
FossilOrigin-Name: 28919aeeb55dff78c49d2d6a1d41c4cee67a936d6e17abc352927c8911e368ea
This commit is contained in:
@ -58,6 +58,7 @@ CWSRC=\
|
||||
cw_in_check_join_req.c\
|
||||
cw_in_check_join_resp.c\
|
||||
cw_in_generic.c\
|
||||
cw_in_generic_with_index.c\
|
||||
cw_in_generic_struct.c\
|
||||
cw_in_radio_generic_struct.c\
|
||||
cw_in_idx_generic.c\
|
||||
@ -71,6 +72,7 @@ CWSRC=\
|
||||
cw_is_printable.c\
|
||||
cw_load_file.c\
|
||||
cw_out_generic.c\
|
||||
cw_out_generic_with_index.c\
|
||||
cw_out_radio_administrative_states.c\
|
||||
cw_process_element.c\
|
||||
cw_put_elem_radio_administrative_state.c\
|
||||
|
@ -198,14 +198,14 @@
|
||||
#define CAPWAP_ELEM_AC_IPV4_LIST 2 /**< AC IP V4 List */
|
||||
#define CAPWAP_ELEM_AC_IPV6_LIST 3 /**< AC IP V6 List */
|
||||
#define CAPWAP_ELEM_AC_NAME 4 /**< AC Name */
|
||||
#define CW_ELEM_AC_NAME_WITH_PRIORITY 5
|
||||
#define CAPWAP_ELEM_AC_NAME_WITH_PRIORITY 5 /**< AC Name with Priority */
|
||||
|
||||
/**
|
||||
* In CAPWAP RFC draft 7 the message element 5 was named
|
||||
* AC Name With Index. So we define it here with this name
|
||||
* to be compatible.
|
||||
* @see CW_ELEM_AC_NAME_WITH_PRIORITY */
|
||||
#define CW_ELEM_AC_NAME_WITH_INDEX CW_ELEM_AC_NAME_WITH_PRIORITY
|
||||
#define CW_ELEM_AC_NAME_WITH_INDEX CAPWAP_ELEM_AC_NAME_WITH_PRIORITY
|
||||
|
||||
#define CAPWAP_ELEM_AC_TIMESTAMP 6
|
||||
/**@{
|
||||
|
@ -7,7 +7,7 @@ struct cw_StrListElem capwap_strings_elem[] = {
|
||||
{CAPWAP_ELEM_AC_IPV4_LIST, "AC IPv4 List"},
|
||||
{CAPWAP_ELEM_AC_IPV6_LIST, "AC IPv6 List"},
|
||||
{CAPWAP_ELEM_AC_NAME, "AC Name"},
|
||||
{CW_ELEM_AC_NAME_WITH_PRIORITY, "AC Name with Priority"},
|
||||
{CAPWAP_ELEM_AC_NAME_WITH_PRIORITY, "AC Name with Priority"},
|
||||
/* {CW_ELEM_AC_NAME_WITH_INDEX, "AC Name with Index"}, */
|
||||
{CAPWAP_ELEM_AC_TIMESTAMP, "AC Timestamp"},
|
||||
{CW_ELEM_ADD_MAC_ACL_ENTRY, "Add MAC ACL Entry"},
|
||||
|
@ -390,6 +390,13 @@ int cw_setup_dtls(struct conn * conn, mavl_t cfg, const char *prefix, char * de
|
||||
|
||||
int cw_in_idx_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params,
|
||||
uint8_t * elem_data, int elem_len);
|
||||
|
||||
int cw_in_generic_with_index(struct cw_ElemHandler *eh,
|
||||
struct cw_ElemHandlerParams *params,
|
||||
uint8_t * data, int len);
|
||||
int cw_out_generic_with_index(struct cw_ElemHandler * eh,
|
||||
struct cw_ElemHandlerParams * params, uint8_t * dst);
|
||||
|
||||
int cw_in_idx_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params,
|
||||
uint8_t * elem_data, int elem_len);
|
||||
|
||||
|
@ -0,0 +1,14 @@
|
||||
#include "cw.h"
|
||||
|
||||
int cw_in_generic_with_index(struct cw_ElemHandler *eh,
|
||||
struct cw_ElemHandlerParams *params,
|
||||
uint8_t * data, int len)
|
||||
{
|
||||
char key[CW_KTV_MAX_KEY_LEN];
|
||||
int idx;
|
||||
|
||||
idx = cw_get_byte(data);
|
||||
sprintf(key,"%s.%d",eh->key,idx);
|
||||
cw_ktv_add(params->conn->remote_cfg,key,eh->type,data+1,len-1);
|
||||
return 1;
|
||||
}
|
||||
|
@ -0,0 +1,40 @@
|
||||
|
||||
#include "cw.h"
|
||||
|
||||
int cw_out_generic_with_index(struct cw_ElemHandler * eh,
|
||||
struct cw_ElemHandlerParams * params, uint8_t * dst)
|
||||
|
||||
{
|
||||
char key[CW_KTV_MAX_KEY_LEN];
|
||||
int idx;
|
||||
cw_KTV_t * result, search;
|
||||
int len,start;
|
||||
uint8_t * ob;
|
||||
|
||||
|
||||
idx = 0;
|
||||
ob = dst;
|
||||
|
||||
do {
|
||||
sprintf(key,"%s.%d",eh->key,idx);
|
||||
search.key=key;
|
||||
result = mavl_get_first(params->conn->local_cfg,&search);
|
||||
if (result==NULL)
|
||||
break;
|
||||
if (strncmp(result->key,key,strlen(key))!=0)
|
||||
break;
|
||||
|
||||
start = params->conn->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);
|
||||
|
||||
idx++;
|
||||
|
||||
}while(1);
|
||||
|
||||
return ob-dst;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user