Refactoring ...

FossilOrigin-Name: 0e582e687c5fe1fc78b2f5a0545c6be8633bbbe011d8ac04dae76866e3347c48
This commit is contained in:
7u83@mail.ru 2018-02-24 23:52:45 +00:00
parent 8ec78cea1b
commit 864da8a92f
4 changed files with 34 additions and 16 deletions

View File

@ -114,7 +114,11 @@ typedef struct {
int id; int id;
int min_len; int min_len;
int max_len; int max_len;
}cw_msgelemdef_t;
int (*start_in)(struct conn *conn,struct cw_action_in *a,uint8_t*data,int len,struct sockaddr *from);
int (*end_in)(struct conn *conn,struct cw_action_in *a,uint8_t*elem,int len,struct sockaddr *from);
}cw_elem_handler_t;
typedef struct { typedef struct {
mavl_t messages; mavl_t messages;
@ -122,8 +126,9 @@ typedef struct {
}cw_message_set_t; }cw_message_set_t;
typedef struct{ typedef struct{
cw_msgelemdef_t * elem; cw_elem_handler_t * elem;
int mand; int mand;
int op;
}cw_msgelemprops_t; }cw_msgelemprops_t;
typedef struct { typedef struct {
@ -467,6 +472,12 @@ struct cw_descriptor_subelem_def {
int mand; int mand;
}; };
#define CW_DELETE 1
#define CW_APPEND 2
#define CW_PREPEND 3
#define CW_REPLACE 4
extern int cw_read_descriptor_subelems(mbag_t store, uint8_t * data, int len, extern int cw_read_descriptor_subelems(mbag_t store, uint8_t * data, int len,
struct cw_descriptor_subelem_def *elems); struct cw_descriptor_subelem_def *elems);

View File

@ -14,8 +14,8 @@ typedef struct {
}message2_t; }message2_t;
static inline int cmp_cw_msgelemprops(const void *elem1, const void *elem2){ static inline int cmp_cw_msgelemprops(const void *elem1, const void *elem2){
cw_msgelemdef_t * e1 = ((cw_msgelemprops_t*)elem1)->elem; cw_elem_handler_t * e1 = ((cw_msgelemprops_t*)elem1)->elem;
cw_msgelemdef_t * e2 = ((cw_msgelemprops_t*)elem2)->elem; cw_elem_handler_t * e2 = ((cw_msgelemprops_t*)elem2)->elem;
int r; int r;
r = e1->id - e2->id; r = e1->id - e2->id;
if (r!=0) if (r!=0)
@ -141,9 +141,9 @@ void cw_message_set_add(cw_message_set_t * set,
} }
cw_msgelemdef_t * cw_message_set_find_element( cw_elem_handler_t * cw_message_set_find_element(
cw_message_set_t * set, cw_message_set_t * set,
cw_msgelemdef_t * element){ cw_elem_handler_t * element){
return mavl_find(set->all_elems,element); return mavl_find(set->all_elems,element);
} }

View File

@ -29,6 +29,13 @@ struct mlist_elem * mlist_append(mlist_t l, void *data)
return *n; return *n;
} }
struct mlist_elem * mlist_prepend(mlist_t l, void *data){
}
struct mlist_elem *mlist_find(mlist_t l, struct mlist_elem *start, void *data) struct mlist_elem *mlist_find(mlist_t l, struct mlist_elem *start, void *data)
{ {
struct mlist_elem *e; struct mlist_elem *e;

View File

@ -29,7 +29,7 @@
#include "mod_capwap.h" #include "mod_capwap.h"
static cw_msgelemdef_t _DISCOVERY_TYPE = { static cw_elem_handler_t _DISCOVERY_TYPE = {
.name = "Discovery Type", .name = "Discovery Type",
.id = CAPWAP_ELEM_DISCOVERY_TYPE, .id = CAPWAP_ELEM_DISCOVERY_TYPE,
//.start = cw_in_generic2, //.start = cw_in_generic2,
@ -37,21 +37,21 @@ static cw_msgelemdef_t _DISCOVERY_TYPE = {
.min_len = 1, .min_len = 1,
.max_len = 1 .max_len = 1
}; };
static cw_msgelemdef_t _WTP_BOARD_DATA = { static cw_elem_handler_t _WTP_BOARD_DATA = {
.name = "WTP Board Data", .name = "WTP Board Data",
.id = CAPWAP_ELEM_WTP_BOARD_DATA, .id = CAPWAP_ELEM_WTP_BOARD_DATA,
// .start = cw_in_wtp_board_data, // .start = cw_in_wtp_board_data,
// .item_id = CW_ITEM_WTP_BOARD_DATA, // .item_id = CW_ITEM_WTP_BOARD_DATA,
}; };
static cw_msgelemdef_t _WTP_DESCRIPTOR = { static cw_elem_handler_t _WTP_DESCRIPTOR = {
.id = CAPWAP_ELEM_WTP_DESCRIPTOR, .id = CAPWAP_ELEM_WTP_DESCRIPTOR,
.name = "WTP Descriptor", .name = "WTP Descriptor",
//.start = capwap_in_wtp_descriptor, //.start = capwap_in_wtp_descriptor,
//.item_id = "wtp_descriptor", //.item_id = "wtp_descriptor",
}; };
static cw_msgelemdef_t _WTP_FRAME_TUNNEL_MODE = { static cw_elem_handler_t _WTP_FRAME_TUNNEL_MODE = {
.id = CAPWAP_ELEM_WTP_FRAME_TUNNEL_MODE, .id = CAPWAP_ELEM_WTP_FRAME_TUNNEL_MODE,
.name = "WTP Frame Tunnel Mode", .name = "WTP Frame Tunnel Mode",
// .start = cw_in_generic2, // .start = cw_in_generic2,
@ -60,7 +60,7 @@ static cw_msgelemdef_t _WTP_FRAME_TUNNEL_MODE = {
.max_len = 1 .max_len = 1
}; };
static cw_msgelemdef_t _WTP_MAC_TYPE = { static cw_elem_handler_t _WTP_MAC_TYPE = {
.id = CAPWAP_ELEM_WTP_MAC_TYPE, .id = CAPWAP_ELEM_WTP_MAC_TYPE,
.name = "WTP Mac Type", .name = "WTP Mac Type",
// .start = cw_in_generic2, // .start = cw_in_generic2,
@ -70,13 +70,13 @@ static cw_msgelemdef_t _WTP_MAC_TYPE = {
}; };
/* MTU Discovery Padding */ /* MTU Discovery Padding */
static cw_msgelemdef_t _MTU_DISCOVERY_PADDING = { static cw_elem_handler_t _MTU_DISCOVERY_PADDING = {
.id = CW_ELEM_MTU_DISCOVERY_PADDING, .id = CW_ELEM_MTU_DISCOVERY_PADDING,
.name = "MTU Discovery Padding" .name = "MTU Discovery Padding"
// .start = cw_in_mtu_discovery_padding, // .start = cw_in_mtu_discovery_padding,
}; };
static cw_msgelemdef_t _VENDOR_SPECIFIC_PAYLOAD = { static cw_elem_handler_t _VENDOR_SPECIFIC_PAYLOAD = {
.name = "Vendor Specific Payload", .name = "Vendor Specific Payload",
.id = CAPWAP_ELEM_VENDOR_SPECIFIC_PAYLOAD, .id = CAPWAP_ELEM_VENDOR_SPECIFIC_PAYLOAD,
@ -84,8 +84,8 @@ static cw_msgelemdef_t _VENDOR_SPECIFIC_PAYLOAD = {
.min_len=7 .min_len=7
}; };
/* AC Descriptor - Discovery Response */ /* AC Descriptor - Discovery Response */
static cw_msgelemdef_t _AC_DESCRIPTOR = { static cw_elem_handler_t _AC_DESCRIPTOR = {
.name = "AC Descriptor", .name = "AC Descriptor",
.id = CAPWAP_ELEM_AC_DESCRIPTOR, .id = CAPWAP_ELEM_AC_DESCRIPTOR,
//.item_id = CW_ITEM_AC_DESCRIPTOR, //.item_id = CW_ITEM_AC_DESCRIPTOR,
@ -137,7 +137,7 @@ void test_sets(){
cw_message_set_add(set,messages); cw_message_set_add(set,messages);
cw_msgelemdef_t el; cw_elem_handler_t el;
memset(&el,0,sizeof(el)); memset(&el,0,sizeof(el));
el.id=CAPWAP_ELEM_DISCOVERY_TYPE; el.id=CAPWAP_ELEM_DISCOVERY_TYPE;