2015-03-31 12:46:58 +02:00
|
|
|
|
2016-03-11 22:23:00 +01:00
|
|
|
#include "cw.h"
|
2015-04-11 19:00:51 +02:00
|
|
|
#include "dbg.h"
|
2015-04-10 17:52:01 +02:00
|
|
|
#include "log.h"
|
2016-02-27 14:25:32 +01:00
|
|
|
|
2015-03-31 12:46:58 +02:00
|
|
|
/**
|
|
|
|
* @file
|
|
|
|
* @brief Implementation of Vendor Specific Payload
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Default handler for Vendor Specific Payload message elements.
|
2016-03-05 22:32:52 +01:00
|
|
|
*/
|
2018-03-09 07:44:17 +01:00
|
|
|
int cw_in_vendor_specific_payload(struct cw_ElemHandler *handler,
|
|
|
|
struct cw_ElemHandlerParams *params,
|
|
|
|
uint8_t * data, int len)
|
2015-03-31 12:46:58 +02:00
|
|
|
{
|
2016-02-27 14:25:32 +01:00
|
|
|
|
2018-03-09 07:44:17 +01:00
|
|
|
struct cw_ElemHandler *vhandler;
|
|
|
|
|
|
|
|
uint32_t vendor_id, elem_id;
|
|
|
|
|
|
|
|
vendor_id = cw_get_dword(data);
|
|
|
|
elem_id = cw_get_word(data + 4);
|
2015-03-31 12:46:58 +02:00
|
|
|
|
2018-03-09 07:44:17 +01:00
|
|
|
printf("Spec handler looking for %d %d %d\n",0,vendor_id,elem_id);
|
|
|
|
vhandler = cw_msgset_get_elemhandler(params->conn->msgset,0,vendor_id,elem_id);
|
|
|
|
|
2018-02-26 18:28:12 +01:00
|
|
|
|
2018-03-09 07:44:17 +01:00
|
|
|
if (!vhandler) {
|
2016-03-05 22:32:52 +01:00
|
|
|
cw_dbg(DBG_WARN,
|
|
|
|
"Can't handle Vendor Specific Payload %s/%d, in msg %d (%s) in %s state.",
|
2018-03-09 07:44:17 +01:00
|
|
|
cw_strvendor(vendor_id), elem_id, params->msgdata->type,
|
|
|
|
params->msgdata->name, cw_strstate(params->conn->capwap_state));
|
2015-03-31 12:46:58 +02:00
|
|
|
return 0;
|
|
|
|
}
|
2018-03-09 07:44:17 +01:00
|
|
|
|
|
|
|
cw_dbg_elem(DBG_ELEM,params->conn,0,vhandler,data+6,len-6);
|
|
|
|
vhandler->get(vhandler, params, data+6, len-6);
|
2015-03-31 12:46:58 +02:00
|
|
|
|
|
|
|
return 1;
|
2018-02-26 18:28:12 +01:00
|
|
|
|
2015-03-31 12:46:58 +02:00
|
|
|
}
|