Got rid of mbag! Works for mod_capwap and wtp

FossilOrigin-Name: af10cb591d1e6db629c886cdbb268a2753bb93012e410e42f65b8385befb9896
bsdmakefiles
7u83@mail.ru 6 years ago
parent 5edd4ab621
commit b0b08c1f7c
  1. 4
      actube.workspace
  2. 29
      libcw.project
  3. 5
      src/cw/acpriolist.c
  4. 2
      src/cw/acpriolist.h
  5. 333
      src/cw/action.c
  6. 203
      src/cw/action.h
  7. 2
      src/cw/capwap.h
  8. 3
      src/cw/capwap80211.h
  9. 63
      src/cw/capwap80211_items.c
  10. 32
      src/cw/capwap80211_items.h
  11. 3
      src/cw/capwap80211_type_rateset.c
  12. 5
      src/cw/capwap80211_types.h
  13. 7
      src/cw/capwap_action_helpers.c
  14. 196
      src/cw/capwap_actions.h
  15. 2
      src/cw/capwap_inline.c
  16. 180
      src/cw/capwap_items.c
  17. 207
      src/cw/capwap_items.h
  18. 26
      src/cw/capwap_msg_new.c
  19. 2
      src/cw/capwap_strings_board.c
  20. 2
      src/cw/capwap_strings_elem.c
  21. 2
      src/cw/capwap_strings_elem80211.c
  22. 2
      src/cw/capwap_strings_msg.c
  23. 2
      src/cw/capwap_strings_result.c
  24. 2
      src/cw/capwap_strings_state.c
  25. 2
      src/cw/capwap_strings_vendor.c
  26. 14
      src/cw/cipwap.h
  27. 18
      src/cw/cipwap_strings_elem.c
  28. 16
      src/cw/cisco.c
  29. 6
      src/cw/conn.h
  30. 3
      src/cw/conn_clear_upd.c
  31. 2
      src/cw/conn_create_noq.c
  32. 2
      src/cw/conn_destroy.c
  33. 8
      src/cw/conn_init.c
  34. 2
      src/cw/conn_prepare_image_data_request.c
  35. 5
      src/cw/conn_process_packet.c
  36. 2
      src/cw/conn_q_add_packet.c
  37. 2
      src/cw/conn_q_get_packet.c
  38. 2
      src/cw/conn_q_recv_packet.c
  39. 2
      src/cw/conn_recv_packet.c
  40. 2
      src/cw/conn_send_msg.c
  41. 2
      src/cw/conn_send_packet.c
  42. 2
      src/cw/connlist.c
  43. 28
      src/cw/cw.h
  44. 4
      src/cw/cw_80211.h
  45. 2
      src/cw/cw_addelem_capwap_local_ip_addr.c
  46. 3
      src/cw/cw_in_80211_mac_operation.c
  47. 5
      src/cw/cw_in_ac_descriptor.c
  48. 14
      src/cw/cw_in_ac_name_with_priority.c
  49. 8
      src/cw/cw_in_capwap_control_ip_address.c
  50. 6
      src/cw/cw_in_capwap_local_ipv4_address.c
  51. 7
      src/cw/cw_in_capwap_local_ipv6_address.c
  52. 8
      src/cw/cw_in_check_cfg_update_req.c
  53. 16
      src/cw/cw_in_check_chng_state_evnt_req.c
  54. 2
      src/cw/cw_in_check_cipwap_join_req.c
  55. 2
      src/cw/cw_in_check_disc_req.c
  56. 4
      src/cw/cw_in_check_disc_resp.c
  57. 27
      src/cw/cw_in_check_generic_req.c
  58. 2
      src/cw/cw_in_check_generic_resp.c
  59. 4
      src/cw/cw_in_check_img_data_req_ac.c
  60. 8
      src/cw/cw_in_check_img_data_req_wtp.c
  61. 35
      src/cw/cw_in_check_img_data_resp.c
  62. 2
      src/cw/cw_in_check_join_req.c
  63. 2
      src/cw/cw_in_check_join_resp.c
  64. 9
      src/cw/cw_in_cisco_image_identifier.c
  65. 9
      src/cw/cw_in_radio_administrative_state.c
  66. 6
      src/cw/cw_in_radio_administrative_state_wtp.c
  67. 10
      src/cw/cw_in_radio_generic.c
  68. 11
      src/cw/cw_in_wtp_board_data.c
  69. 7
      src/cw/cw_in_wtp_reboot_statistics.c
  70. 3
      src/cw/cw_out_80211_supported_rates.c
  71. 2
      src/cw/cw_out_ac_name_with_priority.c
  72. 3
      src/cw/cw_out_capwap_control_ip_addr_list.c
  73. 5
      src/cw/cw_out_capwap_local_ip_address.c
  74. 2
      src/cw/cw_out_generic.c
  75. 2
      src/cw/cw_out_image_data.c
  76. 4
      src/cw/cw_out_radio_administrative_states.c
  77. 10
      src/cw/cw_out_radio_generic.c
  78. 10
      src/cw/cw_out_radio_info.c
  79. 3
      src/cw/cw_out_wtp_descriptor.c
  80. 5
      src/cw/cw_out_wtp_ip_address.c
  81. 9
      src/cw/cw_out_wtp_reboot_statistics.c
  82. 4
      src/cw/cw_put_elem_radio_administrative_state.c
  83. 1
      src/cw/cw_put_local_ip_address.c
  84. 84
      src/cw/cw_put_mbag_item.c
  85. 101
      src/cw/cw_put_msg.c
  86. 62
      src/cw/cw_put_radio_operational_states.c
  87. 5
      src/cw/cw_radio_set_admin_state.c
  88. 4
      src/cw/cw_read_80211_mac_operation.c
  89. 6
      src/cw/cw_read_ac_descriptor.c
  90. 2
      src/cw/cw_read_wtp_descriptor.c
  91. 2
      src/cw/cw_read_wtp_descriptor_7.c
  92. 34
      src/cw/cw_read_wtp_descriptor_versions.c
  93. 2
      src/cw/cwmsg_addelem_mtu_discovery_padding.c
  94. 9
      src/cw/dbg.c
  95. 4
      src/cw/dbg.h
  96. 2
      src/cw/dbg_strings.c
  97. 2
      src/cw/debug.c
  98. 2
      src/cw/dtls_bio.c
  99. 2
      src/cw/dtls_gnutls.c
  100. 2
      src/cw/dtls_gnutls_accept.c
  101. Some files were not shown because too many files have changed in this diff Show More

@ -3,9 +3,9 @@
<Project Name="ac" Path="ac.project" Active="No"/>
<Project Name="wtp" Path="wtp.project" Active="No"/>
<Project Name="mod_cipwap" Path="mod_cipwap.project" Active="No"/>
<Project Name="mod_capwap" Path="mod_capwap.project" Active="No"/>
<Project Name="mod_capwap" Path="mod_capwap.project" Active="Yes"/>
<Project Name="mod_cisco" Path="mod_cisco.project" Active="No"/>
<Project Name="libcw" Path="libcw.project" Active="Yes"/>
<Project Name="libcw" Path="libcw.project" Active="No"/>
<Project Name="mod_capwap80211" Path="mod_capwap80211.project" Active="No"/>
<Project Name="mod_fortinet" Path="mod_fortinet.project" Active="No"/>
<BuildMatrix>

@ -8,7 +8,6 @@
<File Name="src/cw/conn.h"/>
<File Name="src/cw/dot11.c"/>
<File Name="src/cw/conn_clear_upd.c"/>
<File Name="src/cw/mbag_type_dword.c"/>
<File Name="src/cw/sock_getport.c"/>
<File Name="src/cw/dtls_gnutls_get_peers_cert.c"/>
<File Name="src/cw/conn_process_packet.c"/>
@ -36,22 +35,17 @@
<File Name="src/cw/cw_is_printable.c"/>
<File Name="src/cw/sock_getifaddr.c"/>
<File Name="src/cw/bstr_create.c"/>
<File Name="src/cw/cw_put_mbag_item.c"/>
<File Name="src/cw/conn_get_response.c"/>
<File Name="src/cw/dtls_bio.c"/>
<File Name="src/cw/rand.h"/>
<File Name="src/cw/capwap_items.h"/>
<File Name="src/cw/mbag_type_bstr.c"/>
<File Name="src/cw/cw_in_cisco_image_identifier.c"/>
<File Name="src/cw/radioinfo.h"/>
<File Name="src/cw/capwap80211.h"/>
<File Name="src/cw/conn_init.c"/>
<File Name="src/cw/item_strings.c"/>
<File Name="src/cw/capwap_actions.h"/>
<File Name="src/cw/strheap.h"/>
<File Name="src/cw/mbag_type_mbag.c"/>
<File Name="src/cw/cw_in_check_join_req.c"/>
<File Name="src/cw/mbag.c"/>
<File Name="src/cw/cw_put_radio_operational_states.c"/>
<File Name="src/cw/conn_wait_for_message.c"/>
<File Name="src/cw/cw_util.h"/>
@ -78,7 +72,6 @@
<File Name="src/cw/lw_put_cisco_path_mtu.c"/>
<File Name="src/cw/conn_get_message.c"/>
<File Name="src/cw/cw_readelem_maximum_message_length.c"/>
<File Name="src/cw/capwap_msg_new.c"/>
<File Name="src/cw/cw_in_radio_administrative_state_wtp.c"/>
<File Name="src/cw/cw_read_descriptor_subelems.c"/>
<File Name="src/cw/log_file.c"/>
@ -93,11 +86,9 @@
<File Name="src/cw/cw_in_capwap_local_ipv6_address.c"/>
<File Name="src/cw/cw_out_capwap_local_ip_address.c"/>
<File Name="src/cw/cw_out_wtp_descriptor.c"/>
<File Name="src/cw/cw_in_check_img_data_resp.c"/>
<File Name="src/cw/capwap_action_helpers.c"/>
<File Name="src/cw/conn_send_data_packet.c"/>
<File Name="src/cw/cw_in_capwap_control_ip_address.c"/>
<File Name="src/cw/cipwap_strings_elem.c"/>
<File Name="src/cw/cw_radio_set_admin_state.c"/>
<File Name="src/cw/conn_recv_packet.c"/>
<File Name="src/cw/lw_readelem_80211_wtp_wlan_radio_configuration.c"/>
@ -117,13 +108,10 @@
<File Name="src/cw/bstr_create_from_cfgstr.c"/>
<File Name="src/cw/sock_getifhwaddr.c"/>
<File Name="src/cw/conn_send_packet.c"/>
<File Name="src/cw/mbag_type_bstr16.c"/>
<File Name="src/cw/cipwap.h"/>
<File Name="src/cw/cw_in_check_join_resp.c"/>
<File Name="src/cw/cw_in_80211_mac_operation.c"/>
<File Name="src/cw/capwap_strings_board.c"/>
<File Name="src/cw/capwap_80211_actions_ac.c"/>
<File Name="src/cw/mbag.h"/>
<File Name="src/cw/sock_addrlen.c"/>
<File Name="src/cw/cw_load_file.c"/>
<File Name="src/cw/sock_copyaddr.c"/>
@ -141,18 +129,12 @@
<File Name="src/cw/sock_cmpaddr.c"/>
<File Name="src/cw/cw_in_radio_administrative_state.c"/>
<File Name="src/cw/cwmsg_addelem_80211_add_wlan.c"/>
<File Name="src/cw/cw_in_check_generic_req.c"/>
<File Name="src/cw/dot11.h"/>
<File Name="src/cw/item.h"/>
<File Name="src/cw/cw_in_check_generic_resp.c"/>
<File Name="src/cw/capwap80211_items.h"/>
<File Name="src/cw/cw_in_ac_descriptor.c"/>
<File Name="src/cw/mavl_foreach_lr.c"/>
<File Name="src/cw/mbag_type_bin.c"/>
<File Name="src/cw/mavl_get.c"/>
<File Name="src/cw/sock_setport.c"/>
<File Name="src/cw/mbag_type_word.c"/>
<File Name="src/cw/mbag_type_byte.c"/>
<File Name="src/cw/cw_strlist_get_id.c"/>
<File Name="src/cw/sock.h"/>
<File Name="src/cw/aciplist.c"/>
@ -199,7 +181,6 @@
<File Name="src/cw/cw_out_capwap_control_ip_addr_list.c"/>
<File Name="src/cw/bstrv_create_from_str.c"/>
<File Name="src/cw/cw_out_wtp_ip_address.c"/>
<File Name="src/cw/mbag_set_from_buf.c"/>
<File Name="src/cw/dtls_openssl_bio.c"/>
<File Name="src/cw/cw_in_generic.c"/>
<File Name="src/cw/cw_rand.c"/>
@ -208,10 +189,6 @@
<File Name="src/cw/cw_out_image_data.c"/>
<File Name="src/cw/cw_readelem_80211_wtp_radio_info.c"/>
<File Name="src/cw/connlist.h"/>
<File Name="src/cw/mbag_type_data.c"/>
<File Name="src/cw/item.c"/>
<File Name="src/cw/mbag_type_sockaddr.c"/>
<File Name="src/cw/action.c"/>
<File Name="src/cw/strheap.c"/>
<File Name="src/cw/dtls_gnutls_connect.c"/>
<File Name="src/cw/fragman.c"/>
@ -239,11 +216,8 @@
<File Name="src/cw/sock_create.c"/>
<File Name="src/cw/lw_readelem_wtp_board_data.c"/>
<File Name="src/cw/cwmsg_addelem_vendor_cisco_mwar_addr.c"/>
<File Name="src/cw/action.h"/>
<File Name="src/cw/sock_get_primary_if.c"/>
<File Name="src/cw/netconn.h"/>
<File Name="src/cw/mbag_type_ptr.c"/>
<File Name="src/cw/capwap80211_items.c"/>
<File Name="src/cw/capwap_strings_elem.c"/>
<File Name="src/cw/connlist.c"/>
<File Name="src/cw/lw_put_80211_wtp_wlan_radio_configuration.c"/>
@ -263,9 +237,7 @@
<File Name="src/cw/mavl_foreach.c"/>
<File Name="src/cw/lwapp_cisco.h"/>
<File Name="src/cw/hdr_print.c"/>
<File Name="src/cw/mbag_type_str.c"/>
<File Name="src/cw/cw_init_data_keep_alive_msg.c"/>
<File Name="src/cw/cw_in_check_chng_state_evnt_req.c"/>
<File Name="src/cw/capwap_strings_item.c"/>
<File Name="src/cw/cw_out_ac_name_with_priority.c"/>
<File Name="src/cw/conn_send_request.c"/>
@ -276,7 +248,6 @@
<File Name="src/cw/capwap_crypto.h"/>
<File Name="src/cw/capwap_strings_state.c"/>
<File Name="src/cw/cw_out_radio_info.c"/>
<File Name="src/cw/capwap_items.c"/>
<File Name="src/cw/cw_filename.c"/>
<File Name="src/cw/cw_type_byte.c"/>
<File Name="src/cw/cw_type_word.c"/>

@ -25,7 +25,7 @@
#include "acpriolist.h"
/*
static int acprio_cmp(const void *x1, const void *x2)
{
cw_acprio_t * p1 = (cw_acprio_t*)x1;
@ -44,6 +44,7 @@ static void acprio_del(void *d)
free(d);
}
const struct mbag_typedef mbag_type_acprio = {
"acprio",acprio_del
};
@ -81,4 +82,4 @@ int cw_acpriolist_get(cw_acpriolist_t l, char * acname){
return pf->prio;
}
*/

@ -2,7 +2,7 @@
#define __ACIPRIORITYLIST_H
#include "mavl.h"
#include "mbag.h"
/**
* Used to store AC Name With Priority elements.

@ -1,333 +0,0 @@
/*
This file is part of libcapwap.
libcapwap is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
libcapwap is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Foobar. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @file
* @brief Implementation of methods for actionlists.
*/
#include "mbag.h"
#include <stdlib.h>
#include <string.h>
#include "action.h"
/* ---------------------------------------------
* cw_actionlist_in stuff
*/
static int cw_action_in_cmp(const void *elem1, const void *elem2)
{
struct cw_action_in *e1 = (struct cw_action_in *) elem1;
struct cw_action_in *e2 = (struct cw_action_in *) elem2;
int r;
r = e1->capwap_state - e2->capwap_state;
if (r != 0)
return r;
r = e1->msg_id - e2->msg_id;
if (r != 0)
return r;
r = e1->elem_id - e2->elem_id;
if (r != 0)
return r;
r = e1->vendor_id - e2->vendor_id;
if (r != 0)
return r;
r = e1->proto - e2->proto;
if (r != 0)
return r;
return 0;
}
/**
* Create an action list for incomming messages
* @return the create list or NULL if an error has occured
*/
cw_actionlist_in_t cw_actionlist_in_create()
{
return mavl_create(cw_action_in_cmp, free,1312);
}
/**
* Add an element to an "in-list"
* @param t action list to elem to
* @param a element to add
* @rturn a pointer to the added element
*/
cw_action_in_t *cw_actionlist_in_add(cw_actionlist_in_t t, struct cw_action_in * a)
{
int s = sizeof(struct cw_action_in);
void *r = mavl_replace_data(t, a, s);
if (r)
return r;
void *an = malloc(s);
if (!an)
return NULL;
memcpy(an, a, s);
return mavl_add(t, an,NULL);
}
/**
* Get an element from an actionlist_in
* @param t action list
* @param a element to search for
* @return the elemen or NULL if not found
*/
struct cw_action_in *cw_actionlist_in_get(cw_actionlist_in_t t, struct cw_action_in *a)
{
return mavl_get(t, a);
}
/**
* Register actions in an action list for incommin messages
* @param t action list, where messaes will be registered
* @param actions an array of actions to reggister
* @return the number of registred actions
*/
int cw_actionlist_in_register_actions(cw_actionlist_in_t t, cw_action_in_t * actions)
{
int n=0;
while (actions->capwap_state) {
cw_action_in_t *rc = cw_actionlist_in_add(t, actions);
if (!rc)
return 0;
actions++;
n++;
}
return n;
}
/* ---------------------------------------------
* cw_actionlist_out stuff
*/
struct outelem{
uint32_t msg_id;
mlist_t * mlist;
};
static int mout_cmp(void *elem1,void *elem2)
{
struct cw_action_out *e1 = (struct cw_action_out *) elem1;
struct cw_action_out *e2 = (struct cw_action_out *) elem2;
int r;
r = e1->msg_id - e2->msg_id;
if (r )
return r;
r = e1->elem_id - e2->elem_id;
if (r )
return r;
r = e1->vendor_id - e2->vendor_id;
if (r )
return r;
if (e1->item_id == e2->item_id)
return 0;
if (e1->item_id && e2->item_id)
return strcmp(e1->item_id,e2->item_id);
return 1;
}
struct outelem * cw_actionlist_mout_create(int msg_id)
{
/* struct outelem * o = malloc(sizeof(struct outelem));
if (!o)
return NULL;
o->mlist= mlist_create(mout_cmp);
if (!o->mlist){
free(o);
return NULL;
}
o->msg_id=msg_id;
return o;
*/
}
static struct outelem * cw_actionlist_out_get_outelem(cw_actionlist_out_t t, int msg_id)
{
struct outelem search;
search.msg_id=msg_id;
return mavl_get(t,&search);
}
/*
* Compare function for actionlist_out_t lists
*/
static int cw_action_out_cmp(const void *elem1, const void *elem2)
{
struct outelem *e1 = (struct outelem *) elem1;
struct outelem *e2 = (struct outelem *) elem2;
return e1->msg_id - e2->msg_id;
}
/**
* Add an element to an actionlist_out
* @param t action list
* @param a element to add
*/
cw_action_out_t *cw_actionlist_out_add(cw_actionlist_out_t t, struct cw_action_out * a)
{
struct outelem * o = cw_actionlist_out_get_outelem(t,a->msg_id);
if (!o){
o = cw_actionlist_mout_create(a->msg_id);
if (!o) {
return NULL;
}
mavl_add(t,o,NULL);
}
struct mlistelem * e = mlist_replace(o->mlist,a);
if (!e)
e = mlist_append(o->mlist,a);
if (e)
return a;
return 0;
}
/**
* Register actions in an action list for incommin messages
* @param t action list, where messaes will be registered
* @param actions an array of actions to reggister
* @return the number of registred actions
*/
int cw_actionlist_out_register_actions(cw_actionlist_out_t t, cw_action_out_t * actions)
{
int n=0;
while (actions->msg_id != 0) {
cw_action_out_t *rc = cw_actionlist_out_add(t, actions);
if (rc == 0)
return 0;
actions++;
n++;
}
return n;
}
/**
* Add an action to an action
* @param t actionlist
* @param a action to add
* @param s size of element to add
* @return pointer to added element or NULL if an error has opccured
*/
void *cw_actionlist_add(struct mavl *t, void *a, size_t s)
{
void *r = mavl_replace_data(t, a, s); //sizeof(struct cw_action_in));
if (r) {
return r;
}
void *an = malloc(s);
if (!an)
return NULL;
memcpy(an, a, s);
return mavl_add(t, an,NULL);
}
/**
* Create an action list for outgoing message lements
* @return the created action list or NULL if an erro has occured.
*/
cw_actionlist_out_t cw_actionlist_out_create()
{
return mavl_create(cw_action_out_cmp, free,1312);
}
mlist_t * cw_actionlist_out_get(cw_actionlist_out_t t,int msg_id)
{
struct outelem *o = cw_actionlist_out_get_outelem(t,msg_id);
if (!o)
return NULL;
return o->mlist;
}
/* misc stuff */
cw_action_fun_t cw_set_msg_end_callback(struct cw_actiondef *actions,
int capwap_state,int msg_id, cw_action_fun_t callback)
{
cw_action_in_t as;
as.capwap_state = capwap_state;
as.msg_id = msg_id;
as.vendor_id = 0;
as.elem_id = 0;
as.proto = 0;
cw_action_in_t *af;
af = cw_actionlist_in_get(actions->in, &as);
if (!af)
return NULL;
cw_action_fun_t old = af->end;
af->end =callback;
return old;
}

@ -1,203 +0,0 @@
/*
This file is part of libcapwap.
libcapwap is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
libcapwap is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Foobar. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @file
* @brief CAPWAP ACtions Header
* @defgroup ACTION CAPWAP/LWAPP Actions
* @{
*/
#ifndef __ACTION_H
#define __ACTION_H
#include <stdint.h>
#include "mavl.h"
#include "conn.h"
/*#include "mbag.h"*/
#include "strheap.h"
#include "intavltree.h"
#include "item.h"
#include "mlist.h"
struct conn;
/**
* @file action.h
* @brief Header for actions
*/
#define CW_ACTION_PROTO_CAPWAP 0
#define CW_ACTION_PROTO_LWAPP 1
/**
* @defgroup ACTION Action
* @{
*/
/**
* Definition of an action for incomming messages
*/
struct cw_action_in{
uint32_t vendor_id;
uint8_t proto;
uint8_t capwap_state;
uint32_t msg_id;
uint16_t elem_id;
int (*start)(struct conn *conn,struct cw_action_in *a,uint8_t*data,int len,struct sockaddr *from);
int (*end)(struct conn *conn,struct cw_action_in *a,uint8_t*elem,int len,struct sockaddr *from);
const struct mbag_typedef * itemtype;
const char * item_id;
uint16_t min_len;
uint16_t max_len;
uint8_t mand;
};
/** a handy type for incomming actions */
typedef struct cw_action_in cw_action_in_t;
/** Definition of an action list for incomming messages */
typedef mavl_t cw_actionlist_in_t;
extern cw_actionlist_in_t cw_actionlist_in_create();
extern cw_action_in_t * cw_actionlist_in_get(cw_actionlist_in_t t,cw_action_in_t *a);
/*
//extern cw_action_in_t * cw_actionlist_in_add(cw_actionlist_in_t t,cw_action_in_t *a);
*/
extern int cw_actionlist_in_register_actions(cw_actionlist_in_t t,cw_action_in_t * actions);
/**
* Definitioni of an action foroutgoing messages
* */
struct cw_action_out{
uint32_t msg_id;
const char * item_id;
uint32_t vendor_id;
uint16_t elem_id;
int (*init)(struct conn * conn, struct cw_action_out *a, uint8_t * dst);
int (*out)(struct conn * conn, struct cw_action_out *a, uint8_t * dst);
struct mbag_item *(*get)(struct conn *conn,struct cw_action_out *a);
uint8_t mand;
struct mbag_typedef * itemtype;
void *defval;
};
typedef struct cw_action_out cw_action_out_t;
typedef struct mavl *cw_actionlist_out_t;
extern cw_actionlist_out_t cw_actionlist_out_create();
extern int cw_actionlist_out_register_actions(cw_actionlist_out_t t,cw_action_out_t * actions);
mlist_t * cw_actionlist_out_get(cw_actionlist_out_t,int msg_id);
/*
//extern cw_action_out_t * cw_actionlist_out_add(cw_actionlist_out_t t, struct cw_action_out * a);
*/
/**
* @}
*/
extern cw_actionlist_out_t cw_actionlist_out_create();
extern cw_action_out_t * cw_actionlist_out_add(cw_actionlist_out_t t, struct cw_action_out * a);
extern int cw_actionlist_out_register_actions(cw_actionlist_out_t t,cw_action_out_t * actions);
/**
* Definition CAPWAP modes
*/
enum capwapmodes {
/** Auto -- means auto detect the CAPWAP mode and
it set as soon as possible */
CW_MODE_AUTO,
/** Standard CAPWAP mode as specified in RFC 5415 */
CW_MODE_CAPWAP,
/** Cisco specific CAPWAP */
CW_MODE_CISCO,
/** CIPWAP, a mix of standard CAPWAP and some
Cisco extension */
CW_MODE_CIPWAP,
/** Zyxel */
CW_MODE_ZYXEL,
/** Lancom */
CW_MODE_LANCOM,
/** Fortinet */
CW_MODE_FORTINET
};
struct cw_actiondef{
cw_actionlist_in_t in;
cw_actionlist_out_t out;
cw_strheap_t strmsg;
cw_strheap_t strelem;
cw_itemdefheap_t items;
cw_itemdefheap_t radioitems;
mlist_t * mout;
/** Supported Wireless Binding IDs (WBID) */
struct avltree * wbids;
};
extern struct outelem * cw_actionlist_out_get_mlist(cw_actionlist_out_t t, int msg_id);
typedef int(*cw_action_fun_t)(struct conn *,struct cw_action_in *,uint8_t*,int,struct sockaddr *);
cw_action_fun_t cw_set_msg_end_callback(struct cw_actiondef * actions,
int capwap_state,int msg_id, cw_action_fun_t callback);
#define cw_actionlist_get_node(t,a) avltree_get_node(t,a)
/**@}*/
#endif

@ -27,7 +27,7 @@
#include <stdint.h>
#include "mbag.h"
#include <errno.h>
#include <arpa/inet.h>

@ -121,9 +121,10 @@ struct cw_wlan {
*/
#include "action.h"
/*
int cw_out_radio_infos(struct conn *conn, struct cw_action_out *a, uint8_t * dst);
*/
/*
//extern int cw_register_actions_capwap_80211_wtp(struct cw_actiondef *def);

@ -1,63 +0,0 @@
#include "mbag.h"
#include "item.h"
#include "capwap80211_items.h"
#include "capwap80211_types.h"
const char CW_RADIOITEM80211_SUPPORTED_RATES[]="802.11 supported_rates";
const char CW_RADIOITEM80211_WTP_RADIO_INFORMATION[]="802.11 radio_info";
const char CW_RADIOITEM80211_RATE_SET[]="802.11 rate set";
/* MAC Operation Items */
const char CW_RADIOITEM80211_RTS_THRESHOLD[]="rts_threshold";
const char CW_RADIOITEM80211_FRAGMENTATION_THRESHOLD[]="fragmentation_threshold";
const char CW_RADIOITEM80211_SHORT_RETRY[]="short_retry";
const char CW_RADIOITEM80211_LONG_RETRY[]="long_retry";
const char CW_RADIOITEM80211_TX_MSDU_LIFETIME[]="tx_msdu_lifetime";
const char CW_RADIOITEM80211_RX_MSDU_LIFETIME[]="rx_msdu_lifetime";
/* Radio Config Items */
const char CW_RADIOITEM80211_SHORT_PREAMBLE[]="short_preamble";
const char CW_RADIOITEM80211_NUM_BSS_IDS[]="num_bss_ids";
const char CW_RADIOITEM80211_DTIM_PERIOD[]="dtim_period";
const char CW_RADIOITEM80211_BSSID[]="bssid";
const char CW_RADIOITEM80211_BEACON_PERIOD[]="beacon_period";
const char CW_RADIOITEM80211_COUNTRY_STRING[]="country_string";
struct cw_itemdef capwap80211_itemdefs[] = {
{CW_ITEM_NONE}
};
struct cw_itemdef capwap80211_radioitemdefs[] = {
{CW_RADIOITEM80211_SUPPORTED_RATES,CW_ITEM_NONE,CAPWAP80211_TYPE_RATESET},
{CW_RADIOITEM80211_RATE_SET,CW_ITEM_NONE,CAPWAP80211_TYPE_RATESET},
{CW_RADIOITEM80211_WTP_RADIO_INFORMATION,CW_ITEM_NONE,MTYPE_DWORD},
/* MAC Operation */
{CW_RADIOITEM80211_RTS_THRESHOLD,CW_ITEM_NONE,MBAG_WORD},
{CW_RADIOITEM80211_SHORT_RETRY,CW_ITEM_NONE,MBAG_BYTE},
{CW_RADIOITEM80211_LONG_RETRY,CW_ITEM_NONE,MBAG_BYTE},
{CW_RADIOITEM80211_FRAGMENTATION_THRESHOLD,CW_ITEM_NONE,MBAG_WORD},
{CW_RADIOITEM80211_TX_MSDU_LIFETIME,CW_ITEM_NONE,MTYPE_DWORD},
{CW_RADIOITEM80211_RX_MSDU_LIFETIME,CW_ITEM_NONE,MTYPE_DWORD},
/* Radio Config Items */
{CW_RADIOITEM80211_SHORT_PREAMBLE,CW_ITEM_NONE,MBAG_BYTE},
{CW_RADIOITEM80211_NUM_BSS_IDS,CW_ITEM_NONE,MBAG_BYTE},
{CW_RADIOITEM80211_DTIM_PERIOD,CW_ITEM_NONE,MBAG_BYTE},
{CW_RADIOITEM80211_BSSID,CW_ITEM_NONE,MBAG_DATA},
{CW_RADIOITEM80211_BEACON_PERIOD,CW_ITEM_NONE,MBAG_WORD},
{CW_RADIOITEM80211_COUNTRY_STRING,CW_ITEM_NONE,MBAG_BSTR16},
{CW_ITEM_NONE}
};

@ -1,32 +0,0 @@
#ifndef __CAPWAP80211_ITEMS_H
#define __CAPWAP80211_ITEMS_H
#include "item.h"
extern const char CW_RADIOITEM80211_SUPPORTED_RATES[];
extern const char CW_RADIOITEM80211_RATE_SET[];
extern const char CW_RADIOITEM80211_WTP_RADIO_INFORMATION[];
extern struct cw_itemdef capwap80211_itemdefs[];
extern struct cw_itemdef capwap80211_radioitemdefs[];
/* MAC Operation Items */
extern const char CW_RADIOITEM80211_RTS_THRESHOLD[];
extern const char CW_RADIOITEM80211_FRAGMENTATION_THRESHOLD[];
extern const char CW_RADIOITEM80211_SHORT_RETRY[];
extern const char CW_RADIOITEM80211_LONG_RETRY[];
extern const char CW_RADIOITEM80211_TX_MSDU_LIFETIME[];
extern const char CW_RADIOITEM80211_RX_MSDU_LIFETIME[];
/* Radio Config Items */
extern const char CW_RADIOITEM80211_SHORT_PREAMBLE[];
extern const char CW_RADIOITEM80211_NUM_BSS_IDS[];
extern const char CW_RADIOITEM80211_DTIM_PERIOD[];
extern const char CW_RADIOITEM80211_BSSID[];
extern const char CW_RADIOITEM80211_BEACON_PERIOD[];
extern const char CW_RADIOITEM80211_COUNTRY_STRING[];
#endif

@ -5,7 +5,7 @@
/*
static int to_str(void *item,char *dst)
{
@ -123,3 +123,4 @@ const struct mbag_typedef capwap80211_type_rateset = {
.get = get,
.put = put
};
*/

@ -1,10 +1,11 @@
#ifndef __CAPWAP80211_TYPES_H
#define __CAPWAP80211_TYPES_H
#include "mbag.h"
/*
extern const struct mbag_typedef capwap80211_type_rateset;
#define CAPWAP80211_TYPE_RATESET (&capwap80211_type_rateset)
*/
#endif
#endif

@ -1,9 +1,9 @@
#include "mbag.h"
#include "action.h"
#include "capwap.h"
#include "capwap.h"
/*
int cw_in_set_state_none(struct conn *conn,struct cw_action_in * a,uint8_t *data,int len)
{
@ -60,3 +60,4 @@ struct mbag_item * cw_out_get_session_id(struct conn *conn,struct cw_action_out
return mbag_set_bstrn(conn->local,CW_ITEM_SESSION_ID,session_id,slen);
}
*/

@ -1,196 +0,0 @@
/*
This file is part of libcapwap.
libcapwap is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
libcapwap is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Foobar. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __CAPWAP_ACTIONS_H
#define __CAPWAP_ACTIONS_H
#include "capwap.h"
#include "capwap_items.h"
#define CW_ACTION_IN_LOCATION_DATA \
CW_ELEM_LOCATION_DATA, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_STR, /* Type of element */ \
CW_ITEM_LOCATION_DATA, /* ID to use store */ \
1, 1024 /* min/max length */
#define CW_ACTION_IN_WTP_NAME \
CW_ELEM_WTP_NAME, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_STR, /* Type of element */ \
CW_ITEM_WTP_NAME, /* ID to use store */ \
1, 1024 /* min/max length */
#define CW_ACTION_IN_SESSION_ID \
CW_ELEM_SESSION_ID, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_BSTR, /* Type of element */ \
CW_ITEM_SESSION_ID, /* ID to use store */ \
16, 16 /* min/max length */
#define CW_ACTION_IN_IMAGE_IDENTIFIER \
CW_ELEM_IMAGE_IDENTIFIER, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_VENDORSTR, /* Type of element */ \
CW_ITEM_IMAGE_IDENTIFIER, /* ID to use store */ \
5, 4096 /* min/max length */
#define CW_ACTION_IN_AC_NAME \
CW_ELEM_AC_NAME, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_STR, /* Type of element */ \
CW_ITEM_AC_NAME, /* ID to use store */ \
1, 512 /* min/max length */
#define CW_ACTION_IN_STATISTICS_TIMER \
CW_ELEM_STATISTICS_TIMER, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_WORD, /* Type of element */ \
CW_ITEM_STATISTICS_TIMER, /* ID to use store */ \
2, 2 /* min/max length */
#define CW_ACTION_IN_WTP_REBOOT_STATISTICS \
CW_ELEM_WTP_REBOOT_STATISTICS, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_DATA, /* Type of element */ \
CW_ITEM_WTP_REBOOT_STATISTICS, /* ID to use store */ \
15, 15 /* min/max length */
#define CW_ACTION_IN_WTP_FRAME_TUNNEL_MODE \
CW_ELEM_WTP_FRAME_TUNNEL_MODE, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_BYTE, /* Type of element */ \
CW_ITEM_WTP_FRAME_TUNNEL_MODE, /* ID to use store */ \
1, 1 /* min/max length */
#define CW_ACTION_IN_WTP_MAC_TYPE \
CW_ELEM_WTP_MAC_TYPE, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_BYTE, /* Type of element */ \
CW_ITEM_WTP_MAC_TYPE, /* ID to use store */ \
1, 1 /* min/max length */
#define CW_ACTION_IN_VENDOR_SPECIFIC_PAYLOAD \
CW_ELEM_VENDOR_SPECIFIC_PAYLOAD, /* Element ID */ \
cw_in_vendor_specific_payload,0, /* start/end callback*/ \
0, \
0, \
0,0
#define CW_ACTION_IN_WTP_BOARD_DATA \
CW_ELEM_WTP_BOARD_DATA, /* Element ID */ \
cw_in_wtp_board_data, 0, /* start/end callback */ \
0, \
CW_ITEM_WTP_BOARD_DATA, \
0,0
#define CW_ACTION_IN_WTP_DESCRIPTOR \
CW_ELEM_WTP_DESCRIPTOR, /* Element ID */ \
cw_in_wtp_descriptor, 0, /* start/end callback */ \
0, \
CW_ITEM_WTP_DESCRIPTOR, \
0,0
#define CW_ACTION_IN_CAPWAP_CONTROL_IPV4_ADDRESS \
CW_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS, /* Element ID*/ \
cw_in_capwap_control_ip_address, 0, /* start/end callback */ \
MBAG_AVLTREE, /* Type of element */ \
CW_ITEM_CAPWAP_CONTROL_IP_ADDRESS_LIST, /* ID to use store */ \
6, 6 /* min/max length */
#define CW_ACTION_IN_CAPWAP_CONTROL_IPV6_ADDRESS \
CW_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS, /* Element ID*/ \
cw_in_capwap_control_ip_address, 0, /* start/end callback */ \
MBAG_AVLTREE, /* Type of element */ \
CW_ITEM_CAPWAP_CONTROL_IP_ADDRESS_LIST, /* ID to use store */ \
18,18 /* min/max length */
#define CW_ACTION_IN_AC_DESCRIPTOR \
CW_ELEM_AC_DESCRIPTOR, /* Element ID*/ \
cw_in_ac_descriptor, 0, /* start/end callback */ \
MBAG_DATA, /* Type of element */ \
CW_ITEM_AC_DESCRIPTOR, /* ID to use store */ \
12, 8192 /* min/max length */
#define CW_ACTION_IN_RESULT_CODE \
CW_ELEM_RESULT_CODE, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_DWORD, /* Type of element */ \
CW_ITEM_RESULT_CODE, /* ID to use store */ \
4, 4 /* min/max length */
#define CW_ACTION_IN_CAPWAP_TIMERS \
CW_ELEM_CAPWAP_TIMERS, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_WORD, /* Type of element */ \
CW_ITEM_CAPWAP_TIMERS, /* ID to use store */ \
2, 2 /* min/max length */
#define CW_ACTION_IN_IDLE_TIMEOUT \
CW_ELEM_IDLE_TIMEOUT, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_DWORD, /* Type of element */ \
CW_ITEM_IDLE_TIMEOUT, /* ID to use store */ \
4, 4 /* min/max length */
#define CW_ACTION_IN_AC_NAME_WITH_PRIORITY \
CW_ELEM_IDLE_TIMEOUT, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_DWORD, /* Type of element */ \
CW_ITEM_IDLE_TIMEOUT, /* ID to use store */ \
4, 4 /* min/max length */
#define CW_ACTION_IN_RADIO_ADMINISTRATIVE_STATE \
CW_ELEM_RADIO_ADMINISTRATIVE_STATE, /* Element ID*/ \
cw_in_radio_administrative_state, 0, /* start/end callback */ \
MBAG_DWORD, /* Type of element */ \
0, /* ID to use store */ \
4, 4 /* min/max length */
#define CW_ACTION_IN_RADIO_ADMINISTRATIVE_STATE_WTP \
CW_ELEM_RADIO_ADMINISTRATIVE_STATE, /* Element ID*/ \
cw_in_radio_administrative_state_wtp, 0, /* start/end callback */ \
MBAG_DWORD, /* Type of element */ \
0, /* ID to use store */ \
4, 4 /* min/max length */
#define CW_ACTION_IN_MAXIMUM_MESSAGE_LENGTH \
CW_ELEM_MAXIMUM_MESSAGE_LENGTH, /* Element ID*/ \
cw_in_generic, 0, /* start/end callback */ \
MBAG_WORD, /* Type of element */ \
CW_ITEM_MAXIMUM_MESSAGE_LENGTH, /* ID to use store */ \
2, 2 /* min/max length */
#endif

@ -1,4 +1,4 @@
#include "mbag.h"
#include "capwap.h"

@ -1,180 +0,0 @@
#include "mbag.h"
#include "item.h"
#include "capwap_items.h"
const char CW_ITEM_CAPWAP_TRANSPORT_PROTOCOL[]="capwap_transport_protocol";
const char CW_ITEM_IDLE_TIMEOUT[]="idle_timeout";
const char CW_ITEM_DISCOVERY_TYPE[]="discovery_type";
const char CW_ITEM_WTP_NAME[]="wtp_name";
const char CW_ITEM_ECN_SUPPORT[]="ecn_support";
const char CW_ITEM_WTP_FALLBACK[]="wtp_fallback";
const char CW_ITEM_WTP_MAC_TYPE[]="wtp_mac_type";
const char CW_ITEM_WTP_FRAME_TUNNEL_MODE[]="wtp_frame_tunnel_mode";
const char CW_ITEM_WTP_RADIOS_IN_USE[]="max_radios";
const char CW_ITEM_WTP_MAX_RADIOS[]="radios_in_use";
/*
const char CW_ITEM_WTP_HARDWARE_VENDOR=
*/
const char CW_ITEM_WTP_HARDWARE_VERSION[]="wtp_hardware_version";
const char CW_ITEM_WTP_SOFTWARE_VERSION[]="wtp_software_version";
const char CW_ITEM_WTP_BOOT_VERSION[]="wtp_boot_version";
const char CW_ITEM_WTP_OTHER_VERSION[]="wtp_other_version";
/*
const char CW_ITEM_WTP_SOFTWARE_VENDOR,
*/
/*
const char CW_ITEM_WTP_BOOTLOADER_VENDOR,
*/
const char CW_ITEM_WTP_BOOTLOADER_VERSION[]="wtp_bootloader_version";
/*
const char CW_ITEM_WTP_OTHERSOFTWARE_VENDOR,
const char CW_ITEM_WTP_OTHERSOFTWARE_VERSION,
*/
const char CW_ITEM_WTP_BOARD_DATA[]="wtp_board_data";
const char CW_ITEM_WTP_DESCRIPTOR[]="0wtp_descriptor";
const char CW_ITEM_CAPWAP_TIMERS[]="capwap_timers";
const char CW_ITEM_AC_NAME[]="ac_name";
const char CW_ITEM_AC_DESCRIPTOR[]="ac_descriptor";
const char CW_ITEM_RESULT_CODE[]="result_code";
const char CW_ITEM_AC_STATUS[]="ac_status";
const char CW_ITEM_AC_HARDWARE_VERSION[]="ac_hardware_version";
const char CW_ITEM_AC_SOFTWARE_VERSION[]="ac_software_version";
const char CW_ITEM_AC_IP_LIST[]="ac_ip_list";
const char CW_ITEM_CAPWAP_CONTROL_IP_ADDRESS_LIST[]="capwap_ctrl_ip_addr";
const char CW_ITEM_CAPWAP_LOCAL_IP_ADDRESS[]="capwap_local_ip_addr";
const char CW_ITEM_LOCATION_DATA[]="location_data";
const char CW_ITEM_SESSION_ID[]="session_id";
const char CW_ITEM_AC_TIMESTAMP[]="ac_timestamp";
const char CW_ITEM_STATISTICS_TIMER[]="statistics_timer";
const char CW_ITEM_WTP_REBOOT_STATISTICS[]="wtp_reboot_statistics";
const char CW_ITEM_IMAGE_IDENTIFIER[]="image_identifier";
//const char CW_ITEM_AC_HASH_VALUE[]="ac_hash_value";
const char CW_ITEM_AC_NAME_WITH_PRIORITY[]="ac_name_with_priority";
const char CW_ITEM_MAXIMUM_MESSAGE_LENGTH[]="maximum_message_length";
/* CIPWAP and Cisco */
//const char CW_ITEM_WTP_GROUP_NAME[]="wtp_group_name";
/* Other Items */
const char CW_ITEM_AC_IMAGE_DIR[]="ac_img_dir"; /* Path where WTP images are stored */
const char CW_ITEM_IMAGE_FILENAME[]="img_filename"; /* Full path of image filename */
const char CW_ITEM_DISCOVERIES[]="discoveries";
/** FILE handle for uploading and downloading images */
const char CW_ITEM_IMAGE_FILEHANDLE[]="image_file_handle";
const char CW_ITEM_RADIO_CFG[]="radio_cfg";
const char CW_ITEM_CISCO_BOARD_DATA_OPTIONS[]="cisco_board_data_options";
const char CW_ITEM_RADIOS[]="radios";
const char CW_ITEM_RADIO_OPER_STATE[]="radio_oper_state";
const char CW_ITEM_WTP_BOARD_VENDOR[]="vendor_id";
const char CW_ITEM_WTP_BOARD_MODELNO[]="model_no";
const char CW_ITEM_WTP_BOARD_MACADDRESS[]="wtp_board_macaddress";
const char CW_ITEM_WTP_BOARD_ID[]="wtp_board_id";
const char CW_ITEM_WTP_BOARD_REVISION[]="wtp_board_revision";
const char CW_ITEM_WTP_BOARD_SERIALNO[]="serial_no";
const char CW_ITEM_RADIO_INFOS[]="radio_infos";
//const char CW_ITEM_XY[]="wtp_name";
struct cw_itemdef capwap_itemdefs[] = {
{CW_ITEM_WTP_NAME,CW_ITEM_NONE,MBAG_STR},
{CW_ITEM_WTP_MAC_TYPE,CW_ITEM_NONE,MBAG_BYTE},
{CW_ITEM_WTP_FRAME_TUNNEL_MODE,CW_ITEM_NONE,MBAG_BYTE},
{CW_ITEM_WTP_FALLBACK,CW_ITEM_NONE,MBAG_BYTE},
/* Reboot Statistics */
{CW_ITEM_WTP_REBOOT_STATISTICS,CW_ITEM_NONE,MBAG_MBAG},
{CW_ITEM_WTP_REBOOT_STATISTICS,CW_ITEM_REBOOT_COUNT,MBAG_WORD},
{CW_ITEM_WTP_REBOOT_STATISTICS,CW_ITEM_REBOOT_AC_INITIATED_COUNT,MBAG_WORD},
{CW_ITEM_WTP_REBOOT_STATISTICS,CW_ITEM_REBOOT_LINK_FAILURE_COUNT,MBAG_WORD},
{CW_ITEM_WTP_REBOOT_STATISTICS,CW_ITEM_REBOOT_SW_FAILURE_COUNT,MBAG_WORD},
{CW_ITEM_WTP_REBOOT_STATISTICS,CW_ITEM_REBOOT_HW_FAILURE_COUNT,MBAG_WORD},
{CW_ITEM_WTP_REBOOT_STATISTICS,CW_ITEM_REBOOT_OTHER_FAILURE_COUNT,MBAG_WORD},
{CW_ITEM_WTP_REBOOT_STATISTICS,CW_ITEM_REBOOT_UNKNOWN_FAILURE_COUNT,MBAG_WORD},
{CW_ITEM_WTP_REBOOT_STATISTICS,CW_ITEM_REBOOT_LAST_FAILURE_TYPE,MBAG_BYTE},
{CW_ITEM_CAPWAP_TRANSPORT_PROTOCOL,CW_ITEM_NONE,MBAG_BYTE},
{CW_ITEM_LOCATION_DATA,CW_ITEM_NONE,MBAG_STR},
//{CW_ITEM_WTP_GROUP_NAME,CW_ITEM_NONE,MBAG_STR},
{CW_ITEM_MAXIMUM_MESSAGE_LENGTH,CW_ITEM_NONE,MBAG_WORD},
{CW_ITEM_STATISTICS_TIMER,CW_ITEM_NONE,MBAG_WORD},
{CW_ITEM_IDLE_TIMEOUT,CW_ITEM_NONE,MTYPE_DWORD},
{CW_ITEM_CAPWAP_TIMERS,CW_ITEM_NONE,MBAG_WORD},
{CW_ITEM_AC_NAME_WITH_PRIORITY,CW_ITEM_ANY,MBAG_STR},
{CW_ITEM_AC_NAME,CW_ITEM_NONE,MBAG_STR},
{CW_ITEM_RESULT_CODE,CW_ITEM_NONE,MTYPE_DWORD},
{CW_ITEM_ECN_SUPPORT,CW_ITEM_NONE,MBAG_BYTE},
{CW_ITEM_DISCOVERY_TYPE,CW_ITEM_NONE,MBAG_BYTE},
{ CW_ITEM_SESSION_ID,CW_ITEM_NONE,MBAG_BSTR},
//{CW_ITEM_AP_MODE_AND_TYPE,CW_ITEM_NONE,MBAG_WORD},
/* Board Data */
{CW_ITEM_WTP_BOARD_DATA,CW_ITEM_NONE,MBAG_MBAG},
{CW_ITEM_WTP_BOARD_DATA,CW_ITEM_WTP_BOARD_VENDOR,MTYPE_DWORD},
{CW_ITEM_WTP_BOARD_DATA,CW_ITEM_WTP_BOARD_MODELNO,MBAG_BSTR16},
{CW_ITEM_WTP_BOARD_DATA,CW_ITEM_WTP_BOARD_SERIALNO,MBAG_BSTR16},
/* Cisco Specific items, should be moved to a file like
cisco_items or so */
{CW_ITEM_CISCO_BOARD_DATA_OPTIONS,CW_ITEM_NONE,MBAG_BSTR16},
{CW_ITEM_NONE}
};
const char CW_RADIOITEM_ADMIN_STATE[]="admin_state";
const char CW_RADIOITEM_OPER_STATE[]="oper_state";
const char CW_RADIOITEM_DECRYPTION_ERROR_REPORT_PERIOD[]="decryption_error_report_period";
struct cw_itemdef capwap_radioitemdefs[] = {
{CW_RADIOITEM_ADMIN_STATE,CW_ITEM_NONE,MBAG_BYTE},
{CW_RADIOITEM_OPER_STATE,CW_ITEM_NONE,MBAG_WORD},
{CW_RADIOITEM_DECRYPTION_ERROR_REPORT_PERIOD,CW_ITEM_NONE,MBAG_WORD},
{CW_ITEM_NONE}
};

@ -1,207 +0,0 @@
#ifndef __CAPWAP_ITEMS_H
#define __CAPWAP_ITEMS_H
#include "item.h"
/*
CW_ITEM_NONE=0,
CW_ITEM_IDLE_TIMEOUT,
CW_ITEM_DISCOVERY_TYPE,
CW_ITEM_WTP_NAME,
CW_ITEM_WTP_BOARD_VENDOR,
CW_ITEM_WTP_BOARD_MODELNO,
CW_ITEM_WTP_BOARD_MACADDRESS,
CW_ITEM_WTP_BOARD_ID,
CW_ITEM_WTP_BOARD_REVISION,
CW_ITEM_WTP_BOARD_SERIALNO,
CW_ITEM_WTP_MAC_TYPE,
CW_ITEM_WTP_FRAME_TUNNEL_MODE,
CW_ITEM_WTP_RADIOS_IN_USE,
CW_ITEM_WTP_MAX_RADIOS,
CW_ITEM_WTP_HARDWARE_VENDOR,
CW_ITEM_WTP_HARDWARE_VERSION,
CW_ITEM_WTP_SOFTWARE_VENDOR,
CW_ITEM_WTP_SOFTWARE_VERSION,
CW_ITEM_WTP_BOOTLOADER_VENDOR,
CW_ITEM_WTP_BOOTLOADER_VERSION,
CW_ITEM_WTP_OTHERSOFTWARE_VENDOR,
CW_ITEM_WTP_OTHERSOFTWARE_VERSION,
CW_ITEM_WTP_BOARD_DATA,
CW_ITEM_WTP_DESCRIPTOR,
CW_ITEM_CAPWAP_TIMERS,
CW_ITEM_RADIO_ADMINISTRATIVE_STATE,
CW_ITEM_AC_NAME,
CW_ITEM_AC_DESCRIPTOR,
CW_ITEM_RESULT_CODE,
CW_ITEM_AC_STATUS,
CW_ITEM_AC_HARDWARE_VERSION,
CW_ITEM_AC_SOFTWARE_VERSION,
CW_ITEM_AC_IP_LIST,
CW_ITEM_CAPWAP_CONTROL_IP_ADDRESS_LIST,
CW_ITEM_CAPWAP_LOCAL_IP_ADDRESS,
CW_ITEM_LOCATION_DATA,
CW_ITEM_SESSION_ID,
CW_ITEM_AC_TIMESTAMP,
CW_ITEM_STATISTICS_TIMER,
CW_ITEM_WTP_REBOOT_STATISTICS,
CW_ITEM_IMAGE_IDENTIFIER,
CW_ITEM_AC_HASH_VALUE,
CW_ITEM_AC_NAME_WITH_PRIORITY,
CW_ITEM_MAXIMUM_MESSAGE_LENGTH,
CW_ITEM_WTP_GROUP_NAME,
CW_ITEM_AC_IMAGE_DIR,
CW_ITEM_IMAGE_FILENAME,
CW_ITEM_DISCOVERIES,
CW_ITEM_IMAGE_FILEHANDLE,
CW_ITEM_RADIO_CFG,
CW_ITEM_AP_MODE_AND_TYPE,
CW_ITEM_CISCO_BOARD_DATA_OPTIONS,
CW_ITEM_RADIOS,
CW_ITEM_RADIO_OPER_STATE,
*/
extern const char CW_ITEM_IDLE_TIMEOUT[];
extern const char CW_ITEM_DISCOVERY_TYPE[];
extern const char CW_ITEM_WTP_NAME[];
extern const char CW_ITEM_WTP_FALLBACK[];