Checks always for mandatory elements.

FossilOrigin-Name: 2e73b184e82e247388dd98ddcb7b4209a5063d58841d3df4600b71ce5732aad1
This commit is contained in:
7u83@mail.ru
2016-03-19 11:57:47 +00:00
parent cbf74ecb5e
commit 0ec4826478
18 changed files with 273 additions and 49 deletions

View File

@ -189,6 +189,20 @@ static cw_action_in_t actions_in[] = {
.end = cw_in_check_generic_resp
}
,
/* Capwap Timers - Config Status Resp */
{
.capwap_state = CW_STATE_CONFIGURE,
.msg_id = CW_MSG_CONFIGURATION_STATUS_RESPONSE,
.elem_id = CW_ELEM_CAPWAP_TIMERS,
.item_id = CW_ITEM_CAPWAP_TIMERS,
.start = cw_in_generic2,
.min_len = 2,
.max_len = 2,
.mand = 1
}
,
/* Idle Timeout - Config Status Resp */
{
@ -203,19 +217,6 @@ static cw_action_in_t actions_in[] = {
}
,
/* Capwap Timers - Config Status Resp */
{
.capwap_state = CW_STATE_CONFIGURE,
.msg_id = CW_MSG_CONFIGURATION_STATUS_RESPONSE,
.elem_id = CW_ELEM_CAPWAP_TIMERS,
.item_id = CW_ITEM_CAPWAP_TIMERS,
.start = cw_in_generic2,
.min_len = 2,
.max_len = 2,
.mand = 1
}
,
@ -233,6 +234,18 @@ static cw_action_in_t actions_in[] = {
,
/* Vendor Specific Payload - Cponfig Status Resp */
{
.capwap_state = CW_STATE_CONFIGURE,
.msg_id = CW_MSG_CONFIGURATION_STATUS_RESPONSE,
.elem_id = CW_ELEM_VENDOR_SPECIFIC_PAYLOAD,
.start = cw_in_vendor_specific_payload
}
,
/* ----------------------------------------------------------------
* Change State Event Response - IN
*/
{
.capwap_state = CW_STATE_CONFIGURE,
@ -285,7 +298,50 @@ static cw_action_in_t actions_in[] = {
}
,
/* Vendor Specific Payload - Echo Response */
/* WTP Name - Config Update Req */
{
.capwap_state = CW_STATE_RUN,
.msg_id = CW_MSG_CONFIGURATION_UPDATE_REQUEST,
.elem_id = CW_ELEM_WTP_NAME,
.item_id = CW_ITEM_WTP_NAME,
.start = cw_in_generic2,
.min_len = 1,
.max_len = 1024,
.mand = 0
}
,
/* Location Data - Config Update Req */
{
.capwap_state = CW_STATE_RUN,
.msg_id = CW_MSG_CONFIGURATION_UPDATE_REQUEST,
.elem_id = CW_ELEM_LOCATION_DATA,
.item_id = CW_ITEM_LOCATION_DATA,
.start = cw_in_generic2,
.min_len = 1,
.max_len = 1024,
.mand = 0
}
,
/* Radio Admin State - Config Status Request */
{
.capwap_state = CW_STATE_RUN,
.msg_id = CW_MSG_CONFIGURATION_UPDATE_REQUEST,
.elem_id = CW_ELEM_RADIO_ADMINISTRATIVE_STATE,
.item_id = CW_ITEM_RADIO_ADMINISTRATIVE_STATE,
.start = cw_in_radio_administrative_state,
.mand = 1
}
,
/* Vendor Specific Payload - Config Update Req */
{
.capwap_state = CW_STATE_RUN,
.msg_id = CW_MSG_CONFIGURATION_UPDATE_REQUEST,

View File

@ -9,7 +9,9 @@ OBJS=\
cisco_out_ac_descriptor.o \
cisco_out_wtp_descriptor.o \
cisco_in_ac_descriptor.o\
cisco80211.o
cisco80211.o \
cisco_in_radio_administrative_state.o
NAME=libcisco.a

View File

@ -4,14 +4,21 @@
#include "cw/conn.h"
#include "cw/action.h"
extern int cisco_out_ap_timesync(struct conn *conn,struct cw_action_out * a,uint8_t *dst);
extern int cisco_in_wtp_descriptor(struct conn *conn, struct cw_action_in *a, uint8_t * data,
int len, struct sockaddr *from);
extern int cisco_out_ac_descriptor(struct conn *conn,struct cw_action_out * a,uint8_t *dst) ;
extern int cisco_out_wtp_descriptor(struct conn *conn, struct cw_action_out *a, uint8_t * dst);
extern int cisco_out_ap_timesync(struct conn *conn, struct cw_action_out *a,
uint8_t * dst);
extern int cisco_in_wtp_descriptor(struct conn *conn, struct cw_action_in *a,
uint8_t * data, int len, struct sockaddr *from);
extern int cisco_out_ac_descriptor(struct conn *conn, struct cw_action_out *a,
uint8_t * dst);
extern int cisco_out_wtp_descriptor(struct conn *conn, struct cw_action_out *a,
uint8_t * dst);
extern int cisco_in_ac_descriptor(struct conn *conn, struct cw_action_in *a, uint8_t * data,
int len, struct sockaddr *from);
extern int cisco_in_ac_descriptor(struct conn *conn, struct cw_action_in *a,
uint8_t * data, int len, struct sockaddr *from);
extern int cisco_in_radio_administrative_state_wtp(struct conn *conn,
struct cw_action_in *a, uint8_t * data,
int len, struct sockaddr *from);
#endif

View File

@ -34,6 +34,11 @@
static cw_action_in_t actions_in[] = {
/* ----------------------------------------------------------------
* Discovery Response
*/
/* AC Descriptor - Discovery Response */
{
.capwap_state = CW_STATE_DISCOVERY,
@ -48,9 +53,14 @@ static cw_action_in_t actions_in[] = {
,
/* ----------------------------------------------------------------
* Join Response
*/
/* ECN Support - Join Response */
{
/* Make ECN Support non-mand */
.capwap_state = CW_STATE_JOIN,
.msg_id = CW_MSG_JOIN_RESPONSE,
.elem_id = CW_ELEM_ECN_SUPPORT,
@ -64,6 +74,7 @@ static cw_action_in_t actions_in[] = {
/* AC Descriptor - Join Response */
{
/* Cisco's AC Descriptor */
.capwap_state = CW_STATE_JOIN,
.msg_id = CW_MSG_JOIN_RESPONSE,
.elem_id = CW_ELEM_AC_DESCRIPTOR,
@ -76,15 +87,50 @@ static cw_action_in_t actions_in[] = {
,
/* Vendor Specific Payload - Cponfiguration Status Response */
/* ----------------------------------------------------------------
* Configuration Update Request
*/
/* Location Data - Conf Update Req */
{
.capwap_state = CW_STATE_CONFIGURE,
.msg_id = CW_MSG_CONFIGURATION_STATUS_RESPONSE,
.elem_id = CW_ELEM_VENDOR_SPECIFIC_PAYLOAD,
.start = cw_in_vendor_specific_payload
.capwap_state = CW_STATE_RUN,
.vendor_id = CW_VENDOR_ID_CISCO,
.msg_id = CW_MSG_CONFIGURATION_UPDATE_REQUEST,
.elem_id = LW_ELEM_LOCATION_DATA,
.item_id = CW_ITEM_LOCATION_DATA,
.start = cw_in_generic2,
.min_len = 0,
.max_len = 1024,
.mand = 0
}
,
/* WTP Name - Conf Update Req */
{
.capwap_state = CW_STATE_RUN,
.vendor_id = CW_VENDOR_ID_CISCO,
.msg_id = CW_MSG_CONFIGURATION_UPDATE_REQUEST,
.elem_id = CW_CISCO_RAD_NAME,
.item_id = CW_ITEM_WTP_NAME,
.start = cw_in_generic2,
.min_len = 0,
.max_len = 1024,
.mand = 0
}
,
/* Radio Admin State - Config Status Request */
{
.capwap_state = CW_STATE_RUN,
.msg_id = CW_MSG_CONFIGURATION_UPDATE_REQUEST,
.elem_id = CW_ELEM_RADIO_ADMINISTRATIVE_STATE,
.item_id = CW_ITEM_RADIO_ADMINISTRATIVE_STATE,
.start = cisco_in_radio_administrative_state_wtp,
.mand = 1
}
,
/* End of list */
{0, 0}