2015-04-07 07:42:36 +02:00
|
|
|
|
|
|
|
|
2015-04-10 17:52:01 +02:00
|
|
|
#include "log.h"
|
2015-04-05 02:11:49 +02:00
|
|
|
#include "capwap.h"
|
2015-04-05 20:27:17 +02:00
|
|
|
#include "capwap_cisco.h"
|
|
|
|
#include "dbg.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static int cw_format_vendor(char *dst, uint32_t vendor_id, int elem_id, const uint8_t * elem_data)
|
|
|
|
{
|
|
|
|
switch (vendor_id) {
|
|
|
|
case CW_VENDOR_ID_CISCO:
|
|
|
|
{
|
|
|
|
sprintf(dst, "%d - %s", elem_id,
|
|
|
|
cw_cisco_id_to_str(elem_id));
|
|
|
|
|
|
|
|
/* dive into LWAPP vendor specific decoding */
|
|
|
|
/*
|
|
|
|
if (elem_id == CW_CISCO_SPAM_VENDOR_SPECIFIC) {
|
|
|
|
uint32_t lw_elem_id = lw_get_word(elem_data + 4 + 6);
|
|
|
|
char b[256];
|
|
|
|
sprintf(b, "\n\t LWAPP Cisco Specific: %d - %s",
|
|
|
|
lw_elem_id, lw_cisco_id_to_str(lw_elem_id));
|
|
|
|
strcat(dst, b);
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2015-04-05 02:11:49 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* print debug info for message elements
|
|
|
|
*/
|
|
|
|
|
2015-04-05 20:27:17 +02:00
|
|
|
void cw_dbg_elem_(struct conn * conn, int msg, int msgelem, const uint8_t * msgbuf, int len)
|
2015-04-05 02:11:49 +02:00
|
|
|
{
|
|
|
|
if (!cw_dbg_is_level(DBG_ELEM))
|
|
|
|
return;
|
|
|
|
|
|
|
|
const char *elemname;
|
|
|
|
char vendorname[256];
|
|
|
|
char vendor_details[265];
|
|
|
|
*vendor_details = 0;
|
|
|
|
|
|
|
|
if (msgelem == CW_ELEM_VENDOR_SPECIFIC_PAYLOAD) {
|
|
|
|
uint32_t vendor_id = ntohl(*((uint32_t *) msgbuf));
|
|
|
|
int type = ntohs(*((uint16_t *) (msgbuf + 4)));
|
|
|
|
cw_format_vendor(vendor_details, vendor_id, type, msgbuf);
|
2015-04-05 20:27:17 +02:00
|
|
|
sprintf(vendorname, "%s/%s/%s",
|
|
|
|
cw_strelemp(conn->actions,msgelem),
|
|
|
|
(char *) lw_vendor_id_to_str(vendor_id), vendor_details);
|
|
|
|
elemname = vendorname;
|
2015-04-05 02:11:49 +02:00
|
|
|
|
|
|
|
} else {
|
2015-04-05 20:27:17 +02:00
|
|
|
elemname = cw_strelemp(conn->actions,msgelem);
|
2015-04-05 02:11:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!cw_dbg_is_level(DBG_ELEM_DMP))
|
|
|
|
cw_dbg(DBG_ELEM,
|
|
|
|
"%s, CAWPAP element: %d (%s), len=%d%s",
|
2015-04-05 20:27:17 +02:00
|
|
|
cw_strmsg(msg), msgelem, elemname, len, "");
|
2015-04-05 02:11:49 +02:00
|
|
|
|
|
|
|
else
|
|
|
|
cw_dbg_dmp(DBG_ELEM, msgbuf, len,
|
|
|
|
"%s, CAPWAP element: %d (%s), len=%d%s\n\tDump ...",
|
2015-04-05 20:27:17 +02:00
|
|
|
cw_strmsg(msg), msgelem, elemname, len, "");
|
2015-04-05 02:11:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|