From 06e50e8318355b8a6e5525120b874222a0294d9f Mon Sep 17 00:00:00 2001 From: "tobias.herre@wikimedia.de" Date: Wed, 7 Mar 2018 12:13:58 +0000 Subject: [PATCH] added dump suffix FossilOrigin-Name: 894e6305f65760e1e93fc575b96a45a487bdd253ef0f67f0ad2645f262d204ca --- src/cw/conn_process_packet.c | 5 ++++- src/cw/cw_format_dump.c | 6 +++++- src/cw/cw_in_generic.c | 17 +++++++++++++---- src/cw/dbg.c | 9 +++++++-- src/cw/format.h | 1 + src/mod/capwap/capwap_actions_ac.c | 14 ++++++++++++-- 6 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/cw/conn_process_packet.c b/src/cw/conn_process_packet.c index 8d53a7fe..011ceb4b 100644 --- a/src/cw/conn_process_packet.c +++ b/src/cw/conn_process_packet.c @@ -402,7 +402,10 @@ static int process_elements(struct conn *conn, uint8_t * rawmsg, int len, elem_len = cw_get_elem_len(elem); /*printf ("Would start elem processing now %d - %s\n",handler->id, handler->name); -*/ +*/ + cw_dbg_elem(DBG_ELEM, conn, message->type, handler->id, + cw_get_elem_data(elem),elem_len); + handler->get(conn, handler, cw_get_elem_data(elem), elem_len, from); diff --git a/src/cw/cw_format_dump.c b/src/cw/cw_format_dump.c index 12752285..1715a790 100644 --- a/src/cw/cw_format_dump.c +++ b/src/cw/cw_format_dump.c @@ -14,6 +14,7 @@ static struct cw_FormatDumpSettings CW_FORMAT_DUMP_SETTINGS = { 0, /* inv_len */ '*', /* inv_char */ "\n\t", /* dump_prefix */ + "" /* dump_suffix */ " ", /* ascii_prefix */ "\n\t" /* newline */ }; @@ -53,7 +54,6 @@ static int cw_format_dump_row(char *dst, const uint8_t * data, int len, } } - pdst+=sprintf(pdst,"%s",settings->newline); return pdst-dst; } @@ -106,6 +106,10 @@ char *cw_format_dump(const uint8_t * data, int len, rlen = len-pos; } pdst += cw_format_dump_row(pdst,data+pos, rlen, settings); + if(rownewline); + else + pdst += sprintf(pdst,"%s",settings->dump_suffix); } return dst; diff --git a/src/cw/cw_in_generic.c b/src/cw/cw_in_generic.c index c80abbf4..1cbad4b4 100644 --- a/src/cw/cw_in_generic.c +++ b/src/cw/cw_in_generic.c @@ -1,17 +1,26 @@ #include "message_set.h" #include "cw_types.h" +#include "kvstore.h" +#include "log.h" int cw_in_generic(struct conn * conn, struct cw_ElemHandler * handler, uint8_t * elem_data, int elem_len, struct sockaddr * from){ - mavldata_t data, *result; +/* mavldata_t data, *result; char str[30]; - +*/ + + if (!handler->type){ + cw_log(LOG_ERR,"Can't handle element: %s, no type defined",handler->name); + return 0; + } + cw_kvstore_add(conn->remote_cfg, handler->key, handler->type, elem_data,elem_len); + +/* result = handler->type->get(&data,elem_data,elem_len); result->kv.key = strdup(handler->key); handler->type->to_str(result,str,30); -/* printf("Read %d-%s: %s %s\n", handler->id, handler->name, handler->key, str); - */ mavl_add(conn->remote_cfg, result); +*/ return 0; } diff --git a/src/cw/dbg.c b/src/cw/dbg.c index 254f7a97..03401c44 100644 --- a/src/cw/dbg.c +++ b/src/cw/dbg.c @@ -387,12 +387,17 @@ void cw_dbg_elem_colored(int level, struct conn *conn, int msg, int msgelem, const char *elemname; char vendorname[256]; char vendor_details[265]; - + struct cw_ElemHandler * handler; + if (!cw_dbg_is_level(level)) return; *vendor_details = 0; + handler = cw_msgset_get_elemhandler(conn->msgset,0,0,msgelem); + if (!handler) + return; + /* /// TODO XXXX @@ -411,7 +416,7 @@ void cw_dbg_elem_colored(int level, struct conn *conn, int msg, int msgelem, /* // elemname = cw_strelemp(conn->actions, msgelem); */ - elemname=0; + elemname=handler->name; } diff --git a/src/cw/format.h b/src/cw/format.h index 0d2bdeec..e2988c00 100644 --- a/src/cw/format.h +++ b/src/cw/format.h @@ -99,6 +99,7 @@ struct cw_FormatDumpSettings { char inv_char; const char * dump_prefix; + const char * dump_suffix; const char * ascii_prefix; const char *newline; }; diff --git a/src/mod/capwap/capwap_actions_ac.c b/src/mod/capwap/capwap_actions_ac.c index 69e34231..e101b805 100644 --- a/src/mod/capwap/capwap_actions_ac.c +++ b/src/mod/capwap/capwap_actions_ac.c @@ -68,7 +68,16 @@ static struct cw_ElemHandler handlers[] = { capwap_in_wtp_descriptor /* get */ } , - + { + "WTP Frame Tunnel Mode", /* name */ + CAPWAP_ELEM_WTP_FRAME_TUNNEL_MODE, /* Element ID */ + 0,0, /* Vendor / Proto */ + 1,1, /* min/max length */ + CW_TYPE_BYTE, /* type */ + "wtp_frame_tunnel_mode", /* Key */ + cw_in_generic /* get */ + } + , {0,0,0,0,0,0,0,0} }; @@ -79,7 +88,8 @@ static struct cw_ElemDef discovery_request_elements[] ={ {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,CAPWAP_ELEM_WTP_DESCRIPTOR, 1, 0}, + {0,0,CAPWAP_ELEM_WTP_DESCRIPTOR, 1, 0}, + {0,0,CAPWAP_ELEM_WTP_FRAME_TUNNEL_MODE, 1, 0}, {0,0,0,0,0} };