From d2d1be334665a433f895bc953c91772ea8280ce9 Mon Sep 17 00:00:00 2001
From: "7u83@mail.ru" <7u83@mail.ru@noemail.net>
Date: Sat, 3 Mar 2018 16:42:28 +0000
Subject: [PATCH] changes for actubent - not compiling!
FossilOrigin-Name: adf99bdc2ee784a4acf4066b90c33fb1e6124e8c49c255d3fd5011bb33852d52
---
actube.workspace | 4 +-
libcw.project | 5 +
src/ac/ac_main.c | 27 ++-
src/ac/db.c | 1 +
src/ac/wtpman.c | 4 +-
src/cw/action.c | 2 +-
src/cw/action.h | 2 +-
src/cw/capwap.h | 2 +-
src/cw/capwap80211_items.c | 1 +
src/cw/capwap80211_type_rateset.c | 10 +-
src/cw/capwap_action_helpers.c | 1 +
src/cw/capwap_inline.c | 1 +
src/cw/capwap_items.c | 1 +
src/cw/capwap_msg_new.c | 1 +
src/cw/capwap_strings_board.c | 1 +
src/cw/capwap_strings_elem.c | 1 +
src/cw/capwap_strings_elem80211.c | 1 +
src/cw/capwap_strings_msg.c | 2 +-
src/cw/capwap_strings_result.c | 1 +
src/cw/capwap_strings_state.c | 1 +
src/cw/capwap_strings_vendor.c | 1 +
src/cw/cipwap_strings_elem.c | 1 +
src/cw/cisco.c | 6 +-
src/cw/conn.h | 7 +-
src/cw/conn_clear_upd.c | 6 +-
src/cw/conn_create.c | 3 +-
src/cw/conn_create_noq.c | 1 +
src/cw/conn_destroy.c | 1 +
src/cw/conn_init.c | 1 +
src/cw/conn_prepare_image_data_request.c | 1 +
src/cw/conn_q_add_packet.c | 1 +
src/cw/conn_q_get_packet.c | 2 +-
src/cw/conn_q_recv_packet.c | 2 +-
src/cw/conn_recv_packet.c | 1 +
src/cw/conn_send_data_packet.c | 2 +
src/cw/conn_send_packet.c | 1 +
src/cw/connlist.c | 1 +
src/cw/cw_addelem_capwap_local_ip_addr.c | 1 +
src/cw/cw_in_ac_name_with_priority.c | 1 +
src/cw/cw_in_capwap_control_ip_address.c | 1 +
src/cw/cw_in_check_cfg_update_req.c | 1 +
src/cw/cw_in_check_chng_state_evnt_req.c | 1 +
src/cw/cw_in_check_cipwap_join_req.c | 2 +-
src/cw/cw_in_check_disc_resp.c | 1 +
src/cw/cw_in_check_generic_resp.c | 6 +-
src/cw/cw_in_check_img_data_req_ac.c | 7 +-
src/cw/cw_in_check_img_data_req_wtp.c | 6 +-
src/cw/cw_in_check_img_data_resp.c | 3 +-
src/cw/cw_in_check_join_resp.c | 6 +-
src/cw/cw_in_cisco_image_identifier.c | 2 +-
src/cw/cw_in_generic.c | 1 +
src/cw/cw_in_generic2.c | 2 +-
src/cw/cw_in_radio_administrative_state.c | 1 +
src/cw/cw_in_radio_administrative_state_wtp.c | 1 +
src/cw/cw_in_radio_generic.c | 2 +-
src/cw/cw_out_80211_supported_rates.c | 2 +-
src/cw/cw_out_image_data.c | 2 +-
src/cw/cw_out_radio_administrative_states.c | 2 +-
src/cw/cw_out_radio_generic.c | 10 +-
src/cw/cw_out_radio_info.c | 2 +-
src/cw/cw_out_wtp_board_data.c | 29 +--
src/cw/cw_out_wtp_descriptor.c | 11 +-
src/cw/cw_out_wtp_reboot_statistics.c | 3 +-
src/cw/cw_put_local_ip_address.c | 1 +
src/cw/cw_put_mbag_item.c | 20 +-
src/cw/cw_put_radio_operational_states.c | 8 +-
src/cw/cwmsg_addelem_mtu_discovery_padding.c | 1 +
src/cw/dbg.c | 25 ++-
src/cw/dbg.h | 80 +-------
src/cw/dbg_strings.c | 1 +
src/cw/dtls_bio.c | 2 +-
src/cw/dtls_gnutls.c | 1 +
src/cw/dtls_gnutls_accept.c | 1 +
src/cw/dtls_gnutls_bio.c | 2 +-
src/cw/dtls_gnutls_connect.c | 1 +
src/cw/dtls_gnutls_get_cipher.c | 1 +
src/cw/dtls_gnutls_get_peers_cert.c | 1 +
src/cw/dtls_openssl.c | 1 +
src/cw/dtls_openssl_accept.c | 1 +
src/cw/dtls_openssl_bio.c | 2 +
src/cw/dtls_openssl_connect.c | 1 +
src/cw/dtls_openssl_get_cipher.c | 1 +
src/cw/item.c | 2 +-
src/cw/item.h | 2 +-
src/cw/log.h | 11 +-
src/cw/lw_addelem.c | 1 +
src/cw/lw_checksum.c | 1 +
src/cw/lw_inline.c | 1 +
src/cw/lw_put_ac_descriptor.c | 1 +
src/cw/lw_put_cisco_path_mtu.c | 2 +-
src/cw/lw_put_image_data.c | 1 +
src/cw/lw_put_sockaddr.c | 2 +
src/cw/lw_readelem_wtp_name.c | 2 +-
src/cw/mavl.h | 53 +++--
src/cw/mavl_add.c | 32 +--
src/cw/mavl_cmp_dword.c | 5 +
src/cw/mavl_create.c | 4 +-
src/cw/mavl_del.c | 28 ++-
src/cw/mavl_foreach.c | 2 +-
src/cw/mavl_foreach_lr.c | 2 +-
src/cw/mavl_get.c | 6 +-
src/cw/mavl_get_node.c | 4 +-
src/cw/mavl_get_ptr.c | 11 ++
src/cw/mavl_merge.c | 7 +-
src/cw/mavl_replace.c | 7 +-
src/cw/mavliter_get.c | 4 +-
src/cw/mavliter_next.c | 7 +-
src/cw/mavliter_seek.c | 8 +-
src/cw/mavliter_seek_set.c | 2 +-
src/cw/mbag.c | 90 ++++-----
src/cw/mbag.h | 4 +-
src/cw/mbag_set_from_buf.c | 2 +-
src/cw/mbag_type_bstr16.c | 14 +-
src/cw/mbag_type_byte.c | 8 +-
src/cw/mbag_type_data.c | 10 +-
src/cw/mbag_type_dword.c | 8 +-
src/cw/mbag_type_str.c | 4 +-
src/cw/mbag_type_vendorstr.c | 14 +-
src/cw/mbag_type_word.c | 8 +-
src/cw/message_set.c | 186 ++++++++++++++----
src/cw/message_set.h | 13 +-
src/cw/mod.c | 1 +
src/cw/mod.h | 4 +-
src/cw/netconn.c | 1 +
src/cw/radio.c | 2 +-
src/cw/send.c | 1 +
src/mod/capwap/capwap_actions_ac.c | 13 +-
src/mod/capwap/capwap_in_session_id.c | 1 +
src/mod/capwap/capwap_out_ac_descriptor.c | 7 +-
src/mod/capwap/capwap_out_ac_ip_list.c | 1 +
src/mod/capwap/capwap_out_get_idle_timeout.c | 1 +
src/mod/capwap/capwap_out_get_session_id.c | 2 +-
src/mod/capwap/capwap_out_wtp_descriptor.c | 13 +-
src/mod/capwap/mod_capwap_ac.c | 2 +-
src/mod/capwap/mod_capwap_wtp.c | 2 +-
src/mod/cisco/cisco_actions_ac.c | 4 +-
136 files changed, 585 insertions(+), 403 deletions(-)
create mode 100644 src/cw/mavl_cmp_dword.c
create mode 100644 src/cw/mavl_get_ptr.c
diff --git a/actube.workspace b/actube.workspace
index e0162c79..c63c2d68 100644
--- a/actube.workspace
+++ b/actube.workspace
@@ -4,8 +4,8 @@
-
-
+
+
diff --git a/libcw.project b/libcw.project
index 33bb2126..4a32a17b 100644
--- a/libcw.project
+++ b/libcw.project
@@ -314,6 +314,11 @@
+
+
+
+
+
diff --git a/src/ac/ac_main.c b/src/ac/ac_main.c
index 2b8e2c5f..78dbfa9f 100644
--- a/src/ac/ac_main.c
+++ b/src/ac/ac_main.c
@@ -98,7 +98,32 @@ extern void test_sets();
int main(int argc, char *argv[])
{
-
+/* char data[100];
+ mavl_t im;
+ mavldata_t val,itt;
+ mavliter_t myit;
+
+ im = mavl_create(mavl_cmp_dword,NULL);
+
+ for (itt.dword=100; itt.dword>0; itt.dword--){
+ printf("Copunting: %d\n",itt.dword);
+ mavl_add(im,&itt);
+ }
+
+ mavliter_init(&myit,im);
+ mavliter_foreach(&myit){
+ union mavldata * result;
+ result = mavliter_get(&myit);
+ printf("Got Value %d\n",result->dword);
+ }
+
+ mavl_destroy(im);
+*/
+
+
+
+
+
int rc = 0;
/* parse arguments */
diff --git a/src/ac/db.c b/src/ac/db.c
index 9ab4f9bf..bea8addf 100644
--- a/src/ac/db.c
+++ b/src/ac/db.c
@@ -1,6 +1,7 @@
#include
+#include "cw/mbag.h"
#include "cw/log.h"
#include "cw/dbg.h"
#include "cw/capwap_items.h"
diff --git a/src/ac/wtpman.c b/src/ac/wtpman.c
index 44f3b0e5..a0a9c383 100644
--- a/src/ac/wtpman.c
+++ b/src/ac/wtpman.c
@@ -428,9 +428,9 @@ void radios_to_sql(struct conn *conn)
MAVLITER_DEFINE(it, conn->radios);
mavliter_foreach(&it) {
struct mbag_item * i = mavliter_get(&it);
- int rid = i->iid;
+ int rid = i->u1.iid;
- radio_to_sql(conn,wtp_id,rid,i->data);
+ radio_to_sql(conn,wtp_id,rid,i->u2.data);
}
diff --git a/src/cw/action.c b/src/cw/action.c
index 100b7563..0874e004 100644
--- a/src/cw/action.c
+++ b/src/cw/action.c
@@ -21,7 +21,7 @@
* @brief Implementation of methods for actionlists.
*/
-
+#include "mbag.h"
#include
#include
diff --git a/src/cw/action.h b/src/cw/action.h
index c6613084..dac0d00f 100644
--- a/src/cw/action.h
+++ b/src/cw/action.h
@@ -29,7 +29,7 @@
#include "mavl.h"
#include "conn.h"
-#include "mbag.h"
+/*#include "mbag.h"*/
#include "strheap.h"
#include "intavltree.h"
#include "item.h"
diff --git a/src/cw/capwap.h b/src/cw/capwap.h
index 5cf24f5f..f063d8a7 100644
--- a/src/cw/capwap.h
+++ b/src/cw/capwap.h
@@ -27,7 +27,7 @@
#include
-
+#include "mbag.h"
#include
#include
diff --git a/src/cw/capwap80211_items.c b/src/cw/capwap80211_items.c
index 183e331b..54c39a84 100644
--- a/src/cw/capwap80211_items.c
+++ b/src/cw/capwap80211_items.c
@@ -1,3 +1,4 @@
+#include "mbag.h"
#include "item.h"
#include "capwap80211_items.h"
#include "capwap80211_types.h"
diff --git a/src/cw/capwap80211_type_rateset.c b/src/cw/capwap80211_type_rateset.c
index bd4874be..f04d881a 100644
--- a/src/cw/capwap80211_type_rateset.c
+++ b/src/cw/capwap80211_type_rateset.c
@@ -11,7 +11,7 @@ static int to_str(void *item,char *dst)
{
mbag_item_t *it= item;
- uint8_t *data = (uint8_t*)it->data;
+ uint8_t *data = (uint8_t*)it->u2.data;
int n=*data;
data++;
@@ -83,7 +83,7 @@ static struct mbag_item * from_str(const char *src)
*data=nrates;
memcpy(data+1,rates,nrates);
- item->data=data;
+ item->u2.data=data;
return item;
@@ -103,14 +103,14 @@ static struct mbag_item * get(const uint8_t *src,int len)
}
*data=len;
memcpy(data+1,src,len);
- item->data=data;
+ item->u2.data=data;
return item;
}
static int put(struct mbag_item *i,uint8_t *dst)
{
- int l=*((uint8_t*)(i->data));
- memcpy(dst,i->data+1,l);
+ int l=*((uint8_t*)(i->u2.data));
+ memcpy(dst,i->u2.data+1,l);
return l;
}
diff --git a/src/cw/capwap_action_helpers.c b/src/cw/capwap_action_helpers.c
index 4cfea1c9..e55969fc 100644
--- a/src/cw/capwap_action_helpers.c
+++ b/src/cw/capwap_action_helpers.c
@@ -1,4 +1,5 @@
+#include "mbag.h"
#include "action.h"
#include "capwap.h"
diff --git a/src/cw/capwap_inline.c b/src/cw/capwap_inline.c
index a9f0bb8e..6b0a6ae1 100644
--- a/src/cw/capwap_inline.c
+++ b/src/cw/capwap_inline.c
@@ -1,3 +1,4 @@
+#include "mbag.h"
#include "capwap.h"
diff --git a/src/cw/capwap_items.c b/src/cw/capwap_items.c
index 06404c5f..7ff97e12 100644
--- a/src/cw/capwap_items.c
+++ b/src/cw/capwap_items.c
@@ -1,3 +1,4 @@
+#include "mbag.h"
#include "item.h"
#include "capwap_items.h"
diff --git a/src/cw/capwap_msg_new.c b/src/cw/capwap_msg_new.c
index ab8ffe57..91dedcbc 100644
--- a/src/cw/capwap_msg_new.c
+++ b/src/cw/capwap_msg_new.c
@@ -16,6 +16,7 @@
*/
+#include "mbag.h"
#include "capwap.h"
struct capwap_msg * capwap_msg_new()
diff --git a/src/cw/capwap_strings_board.c b/src/cw/capwap_strings_board.c
index 3d54728e..4d14b556 100644
--- a/src/cw/capwap_strings_board.c
+++ b/src/cw/capwap_strings_board.c
@@ -1,3 +1,4 @@
+#include "mbag.h"
#include "capwap.h"
struct cw_strlist_elem capwap_strings_board[] = {
diff --git a/src/cw/capwap_strings_elem.c b/src/cw/capwap_strings_elem.c
index 1525585a..bc679a65 100644
--- a/src/cw/capwap_strings_elem.c
+++ b/src/cw/capwap_strings_elem.c
@@ -1,3 +1,4 @@
+#include "mbag.h"
#include "capwap.h"
struct cw_strlist_elem capwap_strings_elem[] = {
diff --git a/src/cw/capwap_strings_elem80211.c b/src/cw/capwap_strings_elem80211.c
index e28e190d..8af4e74a 100644
--- a/src/cw/capwap_strings_elem80211.c
+++ b/src/cw/capwap_strings_elem80211.c
@@ -1,3 +1,4 @@
+#include "mbag.h"
#include "capwap80211.h"
#include "strlist.h"
diff --git a/src/cw/capwap_strings_msg.c b/src/cw/capwap_strings_msg.c
index 66eaa868..59e35a45 100644
--- a/src/cw/capwap_strings_msg.c
+++ b/src/cw/capwap_strings_msg.c
@@ -19,7 +19,7 @@
* @file
* @brief Definition of CAPWAP Message Strings
*/
-
+#include "mbag.h"
#include "capwap.h"
/**
diff --git a/src/cw/capwap_strings_result.c b/src/cw/capwap_strings_result.c
index e8d6339e..d6e669e3 100644
--- a/src/cw/capwap_strings_result.c
+++ b/src/cw/capwap_strings_result.c
@@ -1,3 +1,4 @@
+#include "mbag.h"
#include "capwap.h"
diff --git a/src/cw/capwap_strings_state.c b/src/cw/capwap_strings_state.c
index 69feda50..bfbad924 100644
--- a/src/cw/capwap_strings_state.c
+++ b/src/cw/capwap_strings_state.c
@@ -1,3 +1,4 @@
+#include "mbag.h"
#include "capwap.h"
struct cw_strlist_elem capwap_strings_state[] = {
diff --git a/src/cw/capwap_strings_vendor.c b/src/cw/capwap_strings_vendor.c
index 1e572813..3df86816 100644
--- a/src/cw/capwap_strings_vendor.c
+++ b/src/cw/capwap_strings_vendor.c
@@ -1,3 +1,4 @@
+#include "mbag.h"
#include "capwap.h"
#include "vendors.h"
diff --git a/src/cw/cipwap_strings_elem.c b/src/cw/cipwap_strings_elem.c
index 4297ff4d..3953f82b 100644
--- a/src/cw/cipwap_strings_elem.c
+++ b/src/cw/cipwap_strings_elem.c
@@ -1,4 +1,5 @@
+#include "mbag.h"
#include "capwap.h"
#include "cipwap.h"
#include "capwap_cisco.h"
diff --git a/src/cw/cisco.c b/src/cw/cisco.c
index b58c37c5..6183683a 100644
--- a/src/cw/cisco.c
+++ b/src/cw/cisco.c
@@ -95,8 +95,8 @@ int cw_out_cisco_wtp_radio_cfg(struct conn *conn, struct cw_action_out *a, uint8
continue;
}
// l+=cw_put_elem_radio_info(dst+l,i->id,i->data);
- l+=cw_put_elem_cisco_radio_cfg(dst+l,i->iid,i->data);
- l+=cw_put_elem_cisco_ap_regulatory_domain(dst+l,i->iid,i->data);
+ l+=cw_put_elem_cisco_radio_cfg(dst+l,i->u1.iid,i->u2.data);
+ l+=cw_put_elem_cisco_ap_regulatory_domain(dst+l,i->u1.iid,i->u2.data);
}
return l;
@@ -147,7 +147,7 @@ int cw_radio_cisco_set_state(struct conn * conn, uint8_t *data, int len, int cau
MAVLITER_DEFINE(it,conn->radios);
mavliter_foreach(&it){
mbag_item_t *i = mavliter_get(&it);
- cw_radio_set_admin_state(conn->radios,i->iid,state,cause);
+ cw_radio_set_admin_state(conn->radios,i->u1.iid,state,cause);
}
return 1;
diff --git a/src/cw/conn.h b/src/cw/conn.h
index 54521f54..103f297a 100644
--- a/src/cw/conn.h
+++ b/src/cw/conn.h
@@ -32,12 +32,13 @@
#include "fragman.h"
#include "cwmsg.h"
-#include "action.h"
+/*#include "action.h"*/
+
+/*#include "mbag.h"*/
-#include "mbag.h"
#include "intavltree.h"
-#include "mbag.h"
+
#include "mod.h"
diff --git a/src/cw/conn_clear_upd.c b/src/cw/conn_clear_upd.c
index 9979957f..fc0e3c38 100644
--- a/src/cw/conn_clear_upd.c
+++ b/src/cw/conn_clear_upd.c
@@ -1,4 +1,6 @@
+#include "capwap.h"
+
#include "conn.h"
#include "mavl.h"
@@ -13,9 +15,9 @@ void conn_clear_upd(struct conn *conn, int merge)
mavliter_foreach(&it){
struct mbag_item * ruitem = mavliter_get(&it);
- mavl_t radio_upd = ruitem->data;
+ mavl_t radio_upd = ruitem->u2.data;
- mbag_t radio = mbag_i_get_mbag(conn->radios,ruitem->iid,NULL);
+ mbag_t radio = mbag_i_get_mbag(conn->radios,ruitem->u1.iid,NULL);
if (radio){
mavl_merge(radio,radio_upd);
}
diff --git a/src/cw/conn_create.c b/src/cw/conn_create.c
index 64ccf6d6..8c04d593 100644
--- a/src/cw/conn_create.c
+++ b/src/cw/conn_create.c
@@ -26,9 +26,10 @@
#include
#include "log.h"
+#include "capwap.h"
#include "conn.h"
#include "sock.h"
-#include "capwap.h"
+
/**
diff --git a/src/cw/conn_create_noq.c b/src/cw/conn_create_noq.c
index e609190f..ce737744 100644
--- a/src/cw/conn_create_noq.c
+++ b/src/cw/conn_create_noq.c
@@ -25,6 +25,7 @@
#include
#include
+#include "mbag.h"
#include "conn.h"
#include "sock.h"
diff --git a/src/cw/conn_destroy.c b/src/cw/conn_destroy.c
index b10f752d..9d1bbae6 100644
--- a/src/cw/conn_destroy.c
+++ b/src/cw/conn_destroy.c
@@ -21,6 +21,7 @@
*/
#include
+#include "mbag.h"
#include "conn.h"
/**
diff --git a/src/cw/conn_init.c b/src/cw/conn_init.c
index 330d9a48..74106574 100644
--- a/src/cw/conn_init.c
+++ b/src/cw/conn_init.c
@@ -24,6 +24,7 @@
#include
+#include "mbag.h"
#include "conn.h"
#include "capwap.h"
diff --git a/src/cw/conn_prepare_image_data_request.c b/src/cw/conn_prepare_image_data_request.c
index 0b6d88de..03f57894 100644
--- a/src/cw/conn_prepare_image_data_request.c
+++ b/src/cw/conn_prepare_image_data_request.c
@@ -16,6 +16,7 @@
*/
+#include "mbag.h"
#include "capwap.h"
#include "lwapp.h"
diff --git a/src/cw/conn_q_add_packet.c b/src/cw/conn_q_add_packet.c
index a71d03d1..02c96c25 100644
--- a/src/cw/conn_q_add_packet.c
+++ b/src/cw/conn_q_add_packet.c
@@ -19,6 +19,7 @@
#include
#include
+#include "mbag.h"
#include "dbg.h"
#include "conn.h"
#include "sock.h"
diff --git a/src/cw/conn_q_get_packet.c b/src/cw/conn_q_get_packet.c
index 15b9e507..13b46c9c 100644
--- a/src/cw/conn_q_get_packet.c
+++ b/src/cw/conn_q_get_packet.c
@@ -15,7 +15,7 @@
along with Foobar. If not, see .
*/
-
+#include "mbag.h"
#include
#include "conn.h"
diff --git a/src/cw/conn_q_recv_packet.c b/src/cw/conn_q_recv_packet.c
index cab52cd9..9fd4d676 100644
--- a/src/cw/conn_q_recv_packet.c
+++ b/src/cw/conn_q_recv_packet.c
@@ -19,7 +19,7 @@
#include
#include
#include
-
+#include "mbag.h"
#include "conn.h"
static int conn_q_recv_packet_(struct conn * conn, uint8_t * buffer,int len,int peek)
diff --git a/src/cw/conn_recv_packet.c b/src/cw/conn_recv_packet.c
index 9456180e..70052e51 100644
--- a/src/cw/conn_recv_packet.c
+++ b/src/cw/conn_recv_packet.c
@@ -22,6 +22,7 @@
#include
#include
+#include "mbag.h"
#include "conn.h"
#include "sock.h"
diff --git a/src/cw/conn_send_data_packet.c b/src/cw/conn_send_data_packet.c
index e4f81c2e..57c1c24b 100644
--- a/src/cw/conn_send_data_packet.c
+++ b/src/cw/conn_send_data_packet.c
@@ -19,6 +19,8 @@
#include
#include
#include "sock.h"
+#include "capwap.h"
+
#include "conn.h"
#include
diff --git a/src/cw/conn_send_packet.c b/src/cw/conn_send_packet.c
index 38261440..d84986ac 100644
--- a/src/cw/conn_send_packet.c
+++ b/src/cw/conn_send_packet.c
@@ -16,6 +16,7 @@
*/
+#include "mbag.h"
#include
#include
#include "sock.h"
diff --git a/src/cw/connlist.c b/src/cw/connlist.c
index 9ef3f4dc..43cbe3ee 100644
--- a/src/cw/connlist.c
+++ b/src/cw/connlist.c
@@ -28,6 +28,7 @@
#include
+#include "mbag.h"
#include "conn.h"
#include "connlist.h"
diff --git a/src/cw/cw_addelem_capwap_local_ip_addr.c b/src/cw/cw_addelem_capwap_local_ip_addr.c
index a871193b..ec6c2b41 100644
--- a/src/cw/cw_addelem_capwap_local_ip_addr.c
+++ b/src/cw/cw_addelem_capwap_local_ip_addr.c
@@ -23,6 +23,7 @@
#include
+#include "mbag.h"
#include "capwap.h"
#include "cwmsg.h"
#include "conn.h"
diff --git a/src/cw/cw_in_ac_name_with_priority.c b/src/cw/cw_in_ac_name_with_priority.c
index dda3c14c..434068cf 100644
--- a/src/cw/cw_in_ac_name_with_priority.c
+++ b/src/cw/cw_in_ac_name_with_priority.c
@@ -1,4 +1,5 @@
+#include "mbag.h"
#include "action.h"
#include "dbg.h"
#include "log.h"
diff --git a/src/cw/cw_in_capwap_control_ip_address.c b/src/cw/cw_in_capwap_control_ip_address.c
index ed03ba6a..0528363f 100644
--- a/src/cw/cw_in_capwap_control_ip_address.c
+++ b/src/cw/cw_in_capwap_control_ip_address.c
@@ -29,6 +29,7 @@
#include
+#include "mbag.h"
#include "action.h"
#include "log.h"
#include "mbag.h"
diff --git a/src/cw/cw_in_check_cfg_update_req.c b/src/cw/cw_in_check_cfg_update_req.c
index 6f46b436..a06c6cc9 100644
--- a/src/cw/cw_in_check_cfg_update_req.c
+++ b/src/cw/cw_in_check_cfg_update_req.c
@@ -1,4 +1,5 @@
+#include "mbag.h"
#include "capwap.h"
#include "intavltree.h"
#include "dbg.h"
diff --git a/src/cw/cw_in_check_chng_state_evnt_req.c b/src/cw/cw_in_check_chng_state_evnt_req.c
index d72b5ff9..33b29b33 100644
--- a/src/cw/cw_in_check_chng_state_evnt_req.c
+++ b/src/cw/cw_in_check_chng_state_evnt_req.c
@@ -1,4 +1,5 @@
+#include "mbag.h"
#include "capwap.h"
#include "capwap_items.h"
#include "cw.h"
diff --git a/src/cw/cw_in_check_cipwap_join_req.c b/src/cw/cw_in_check_cipwap_join_req.c
index 3fc5198c..17594a44 100644
--- a/src/cw/cw_in_check_cipwap_join_req.c
+++ b/src/cw/cw_in_check_cipwap_join_req.c
@@ -28,7 +28,7 @@ int cw_detect_capwap(struct conn *conn)
mbag_item_t * item = mbag_get(is,CW_ITEM_WTP_SOFTWARE_VERSION);
if (item) {
- bstrv_t s = item->data;
+ bstrv_t s = item->u2.data;
uint32_t v = bstrv_get_vendor_id(s);
switch(v) {
diff --git a/src/cw/cw_in_check_disc_resp.c b/src/cw/cw_in_check_disc_resp.c
index f1a68ae9..2260714a 100644
--- a/src/cw/cw_in_check_disc_resp.c
+++ b/src/cw/cw_in_check_disc_resp.c
@@ -1,5 +1,6 @@
#include
+#include "mbag.h"
#include "capwap.h"
#include "capwap_items.h"
#include "intavltree.h"
diff --git a/src/cw/cw_in_check_generic_resp.c b/src/cw/cw_in_check_generic_resp.c
index fbbb06a9..1581c634 100644
--- a/src/cw/cw_in_check_generic_resp.c
+++ b/src/cw/cw_in_check_generic_resp.c
@@ -17,8 +17,8 @@ int cw_in_check_generic_resp(struct conn *conn, struct cw_action_in *a, uint8_t
mbag_item_t * result = mbag_get(conn->incomming,CW_ITEM_RESULT_CODE);
if (result ) {
- if (!cw_rcok(result->dword)){
- return result->dword;
+ if (!cw_rcok(result->u2.dword)){
+ return result->u2.dword;
}
}
@@ -37,7 +37,7 @@ int cw_in_check_generic_resp(struct conn *conn, struct cw_action_in *a, uint8_t
/* if we hava a result code, return it */
if ( result ) {
- return result->dword;
+ return result->u2.dword;
}
return 0;
diff --git a/src/cw/cw_in_check_img_data_req_ac.c b/src/cw/cw_in_check_img_data_req_ac.c
index 1a1099d0..05b19e4f 100644
--- a/src/cw/cw_in_check_img_data_req_ac.c
+++ b/src/cw/cw_in_check_img_data_req_ac.c
@@ -1,6 +1,7 @@
#include
#include
+#include "mbag.h"
#include "capwap.h"
#include "dbg.h"
#include "log.h"
@@ -22,16 +23,16 @@ int cw_in_check_img_data_req_ac(struct conn *conn, struct cw_action_in *a, uint8
struct mbag_item *i = mbag_get(conn->incomming,CW_ITEM_IMAGE_IDENTIFIER);
if (i) {
- uint32_t vendor_id = bstrv_get_vendor_id(i->data);
+ uint32_t vendor_id = bstrv_get_vendor_id(i->u2.data);
const char * image_dir;
image_dir = mbag_get_str(conn->local,CW_ITEM_AC_IMAGE_DIR,"./img");
- char * image_filename = malloc(6+bstrv_len(i->data)+1+strlen(image_dir));
+ char * image_filename = malloc(6+bstrv_len(i->u2.data)+1+strlen(image_dir));
if (!image_filename)
return CAPWAP_RESULT_IMAGE_DATA_ERROR;
- sprintf(image_filename,"%s%04X/%s",image_dir,vendor_id,bstrv_data(i->data));
+ sprintf(image_filename,"%s%04X/%s",image_dir,vendor_id,bstrv_data(i->u2.data));
FILE *infile = fopen(image_filename,"rb");
diff --git a/src/cw/cw_in_check_img_data_req_wtp.c b/src/cw/cw_in_check_img_data_req_wtp.c
index cede33bf..22d4117a 100644
--- a/src/cw/cw_in_check_img_data_req_wtp.c
+++ b/src/cw/cw_in_check_img_data_req_wtp.c
@@ -33,16 +33,16 @@ int cw_in_check_img_data_req_wtp(struct conn *conn, struct cw_action_in *a, uint
struct mbag_item *i = mbag_get(conn->incomming,CW_ITEM_IMAGE_IDENTIFIER);
if (i) {
- uint32_t vendor_id = bstrv_get_vendor_id(i->data);
+ uint32_t vendor_id = bstrv_get_vendor_id(i->u2.data);
const char * image_dir;
image_dir = mbag_get_str(conn->local,CW_ITEM_AC_IMAGE_DIR,"./img");
- char * image_filename = malloc(6+bstrv_len(i->data)+1+strlen(image_dir));
+ char * image_filename = malloc(6+bstrv_len(i->u2.data)+1+strlen(image_dir));
if (!image_filename)
return CAPWAP_RESULT_IMAGE_DATA_ERROR;
- sprintf(image_filename,"%s%04X/%s",image_dir,vendor_id,bstrv_data(i->data));
+ sprintf(image_filename,"%s%04X/%s",image_dir,vendor_id,bstrv_data(i->u2.data));
FILE *infile = fopen(image_filename,"rb");
diff --git a/src/cw/cw_in_check_img_data_resp.c b/src/cw/cw_in_check_img_data_resp.c
index 33890278..23ca4c58 100644
--- a/src/cw/cw_in_check_img_data_resp.c
+++ b/src/cw/cw_in_check_img_data_resp.c
@@ -1,6 +1,7 @@
#include
#include
+#include "mbag.h"
#include "capwap.h"
#include "dbg.h"
#include "log.h"
@@ -26,7 +27,7 @@ int cw_in_check_img_data_resp(struct conn *conn, struct cw_action_in *a, uint8_t
mbag_item_t * iresult = mbag_get(conn->incomming, CW_ITEM_RESULT_CODE);
if ( iresult ) {
- return iresult->dword;
+ return iresult->u2.dword;
}
return 0;
diff --git a/src/cw/cw_in_check_join_resp.c b/src/cw/cw_in_check_join_resp.c
index 5cd6c89d..c43fbf60 100644
--- a/src/cw/cw_in_check_join_resp.c
+++ b/src/cw/cw_in_check_join_resp.c
@@ -15,8 +15,8 @@ int cw_in_check_join_resp(struct conn *conn, struct cw_action_in *a, uint8_t * d
mbag_item_t * jresult = mbag_get(conn->incomming,CW_ITEM_RESULT_CODE);
if (jresult ) {
- if (!cw_rcok(jresult->dword)){
- return jresult->dword;
+ if (!cw_rcok(jresult->u2.dword)){
+ return jresult->u2.dword;
}
}
@@ -37,7 +37,7 @@ int cw_in_check_join_resp(struct conn *conn, struct cw_action_in *a, uint8_t * d
if ( jresult ) {
- return jresult->dword;
+ return jresult->u2.dword;
}
/* set result code to ok and change to configure state */
diff --git a/src/cw/cw_in_cisco_image_identifier.c b/src/cw/cw_in_cisco_image_identifier.c
index e53b1f4b..7a119843 100644
--- a/src/cw/cw_in_cisco_image_identifier.c
+++ b/src/cw/cw_in_cisco_image_identifier.c
@@ -1,4 +1,4 @@
-
+#include "mbag.h"
#include "action.h"
#include "dbg.h"
#include "mbag.h"
diff --git a/src/cw/cw_in_generic.c b/src/cw/cw_in_generic.c
index 18f0f541..eed8dac9 100644
--- a/src/cw/cw_in_generic.c
+++ b/src/cw/cw_in_generic.c
@@ -1,4 +1,5 @@
+#include "mbag.h"
#include "action.h"
#include "dbg.h"
#include "log.h"
diff --git a/src/cw/cw_in_generic2.c b/src/cw/cw_in_generic2.c
index 0100d0f9..c4c52227 100644
--- a/src/cw/cw_in_generic2.c
+++ b/src/cw/cw_in_generic2.c
@@ -1,4 +1,4 @@
-
+#include "mbag.h"
#include "action.h"
#include "dbg.h"
#include "log.h"
diff --git a/src/cw/cw_in_radio_administrative_state.c b/src/cw/cw_in_radio_administrative_state.c
index 043755ba..91708253 100644
--- a/src/cw/cw_in_radio_administrative_state.c
+++ b/src/cw/cw_in_radio_administrative_state.c
@@ -1,4 +1,5 @@
+#include "mbag.h"
#include "action.h"
#include "dbg.h"
#include "log.h"
diff --git a/src/cw/cw_in_radio_administrative_state_wtp.c b/src/cw/cw_in_radio_administrative_state_wtp.c
index 7b284322..aab3178a 100644
--- a/src/cw/cw_in_radio_administrative_state_wtp.c
+++ b/src/cw/cw_in_radio_administrative_state_wtp.c
@@ -1,4 +1,5 @@
+#include "mbag.h"
#include "action.h"
#include "dbg.h"
#include "log.h"
diff --git a/src/cw/cw_in_radio_generic.c b/src/cw/cw_in_radio_generic.c
index d941b79a..84a98054 100644
--- a/src/cw/cw_in_radio_generic.c
+++ b/src/cw/cw_in_radio_generic.c
@@ -1,4 +1,4 @@
-
+#include "mbag.h"
#include "action.h"
#include "dbg.h"
#include "log.h"
diff --git a/src/cw/cw_out_80211_supported_rates.c b/src/cw/cw_out_80211_supported_rates.c
index 99b01639..7f871e13 100644
--- a/src/cw/cw_out_80211_supported_rates.c
+++ b/src/cw/cw_out_80211_supported_rates.c
@@ -27,7 +27,7 @@ int cw_out_80211_supported_rates(struct conn *conn, struct cw_action_out *a, uin
if ( i->type != MBAG_MBAG ) {
continue;
}
- l+=cw_put_elem_80211_supported_rates(dst+l,i->iid,i->data);
+ l+=cw_put_elem_80211_supported_rates(dst+l,i->u1.iid,i->u2.data);
}
return l;
}
diff --git a/src/cw/cw_out_image_data.c b/src/cw/cw_out_image_data.c
index 6ef159f1..10d5aed1 100644
--- a/src/cw/cw_out_image_data.c
+++ b/src/cw/cw_out_image_data.c
@@ -25,7 +25,7 @@ int cw_out_image_data(struct conn *conn, struct cw_action_out *a, uint8_t * dst)
return 0;
}
- FILE *infile = item->data;
+ FILE *infile = item->u2.data;
if (infile==NULL){
cw_log(LOG_ERR,"Image Data Request infile = NULL");
return 0;
diff --git a/src/cw/cw_out_radio_administrative_states.c b/src/cw/cw_out_radio_administrative_states.c
index 95234d78..92f150be 100644
--- a/src/cw/cw_out_radio_administrative_states.c
+++ b/src/cw/cw_out_radio_administrative_states.c
@@ -15,7 +15,7 @@ int cw_out_radio_administrative_states(struct conn *conn, struct cw_action_out *
if ( i->type != MBAG_MBAG ) {
continue;
}
- l+=cw_put_elem_radio_administrative_state(dst+l,i->iid,i->data);
+ l+=cw_put_elem_radio_administrative_state(dst+l,i->u1.iid,i->u2.data);
}
return l;
diff --git a/src/cw/cw_out_radio_generic.c b/src/cw/cw_out_radio_generic.c
index d7b612e3..c3c1735d 100644
--- a/src/cw/cw_out_radio_generic.c
+++ b/src/cw/cw_out_radio_generic.c
@@ -1,6 +1,6 @@
-
+#include "mbag.h"
#include "action.h"
#include "cw.h"
#include "cw/dbg.h"
@@ -26,15 +26,15 @@ cw_dbg(DBG_X,"Radio Generic out %s",a->item_id);
- struct mbag_item * item = mbag_get(radio->data,a->item_id);
+ struct mbag_item * item = mbag_get(radio->u2.data,a->item_id);
if (!item){
-cw_dbg(DBG_X,"Not found! %s for rid %d",a->item_id,radio->iid);
+cw_dbg(DBG_X,"Not found! %s for rid %d",a->item_id,radio->u1.iid);
continue;
}
int len=0;
- len += cw_put_byte(d+start,radio->iid);
+ len += cw_put_byte(d+start,radio->u1.iid);
- cw_dbg(DBG_X, "Radio generic out '%s' fro rid %d",a->item_id,radio->iid);
+ cw_dbg(DBG_X, "Radio generic out '%s' fro rid %d",a->item_id,radio->u1.iid);
len += cw_put_mbag_item(d + start+1, item);
if (a->vendor_id)
diff --git a/src/cw/cw_out_radio_info.c b/src/cw/cw_out_radio_info.c
index aec11cba..71a72570 100644
--- a/src/cw/cw_out_radio_info.c
+++ b/src/cw/cw_out_radio_info.c
@@ -32,7 +32,7 @@ int cw_out_radio_infos(struct conn *conn, struct cw_action_out *a, uint8_t * dst
if ( i->type != MBAG_MBAG ) {
continue;
}
- l+=cw_put_elem_radio_info(dst+l,i->iid,i->data);
+ l+=cw_put_elem_radio_info(dst+l,i->u1.iid,i->u2.data);
}
return l;
diff --git a/src/cw/cw_out_wtp_board_data.c b/src/cw/cw_out_wtp_board_data.c
index b061a890..4ecff484 100644
--- a/src/cw/cw_out_wtp_board_data.c
+++ b/src/cw/cw_out_wtp_board_data.c
@@ -1,4 +1,5 @@
#include "log.h"
+#include "mbag.h"
#include "conn.h"
#include "mbag.h"
@@ -51,7 +52,7 @@ int cw_out_wtp_board_data(struct conn *conn, struct cw_action_out *a, uint8_t *
}
uint8_t *d = dst + 4;
- d += cw_put_dword(d, i->dword);
+ d += cw_put_dword(d, i->u2.dword);
char buf[90];
@@ -59,14 +60,14 @@ char buf[90];
if (i) {
printf("We have got an i %p\n",i);
-printf("len: %d\n",bstr16_len(i->data));
-memcpy(buf,bstr16_data(i->data),bstr16_len(i->data));
-buf[bstr16_len(i->data)]=0;
+printf("len: %d\n",bstr16_len(i->u2.data));
+memcpy(buf,bstr16_data(i->u2.data),bstr16_len(i->u2.data));
+buf[bstr16_len(i->u2.data)]=0;
printf("Val: %s\n",buf);
d += cw_put_word(d, CW_BOARDDATA_MODELNO);
- d += cw_put_word(d, bstr16_len(i->data));
- d += cw_put_data(d, bstr16_data(i->data), bstr16_len(i->data));
+ d += cw_put_word(d, bstr16_len(i->u2.data));
+ d += cw_put_data(d, bstr16_data(i->u2.data), bstr16_len(i->u2.data));
} else {
cw_log(LOG_ERR,
"Error: Can't set sub-element \"WTP Model Number\" in WTP Board Data.");
@@ -75,8 +76,8 @@ printf("Val: %s\n",buf);
i = mbag_get(board_data, CW_ITEM_WTP_BOARD_SERIALNO);
if (i) {
d += cw_put_word(d, CW_BOARDDATA_SERIALNO);
- d += cw_put_word(d, bstr16_len(i->data));
- d += cw_put_data(d, bstr16_data(i->data), bstr16_len(i->data));
+ d += cw_put_word(d, bstr16_len(i->u2.data));
+ d += cw_put_data(d, bstr16_data(i->u2.data), bstr16_len(i->u2.data));
}else {
cw_log(LOG_ERR,
"Error: Can't set sub-element \"WTP Serial Number\" in WTP Board Data.");
@@ -86,22 +87,22 @@ printf("Val: %s\n",buf);
i = mbag_get(board_data, CW_ITEM_WTP_BOARD_ID);
if (i) {
d += cw_put_word(d, CW_BOARDDATA_BOARDID);
- d += cw_put_word(d, bstr16_len(i->data));
- d += cw_put_data(d, bstr16_data(i->data), bstr16_len(i->data));
+ d += cw_put_word(d, bstr16_len(i->u2.data));
+ d += cw_put_data(d, bstr16_data(i->u2.data), bstr16_len(i->u2.data));
}
i = mbag_get(board_data, CW_ITEM_WTP_BOARD_REVISION);
if (i) {
d += cw_put_word(d, CW_BOARDDATA_REVISION);
- d += cw_put_word(d, bstr16_len(i->data));
- d += cw_put_data(d, bstr16_data(i->data), bstr16_len(i->data));
+ d += cw_put_word(d, bstr16_len(i->u2.data));
+ d += cw_put_data(d, bstr16_data(i->u2.data), bstr16_len(i->u2.data));
}
i = mbag_get(board_data, CW_ITEM_WTP_BOARD_MACADDRESS);
if (i) {
d += cw_put_word(d, CW_BOARDDATA_MACADDRESS);
- d += cw_put_word(d, bstr_len(i->data));
- d += cw_put_data(d, bstr_data(i->data), bstr_len(i->data));
+ d += cw_put_word(d, bstr_len(i->u2.data));
+ d += cw_put_data(d, bstr_data(i->u2.data), bstr_len(i->u2.data));
}
int l = d - dst-4;
diff --git a/src/cw/cw_out_wtp_descriptor.c b/src/cw/cw_out_wtp_descriptor.c
index c6df904b..117653ae 100644
--- a/src/cw/cw_out_wtp_descriptor.c
+++ b/src/cw/cw_out_wtp_descriptor.c
@@ -1,6 +1,7 @@
#include "log.h"
+#include "capwap.h"
#include "conn.h"
-
+#include "capwap.h"
//#include "itemstore.h"
#include "capwap_items.h"
#include "capwap.h"
@@ -47,7 +48,7 @@ int cw_out_wtp_descriptor(struct conn *conn, struct cw_action_out *a, uint8_t *
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->data);
+ d += cw_put_version(d,CW_SUBELEM_WTP_HARDWARE_VERSION,i->u2.data);
}
else {
cw_log(LOG_ERR, "Can't send Hardware Version in WTP Descriptor, not set.");
@@ -55,7 +56,7 @@ int cw_out_wtp_descriptor(struct conn *conn, struct cw_action_out *a, uint8_t *
i = mbag_get(mbag,CW_ITEM_WTP_SOFTWARE_VERSION);
if ( i ) {
- d += cw_put_version(d,CW_SUBELEM_WTP_SOFTWARE_VERSION,i->data);
+ d += cw_put_version(d,CW_SUBELEM_WTP_SOFTWARE_VERSION,i->u2.data);
}
else {
cw_log(LOG_ERR, "Can't send Software Version in WTP descriptor, not set.");
@@ -63,7 +64,7 @@ int cw_out_wtp_descriptor(struct conn *conn, struct cw_action_out *a, uint8_t *
i = mbag_get(mbag,CW_ITEM_WTP_BOOT_VERSION);
if ( i ) {
- d += cw_put_version(d,CW_SUBELEM_WTP_BOOTLOADER_VERSION,i->data);
+ d += cw_put_version(d,CW_SUBELEM_WTP_BOOTLOADER_VERSION,i->u2.data);
}
else {
cw_log(LOG_INFO, "Can't send Boot Version in WTP descriptor, not set.");
@@ -71,7 +72,7 @@ int cw_out_wtp_descriptor(struct conn *conn, struct cw_action_out *a, uint8_t *
i = mbag_get(mbag,CW_ITEM_WTP_OTHER_VERSION);
if ( i ) {
- d += cw_put_version(d,CW_SUBELEM_WTP_OTHERSOFTWARE_VERSION,i->data);
+ d += cw_put_version(d,CW_SUBELEM_WTP_OTHERSOFTWARE_VERSION,i->u2.data);
}
else {
cw_log(LOG_INFO, "Can't send Other Version in WTP descriptor, not set.");
diff --git a/src/cw/cw_out_wtp_reboot_statistics.c b/src/cw/cw_out_wtp_reboot_statistics.c
index a8f4cbf2..186ca879 100644
--- a/src/cw/cw_out_wtp_reboot_statistics.c
+++ b/src/cw/cw_out_wtp_reboot_statistics.c
@@ -18,6 +18,7 @@
#include "log.h"
+#include "mbag.h"
#include "capwap_items.h"
#include "action.h"
@@ -46,7 +47,7 @@ int cw_out_wtp_reboot_statistics(struct conn *conn, struct cw_action_out *a,
return 0;
}
- mbag_t rs = (mbag_t) i->data;
+ mbag_t rs = (mbag_t) i->u2.data;
uint8_t *d = dst + 4;
d += cw_put_word(d, mbag_get_word(rs, CW_ITEM_REBOOT_COUNT, 0));
diff --git a/src/cw/cw_put_local_ip_address.c b/src/cw/cw_put_local_ip_address.c
index 66bcacdd..65bc502b 100644
--- a/src/cw/cw_put_local_ip_address.c
+++ b/src/cw/cw_put_local_ip_address.c
@@ -3,6 +3,7 @@
#include
#include
+#include "mbag.h"
#include "log.h"
#include "dbg.h"
#include "cw.h"
diff --git a/src/cw/cw_put_mbag_item.c b/src/cw/cw_put_mbag_item.c
index c995c0bc..8422276f 100644
--- a/src/cw/cw_put_mbag_item.c
+++ b/src/cw/cw_put_mbag_item.c
@@ -33,40 +33,40 @@ int cw_put_mbag_item(uint8_t * dst, struct mbag_item *item)
if (MBAG_STR == item->type ){
- return cw_put_data(dst, item->data, strlen((char *) item->data));
+ return cw_put_data(dst, item->u2.data, strlen((char *) item->u2.data));
}
if (MBAG_DATA == item->type){
- return cw_put_data(dst, item->data+1, *((uint8_t*)item->data));
+ return cw_put_data(dst, item->u2.data+1, *((uint8_t*)item->u2.data));
}
if (MBAG_BYTE == item->type){
- return cw_put_byte(dst, item->byte);
+ return cw_put_byte(dst, item->u2.byte);
}
if (MBAG_WORD == item->type){
- return cw_put_word(dst, item->word);
+ return cw_put_word(dst, item->u2.word);
}
if (MTYPE_DWORD == item->type){
- return cw_put_dword(dst, item->dword);
+ return cw_put_dword(dst, item->u2.dword);
}
if (MBAG_BSTR == item->type) {
- return cw_put_bstr(dst, item->data);
+ return cw_put_bstr(dst, item->u2.data);
}
if ( MBAG_BSTR16 == item->type)
- return cw_put_bstr16(dst,item->data);
+ return cw_put_bstr16(dst,item->u2.data);
if (MBAG_VENDORSTR == item->type)
{
int l=0;
- l+=cw_put_dword(dst, bstrv_get_vendor_id(item->data));
- l+=cw_put_data(dst+4, bstrv_data(item->data),bstrv_len(item->data));
+ l+=cw_put_dword(dst, bstrv_get_vendor_id(item->u2.data));
+ l+=cw_put_data(dst+4, bstrv_data(item->u2.data),bstrv_len(item->u2.data));
return l;
}
if (MBAG_MBAG == item->type){
- *((void**)dst)=item->data;
+ *((void**)dst)=item->u2.data;
return sizeof(void *);
}
diff --git a/src/cw/cw_put_radio_operational_states.c b/src/cw/cw_put_radio_operational_states.c
index 5191f4f4..c4d2321e 100644
--- a/src/cw/cw_put_radio_operational_states.c
+++ b/src/cw/cw_put_radio_operational_states.c
@@ -46,7 +46,7 @@ int xxcw_put_radio_operational_states(mbag_t radios, uint8_t * dst, int *nerror,
mavliter_foreach(&it){
mbag_item_t * radioitem = mavliter_get(&it);
- mbag_item_t *ositem = mbag_get(radioitem->data,CW_RADIOITEM_OPER_STATE);
+ mbag_item_t *ositem = mbag_get(radioitem->u2.data,CW_RADIOITEM_OPER_STATE);
if (!ositem){
(*nerror)++;
continue;
@@ -54,10 +54,10 @@ int xxcw_put_radio_operational_states(mbag_t radios, uint8_t * dst, int *nerror,
/* Put the radio ID */
- cw_put_byte(d+4,radioitem->iid);
+ cw_put_byte(d+4,radioitem->u1.iid);
/* Get the operational state and cause */
- uint16_t os = ositem->word;
+ uint16_t os = ositem->u2.word;
if ( d7mode ){
/* Isolate Oper Sate from cause */
@@ -77,7 +77,7 @@ int xxcw_put_radio_operational_states(mbag_t radios, uint8_t * dst, int *nerror,
/* delete the operational state item, so it won't be
sent again, until it is set by a change through
Set Radio Admin State */
- mbag_del(radioitem->data,CW_RADIOITEM_OPER_STATE);
+ mbag_del(radioitem->u2.data,CW_RADIOITEM_OPER_STATE);
}
diff --git a/src/cw/cwmsg_addelem_mtu_discovery_padding.c b/src/cw/cwmsg_addelem_mtu_discovery_padding.c
index 560e7f52..3303efac 100644
--- a/src/cw/cwmsg_addelem_mtu_discovery_padding.c
+++ b/src/cw/cwmsg_addelem_mtu_discovery_padding.c
@@ -18,6 +18,7 @@
#include
+#include "mbag.h"
#include "capwap.h"
#include "conn.h"
#include "cwmsg.h"
diff --git a/src/cw/dbg.c b/src/cw/dbg.c
index b50fd782..3aa24353 100644
--- a/src/cw/dbg.c
+++ b/src/cw/dbg.c
@@ -27,6 +27,7 @@
*/
#include
+#include "mbag.h"
#include "capwap.h"
#include "dbg.h"
#include "sock.h"
@@ -166,7 +167,6 @@ static const char *get_dbg_color_off(int level)
static const char *get_dbg_prefix(int level)
{
return cw_strlist_get_str(prefix, level);
-
}
static const char *get_dbg_color_ontext(int level)
@@ -627,9 +627,9 @@ int cw_format_item(char *dst, mbag_item_t * item)
{
*dst = 0;
if (item->type == MBAG_BSTR16) {
- strncpy(dst, (char *) bstr16_data(item->data), bstr16_len(item->data));
- *(dst + bstr16_len(item->data)) = 0;
- return bstr16_len(item->data);
+ strncpy(dst, (char *) bstr16_data(item->u2.data), bstr16_len(item->u2.data));
+ *(dst + bstr16_len(item->u2.data)) = 0;
+ return bstr16_len(item->u2.data);
}
@@ -693,6 +693,23 @@ void cw_dbg_version_subelem(int level, const char *context, int subtype, bstrv_t
}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/*
void dbg_istore_dmp(mbag_t s)
{
diff --git a/src/cw/dbg.h b/src/cw/dbg.h
index ba39f338..55eefb4c 100644
--- a/src/cw/dbg.h
+++ b/src/cw/dbg.h
@@ -51,15 +51,11 @@ void cw_dbg_packet(struct conn *conn, uint8_t * packet, int len);
//#define DBGX(f,...) printf("hallo\n")
-#ifdef WITH_CW_LOG_DEBUG
+
#define cw_dbg_elem(level,conn,msgtype,msgelemtype,msgbuf,msglen)\
cw_dbg_elem_colored(level,conn,msgtype,msgelemtype,msgbuf,msglen)
-#else
-
- #define cw_dbg_elem(...)
-#endif
#endif
@@ -67,78 +63,9 @@ void cw_dbg_packet(struct conn *conn, uint8_t * packet, int len);
* @defgroup DbgOptions Debug Options
* @{
*/
+#include "debug.h"
-/**
- * Debug levels
- */
-enum cw_dbg_levels{
- /** Show headers of incomming CAPWAP packets */
- DBG_PKT_IN=0,
- /** Show headers of outgoing CAPWAP packets */
- DBG_PKT_OUT,
-
- /** Incomming CAPWAP packets with errors, wich would
- usually silently discarded */
- DBG_PKT_ERR,
-
- /** Dump content of incomming packets */
- DBG_PKT_DMP,
-
- /** Display incomming CAPWAP/LWAPP messages */
- DBG_MSG_IN,
-
- /** Display outgoing CAPWAP/LWAPP messages */
- DBG_MSG_OUT,
-
- /** Message errors */
- DBG_MSG_ERR,
-
- /** Show message elements */
- DBG_ELEM,
-
- /** Show message element details */
- DBG_ELEM_DETAIL,
-
- /** Error in msg elements */
- DBG_ELEM_ERR,
-
- /** Show subelements */
- DBG_SUBELEM,
-
- /** Show dump of subelements */
- DBG_SUBELEM_DMP,
-
- /** hex dump elements */
- DBG_ELEM_DMP,
-
- /** General infos, like CAPWAP state */
- DBG_INFO,
-
- /** Misc. warnings */
- DBG_WARN,
-
- /** RFC related */
- DBG_RFC,
-
- /** DTLS related messages */
- DBG_DTLS,
-
- /** DTLS BIOs in/out */
- DBG_DTLS_BIO,
-
- /** Dump DTLS BIO i/o */
- DBG_DTLS_BIO_DMP,
-
- /** Show DTLS Details */
- DBG_DTLS_DETAIL,
-
- /** Debug Mods */
- DBG_MOD,
-
- DBG_X
-
-
-};
+#define DBG_LN(level) level,__FILE__,__LINE__
/* driver specific debugs */
@@ -175,6 +102,7 @@ extern struct cw_strlist_elem cw_dbg_strings[];
if (cw_dbg_is_level(type)) cw_dbg_colored(type,__FILE__,__LINE__,__VA_ARGS__)
+
#define cw_dbg_dmp(type,...) cw_dbg_dmp_(type,__FILE__,__LINE__,__VA_ARGS__)
diff --git a/src/cw/dbg_strings.c b/src/cw/dbg_strings.c
index a10b6e65..a1178659 100644
--- a/src/cw/dbg_strings.c
+++ b/src/cw/dbg_strings.c
@@ -23,6 +23,7 @@
//#include
+#include "mbag.h"
#include "dbg.h"
/**
diff --git a/src/cw/dtls_bio.c b/src/cw/dtls_bio.c
index 01c85c90..9279f6de 100644
--- a/src/cw/dtls_bio.c
+++ b/src/cw/dtls_bio.c
@@ -24,7 +24,7 @@
#include
-
+#include "mbag.h"
#include "log.h"
#include "dbg.h"
#include "dtls.h"
diff --git a/src/cw/dtls_gnutls.c b/src/cw/dtls_gnutls.c
index 723f04d7..b6ae0cde 100644
--- a/src/cw/dtls_gnutls.c
+++ b/src/cw/dtls_gnutls.c
@@ -22,6 +22,7 @@
#include
#include
+#include "mbag.h"
#include "dtls_common.h"
#include "dtls_gnutls.h"
diff --git a/src/cw/dtls_gnutls_accept.c b/src/cw/dtls_gnutls_accept.c
index 33ac8a3d..371a6662 100644
--- a/src/cw/dtls_gnutls_accept.c
+++ b/src/cw/dtls_gnutls_accept.c
@@ -24,6 +24,7 @@
#include
+#include "mbag.h"
#include "conn.h"
#include "dbg.h"
#include "log.h"
diff --git a/src/cw/dtls_gnutls_bio.c b/src/cw/dtls_gnutls_bio.c
index 3afc6b16..12e365e9 100644
--- a/src/cw/dtls_gnutls_bio.c
+++ b/src/cw/dtls_gnutls_bio.c
@@ -27,7 +27,7 @@
#include
-
+#include "mbag.h"
#include "dtls.h"
#include "dtls_gnutls.h"
#include "capwap.h"
diff --git a/src/cw/dtls_gnutls_connect.c b/src/cw/dtls_gnutls_connect.c
index 9a9ea80c..00ab2314 100644
--- a/src/cw/dtls_gnutls_connect.c
+++ b/src/cw/dtls_gnutls_connect.c
@@ -23,6 +23,7 @@
#include "gnutls/dtls.h"
+#include "mbag.h"
#include "dtls.h"
#include "dtls_gnutls.h"
diff --git a/src/cw/dtls_gnutls_get_cipher.c b/src/cw/dtls_gnutls_get_cipher.c
index 1b98e11a..161f44c9 100644
--- a/src/cw/dtls_gnutls_get_cipher.c
+++ b/src/cw/dtls_gnutls_get_cipher.c
@@ -1,4 +1,5 @@
+#include "mbag.h"
#include "dtls_common.h"
#include "dtls_gnutls.h"
diff --git a/src/cw/dtls_gnutls_get_peers_cert.c b/src/cw/dtls_gnutls_get_peers_cert.c
index 9a122885..40e25580 100644
--- a/src/cw/dtls_gnutls_get_peers_cert.c
+++ b/src/cw/dtls_gnutls_get_peers_cert.c
@@ -2,6 +2,7 @@
#include
#include
+#include "mbag.h"
#include "conn.h"
#include "dtls.h"
#include "dtls_gnutls.h"
diff --git a/src/cw/dtls_openssl.c b/src/cw/dtls_openssl.c
index c840302e..566f48c0 100644
--- a/src/cw/dtls_openssl.c
+++ b/src/cw/dtls_openssl.c
@@ -21,6 +21,7 @@
#include
#include
+#include "capwap.h"
#include "dtls_openssl.h"
#include "capwap.h"
diff --git a/src/cw/dtls_openssl_accept.c b/src/cw/dtls_openssl_accept.c
index f5952650..39acd240 100644
--- a/src/cw/dtls_openssl_accept.c
+++ b/src/cw/dtls_openssl_accept.c
@@ -18,6 +18,7 @@
#include
+#include "mbag.h"
#include "conn.h"
#include "sock.h"
#include "dtls_openssl.h"
diff --git a/src/cw/dtls_openssl_bio.c b/src/cw/dtls_openssl_bio.c
index d855b37d..c4294c6d 100644
--- a/src/cw/dtls_openssl_bio.c
+++ b/src/cw/dtls_openssl_bio.c
@@ -21,11 +21,13 @@
* @brief Functions for OpenSSL BIO
*/
+#include "mbag.h"
#include
#include
#include "dtls_openssl.h"
#include "dtls.h"
+#include "mbag.h"
#include "conn.h"
#include "log.h"
#include "dbg.h"
diff --git a/src/cw/dtls_openssl_connect.c b/src/cw/dtls_openssl_connect.c
index d4fb414e..f3fe0c8f 100644
--- a/src/cw/dtls_openssl_connect.c
+++ b/src/cw/dtls_openssl_connect.c
@@ -1,5 +1,6 @@
#include
+#include "mbag.h"
#include "dtls_openssl.h"
#include "log.h"
#include "dbg.h"
diff --git a/src/cw/dtls_openssl_get_cipher.c b/src/cw/dtls_openssl_get_cipher.c
index a2d971d0..dc752064 100644
--- a/src/cw/dtls_openssl_get_cipher.c
+++ b/src/cw/dtls_openssl_get_cipher.c
@@ -16,6 +16,7 @@
*/
+#include "mbag.h"
#include "dtls_openssl.h"
const char * dtls_openssl_get_cipher(struct conn * conn)
diff --git a/src/cw/item.c b/src/cw/item.c
index 9f17b989..0aa39779 100644
--- a/src/cw/item.c
+++ b/src/cw/item.c
@@ -16,7 +16,7 @@
*/
-
+#include "mbag.h"
#include "item.h"
#include "log.h"
diff --git a/src/cw/item.h b/src/cw/item.h
index 179b840b..9a883f4c 100644
--- a/src/cw/item.h
+++ b/src/cw/item.h
@@ -20,7 +20,7 @@
#ifndef __CW_ITEM_H
#define __CW_ITEM_H
-#include "mbag.h"
+/*#include "mbag.h"*/
extern const char CW_ITEM_NONE[];
extern const char CW_ITEM_ANY[];
diff --git a/src/cw/log.h b/src/cw/log.h
index f0dc2da1..1f7f567f 100644
--- a/src/cw/log.h
+++ b/src/cw/log.h
@@ -55,12 +55,15 @@
*/
-#ifdef WITH_CW_LOG
-#define cw_log(level,...) cw_log_colored(level,__VA_ARGS__)
-#else
+/*#ifdef WITH_CW_LOG*/
+/*#define cw_log(level,...) cw_log_colored(level,__VA_ARGS__)*/
+
+#define cw_log cw_log_colored
+
+/*#else
#define cw_log(...)
#endif
-
+*/
/*
//#ifdef WITH_CW_LOG_DEBUG
diff --git a/src/cw/lw_addelem.c b/src/cw/lw_addelem.c
index f03a6d4a..06643dd7 100644
--- a/src/cw/lw_addelem.c
+++ b/src/cw/lw_addelem.c
@@ -3,6 +3,7 @@
#include "lwapp.h"
#include "lwapp_cisco.h"
+#include "mbag.h"
#include "lw.h"
#include "vendors.h"
diff --git a/src/cw/lw_checksum.c b/src/cw/lw_checksum.c
index 7f042c4c..d8c1aa3f 100644
--- a/src/cw/lw_checksum.c
+++ b/src/cw/lw_checksum.c
@@ -23,6 +23,7 @@
*@{
*/
+#include "mbag.h"
#include "lw.h"
diff --git a/src/cw/lw_inline.c b/src/cw/lw_inline.c
index a68a2d26..ced2acdb 100644
--- a/src/cw/lw_inline.c
+++ b/src/cw/lw_inline.c
@@ -1,3 +1,4 @@
+#include "mbag.h"
#include "lw.h"
/**
diff --git a/src/cw/lw_put_ac_descriptor.c b/src/cw/lw_put_ac_descriptor.c
index f2bd51cd..9ca2746b 100644
--- a/src/cw/lw_put_ac_descriptor.c
+++ b/src/cw/lw_put_ac_descriptor.c
@@ -1,5 +1,6 @@
#include
+#include "mbag.h"
#include "lwapp.h"
#include "lw.h"
diff --git a/src/cw/lw_put_cisco_path_mtu.c b/src/cw/lw_put_cisco_path_mtu.c
index f6f264ac..74fa74d2 100644
--- a/src/cw/lw_put_cisco_path_mtu.c
+++ b/src/cw/lw_put_cisco_path_mtu.c
@@ -20,7 +20,7 @@
* @file
* @brief Implementation of lw_put_cisco_path_mtu
*/
-
+#include "mbag.h"
#include "lwapp_cisco.h"
#include "lw.h"
#include "vendors.h"
diff --git a/src/cw/lw_put_image_data.c b/src/cw/lw_put_image_data.c
index effcb743..a14bcfbb 100644
--- a/src/cw/lw_put_image_data.c
+++ b/src/cw/lw_put_image_data.c
@@ -1,3 +1,4 @@
+#include "mbag.h"
#include "lwapp.h"
#include "lw.h"
diff --git a/src/cw/lw_put_sockaddr.c b/src/cw/lw_put_sockaddr.c
index 61ea270a..830a4f87 100644
--- a/src/cw/lw_put_sockaddr.c
+++ b/src/cw/lw_put_sockaddr.c
@@ -20,6 +20,8 @@
#include
#include
+
+#include "mbag.h"
#include "lw.h"
int lw_put_sockaddr(uint8_t * dst, struct sockaddr_storage *addr)
diff --git a/src/cw/lw_readelem_wtp_name.c b/src/cw/lw_readelem_wtp_name.c
index a8a80bfe..610fa6a1 100644
--- a/src/cw/lw_readelem_wtp_name.c
+++ b/src/cw/lw_readelem_wtp_name.c
@@ -21,7 +21,7 @@
* @brief Implent lw_readelem_wtp_name
*/
-
+#include "mbag.h"
#include "lwapp.h"
#include "cw_util.h"
diff --git a/src/cw/mavl.h b/src/cw/mavl.h
index 554ec6f1..4faaedc4 100644
--- a/src/cw/mavl.h
+++ b/src/cw/mavl.h
@@ -53,14 +53,22 @@
* @}
*/
-
+union mavldata {
+ void *ptr;
+ uint32_t dword;
+ uint16_t word;
+ uint8_t byte;
+ const char *str;
+};
+typedef union mavldata mavldata_t;
/**
* Defines the structure of an AVL Node.
*/
struct mavlnode {
/** Pointer to data, thant belongs to the node */
- void *data;
+ /* void *data; */
+ union mavldata data;
/** Pointer to left son*/
struct mavlnode *left;
/** Pointer to right son*/
@@ -76,9 +84,9 @@ struct mavl {
/** Pointer to root node */
struct mavlnode *root;
/** Compare function */
- int (*cmp) (const void *, const void *);
+ int (*cmp) (const union mavldata *, const union mavldata *);
/** Delete element function */
- void (*del) (void *);
+ void (*del) (union mavldata *);
/** Number of elements currently stored in the tree */
int count;
};
@@ -93,16 +101,17 @@ typedef struct mavl * mavl_t;
* @defgroup MAVL_FUNCTIONS Functions
* @{
*/
-struct mavl *mavl_create(int (*cmp) (const void *, const void *),
- void (*del) (void *));
+struct mavl *mavl_create(int (*cmp) (const union mavldata *, const union mavldata *),
+ void (*del) (union mavldata *));
void mavlnode_destroy(struct mavl *t, struct mavlnode *n);
void mavl_del_all(struct mavl *t);
-void *mavl_del(struct mavl *t, void *data);
-void *mavl_add(struct mavl *t, void *data);
-void * mavl_get(struct mavl *t ,void *data);
-struct mavlnode *mavl_get_node(struct mavl *t, void *data);
+union mavldata *mavl_del(struct mavl *t, union mavldata *data);
+union mavldata *mavl_add(struct mavl *t, union mavldata *data);
+union mavldata * mavl_get(struct mavl *t ,union mavldata *data);
+struct mavlnode *mavl_get_node(struct mavl *t, union mavldata *data);
+void * mavl_get_ptr(mavl_t tree, void * search);
void mavl_merge(mavl_t m, mavl_t t);
@@ -121,7 +130,7 @@ int mavl_foreach_from_lr(struct mavl *t, struct mavlnode *n, void *data,
void *mavl_replace_data(struct mavl *t, void *data, int len);
-void *mavl_replace(struct mavl *t,void *data);
+union mavldata *mavl_replace(struct mavl *t,union mavldata *data);
void mavl_destroy(struct mavl *t);
@@ -129,6 +138,7 @@ void mavl_destroy(struct mavl *t);
#define mavl_find(t,d) mavl_get(t,d)
+#define mavl_find_ptr(tree,search_ptr) mavl_get_ptr(tree,search_ptr)
#define mavl_insert(t,d) mavl_add(t,d)
@@ -144,22 +154,22 @@ struct mavliter{
struct mavlnode *cur;
int stack_ptr;
struct mavlnode * root;
- int (*cmp) (const void *, const void *);
+ int (*cmp) (const union mavldata *, const union mavldata *);
};
typedef struct mavliter mavliter_t;
-void * mavliter_next(mavliter_t *i);
+union mavldata * mavliter_next(mavliter_t *i);
-void * mavliter_seek_set(struct mavliter *i);
+union mavldata * mavliter_seek_set(struct mavliter *i);
void mavliter_init(mavliter_t *i, mavl_t t);
-void * mavliter_get(mavliter_t *i);
+union mavldata * mavliter_get(mavliter_t *i);
-extern void * mavliter_seek(mavliter_t *i,void *d);
+extern union mavldata * mavliter_seek(mavliter_t *i,void *d);
/**
* Define a AVL Iterator varialble and accociate it with
@@ -182,16 +192,16 @@ extern void * mavliter_seek(mavliter_t *i,void *d);
}
\endcode
*/
-#define MAVLITER_DEFINE(i,t)\
- mavliter_t i; mavliter_init(&i,t)
+#define MAVLITER_DEFINE(iterator,mavl_obj)\
+ mavliter_t iterator; mavliter_init(&iterator,mavl_obj)
/**
* Iterate through all elements of an MAVL Object using a MAVL Iterator.
* @param i pointer to MAVL Interator object
*/
-#define mavliter_foreach(i)\
- for (mavliter_seek_set(i); NULL != mavliter_get(i); mavliter_next(i))
+#define mavliter_foreach(iterator)\
+ for (mavliter_seek_set(iterator); NULL != mavliter_get(iterator); mavliter_next(iterator))
#define mavliter_foreach_from(i,from)\
for (mavliter_seek(i,from); NULL != mavliter_get(i); mavliter_next(i))
@@ -210,7 +220,8 @@ extern void * mavliter_seek(mavliter_t *i,void *d);
typedef mavl_t mavl_conststr_t;
extern mavl_conststr_t mavl_create_conststr();
-
+int mavl_cmp_dword(const union mavldata *e1, const union mavldata *e2);
+void mavl_free_bin(union mavldata *data);
/*
diff --git a/src/cw/mavl_add.c b/src/cw/mavl_add.c
index 92798fdb..e5e2bb21 100644
--- a/src/cw/mavl_add.c
+++ b/src/cw/mavl_add.c
@@ -1,6 +1,7 @@
#include "mavl.h"
-static struct mavlnode *mavlnode_create(void *data)
+
+static struct mavlnode *mavlnode_create(union mavldata *data)
{
struct mavlnode *n = malloc(sizeof(struct mavlnode));
if (!n)
@@ -8,20 +9,19 @@ static struct mavlnode *mavlnode_create(void *data)
n->left = n->right = 0;
n->bal = 0;
- n->data = data;
+ n->data = *data;
return n;
}
-static int mavl_add0(struct mavl *t, struct mavlnode **parent, void **data)
+static int mavl_add0(struct mavl *t, struct mavlnode **parent, union mavldata * data)
{
-// struct mavlnode * rn;
struct mavlnode *tmp;
struct mavlnode *n = *parent;
- int rc = t->cmp(*data, n->data);
+ int rc = t->cmp(data, &n->data);
int bal;
if (rc == 0) {
@@ -71,8 +71,6 @@ static int mavl_add0(struct mavl *t, struct mavlnode **parent, void **data)
return 0;
}
- //printf("!!!!left bal = %i\n",n->left->bal);
- //exit(0);
}
return bal;
@@ -80,7 +78,7 @@ static int mavl_add0(struct mavl *t, struct mavlnode **parent, void **data)
}
/* n->left is 0 */
- n->left = mavlnode_create(*data);
+ n->left = mavlnode_create(data);
if (!n->left)
return 3;
@@ -139,9 +137,6 @@ static int mavl_add0(struct mavl *t, struct mavlnode **parent, void **data)
n->right = tmp;
return 0;
}
- //printf("!!!!iright bal = %i\n",n->left->bal);
- //exit(0);
-
}
return bal;
@@ -150,7 +145,7 @@ static int mavl_add0(struct mavl *t, struct mavlnode **parent, void **data)
/* n->right is 0 */
- n->right = mavlnode_create(*data);
+ n->right = mavlnode_create(data);
if (!n->right)
return 3;
@@ -171,16 +166,21 @@ static int mavl_add0(struct mavl *t, struct mavlnode **parent, void **data)
* @data pointer to element
* @return added alement or NULL if error.
*/
-void *mavl_add(struct mavl *t, void *data)
+union mavldata *mavl_add(struct mavl *t, union mavldata *data)
{
+ union mavldata * d;
+ int rc;
+
if (t->root == 0) {
t->root = mavlnode_create(data);
if (t->root)
t->count++;
- return t->root->data;
+ return &t->root->data;
}
- void *d = data;
- int rc = mavl_add0(t, &t->root, &d);
+
+ d = data;
+
+ rc = mavl_add0(t, &t->root, d);
if (rc > 3)
return NULL;
diff --git a/src/cw/mavl_cmp_dword.c b/src/cw/mavl_cmp_dword.c
new file mode 100644
index 00000000..1b37caf7
--- /dev/null
+++ b/src/cw/mavl_cmp_dword.c
@@ -0,0 +1,5 @@
+#include "mavl.h"
+
+int mavl_cmp_dword(const union mavldata *e1, const union mavldata *e2){
+ return e1->dword - e2->dword;
+}
diff --git a/src/cw/mavl_create.c b/src/cw/mavl_create.c
index 3720a9ff..64660727 100644
--- a/src/cw/mavl_create.c
+++ b/src/cw/mavl_create.c
@@ -30,8 +30,8 @@
* @param del pointer to delete function which is called when an element will be deletet
* @return pointer to an #mavl struct
*/
-struct mavl *mavl_create(int (*cmp) (const void *, const void *),
- void (*del) (void *))
+ struct mavl *mavl_create(int (*cmp) (const union mavldata *, const union mavldata *),
+ void (*del) (union mavldata *))
{
struct mavl *t = malloc(sizeof(struct mavl));
if (!t)
diff --git a/src/cw/mavl_del.c b/src/cw/mavl_del.c
index 9a35b752..3576dacf 100644
--- a/src/cw/mavl_del.c
+++ b/src/cw/mavl_del.c
@@ -3,7 +3,7 @@
void mavlnode_destroy(struct mavl *t, struct mavlnode *n)
{
if (t->del) {
- t->del(n->data);
+ t->del(&n->data);
}
free(n);
t->count--;
@@ -11,7 +11,6 @@ void mavlnode_destroy(struct mavl *t, struct mavlnode *n)
-
static void rot_rl(struct mavlnode *n, struct mavlnode **parent)
{
struct mavlnode *tmp;
@@ -70,16 +69,12 @@ static int adj_bal_l(struct mavlnode *n, struct mavlnode **parent)
rot_l(n, parent);
return 0;
} else if (n->right->bal == -1) {
-// int rb;
n->bal = 0;
n->right->bal = 0;
-// rb = n->right->left->bal;
n->right->left->bal = 0;
rot_rl(n, parent);
return 1;
}
-// printf("adj bal l not handled \n");
-// exit(0);
return -11; /* that should never happen */
}
@@ -98,16 +93,12 @@ static int adj_bal_r(struct mavlnode *n, struct mavlnode **parent)
rot_r(n, parent);
return 0;
} else if (n->left->bal == 1) {
-// int rb;
n->bal = 0;
n->left->bal = 0;
-// rb = n->left->right->bal;
n->left->right->bal = 0;
rot_lr(n, parent);
return 1;
}
-// printf("adj bal li left not handled \n");
-// exit(0);
return -11; /* that should never happen */
}
@@ -116,7 +107,7 @@ static int adj_bal_r(struct mavlnode *n, struct mavlnode **parent)
-static int mavl_del_lo(struct mavlnode **parent, void **data)
+static int mavl_del_lo(struct mavlnode **parent, union mavldata *data)
{
struct mavlnode *n = *parent;
@@ -152,12 +143,12 @@ static int mavl_del_lo(struct mavlnode **parent, void **data)
-int mavl_del0(struct mavl *t, struct mavlnode **parent, void **data)
+int mavl_del0(struct mavl *t, struct mavlnode **parent, union mavldata *data)
{
struct mavlnode *n = *parent;
int rc;
int bal;
- rc = t->cmp(*data, n->data);
+ rc = t->cmp(data, &n->data);
if (rc == 0) {
if (n->right == 0 && n->left == 0) {
@@ -183,7 +174,7 @@ int mavl_del0(struct mavl *t, struct mavlnode **parent, void **data)
/* node has two childs */
if (t->del) {
- t->del(n->data);
+ t->del(&n->data);
}
t->count--;
bal = mavl_del_lo(&n->right, &n->data);
@@ -237,13 +228,16 @@ int mavl_del0(struct mavl *t, struct mavlnode **parent, void **data)
}
-void *mavl_del(struct mavl *t, void *data)
+union mavldata *mavl_del(struct mavl *t, union mavldata *data)
{
+ union mavldata *d;
+ int rc;
+
if (!t->root)
return NULL;
- void *d = data;
- int rc = mavl_del0(t, &t->root, &d);
+ d = data;
+ rc = mavl_del0(t, &t->root, d);
if (rc == 2)
return NULL;
return data;
diff --git a/src/cw/mavl_foreach.c b/src/cw/mavl_foreach.c
index 49930ad7..39a53bb5 100644
--- a/src/cw/mavl_foreach.c
+++ b/src/cw/mavl_foreach.c
@@ -24,7 +24,7 @@ int mavl_foreach_rl(struct mavlnode *n, int (*callback)(void *,void *),void *cbp
return 1;
if (!mavl_foreach_rl(n->right,callback,cbpriv))
return 0;
- if (!callback(cbpriv,n->data))
+ if (!callback(cbpriv,&n->data))
return 0;
return mavl_foreach_rl(n->left,callback,cbpriv);
}
diff --git a/src/cw/mavl_foreach_lr.c b/src/cw/mavl_foreach_lr.c
index cb1fbf5d..cb01eb6a 100644
--- a/src/cw/mavl_foreach_lr.c
+++ b/src/cw/mavl_foreach_lr.c
@@ -8,7 +8,7 @@ int mavl_foreach_lr(struct mavlnode *n, int (*callback)(void *,void *),void *cbp
return 1;
if (!mavl_foreach_lr(n->left,callback,cbpriv))
return 0;
- if (!callback(cbpriv,n->data))
+ if (!callback(cbpriv,&n->data))
return 0;
return mavl_foreach_lr(n->right,callback,cbpriv);
diff --git a/src/cw/mavl_get.c b/src/cw/mavl_get.c
index fe88d672..58f528b0 100644
--- a/src/cw/mavl_get.c
+++ b/src/cw/mavl_get.c
@@ -29,13 +29,13 @@
* @param data Element to get
* @return pointer to element or NULL if not found.
*/
-void * mavl_get(struct mavl *t ,void *data)
+union mavldata * mavl_get(struct mavl *t ,union mavldata *data)
{
struct mavlnode *n = t->root;
while(n){
- int rc=t->cmp(data,n->data);
+ int rc=t->cmp(data,&n->data);
if (rc==0)
- return n->data;
+ return &n->data;
if (rc<0)
n=n->left;
else
diff --git a/src/cw/mavl_get_node.c b/src/cw/mavl_get_node.c
index e9aa543f..220dab3e 100644
--- a/src/cw/mavl_get_node.c
+++ b/src/cw/mavl_get_node.c
@@ -22,11 +22,11 @@
#include "mavl.h"
-struct mavlnode * mavl_get_node(struct mavl *t ,void *data)
+struct mavlnode * mavl_get_node(struct mavl *t ,union mavldata *data)
{
struct mavlnode *n = t->root;
while(n){
- int rc=t->cmp(data,n->data);
+ int rc=t->cmp(data,&n->data);
if (rc==0)
return n;
if (rc<0)
diff --git a/src/cw/mavl_get_ptr.c b/src/cw/mavl_get_ptr.c
new file mode 100644
index 00000000..3ea7b3b0
--- /dev/null
+++ b/src/cw/mavl_get_ptr.c
@@ -0,0 +1,11 @@
+#include "mavl.h"
+
+void * mavl_get_ptr(mavl_t tree, void * search)
+{
+ mavldata_t search_data, *result;
+ search_data.ptr=search;
+ result = mavl_find(tree,&search_data);
+ if (result)
+ return result->ptr;
+ return NULL;
+}
diff --git a/src/cw/mavl_merge.c b/src/cw/mavl_merge.c
index 2d2b9124..bca003ac 100644
--- a/src/cw/mavl_merge.c
+++ b/src/cw/mavl_merge.c
@@ -25,18 +25,17 @@
* @{
*/
-
static void mavlnode_move(mavl_t m,mavl_t t, struct mavlnode *n)
{
- struct mavlnode * mn = mavl_get_node(m,n->data);
+ struct mavlnode * mn = mavl_get_node(m,&n->data);
if (mn) {
if (m->del) {
- m->del(mn->data);
+ m->del(&mn->data);
}
mn->data=n->data;
}
else{
- mavl_add(m,n->data);
+ mavl_add(m,&n->data);
}
free(n);
diff --git a/src/cw/mavl_replace.c b/src/cw/mavl_replace.c
index c6ea7037..d26bd51f 100644
--- a/src/cw/mavl_replace.c
+++ b/src/cw/mavl_replace.c
@@ -1,10 +1,11 @@
#include "mavl.h"
-void *mavl_replace(struct mavl *t,void *data){
+union mavldata *mavl_replace(struct mavl *t,union mavldata *data){
struct mavlnode * node = mavl_get_node(t,data);
if (node){
- t->del(node->data);
- return node->data=data;
+ t->del(&node->data);
+ node->data=*data;
+ return &node->data;
}
return mavl_add(t,data);
}
diff --git a/src/cw/mavliter_get.c b/src/cw/mavliter_get.c
index 66818d97..df233a06 100644
--- a/src/cw/mavliter_get.c
+++ b/src/cw/mavliter_get.c
@@ -5,10 +5,10 @@
* @param i AVL Iterator
* @return element or NULL if not found.
*/
-void * mavliter_get(mavliter_t *i){
+union mavldata * mavliter_get(mavliter_t *i){
if(!i->cur)
return NULL;
- return i->cur->data;
+ return &i->cur->data;
}
diff --git a/src/cw/mavliter_next.c b/src/cw/mavliter_next.c
index 30960ca9..151d1567 100644
--- a/src/cw/mavliter_next.c
+++ b/src/cw/mavliter_next.c
@@ -28,7 +28,8 @@
* @param i pointer to AVL Iterator
* @return the element or NULL if there is no next elemeent.
*/
-void * mavliter_next(mavliter_t *i)
+
+union mavldata * mavliter_next(mavliter_t *i)
{
while ( i->stack_ptr) {
@@ -39,7 +40,7 @@ void * mavliter_next(mavliter_t *i)
continue;
if ((i->stack_ptr)&1) {
- return i->cur->data;
+ return &i->cur->data;
}
break;
@@ -63,7 +64,7 @@ void * mavliter_next(mavliter_t *i)
i->stack[i->stack_ptr++]=i->cur->right;
- return i->cur->data;
+ return &i->cur->data;
}
diff --git a/src/cw/mavliter_seek.c b/src/cw/mavliter_seek.c
index 61a64a0e..c3b14248 100644
--- a/src/cw/mavliter_seek.c
+++ b/src/cw/mavliter_seek.c
@@ -24,24 +24,26 @@
#include "mavl.h"
+
/**
* Set an AVL Iterator to a specific position.
* @param i AVL Iterator
* @param d element to search for
* @return element found or NULL if not found
*/
-void * mavliter_seek(mavliter_t *i,void *d)
+union mavldata * mavliter_seek(mavliter_t *i,void *d)
{
+ int rc;
if (!i->root)
return NULL;
i->cur=i->root;
i->stack_ptr=0;
- int rc;
+
while(i->cur) {
- rc = i->cmp(d,i->cur->data);
+ rc = i->cmp(d,&i->cur->data);
if (rc==0){
i->stack[i->stack_ptr++]=i->cur->right;
i->stack[i->stack_ptr++]=i->cur;
diff --git a/src/cw/mavliter_seek_set.c b/src/cw/mavliter_seek_set.c
index ca634c72..e5fbb6b1 100644
--- a/src/cw/mavliter_seek_set.c
+++ b/src/cw/mavliter_seek_set.c
@@ -1,6 +1,6 @@
#include "mavl.h"
-void * mavliter_seek_set(struct mavliter *i)
+union mavldata * mavliter_seek_set(struct mavliter *i)
{
i->stack_ptr=0;
i->cur=i->root;
diff --git a/src/cw/mbag.c b/src/cw/mbag.c
index 1cad9b86..dec019c2 100644
--- a/src/cw/mbag.c
+++ b/src/cw/mbag.c
@@ -107,7 +107,7 @@ static void mbag_type_mbag_del(void *i)
static void mbag_del_data(struct mbag_item *i)
{
if (i->type->del) {
- i->type->del(i->data);
+ i->type->del(i->u2.data);
}
}
@@ -116,7 +116,7 @@ static void mbag_del_fun(void *e)
{
mbag_item_t * i = (mbag_item_t*)e;
if (i->dynid){
- free((void*)i->id);
+ free((void*)i->u1.id);
}
mbag_del_data(e);
@@ -134,14 +134,14 @@ static void mbag_i_del_fun(void *e)
static int mbag_cmp_fun(const void *x1, const void *x2)
{
- return strcmp(( (struct mbag_item *) x1)->id , ((struct mbag_item *) x2)->id );
+ return strcmp(( (struct mbag_item *) x1)->u1.id , ((struct mbag_item *) x2)->u1.id );
}
static int mbag_i_cmp_fun(const void *x1, const void *x2)
{
- return ((struct mbag_item *) x1)->iid - ((struct mbag_item *) x2)->iid;
+ return ((struct mbag_item *) x1)->u1.iid - ((struct mbag_item *) x2)->u1.iid;
}
mbag_t mbag_i_create()
@@ -172,7 +172,7 @@ mbag_item_t *mbag_item_new(mbagtype_t type)
struct mbag_item *mbag_item_create(mbag_t s, const char *id)
{
struct mbag_item is;
- is.id = id;
+ is.u1.id = id;
struct mbag_item *i = mavl_get(s, &is);
@@ -184,7 +184,7 @@ struct mbag_item *mbag_item_create(mbag_t s, const char *id)
i = malloc(sizeof(struct mbag_item));
if (!i)
return NULL;
- i->id = id;
+ i->u1.id = id;
i->dynid=0;
return mavl_add(s, i);
}
@@ -193,7 +193,7 @@ struct mbag_item *mbag_item_create(mbag_t s, const char *id)
struct mbag_item *mbag_i_item_create(mbag_t s, uint32_t id)
{
struct mbag_item is;
- is.iid = id;
+ is.u1.iid = id;
struct mbag_item *i = mavl_get(s, &is);
@@ -205,7 +205,7 @@ struct mbag_item *mbag_i_item_create(mbag_t s, uint32_t id)
i = malloc(sizeof(struct mbag_item));
if (!i)
return NULL;
- i->iid = id;
+ i->u1.iid = id;
i->dynid=0;
return mavl_add(s, i);
}
@@ -271,7 +271,7 @@ int mbag_set_byte(mbag_t s, const char *id, uint8_t byte)
struct mbag_item *i = mbag_item_create(s, id);
if (!i)
return 0;
- i->byte = byte;
+ i->u2.byte = byte;
i->type = &mbag_type_byte;
return 1;
}
@@ -281,7 +281,7 @@ struct mbag_item * mbag_set_word(mbag_t s, const char *id, uint16_t word)
struct mbag_item *i = mbag_item_create(s, id);
if (!i)
return 0;
- i->word = word;
+ i->u2.word = word;
i->type = &mbag_type_word;
return i;
}
@@ -294,7 +294,7 @@ struct mbag_item * mbag_set_dword(mbag_t s, const char *id, uint32_t dword)
struct mbag_item *i = mbag_item_create(s, id);
if (!i)
return NULL;
- i->dword = dword;
+ i->u2.dword = dword;
i->type = &mtype_dword;
return i;
}
@@ -305,7 +305,7 @@ int mbag_i_set_mbag(mbag_t s, uint32_t id, mbag_t mbag)
struct mbag_item *i = mbag_i_item_create(s, id);
if (!i)
return 0;
- i->data = mbag;
+ i->u2.data = mbag;
i->type = &mbag_type_mbag;
return 1;
}
@@ -315,7 +315,7 @@ int mbag_set_mbag(mbag_t s, const char *id, mbag_t mbag)
struct mbag_item *i = mbag_item_create(s, id);
if (!i)
return 0;
- i->data = mbag;
+ i->u2.data = mbag;
i->type = &mbag_type_mbag;
return 1;
}
@@ -325,7 +325,7 @@ int mbag_set_data(mbag_t s, const char *id, const struct mbag_typedef *type, voi
struct mbag_item *i = mbag_item_create(s, id);
if (!i)
return 0;
- i->data = data;
+ i->u2.data = data;
i->type = type;
return 1;
@@ -341,8 +341,8 @@ bstrv_t mbag_set_bstrv(mbag_t s, const char *id, uint32_t vendor_id,
return NULL;
i->type = MBAG_VENDORSTR;
- i->data = bstrv_create(vendor_id,version,len);
- return i->data;
+ i->u2.data = bstrv_create(vendor_id,version,len);
+ return i->u2.data;
}
@@ -360,7 +360,7 @@ bstrv_t mbag_set_bstrv(mbag_t s, const char *id, uint32_t vendor_id,
mbag_item_t *mbag_get(mbag_t s, const char *id)
{
mbag_item_t i;
- i.id = id;
+ i.u1.id = id;
i.type=0;
return mavl_get(s, &i);
}
@@ -369,7 +369,7 @@ mbag_item_t *mbag_get(mbag_t s, const char *id)
mbag_item_t *mbag_i_get(mbag_t s, uint32_t id)
{
mbag_item_t i;
- i.iid = id;
+ i.u1.iid = id;
i.type=0;
return mavl_get(s, &i);
}
@@ -379,7 +379,7 @@ mbag_item_t *mbag_i_get(mbag_t s, uint32_t id)
void mbag_del(mbag_t s,const char *id)
{
mbag_item_t i;
- i.id = id;
+ i.u1.id = id;
i.type=0;
mavl_del(s, &i);
}
@@ -391,7 +391,7 @@ void * mbag_get_data(mbag_t s, const char *id, const struct mbag_typedef * type,
return def;
if (i->type != type)
return def;
- return i->data;
+ return i->u2.data;
}
@@ -423,7 +423,7 @@ void * mbag_get_raw(mbag_t s, const char *id, void * def)
struct mbag_item *i = mbag_get(s, id);
if (!i)
return def;
- return i->data;
+ return i->u2.data;
}
@@ -435,7 +435,7 @@ uint8_t mbag_get_byte(mbag_t s, const char *id, uint8_t def)
return def;
if (i->type != MBAG_BYTE)
return def;
- return i->byte;
+ return i->u2.byte;
}
uint16_t mbag_get_word(mbag_t s, const char *id, uint16_t def)
@@ -445,7 +445,7 @@ uint16_t mbag_get_word(mbag_t s, const char *id, uint16_t def)
return def;
if (i->type != MBAG_WORD)
return def;
- return i->word;
+ return i->u2.word;
}
@@ -457,7 +457,7 @@ uint32_t mbag_get_dword(mbag_t s, const char *id, uint32_t def)
return def;
if (i->type != MTYPE_DWORD)
return def;
- return i->dword;
+ return i->u2.dword;
}
@@ -468,7 +468,7 @@ mbag_t mbag_i_get_mbag(mbag_t s, uint32_t id, mbag_t def)
return def;
if (i->type != MBAG_MBAG)
return def;
- return i->data;
+ return i->u2.data;
}
@@ -479,7 +479,7 @@ mbag_t mbag_get_mbag(mbag_t s, const char *id, mbag_t def)
return def;
if (i->type != MBAG_MBAG)
return def;
- return i->data;
+ return i->u2.data;
}
mbag_item_t * mbag_set_bstrn(mbag_t s, const char *id, uint8_t * data, int len)
@@ -488,7 +488,7 @@ mbag_item_t * mbag_set_bstrn(mbag_t s, const char *id, uint8_t * data, int len)
if (!i)
return NULL;
i->type = MBAG_BSTR;
- i->data = bstr_create(data, len);
+ i->u2.data = bstr_create(data, len);
return i;
}
@@ -502,7 +502,7 @@ struct mavl *mbag_get_mavl(mbag_t s, const char *id)
return NULL;
if (i->type != MBAG_AVLTREE)
return NULL;
- return i->data;
+ return i->u2.data;
}
int mbag_i_set_mavl(mbag_t s, uint32_t id, mavl_t t)
@@ -511,7 +511,7 @@ int mbag_i_set_mavl(mbag_t s, uint32_t id, mavl_t t)
if (!i)
return 0;
i->type = MBAG_AVLTREE;
- i->data = t;
+ i->u2.data = t;
return 1;
}
@@ -521,7 +521,7 @@ int mbag_set_mavl(mbag_t s, const char *id, mavl_t t)
if (!i)
return 0;
i->type = MBAG_AVLTREE;
- i->data = t;
+ i->u2.data = t;
return 1;
}
@@ -547,7 +547,7 @@ mavl_t mbag_get_mavl_c(mbag_t s, const char *id,
{
struct mbag_item *i = mbag_get(s, id);
if (i)
- return i->data;
+ return i->u2.data;
if (!creator)
return NULL;
@@ -564,7 +564,7 @@ mavl_t mbag_get_mbag_c(mbag_t s, const char *id,
{
struct mbag_item *i = mbag_get(s, id);
if (i)
- return i->data;
+ return i->u2.data;
if (!creator)
return NULL;
@@ -591,7 +591,7 @@ mavl_t mbag_i_get_mbag_c(mbag_t s, uint32_t iid,
{
struct mbag_item *i = mbag_i_get(s, iid);
if (i)
- return i->data;
+ return i->u2.data;
if (!creator)
return NULL;
@@ -610,7 +610,7 @@ mavl_t mbag_i_get_mavl(mbag_t s, uint32_t id,
{
struct mbag_item *i = mbag_i_get(s, id);
if (i)
- return i->data;
+ return i->u2.data;
if (!creator)
return NULL;
@@ -646,7 +646,7 @@ char *mbag_get_str(mbag_t s, const char *id, char *def)
struct mbag_item *i = mbag_get(s, id);
if (!i)
return def;
- return i->data;
+ return i->u2.data;
};
@@ -656,7 +656,7 @@ int mbag_set_str(mbag_t s, const char *id, const char *str)
if (!i)
return 0;
i->type = MBAG_STR;
- i->data = strdup(str);
+ i->u2.data = strdup(str);
return 1;
}
@@ -673,7 +673,7 @@ int mbag_set_sockaddr(mbag_t s, const char *id, const struct sockaddr * sa)
}
sock_copyaddr(sad,sa);
i->type = MBAG_SOCKADDR;
- i->data = sad;
+ i->u2.data = sad;
return 1;
}
@@ -712,12 +712,12 @@ void *mbag_item_get_data_ptr(struct mbag_item *item)
if (item->type == MBAG_FUN )
{
struct mbag_item_fundef *fundef =
- (struct mbag_item_fundef *) item->data;
+ (struct mbag_item_fundef *) item->u2.data;
if (!fundef)
return NULL;
return fundef->get(fundef->arg);
}
- return item->data;
+ return item->u2.data;
}
@@ -726,7 +726,7 @@ void mbag_item_release_data_ptr(struct mbag_item *item, void *data)
if (item->type == MBAG_FUN)
{
struct mbag_item_fundef *fundef =
- (struct mbag_item_fundef *) item->data;
+ (struct mbag_item_fundef *) item->u2.data;
if (!fundef)
return;
if (!fundef->free)
@@ -743,7 +743,7 @@ int mbag_set_strn(mbag_t s, const char *id, const char *str, int n)
if (!i)
return 0;
i->type = MBAG_STR;
- i->data = strndup(str, n);
+ i->u2.data = strndup(str, n);
return 1;
}
@@ -753,7 +753,7 @@ int mbag_set_bstr16n(mbag_t s, const char *id, uint8_t * data, int len)
if (!i)
return 0;
i->type = MBAG_BSTR16;
- i->data = bstr16_create(data, len);
+ i->u2.data = bstr16_create(data, len);
return 1;
}
@@ -765,7 +765,7 @@ mbag_item_t * mbag_set_const_ptr(mbag_t s, const char *id, void *ptr)
if (!i)
return 0;
i->type = MBAG_CONST_DATA;
- i->data = ptr;
+ i->u2.data = ptr;
return i;
}
@@ -776,7 +776,7 @@ int mbag_set_ptr(mbag_t s, const char *id, void *ptr)
if (!i)
return 0;
i->type = MBAG_PTR;
- i->data = ptr;
+ i->u2.data = ptr;
return 1;
}
@@ -791,7 +791,7 @@ int mbag_set_fun(mbag_t s, const char *id,
return 0;
struct mbag_item_fundef *fundef = malloc(sizeof(struct mbag_item_fundef));
- i->data = fundef;
+ i->u2.data = fundef;
if (!fundef)
return 0;
diff --git a/src/cw/mbag.h b/src/cw/mbag.h
index 6213fd83..c5969e21 100644
--- a/src/cw/mbag.h
+++ b/src/cw/mbag.h
@@ -87,7 +87,7 @@ struct mbag_item{
* create mbags.
*/
const char *id;
- };
+ }u1;
/**
* Indicates if the key is dynamic oder static.
* If dynamic, the id will be freed using free,
@@ -102,7 +102,7 @@ struct mbag_item{
uint8_t byte;
uint16_t word;
uint32_t dword;
- };
+ }u2;
};
diff --git a/src/cw/mbag_set_from_buf.c b/src/cw/mbag_set_from_buf.c
index 32cd034c..6029ac36 100644
--- a/src/cw/mbag_set_from_buf.c
+++ b/src/cw/mbag_set_from_buf.c
@@ -40,7 +40,7 @@ int mbag_set_from_buf(mbag_t dst, mbagtype_t type, const char *item_id, uint8_t
struct mbag_item * item = type->get(data,len);
if (!item)
return 0;
- item->id=item_id;
+ item->u1.id=item_id;
mbag_set(dst,item);
return 1;
diff --git a/src/cw/mbag_type_bstr16.c b/src/cw/mbag_type_bstr16.c
index 4c2bc54b..bfee2b18 100644
--- a/src/cw/mbag_type_bstr16.c
+++ b/src/cw/mbag_type_bstr16.c
@@ -9,14 +9,14 @@ static int to_str(void *item,char *dst)
mbag_item_t *i= item;
char *d = dst;
- int utf8 = format_is_utf8(bstr16_data(i->data), bstr16_len(i->data));
+ int utf8 = format_is_utf8(bstr16_data(i->u2.data), bstr16_len(i->u2.data));
if (utf8) {
- d += sprintf(d, "%.*s", bstr16_len(i->data), bstr16_data(i->data));
+ d += sprintf(d, "%.*s", bstr16_len(i->u2.data), bstr16_data(i->u2.data));
} else {
d += sprintf(d, ".x");
- d += format_hex(d, bstr16_data(i->data), bstr16_len(i->data));
+ d += format_hex(d, bstr16_data(i->u2.data), bstr16_len(i->u2.data));
}
return d-dst;
}
@@ -27,15 +27,15 @@ static struct mbag_item * from_str(const char *src)
mbag_item_t * i = mbag_item_new(MBAG_BSTR16);
if (!i)
return NULL;
- i->data=bstr16_create_from_str(src);
+ i->u2.data=bstr16_create_from_str(src);
return i;
}
int put(struct mbag_item *i, uint8_t *dst)
{
- int l = bstr16_len(i->data);
- memcpy(dst,bstr16_data(i->data),l);
+ int l = bstr16_len(i->u2.data);
+ memcpy(dst,bstr16_data(i->u2.data),l);
return l;
}
@@ -44,7 +44,7 @@ static struct mbag_item * get(const uint8_t *src, int len)
mbag_item_t * i = mbag_item_new(MBAG_BSTR16);
if (!i)
return NULL;
- i->data=bstr16_create(src,len);
+ i->u2.data=bstr16_create(src,len);
return i;
}
diff --git a/src/cw/mbag_type_byte.c b/src/cw/mbag_type_byte.c
index 8cc2f4a9..2e94f77f 100644
--- a/src/cw/mbag_type_byte.c
+++ b/src/cw/mbag_type_byte.c
@@ -25,14 +25,14 @@ static struct mbag_item * from_str(const char *src)
mbag_item_t * i = mbag_item_new(MBAG_BYTE);
if (!i)
return NULL;
- i->byte=atoi(src);
+ i->u2.byte=atoi(src);
return i;
}
static int to_str(void *item,char *dst)
{
mbag_item_t *i= item;
- return sprintf(dst, "%d", i->byte);
+ return sprintf(dst, "%d", i->u2.byte);
}
static struct mbag_item * get(const uint8_t *src,int len)
@@ -40,14 +40,14 @@ static struct mbag_item * get(const uint8_t *src,int len)
mbag_item_t * item = mbag_item_new(MBAG_BYTE);
if (!item)
return NULL;
- item->byte=*src;
+ item->u2.byte=*src;
return item;
}
static int put(struct mbag_item * i, uint8_t *dst)
{
- return cw_put_byte(dst,i->byte);
+ return cw_put_byte(dst,i->u2.byte);
}
/** Defines a word, two bytes. */
diff --git a/src/cw/mbag_type_data.c b/src/cw/mbag_type_data.c
index 21890962..2248356b 100644
--- a/src/cw/mbag_type_data.c
+++ b/src/cw/mbag_type_data.c
@@ -9,7 +9,7 @@
static int to_str(void *item,char *dst)
{
mbag_item_t *i= item;
- return format_hex(dst, ((uint8_t*)i->data)+1, *((uint8_t*)i->data));
+ return format_hex(dst, ((uint8_t*)i->u2.data)+1, *((uint8_t*)i->u2.data));
}
@@ -31,7 +31,7 @@ static struct mbag_item * from_str(const char *src)
*(mem)=msize;
format_scan_hex_bytes(mem+1,src,l);
- i->data=mem;
+ i->u2.data=mem;
return i;
}
@@ -50,14 +50,14 @@ static struct mbag_item * get(const uint8_t *src,int len)
}
*data=len;
memcpy(data+1,src,len);
- item->data=data;
+ item->u2.data=data;
return item;
}
static int put(struct mbag_item *i,uint8_t *dst)
{
- int l = *((uint8_t*)i->data);
- memcpy(dst,i->data+1,l);
+ int l = *((uint8_t*)i->u2.data);
+ memcpy(dst,i->u2.data+1,l);
return l;
}
diff --git a/src/cw/mbag_type_dword.c b/src/cw/mbag_type_dword.c
index f9a9885c..221ddd0f 100644
--- a/src/cw/mbag_type_dword.c
+++ b/src/cw/mbag_type_dword.c
@@ -25,14 +25,14 @@ static struct mbag_item * from_str(const char *src)
mbag_item_t * i = mbag_item_new(MTYPE_DWORD);
if (!i)
return NULL;
- i->dword=atoi(src);
+ i->u2.dword=atoi(src);
return i;
}
static int to_str(void *item,char *dst)
{
mbag_item_t *i= item;
- return sprintf(dst, "%d", i->dword);
+ return sprintf(dst, "%d", i->u2.dword);
}
static struct mbag_item * get(const uint8_t *src,int len)
@@ -40,14 +40,14 @@ static struct mbag_item * get(const uint8_t *src,int len)
mbag_item_t * item = mbag_item_new(MTYPE_DWORD);
if (!item)
return NULL;
- item->dword=cw_get_dword(src);
+ item->u2.dword=cw_get_dword(src);
return item;
}
static int put(struct mbag_item * i, uint8_t *dst)
{
- return cw_put_dword(dst,i->dword);
+ return cw_put_dword(dst,i->u2.dword);
}
diff --git a/src/cw/mbag_type_str.c b/src/cw/mbag_type_str.c
index 440a291b..9ab54440 100644
--- a/src/cw/mbag_type_str.c
+++ b/src/cw/mbag_type_str.c
@@ -3,7 +3,7 @@
static int to_str(void *item,char *dst)
{
mbag_item_t *i= item;
- return sprintf(dst, "%s", (char*)i->data);
+ return sprintf(dst, "%s", (char*)i->u2.data);
}
static struct mbag_item * from_str(const char *src)
@@ -14,7 +14,7 @@ static struct mbag_item * from_str(const char *src)
i->type = MBAG_STR;
i->dynid=0;
- i->data = strndup(src,2000);
+ i->u2.data = strndup(src,2000);
return i;
}
diff --git a/src/cw/mbag_type_vendorstr.c b/src/cw/mbag_type_vendorstr.c
index fd842df8..c7234271 100644
--- a/src/cw/mbag_type_vendorstr.c
+++ b/src/cw/mbag_type_vendorstr.c
@@ -33,14 +33,14 @@ static int to_str(void *item,char *dst)
mbag_item_t *i= item;
char *d=dst;
- d+=sprintf(d,"%d,",bstrv_get_vendor_id(i->data));
+ d+=sprintf(d,"%d,",bstrv_get_vendor_id(i->u2.data));
- if (format_is_utf8(bstrv_data(i->data), bstrv_len(i->data))) {
- d += sprintf(d, "%.*s", bstrv_len(i->data),
- bstrv_data(i->data));
+ if (format_is_utf8(bstrv_data(i->u2.data), bstrv_len(i->u2.data))) {
+ d += sprintf(d, "%.*s", bstrv_len(i->u2.data),
+ bstrv_data(i->u2.data));
} else {
d += sprintf(d, ".x");
- d += format_hex(d, bstrv_data(i->data), bstrv_len(i->data));
+ d += format_hex(d, bstrv_data(i->u2.data), bstrv_len(i->u2.data));
}
return d-dst;
@@ -58,10 +58,10 @@ static struct mbag_item * from_str(const char *src)
if (s){
- i->data=bstrv_create_from_str(vendor_id,s+1);
+ i->u2.data=bstrv_create_from_str(vendor_id,s+1);
}
else{
- i->data=bstrv_create_from_str(vendor_id,"");
+ i->u2.data=bstrv_create_from_str(vendor_id,"");
}
return i;
diff --git a/src/cw/mbag_type_word.c b/src/cw/mbag_type_word.c
index acd820e4..de72c407 100644
--- a/src/cw/mbag_type_word.c
+++ b/src/cw/mbag_type_word.c
@@ -25,14 +25,14 @@ static struct mbag_item * from_str(const char *src)
mbag_item_t * i = mbag_item_new(MBAG_WORD);
if (!i)
return NULL;
- i->word=atoi(src);
+ i->u2.word=atoi(src);
return i;
}
static int to_str(void *item,char *dst)
{
mbag_item_t *i= item;
- return sprintf(dst, "%d", i->word);
+ return sprintf(dst, "%d", i->u2.word);
}
static struct mbag_item * get(const uint8_t *src,int len)
@@ -40,14 +40,14 @@ static struct mbag_item * get(const uint8_t *src,int len)
mbag_item_t * item = mbag_item_new(MBAG_WORD);
if (!item)
return NULL;
- item->word=cw_get_word(src);
+ item->u2.word=cw_get_word(src);
return item;
}
static int put(struct mbag_item * i, uint8_t *dst)
{
- return cw_put_word(dst,i->word);
+ return cw_put_word(dst,i->u2.word);
}
diff --git a/src/cw/message_set.c b/src/cw/message_set.c
index 547f0df9..f0e79309 100644
--- a/src/cw/message_set.c
+++ b/src/cw/message_set.c
@@ -1,14 +1,15 @@
-#include "cw.h"
+#include
+#include "mbag.h"
#include "mavl.h"
-#include "cw/dbg.h"
+#include "cw/debug.h"
#include "cw/log.h"
#include "message_set.h"
-static int cmp_cw_elemhandler_by_id(const void *elem1, const void *elem2){
- struct cw_ElemHandler * e1 = ((struct cw_ElemHandler*)elem1);
- struct cw_ElemHandler * e2 = ((struct cw_ElemHandler*)elem2);
+static int cmp_cw_elemhandler_by_id(const mavldata_t * elem1, const mavldata_t *elem2){
+ struct cw_ElemHandler * e1 = elem1->ptr;
+ struct cw_ElemHandler * e2 = elem2->ptr;
int r;
r = e1->id - e2->id;
if (r!=0)
@@ -22,25 +23,43 @@ static int cmp_cw_elemhandler_by_id(const void *elem1, const void *elem2){
return 0;
}
-static int cmp_cw_elemhandler_by_key(const void *elem1, const void *elem2){
- struct cw_ElemHandler * e1 = ((struct cw_ElemHandler*)elem1);
- struct cw_ElemHandler * e2 = ((struct cw_ElemHandler*)elem2);
+static int cmp_cw_elemhandler_by_key(const mavldata_t *elem1, const mavldata_t *elem2){
+ struct cw_ElemHandler * e1 = elem1->ptr;
+ struct cw_ElemHandler * e2 = elem2->ptr;
return strcmp(e1->key,e2->key);
}
-
-static int cmp_msgdata(const void *elem1, const void *elem2)
+static int cmp_msgdata(const mavldata_t * elem1, const mavldata_t *elem2)
{
- struct cw_MsgData * e1 = (struct cw_MsgData*)elem1;
- struct cw_MsgData * e2 = (struct cw_MsgData*)elem2;
+ struct cw_MsgData * e1 = elem1->ptr;
+ struct cw_MsgData * e2 = elem2->ptr;
return e1->type - e2->type;
}
+static int cmp_elemdata(const mavldata_t * elem1, const mavldata_t *elem2)
+{
+ struct cw_ElemData * e1 = elem1->ptr;
+ struct cw_ElemData * e2 = elem2->ptr;
+ int r;
+ r = e1->id - e2->id;
+ if (r!=0)
+ return r;
+ r = e1->vendor - e2->vendor;
+ if (r!=0)
+ return r;
+ r = e1->proto - e2->proto;
+ if (r != 0)
+ return r;
+ return 0;
+
+}
+
static void msgdata_destroy(struct cw_MsgData *data){
if (!data)
return;
- if (data->elements_list)
+/* if (data->elements_list)
mlist_destroy(data->elements_list);
+*/
if (data->elements_tree)
mavl_destroy( data->elements_tree );
free(data);
@@ -48,19 +67,26 @@ static void msgdata_destroy(struct cw_MsgData *data){
static struct cw_MsgData * msgdata_create(){
struct cw_MsgData * msg;
+
msg = malloc( sizeof(struct cw_MsgData));
if (!msg)
return NULL;
-/* msg->elements_tree = mavl_create();
+ msg->elements_tree = mavl_create(cmp_elemdata,mavl_free_bin);
if (!msg->elements_tree){
msgdata_destroy(msg);
return NULL;
}
-*/
+
+
+ return msg;
}
+static void del_mavl_msdgdata( mavldata_t * d ){
+ msgdata_destroy(d->ptr);
+}
+
/**
* @brief Destroy a message set
@@ -69,13 +95,14 @@ static struct cw_MsgData * msgdata_create(){
void cw_msgset_destroy(struct cw_MsgSet * set){
if (set->messages)
mavl_destroy(set->messages);
- if (set->all_elems_by_id)
- mavl_destroy(set->all_elems_by_id);
- if (set->all_elems_by_key)
- mavl_destroy(set->all_elems_by_key);
+ if (set->handlers_by_id)
+ mavl_destroy(set->handlers_by_id);
+ if (set->handlers_by_key)
+ mavl_destroy(set->handlers_by_key);
free(set);
}
+
/**
* @brief Create a message set
* @return Message set create, NULL if an error has occured
@@ -90,21 +117,21 @@ struct cw_MsgSet * cw_msgset_create(){
memset(set,0,sizeof(struct cw_MsgSet));
/* create mavl for all_elems by id */
- set->all_elems_by_id = mavl_create(cmp_cw_elemhandler_by_id,free);
- if (set->all_elems_by_id==NULL){
+ set->handlers_by_id = mavl_create(cmp_cw_elemhandler_by_id,mavl_free_bin);
+ if (set->handlers_by_id==NULL){
cw_msgset_destroy(set);
return NULL;
}
/* create mavl for all_elems by id */
- set->all_elems_by_key = mavl_create(cmp_cw_elemhandler_by_key,NULL);
- if (set->all_elems_by_key==NULL){
+ set->handlers_by_key = mavl_create(cmp_cw_elemhandler_by_key,NULL);
+ if (set->handlers_by_key==NULL){
cw_msgset_destroy(set);
return NULL;
}
/* create mavl for messages */
- set->messages = mavl_create(cmp_msgdata,msgdata_destroy);
+ set->messages = mavl_create(cmp_msgdata,del_mavl_msdgdata);
if (set->messages==NULL){
cw_msgset_destroy(set);
return NULL;
@@ -113,58 +140,130 @@ struct cw_MsgSet * cw_msgset_create(){
return set;
}
+struct cw_ElemHandler * cw_msgset_get_elemhandler(struct cw_MsgSet * set,
+ int proto, int vendor, int id)
+{
+ struct cw_ElemHandler search;
+ search.proto=proto;
+ search.vendor=vendor;
+ search.id=id;
+ return mavl_find_ptr(set->handlers_by_id,&search);
+}
+static int update_msgdata(struct cw_MsgSet * set, struct cw_MsgData * msgdata,
+ struct cw_MsgDef * msgdef)
+{
+ struct cw_ElemDef * elemdef;
+
+ /* iterate through all defined elements */
+ for(elemdef = msgdef->elements; elemdef->id; elemdef++){
+ struct cw_ElemHandler * handler;
+
+ handler = cw_msgset_get_elemhandler(set,
+ elemdef->proto,
+ elemdef->vendor,
+ elemdef->id);
+
+ if (!handler){
+ cw_log(LOG_ERR, "No handler for message element: %d %d %d",
+ elemdef->proto,
+ elemdef->vendor,
+ elemdef->id);
+ continue;
+ }
+
+ DBG_START(NULL,DBG_INFO)
+ "Have an element %d %d %d, %s",
+ elemdef->proto,
+ elemdef->id,
+ elemdef->vendor,
+ handler->name
+
+ DBG_END
+ }
+
+ return 0;
+}
int cw_msgset_add(struct cw_MsgSet * set,
struct cw_MsgDef messages[],
- struct cw_ElemHandler elements[]
+ struct cw_ElemHandler handlers[]
){
struct cw_ElemHandler * handler;
- struct cw_MsgDef * message;
-
+ struct cw_MsgDef * msgdef;
+
/* Create mavl for all handlers */
- for(handler = elements; handler->id; handler++){
- struct cw_ElemHandler * copy;
- copy = malloc(sizeof(struct cw_ElemHandler));
- if (!copy){
+ for(handler = handlers; handler->id; handler++){
+ mavldata_t copy;
+ copy.ptr = malloc(sizeof(struct cw_ElemHandler));
+ if (!copy.ptr){
cw_log(LOG_ERR,"Can't alloc mem:", strerror(errno));
continue;
}
- memcpy(copy,handler,sizeof(struct cw_ElemHandler));
+ DBG_START(NULL,DBG_MOD)
+ " Adding handler for element %d - %s - with key: %s",
+ handler->id,
+ handler->name,
+ handler->key
+ DBG_END
- mavl_replace(set->all_elems_by_id,copy);
- mavl_replace(set->all_elems_by_key,copy);
+ memcpy(copy.ptr,handler,sizeof(struct cw_ElemHandler));
+
+ mavl_replace(set->handlers_by_id,©);
+ mavl_replace(set->handlers_by_key,©);
}
- for (message=messages; message->type !=0; message++){
+ for (msgdef=messages; msgdef->type !=0; msgdef++){
+ struct cw_MsgData search, *msg;
- struct cw_MsgData * msg;
-
- cw_dbg(DBG_INFO,"Add message: Type:%d - %s",message->type,message->name);
-
- msg = malloc( sizeof(struct cw_MsgData));
- if (!msg) {
- cw_log(LOG_ERROR,"Can't alloc cw_MsgData: %s",strerror(errno));
- continue;
+ /* Look if message already exists */
+ search.type=msgdef->type;
+ msg = mavl_find_ptr(set->messages,&search);
+
+ if (!msg){
+ msg = msgdata_create();
+ if (!msg){
+ cw_log(LOG_ERR,"Can't create messae");
+ return 0;
+ }
}
+ /* Overwrite the found message */
+ if (msgdef->name)
+ msg->name=msgdef->name;
+ if (msgdef->states)
+ msg->states=msgdef->states;
+ msg->receiver=msgdef->receiver;
+ DBG_START(NULL,DBG_INFO)
+ "Add message Type:%d - %s ",msgdef->type,msgdef->name
+ DBG_END
+
+ update_msgdata(set,msg,msgdef);
}
+
+ DBG_START(NULL,DBG_INFO) "Hello world" DBG_END
+ exit(0);
+
+ return 0;
}
+/*
struct cw_ElemHandler * cw_message_set_find_element(
struct cw_MsgSet * set,
struct cw_ElemHandler * element){
return mavl_find(set->all_elems_by_id,element);
}
+*/
+/*
mlist_t cw_msgset_get_msg(struct cw_MsgSet * set, int type){
struct cw_MsgData search;
search.type = type;
@@ -176,3 +275,4 @@ mlist_t cw_msgset_get_msg(struct cw_MsgSet * set, int type){
}
return result->elements_list;
}
+*/
diff --git a/src/cw/message_set.h b/src/cw/message_set.h
index b4536994..fe4dd99c 100644
--- a/src/cw/message_set.h
+++ b/src/cw/message_set.h
@@ -1,22 +1,27 @@
#ifndef __MESSAGE_SET_H
#define __MESSAGE_SET_H
+#include "mlist.h"
struct cw_MsgSet {
mavl_t messages;
- mavl_t all_elems_by_id;
- mavl_t all_elems_by_key;
+ mavl_t handlers_by_id;
+ mavl_t handlers_by_key;
};
struct cw_ElemDef{
+ int proto;
+ int vendor;
int id;
int mand;
int op;
};
struct cw_ElemData{
- struct cw_ElemHandler *handler;
+ int proto;
+ int vendor;
+ int id;
int mand;
};
@@ -61,7 +66,7 @@ extern struct cw_MsgSet * cw_msgset_create();
extern void cw_msgset_destroy(struct cw_MsgSet * set);
extern int cw_msgset_add(struct cw_MsgSet * set,
- struct cw_MsgDef messages[], struct cw_ElemHandler elements[]);
+ struct cw_MsgDef messages[], struct cw_ElemHandler handlers[]);
mlist_t cw_msgset_get_msg(struct cw_MsgSet * set, int type);
diff --git a/src/cw/mod.c b/src/cw/mod.c
index b2fc4829..36a80242 100644
--- a/src/cw/mod.c
+++ b/src/cw/mod.c
@@ -27,6 +27,7 @@
//#include "action.h"
+#include "mbag.h"
#include "mavl.h"
#include "dbg.h"
#include "log.h"
diff --git a/src/cw/mod.h b/src/cw/mod.h
index fbfdc247..b1c5adc8 100644
--- a/src/cw/mod.h
+++ b/src/cw/mod.h
@@ -39,6 +39,8 @@ enum {
MOD_MODE_BINDINGS
};
+
+
struct cw_Mod {
/** Name of the module */
const char *name;
@@ -46,7 +48,7 @@ struct cw_Mod {
int (*init) ();
/** init_config */
- int (*init_config) (mbag_t config);
+ int (*init_config) (void * /*mbag_t config*/);
/** Detect capwap
* This function is called after receiving and disassembling a complete
diff --git a/src/cw/netconn.c b/src/cw/netconn.c
index b503d7fd..fd856560 100644
--- a/src/cw/netconn.c
+++ b/src/cw/netconn.c
@@ -20,6 +20,7 @@
#include
#include
+#include "mbag.h"
#include "sock.h"
#include "netconn.h"
#include "log.h"
diff --git a/src/cw/radio.c b/src/cw/radio.c
index 2b51a32e..dd0f3d0e 100644
--- a/src/cw/radio.c
+++ b/src/cw/radio.c
@@ -44,7 +44,7 @@ int cw_radio_set_all_admin_states(mbag_t radios,int state, int cause)
MAVLITER_DEFINE(it,radios);
mavliter_foreach(&it){
mbag_item_t *i = mavliter_get(&it);
- cw_radio_set_admin_state(radios,i->iid,state,cause);
+ cw_radio_set_admin_state(radios,i->u1.iid,state,cause);
}
return 1;
diff --git a/src/cw/send.c b/src/cw/send.c
index 0c9d22cf..1e4e4e48 100644
--- a/src/cw/send.c
+++ b/src/cw/send.c
@@ -1,5 +1,6 @@
#include
+#include "mbag.h"
#include "conn.h"
#include "cw.h"
#include "log.h"
diff --git a/src/mod/capwap/capwap_actions_ac.c b/src/mod/capwap/capwap_actions_ac.c
index c7ad82f0..8db57944 100644
--- a/src/mod/capwap/capwap_actions_ac.c
+++ b/src/mod/capwap/capwap_actions_ac.c
@@ -25,7 +25,7 @@
#include "mod_capwap.h"
-static struct cw_ElemHandler elements[] = {
+static struct cw_ElemHandler handlers[] = {
{
"Discovery Type", /* name */
@@ -52,7 +52,11 @@ static struct cw_ElemHandler elements[] = {
static int discovery_request_states[] = {CAPWAP_STATE_DISCOVERY,0};
static struct cw_ElemDef discovery_request_elements[] ={
- {CAPWAP_ELEM_DISCOVERY_TYPE, 1, 0}
+ {0,0,CAPWAP_ELEM_DISCOVERY_TYPE, 1, 0},
+ {0,0,CAPWAP_ELEM_WTP_MAC_TYPE, 1, 0},
+ {0,0,CAPWAP_ELEM_WTP_BOARD_DATA, 1, 0},
+ {0,0,0,00}
+
};
static struct cw_MsgDef messages[] = {
@@ -108,11 +112,10 @@ static struct cw_MsgDef messages[] = {
};
-
struct cw_MsgSet * capwap_register_msg_set(struct cw_MsgSet * set, int mode){
if (mode != CW_MOD_MODE_CAPWAP)
return NULL;
- cw_msgset_add(set,messages, elements);
+ cw_msgset_add(set,messages, handlers);
return set;
}
@@ -124,7 +127,7 @@ void test_sets(){
return;
}
- cw_msgset_add(set,messages, elements);
+ cw_msgset_add(set,messages, handlers);
}
/*
cw_msgset_add(set,messages);
diff --git a/src/mod/capwap/capwap_in_session_id.c b/src/mod/capwap/capwap_in_session_id.c
index fca5f85a..b9d6c87b 100644
--- a/src/mod/capwap/capwap_in_session_id.c
+++ b/src/mod/capwap/capwap_in_session_id.c
@@ -1,5 +1,6 @@
+#include "cw/mbag.h"
#include "cw/action.h"
diff --git a/src/mod/capwap/capwap_out_ac_descriptor.c b/src/mod/capwap/capwap_out_ac_descriptor.c
index 917b5340..440ec121 100644
--- a/src/mod/capwap/capwap_out_ac_descriptor.c
+++ b/src/mod/capwap/capwap_out_ac_descriptor.c
@@ -1,3 +1,4 @@
+#include "cw/mbag.h"
#include "cw/log.h"
#include "cw/conn.h"
@@ -22,13 +23,13 @@ int capwap_out_ac_descriptor(struct conn *conn,struct cw_action_out * a,uint8_t
return 0;
}
- d+=cw_put_ac_status(d ,(struct cw_ac_status*)(i->data),conn);
+ d+=cw_put_ac_status(d ,(struct cw_ac_status*)(i->u2.data),conn);
i = mbag_get(conn->local,CW_ITEM_AC_HARDWARE_VERSION);
if ( i ) {
- d += cw_put_version(d,CW_SUBELEM_AC_HARDWARE_VERSION,i->data);
+ d += cw_put_version(d,CW_SUBELEM_AC_HARDWARE_VERSION,i->u2.data);
}
else {
cw_log(LOG_ERR, "Can't send hard version in AC descriptor, not set.");
@@ -38,7 +39,7 @@ int capwap_out_ac_descriptor(struct conn *conn,struct cw_action_out * a,uint8_t
i = mbag_get(conn->local,CW_ITEM_AC_SOFTWARE_VERSION);
if ( i ) {
- d += cw_put_version(d,CW_SUBELEM_AC_SOFTWARE_VERSION,i->data);
+ d += cw_put_version(d,CW_SUBELEM_AC_SOFTWARE_VERSION,i->u2.data);
}
else {
cw_log(LOG_ERR, "Can't send software version in AC descriptor, not set.");
diff --git a/src/mod/capwap/capwap_out_ac_ip_list.c b/src/mod/capwap/capwap_out_ac_ip_list.c
index 5446a8e8..46a8a8f4 100644
--- a/src/mod/capwap/capwap_out_ac_ip_list.c
+++ b/src/mod/capwap/capwap_out_ac_ip_list.c
@@ -2,6 +2,7 @@
+#include "cw/mbag.h"
#include "cw/action.h"
#include "cw/cw.h"
#include "cw/mavl.h"
diff --git a/src/mod/capwap/capwap_out_get_idle_timeout.c b/src/mod/capwap/capwap_out_get_idle_timeout.c
index 1981f264..4cc94cc4 100644
--- a/src/mod/capwap/capwap_out_get_idle_timeout.c
+++ b/src/mod/capwap/capwap_out_get_idle_timeout.c
@@ -1,4 +1,5 @@
+#include "cw/mbag.h"
#include "cw/action.h"
#include "cw/capwap_items.h"
#include "cw/capwap.h"
diff --git a/src/mod/capwap/capwap_out_get_session_id.c b/src/mod/capwap/capwap_out_get_session_id.c
index 7a198b50..2f23c3e5 100644
--- a/src/mod/capwap/capwap_out_get_session_id.c
+++ b/src/mod/capwap/capwap_out_get_session_id.c
@@ -1,4 +1,4 @@
-
+#include "cw/mbag.h"
#include "cw/conn.h"
#include "cw/rand.h"
#include "cw/log.h"
diff --git a/src/mod/capwap/capwap_out_wtp_descriptor.c b/src/mod/capwap/capwap_out_wtp_descriptor.c
index 0de07cad..5bd06a1f 100644
--- a/src/mod/capwap/capwap_out_wtp_descriptor.c
+++ b/src/mod/capwap/capwap_out_wtp_descriptor.c
@@ -1,3 +1,4 @@
+#include "cw/mbag.h"
#include "cw/log.h"
#include "cw/conn.h"
#include "cw/capwap_items.h"
@@ -41,12 +42,12 @@ int capwap_out_wtp_descriptor(struct conn *conn, struct cw_action_out *a, uint8_
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->data);
- if (bstrv_get_vendor_id(i->data)){
+ d += cw_put_version(d,CW_SUBELEM_WTP_HARDWARE_VERSION,i->u2.data);
+ if (bstrv_get_vendor_id(i->u2.data)){
d += cw_put_dword(d, 0);
d += cw_put_word(d, CW_SUBELEM_WTP_HARDWARE_VERSION);
- d += cw_put_word(d, bstrv_len(i->data));
- d += cw_put_data(d, bstrv_data(i->data), bstrv_len(i->data));
+ d += cw_put_word(d, bstrv_len(i->u2.data));
+ d += cw_put_data(d, bstrv_data(i->u2.data), bstrv_len(i->u2.data));
}
}
@@ -58,7 +59,7 @@ int capwap_out_wtp_descriptor(struct conn *conn, struct cw_action_out *a, uint8_
i = mbag_get(mbag,CW_ITEM_WTP_SOFTWARE_VERSION);
if ( i ) {
- d += cw_put_version(d,CW_SUBELEM_WTP_SOFTWARE_VERSION,i->data);
+ d += cw_put_version(d,CW_SUBELEM_WTP_SOFTWARE_VERSION,i->u2.data);
}
else {
cw_log(LOG_ERR, "Can't send Software Version in WTP descriptor, not set.");
@@ -66,7 +67,7 @@ int capwap_out_wtp_descriptor(struct conn *conn, struct cw_action_out *a, uint8_
i = mbag_get(mbag,CW_ITEM_WTP_BOOTLOADER_VERSION);
if ( i ) {
- d += cw_put_version(d,CW_SUBELEM_WTP_BOOTLOADER_VERSION,i->data);
+ d += cw_put_version(d,CW_SUBELEM_WTP_BOOTLOADER_VERSION,i->u2.data);
}
else {
cw_log(LOG_ERR, "Can't send Bootloader Version in WTP descriptor, not set.");
diff --git a/src/mod/capwap/mod_capwap_ac.c b/src/mod/capwap/mod_capwap_ac.c
index 23cf2ecf..5d2ed2be 100644
--- a/src/mod/capwap/mod_capwap_ac.c
+++ b/src/mod/capwap/mod_capwap_ac.c
@@ -1,4 +1,4 @@
-
+#include "cw/mbag.h"
#include "cw/mod.h"
#include "cw/log.h"
#include "cw/dbg.h"
diff --git a/src/mod/capwap/mod_capwap_wtp.c b/src/mod/capwap/mod_capwap_wtp.c
index 830d6a31..6640ae83 100644
--- a/src/mod/capwap/mod_capwap_wtp.c
+++ b/src/mod/capwap/mod_capwap_wtp.c
@@ -1,4 +1,4 @@
-
+#include "cw/mbag.h"
#include "cw/mod.h"
#include "cw/log.h"
#include "cw/dbg.h"
diff --git a/src/mod/cisco/cisco_actions_ac.c b/src/mod/cisco/cisco_actions_ac.c
index d059ae22..08dfd829 100644
--- a/src/mod/cisco/cisco_actions_ac.c
+++ b/src/mod/cisco/cisco_actions_ac.c
@@ -41,7 +41,7 @@
#include "include/cipwap_items.h"
-
+/*
static cw_elem_handler_t _DISCOVERY_TYPE = {
.id = CAPWAP_ELEM_DISCOVERY_TYPE,
.name = "WTP Frame Tunnel Mode",
@@ -50,6 +50,7 @@ static cw_elem_handler_t _DISCOVERY_TYPE = {
.min_len = 1,
.max_len = 1
};
+*/
static cw_msgdef_t messages[] = {
@@ -96,7 +97,6 @@ static cw_msgdef_t messages[] = {
-
static cw_action_in_t actions_in[] = {