From 1e7d8a9cad6425189c60be5177c1e0aa8e349821 Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Fri, 10 Apr 2015 17:51:56 +0000 Subject: [PATCH] Introduced colored loggin. FossilOrigin-Name: 55fc8222563fd1a327c866a216bf590a28190fed0d9509ac35667b349637619b --- src/capwap/Makefile | 20 ++-- src/capwap/cw_log.c | 26 ------ src/capwap/cw_log_debug.c | 91 ------------------ src/capwap/dbg.c | 92 +++++++++++++++++++ src/capwap/dbg.h | 9 ++ src/capwap/log.h | 48 ++++++---- src/capwap/{cw_log_tofile.c => log_file.c} | 17 ++-- .../{cw_log_tosyslog.c => log_syslog.c} | 6 +- src/capwap/wtpinfo_readelem_discovery_type.c | 23 ----- src/wtp/join.c | 4 +- src/wtp/wtp_main.c | 2 + 11 files changed, 161 insertions(+), 177 deletions(-) delete mode 100644 src/capwap/cw_log.c rename src/capwap/{cw_log_tofile.c => log_file.c} (54%) rename src/capwap/{cw_log_tosyslog.c => log_syslog.c} (85%) delete mode 100644 src/capwap/wtpinfo_readelem_discovery_type.c diff --git a/src/capwap/Makefile b/src/capwap/Makefile index 848c5daf..c4068a0c 100644 --- a/src/capwap/Makefile +++ b/src/capwap/Makefile @@ -34,10 +34,10 @@ SOCKOBJS=sock_create.o sock_copyaddr.o sock_strtoaddr.o sock_cmpaddr.o sock_addr sock_get_primary_if.o \ sock_receive.o \ -LOGOBJS=cw_log.o \ +LOGOBJS=log.o \ + log_syslog.o \ + log_file.o \ cw_log_debug.o \ - cw_log_tofile.o \ - cw_log_tosyslog.o \ cw_log_str2dbglevel.o \ cw_dbg_elem.o @@ -106,12 +106,6 @@ CAPWAPOBJS= \ cwmsg_addelem_maximum_message_length.o \ cwmsg_addelem_image_identifier.o \ cwmsg_send.o \ - cwsend_unknow_response.o \ - cw_send_configuration_update_response.o \ - cwsend_echo_request.o \ - cw_send_echo_response.o \ - cw_handle_echo_request.o \ - cwsend_conf_status_response.o\ wtpinfo.o \ aciplist.o \ acinfo.o \ @@ -151,7 +145,13 @@ CAPWAPOBJS= \ format.o \ -# cw_readmsg_configuration_status_response.o \ +# cwsend_unknow_response.o \ + cw_send_configuration_update_response.o \ + cwsend_echo_request.o \ + cw_send_echo_response.o \ + cw_handle_echo_request.o \ + cwsend_conf_status_response.o\ + cw_readmsg_configuration_status_response.o \ cw_readmsg_configuration_status_request.o \ cw_readelem_maximum_message_length.o \ cw_readelem_result_code.o\ diff --git a/src/capwap/cw_log.c b/src/capwap/cw_log.c deleted file mode 100644 index de0f1c6c..00000000 --- a/src/capwap/cw_log.c +++ /dev/null @@ -1,26 +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 . - -*/ - - -#include - -#include "log.h" - -void (*cw_log_cb)(int level,const char * fromat, ...) = CW_LOG_DEFAULT_LOG; -const char * cw_log_name = "cw"; - diff --git a/src/capwap/cw_log_debug.c b/src/capwap/cw_log_debug.c index 64661977..44ccd03c 100644 --- a/src/capwap/cw_log_debug.c +++ b/src/capwap/cw_log_debug.c @@ -64,97 +64,6 @@ void cw_log_dbg_(int level, const char *file, int line, const char *format, ...) -void cw_log_dbg_dmp_(int level, const char *file, int line, - const uint8_t * data, int len, const char *format, ...) -{ - - if (!(level & cw_dbg_opt_level)) - return; - - - int maxtlen = 2048; - int i; - int rowlen = CW_LOG_DUMP_ROW_LEN; - int rows = len / rowlen; - int tlen = 0; - - int md; - if (cw_dbg_opt_detail & DBG_DETAIL_ASC_DMP) - md = 2; - else - md = 1; - - - - char *dst = malloc(md * (len * 3 + (rows * 2) + 8 + maxtlen)); - if (!dst) - return; - - if (format != NULL) { - va_list args; - va_start(args, format); - tlen = vsnprintf(dst, maxtlen, format, args); - va_end(args); - } - - - - if (len % CW_LOG_DUMP_ROW_LEN) - rows++; - - - - char *pdst = dst + tlen; - sprintf(pdst, "\n\t"); - pdst += 2; - - char asc_buffer[128]; - char *ascdst = asc_buffer; - - for (i = 0; i < len; i++) { - sprintf(pdst, "%02X ", data[i] & 0xff); - - if (cw_dbg_opt_detail & DBG_DETAIL_ASC_DMP) { - int c = data[i] & 0xff; - if (c < 0x20 || c > 0x80) - c = '.'; - *ascdst = c; - ascdst++; - } - - pdst += 3; - if ((i + 1) % rowlen == 0) { - int l; - if (cw_dbg_opt_detail & DBG_DETAIL_ASC_DMP) { - *ascdst = 0; - l = sprintf(pdst, " | %s\n\t", asc_buffer); - ascdst = asc_buffer; - - } else { - l = sprintf(pdst, "\n\t"); - } - pdst += l; - } - - } - - if (cw_dbg_opt_detail & DBG_DETAIL_ASC_DMP) { - *ascdst = 0; - if (strlen(asc_buffer)) - pdst += sprintf(pdst, " | %s", asc_buffer); - - } - - if (cw_dbg_opt_detail & DBG_DETAIL_LINE_NUMBERS) - cw_log(LOG_DEBUG, "%s:%d: %s", file, line, dst); - else - cw_log(LOG_DEBUG, dst); - - free(dst); - return; - -} - diff --git a/src/capwap/dbg.c b/src/capwap/dbg.c index 45b09b71..6720f9a6 100644 --- a/src/capwap/dbg.c +++ b/src/capwap/dbg.c @@ -68,3 +68,95 @@ void cw_dbg_packet(struct conn *conn, uint8_t * packet, int len) } +void cw_log_dbg_dmp_(int level, const char *file, int line, + const uint8_t * data, int len, const char *format, ...) +{ + + if (!(level & cw_dbg_opt_level)) + return; + + + int maxtlen = 2048; + int i; + int rowlen = CW_LOG_DUMP_ROW_LEN; + int rows = len / rowlen; + int tlen = 0; + + int md; + if (cw_dbg_opt_detail & DBG_DETAIL_ASC_DMP) + md = 2; + else + md = 1; + + + + char *dst = malloc(md * (len * 3 + (rows * 2) + 8 + maxtlen)); + if (!dst) + return; + + if (format != NULL) { + va_list args; + va_start(args, format); + tlen = vsnprintf(dst, maxtlen, format, args); + va_end(args); + } + + + + if (len % CW_LOG_DUMP_ROW_LEN) + rows++; + + + + char *pdst = dst + tlen; + sprintf(pdst, "\n\t"); + pdst += 2; + + char asc_buffer[128]; + char *ascdst = asc_buffer; + + for (i = 0; i < len; i++) { + sprintf(pdst, "%02X ", data[i] & 0xff); + + if (cw_dbg_opt_detail & DBG_DETAIL_ASC_DMP) { + int c = data[i] & 0xff; + if (c < 0x20 || c > 0x80) + c = '.'; + *ascdst = c; + ascdst++; + } + + pdst += 3; + if ((i + 1) % rowlen == 0) { + int l; + if (cw_dbg_opt_detail & DBG_DETAIL_ASC_DMP) { + *ascdst = 0; + l = sprintf(pdst, " | %s\n\t", asc_buffer); + ascdst = asc_buffer; + + } else { + l = sprintf(pdst, "\n\t"); + } + pdst += l; + } + + } + + if (cw_dbg_opt_detail & DBG_DETAIL_ASC_DMP) { + *ascdst = 0; + if (strlen(asc_buffer)) + pdst += sprintf(pdst, " | %s", asc_buffer); + + } + + if (cw_dbg_opt_detail & DBG_DETAIL_LINE_NUMBERS) + cw_log(LOG_DEBUG, "%s:%d: %s", file, line, dst); + else + cw_log(LOG_DEBUG, dst); + + free(dst); + return; +} + + + diff --git a/src/capwap/dbg.h b/src/capwap/dbg.h index 99d81754..14b22f0e 100644 --- a/src/capwap/dbg.h +++ b/src/capwap/dbg.h @@ -3,6 +3,15 @@ #include "conn.h" +#ifndef CW_LOG_DUMP_ROW_LEN +#define CW_LOG_DUMP_ROW_LEN 32 +#endif + +#ifndef CW_LOG_DUMP_ROW_TAB_LEN +#define CW_LOG_DUMP_ROW_TAB_LEN 8 +#endif + + void cw_dbg_elem_(struct conn * conn, int msg, int msgelem, const uint8_t * msgbuf, int len); void cw_dbg_missing_mand(int level,struct conn *conn,cw_action_in_t ** ml,int n,cw_action_in_t *a); void cw_dbg_packet(struct conn *conn, uint8_t * packet, int len); diff --git a/src/capwap/log.h b/src/capwap/log.h index 3ba89c86..4adf0c0d 100644 --- a/src/capwap/log.h +++ b/src/capwap/log.h @@ -32,6 +32,19 @@ #define LOG_ERROR LOG_ERR #endif +#ifndef CW_LOG_DEFAULT_LOG +#define CW_LOG_DEFAULT_LOG cw_log_file +#endif +#ifndef CW_LOG_DEFAULT_VLOG +#define CW_LOG_DEFAULT_VLOG cw_log_vfile +#endif + + + + + + + /** * @defgroup DebugOptions Dbug Options * @{ @@ -78,17 +91,7 @@ /**@}*/ -#ifndef CW_LOG_DUMP_ROW_LEN -#define CW_LOG_DUMP_ROW_LEN 32 -#endif -#ifndef CW_LOG_DUMP_ROW_TAB_LEN -#define CW_LOG_DUMP_ROW_TAB_LEN 8 -#endif - -#ifndef CW_LOG_DEFAULT_LOG -#define CW_LOG_DEFAULT_LOG cw_log_tosyslog -#endif extern void cw_log_dbg_(int type, const char *file, int line, const char *fromat, ...); @@ -103,7 +106,7 @@ extern int cw_dbg_opt_level; #ifdef WITH_CW_LOG -#define cw_log(level,...) cw_log_cb(level,__VA_ARGS__) +#define cw_log(level,...) cw_log_colored(level,__VA_ARGS__) #else #define cw_log(...) #endif @@ -129,14 +132,27 @@ extern int cw_dbg_opt_level; #endif extern void (*cw_log_cb) (int level, const char *fromat, ...); -extern void (*cw_log_debug_cb) (int type, const char *format, ...); +extern void (*cw_vlog_cb) (int level, const char *fromat, va_list args); -extern void (*cw_log_debug_cbs[]) (const char *fromat, ...); +/* Syslog functins */ +extern void cw_log_syslog(int level, const char *format, ...); +extern void cw_log_vsyslog(int level,const char * format, va_list args); + +/* Log to File functions */ +void cw_log_vfile(int level,const char * format, va_list args); +void cw_log_file(int level,const char *format, ...); + + + +void cw_log_colored(int level, const char *format, ...); + + + +//extern void (*cw_log_debug_cb) (int type, const char *format, ...); + +//extern void (*cw_log_debug_cbs[]) (const char *fromat, ...); extern int cw_log_debug_dump_(int level, const uint8_t * data, int len, const char *format, ...); -extern void cw_vlog_(int level, const char *format, va_list args); -extern void cw_log_tosyslog(int level, const char *format, ...); -extern void cw_log_tofile(int level, const char *format, ...); extern void cw_dbg_msgelem_(int msg, int msgelem, const uint8_t * msgbuf, int len); diff --git a/src/capwap/cw_log_tofile.c b/src/capwap/log_file.c similarity index 54% rename from src/capwap/cw_log_tofile.c rename to src/capwap/log_file.c index 3767b3ad..56acb2f4 100644 --- a/src/capwap/cw_log_tofile.c +++ b/src/capwap/log_file.c @@ -8,27 +8,30 @@ int cw_log_file_flags = LOG_PERROR; char * cw_log_filename = NULL; -void cw_vlog_tofile_(int level,const char * format, va_list args) +void cw_log_vfile(int level,const char * format, va_list args) { - switch(level){ +/* switch(level){ case LOG_DEBUG: - printf("DEBUG:"); + printf("DBG:"); break; case LOG_INFO: printf("INFO:"); break; + case LOG_ERR: + printf("ERROR:"); + break; } +*/ vprintf(format,args); + printf("\n"); } -void cw_log_tofile(int level,const char *format, ...) +void cw_log_file(int level,const char *format, ...) { va_list args; va_start(args, format); - -// cw_vlog_(level,format,args); - cw_vlog_tofile_(level,format,args); + cw_log_vfile(level,format,args); va_end(args); closelog(); } diff --git a/src/capwap/cw_log_tosyslog.c b/src/capwap/log_syslog.c similarity index 85% rename from src/capwap/cw_log_tosyslog.c rename to src/capwap/log_syslog.c index 74abc830..9bb8a683 100644 --- a/src/capwap/cw_log_tosyslog.c +++ b/src/capwap/log_syslog.c @@ -19,17 +19,17 @@ #include "log.h" -void cw_vlog_(int level,const char * format, va_list args) +void cw_log_vsyslog(int level,const char * format, va_list args) { openlog (cw_log_name, LOG_PERROR | LOG_CONS | LOG_PID | LOG_NDELAY, LOG_DEBUG); vsyslog(level,format,args); } -void cw_log_tosyslog(int level,const char *format, ...) +void cw_log_syslog(int level,const char *format, ...) { va_list args; va_start(args, format); - cw_vlog_(level,format,args); + cw_log_vsyslog(level,format,args); va_end(args); closelog(); } diff --git a/src/capwap/wtpinfo_readelem_discovery_type.c b/src/capwap/wtpinfo_readelem_discovery_type.c deleted file mode 100644 index 6b0342b4..00000000 --- a/src/capwap/wtpinfo_readelem_discovery_type.c +++ /dev/null @@ -1,23 +0,0 @@ - -#include "wtpinfo.h" -#include "capwap.h" - -#include "cw_log.h" - - -int wtpinfo_readelem_discovery_type(struct wtpinfo * wtpinfo, int type, uint8_t * msgelem, int len) -{ - if (type != CW_ELEM_DISCOVERY_TYPE) - return 0; - - if (len!=1){ - cw_dbg(DBG_MSG_ERR,"Discarding WTP_DISCOVERY_TYPE msgelem, wrong size, type=%d,len=%d",type,len); - return 1; - } - - wtpinfo->discovery_type=*msgelem; - return 1; - -} - - diff --git a/src/wtp/join.c b/src/wtp/join.c index 26b7608e..36da60c4 100644 --- a/src/wtp/join.c +++ b/src/wtp/join.c @@ -170,7 +170,9 @@ int run_join(struct conn * conn) } if (rc != 0 && rc != 2) { - cw_log(LOG_ERR,"Join to %s was not successful.",sock_addr2str(&conn->addr)); + cw_log(LOG_ERR,"Can't Join AC at %s, AC returned code: %d - %s.", + sock_addr2str(&conn->addr), + rc,cw_strresult(rc)); return 0; } diff --git a/src/wtp/wtp_main.c b/src/wtp/wtp_main.c index a0a0dba7..65a4635e 100644 --- a/src/wtp/wtp_main.c +++ b/src/wtp/wtp_main.c @@ -75,6 +75,8 @@ int main() cw_itemstore_set_str(conn->local,CW_ITEM_WTP_NAME,"WTP Tube"); +cw_log(LOG_ERR,"Entetrente"); + discovery(); join();