Colored debugging...

FossilOrigin-Name: 153201cffee624726d6bcd3e428c0d69d7cc9e9cba6a84a5687de94a850550dd
This commit is contained in:
7u83@mail.ru
2015-04-11 17:00:51 +00:00
parent 4460a959b9
commit 73aba62d2b
66 changed files with 890 additions and 688 deletions

View File

@ -68,14 +68,11 @@ cw_aciplist_t get_aciplist()
void * get_iplist(void * arg)
{
printf("************************************************************************************\n");
printf("The ist an iplist getter\n");
return get_aciplist();
}
void release_iplist(void *arg,void *data)
{
printf("And an releaser\n");
}
int ac_global_init()

View File

@ -29,6 +29,7 @@
#include "wtplist.h"
#include "capwap/dtls.h"
#include "capwap/log.h"
#include "capwap/dbg.h"
#include "conf.h"
#include "capwap/sock.h"
@ -137,7 +138,7 @@ int main (int argc, const char * argv[])
cw_log(LOG_INFO,"Starting AC-Tube, Name=%s, ID=%s",conf_acname,conf_acid);
cw_dbg_opt_detail=DBG_DETAIL_ASC_DMP;
cw_dbg_opt_display=DBG_DISP_ASC_DMP | DBG_DISP_COLORS;
cw_register_actions_cipwap_ac(&capwap_actions);
@ -305,7 +306,7 @@ void process_cw_ctrl_packet(int index,struct sockaddr * addr, uint8_t * buffer,
char hdrstr[1024];
hdr_print(hdrstr,buffer,len);
cw_dbg(DBG_CW_PKT_IN,"Header for packet from %s\n%s",sock_addr2str(addr),hdrstr);
// cw_dbg(DBG_CW_PKT_IN,"Header for packet from %s\n%s",sock_addr2str(addr),hdrstr);
@ -317,7 +318,7 @@ void process_cw_ctrl_packet(int index,struct sockaddr * addr, uint8_t * buffer,
#else
if (preamble != CAPWAP_PACKET_PREAMBLE ){
#endif
cw_dbg(DBG_CW_PKT_ERR,"Discarding packet, wrong preamble, preamble = 0x%01X",preamble);
cw_dbg(DBG_PKT_ERR,"Discarding packet, wrong preamble, preamble = 0x%01X",preamble);
return;
}
@ -428,10 +429,10 @@ void process_ctrl_packet(int index,struct sockaddr * addr, uint8_t * buffer, int
#ifdef WITH_CW_LOG_DEBUG
char str[100];
sock_addrtostr(addr,str,100);
cw_dbg(DBG_CW_PKT_IN,"Received packet from %s, len = %i, via %s\n",sock_addr2str(addr),len,
socklist[index].type==SOCKLIST_UNICAST_SOCKET ? "unicast":"bcast/mcast");
// cw_dbg(DBG_PKT_IN,"Received packet from %s, len = %i, via %s\n",sock_addr2str(addr),len,
// socklist[index].type==SOCKLIST_UNICAST_SOCKET ? "unicast":"bcast/mcast");
cw_dbg_dmp(DBG_CW_PKT_DMP,buffer,len,"Dump ...");
// cw_dbg_dmp(DBG_CW_PKT_DMP,buffer,len,"Dump ...");
// cw_dbg_dmp(buffer,len,"Packet data for packet, recevied from %s",str);
#endif

View File

@ -27,6 +27,7 @@
#include "conf.h"
#include "capwap/log.h"
#include "capwap/dbg.h"
#include "capwap/cw_util.h"
uint8_t conf_macaddress[12];
@ -537,12 +538,13 @@ static int conf_read_strings( cfg_t * cfg, char * name, char ***dst,int *len)
}
/*
struct conf_dbg_level_names{
const char *name;
int level;
};
*/
static int conf_read_dbg_level(cfg_t *cfg)
@ -555,7 +557,7 @@ static int conf_read_dbg_level(cfg_t *cfg)
for (i=0; i<n; i++) {
char * str = cfg_getnstr(cfg,name,i);
//int u = cw_log_str2dbglevel(str);
cw_dbg_opt_level|=cw_log_str2dbglevel(str);
cw_dbg_opt_level|= cw_strlist_get_id(cw_dbg_strings,str); //cw_log_str2dbglevel(str);
}
return 1;

View File

@ -2,6 +2,7 @@
#include <sqlite3.h>
#include "capwap/log.h"
#include "capwap/dbg.h"
#include "conf.h"
@ -18,7 +19,7 @@ int db_init()
{
const char * filename="ac.sqlite3";
cw_dbg(DBG_CW_INFO,"Init sqlite3 db: %s",filename);
cw_dbg(DBG_INFO,"Init sqlite3 db: %s",filename);
int rc = sqlite3_open(filename,&handle);
if (rc)
{
@ -46,7 +47,7 @@ static sqlite3_stmt * ping_stmt;
int db_start()
{
cw_dbg(DBG_CW_INFO,"Start sqlite3 db");
cw_dbg(DBG_INFO,"Start sqlite3 db");
sqlite3_stmt *stmt;
int rc = sqlite3_prepare_v2(handle, "INSERT INTO acs (acid,acname) VALUES (?,?);",-1,&stmt,0);

View File

@ -15,6 +15,7 @@
#include "wtpman.h"
#include "conf.h"
#include "capwap/log.h"
#include "capwap/timer.h"
#include "conf.h"
@ -35,6 +36,8 @@
#include "capwap/dtls.h"
#include "capwap/dbg.h"
extern struct cw_actiondef capwap_actions;
@ -91,7 +94,7 @@ static void wtpman_remove(struct wtpman *wtpman)
int check_discovery(struct conn *conn, struct cw_action_in *a, uint8_t * data, int len)
{
printf("Discovery END!!!\n");
conn->capwap_state=CW_STATE_NONE;
conn->capwap_state = CW_STATE_NONE;
return 0;
}
@ -173,7 +176,7 @@ static void wtpman_run_discovery(void *arg)
char wtpinfostr[8192];
wtpinfo_print(wtpinfostr, &wtpman->wtpinfo);
cw_dbg(DBG_CW_INFO, "Discovery request gave us the follwing WTP Info:\n%s",
cw_dbg(DBG_INFO, "Discovery request gave us the follwing WTP Info:\n%s",
wtpinfostr);
@ -190,7 +193,7 @@ static void wtpman_run_discovery(void *arg)
/* char wtpinfostr[8192];
wtpinfo_print(wtpinfostr,&wtpman->wtpinfo);
cw_dbg(DBG_CW_INFO,"Discovery request gave us the follwing WTP Info:\n%s",wtpinfostr);
cw_dbg(DBG_INFO,"Discovery request gave us the follwing WTP Info:\n%s",wtpinfostr);
*/
cwsend_discovery_response(wtpman->conn, cwrmsg->seqnum, &radioinfo, acinfo,
@ -223,8 +226,8 @@ static int wtpman_establish_dtls(void *arg)
wtpman->conn->dtls_cert_file = conf_sslcertfilename;
wtpman->conn->dtls_key_pass = conf_sslkeypass;
wtpman->conn->dtls_verify_peer = conf_dtls_verify_peer;
cw_dbg(DBG_DTLS, "DTLS - Using key file %s", wtpman->conn->dtls_key_file);
cw_dbg(DBG_DTLS, "DTLS - Using cert file %s",
cw_dbg(DBG_DTLS, "Using key file %s", wtpman->conn->dtls_key_file);
cw_dbg(DBG_DTLS, "Using cert file %s",
wtpman->conn->dtls_cert_file);
dtls_ok = 1;
}
@ -258,12 +261,11 @@ static int wtpman_establish_dtls(void *arg)
FILE *f;
f = fopen("pcert.der", "wb");
printf("Calling peers cert\n");
cert = dtls_get_peers_cert(wtpman->conn, 0);
printf("Back from peers cert\n");
printf("Have Peers Cert: %p, %d\n", cert.data, cert.size);
fwrite(cert.data, 1, cert.size, f);
// printf("Have Peers Cert: %p, %d\n", cert.data, cert.size);
// fwrite(cert.data, 1, cert.size, f);
fclose(f);
return 1;
@ -284,6 +286,11 @@ static int wtpman_join(void *arg, time_t timer)
wtpman->conn->outgoing = ac_config;
wtpman->conn->incomming = cw_itemstore_create();
wtpman->conn->local = cw_itemstore_create();
struct conn * conn = wtpman->conn;
cw_dbg(DBG_INFO,"Join State - %s",sock_addr2str(&conn->addr));
while (!cw_timer_timeout(timer) && wtpman->conn->capwap_state == CW_STATE_JOIN) {
int rc = cw_read_messages(wtpman->conn);
@ -292,13 +299,13 @@ static int wtpman_join(void *arg, time_t timer)
}
}
if (wtpman->conn->capwap_state==CW_STATE_JOIN){
if (wtpman->conn->capwap_state == CW_STATE_JOIN) {
cw_dbg(DBG_MSG_ERR, "No join request from %s after %d seconds, WTP died.",
sock_addr2str(&wtpman->conn->addr), wtpman->conn->wait_dtls);
return 0;
}
return 1;
@ -384,280 +391,76 @@ static void wtpman_run(void *arg)
State is Image update
*/
while (!cw_timer_timeout(timer) && wtpman->conn->capwap_state == CW_STATE_CONFIGURE) {
int rc = cw_read_messages(wtpman->conn);
int rc = 0;
while (!cw_timer_timeout(timer)
&& wtpman->conn->capwap_state == CW_STATE_CONFIGURE) {
rc = cw_read_messages(wtpman->conn);
if (rc < 0) {
break;
if (errno != EAGAIN)
break;
}
}
if (!rc) {
cw_dbg(DBG_INFO, "WTP Problem: %s", cw_strrc(rc));
}
struct conn *conn = wtpman->conn;
exit(0);
/*
do {
int cfg_status_msgs[] =
{ CW_MSG_IMAGE_DATA_REQUEST, CW_MSG_CONFIGURATION_STATUS_REQUEST,
-1 };
cwrmsg = conn_wait_for_request(wtpman->conn, cfg_status_msgs, timer);
if (!cwrmsg) {
cw_dbg(DBG_MSG_ERR,
"No conf status or img data request from %s after %d seconds, WTP died.",
sock_addr2str(&wtpman->conn->addr),
wtpman->conn->wait_join);
wtpman_remove(wtpman);
if (conn->capwap_state == CW_STATE_IMAGE_DATA) {
/* Image upload */
const char *filename =
cw_itemstore_get_str(conn->outgoing, CW_ITEM_IMAGE_FILENAME);
if (!filename) {
cw_log(LOG_ERR,
"Can't send image to %s. No Image Filename Item found.",
sock_addr2str(&conn->addr));
return;
}
cw_dbg(DBG_INFO, "Sending image file '%s' to '%s'.", filename,
sock_addr2str(&conn->addr));
FILE *infile = fopen(filename, "rb");
if (infile == NULL) {
cw_log(LOG_ERR, "Can't open image %s: %s",
sock_addr2str(&conn->addr), strerror(errno));
return;
}
// Image data request, the WTP wants an update
if (cwrmsg->type == CW_MSG_IMAGE_DATA_REQUEST) {
int rc = wtpman_send_image_file(wtpman, cwrmsg);
if (rc) {
wtpman_remove(wtpman);
return;
}
cw_itemstore_set_const_ptr(conn->outgoing, CW_ITEM_IMAGE_FILEHANDLE,
infile);
clock_t clk = cw_clock_start();
int rc=0;
while (conn->capwap_state == CW_STATE_IMAGE_DATA && !feof(infile) && rc==0) {
rc = cw_send_request(conn, CW_MSG_IMAGE_DATA_REQUEST);
}
} while (cwrmsg->type != CW_MSG_CONFIGURATION_STATUS_REQUEST);
printf("Have Masseg %d\n", cwrmsg->type);
cwread_configuration_status_request(&wtpman->wtpinfo, cwrmsg->msgelems,
cwrmsg->msgelems_len);
int result_code = 0;
struct ac_info *acinfo = get_acinfo();
struct radioinfo rinf;
cwsend_conf_status_response(wtpman->conn, cwrmsg->seqnum, result_code, &rinf,
acinfo, &wtpman->wtpinfo);
printf("Send the respi but sleep\n");
printf("Next thoing\n");
int change_status_msgs[] =
{ CW_MSG_IMAGE_DATA_REQUEST, CW_MSG_CHANGE_STATE_EVENT_REQUEST, -1 };
cwrmsg = conn_wait_for_request(wtpman->conn, change_status_msgs, timer);
printf("Done\n");
if (!cwrmsg) {
wtpman_remove(wtpman);
return;
}
switch (cwrmsg->type) {
case CW_MSG_CHANGE_STATE_EVENT_REQUEST:
{
printf("Change state event\n!");
struct radioinfo ri;
cwsend_change_state_event_response(wtpman->conn,
cwrmsg->seqnum, &ri);
}
break;
case CW_MSG_IMAGE_DATA_REQUEST:
printf("Image update\n!");
//cwread_image_data_request(0,cwrmsg->msgelems,cwrmsg->msgelems_len);
//cwsend_image_data_response(wtpman->conn,cwrmsg->seqnum,CW_RESULT_SUCCESS);
//send_image_file(wtpman->conn,"/tftpboot/c1130-k9w7-tar.default");
// send_image_file(wtpman->conn,"/home/tube/Downloads/c1130-k9w7-tar.123-8.JEA3.tar");
// send_image_file(wtpman->conn,"/home/tube/Downloads/c1130-k9w8-tar.124-25e.JAP.tar");
// send_image_file(wtpman->conn,"/home/tube/Downloads/c1130-rcvk9w8-tar.124-25e.JAP.tar");
break;
}
printf("WTP is joined now\n");
*/
/*
struct radioinfo * radioinfo;
cwrmsg = wtpman_wait_for_message(wtpman,timer);
if (!cwrmsg){
cw_dbg(DBG_CW_MSG_ERR,"No config or update request from %s after %d seconds, WTP died.",
sock_addr2str(&wtpman->conn->addr),wtpman->conn->wait_join);
wtpman_remove(wtpman);
return;
}
printf("CWR TYPE %d\n",cwrmsg->type);
exit(0);
*/
// cwread_configuration_status_request(&wtpman->wtpinfo,cwrmsg->msgelems, cwrmsg->msgelems_len);
// cwsend_conf_status_response(wtpman->conn,cwrmsg->seqnum,result_code,&radioinfo,acinfo,&wtpman->wtpinfo);
/*
char wtpinfostr[8192];
wtpinfo_print(wtpinfostr, &wtpman->wtpinfo);
cw_dbg(DBG_ALL, "WTP conf_status\n%s", wtpinfostr);
printf("Run run run run run\n");
wtpman_run_run(wtpman);
exit(0);
*/
/*
int ii;
for (ii=0; ii<3; ii++){
cwrmsg = wtpman_wait_for_message(wtpman,timer);
if (cwrmsg){
if (cwrmsg->type == CWMSG_CHANGE_STATE_EVENT_REQUEST){
cwread_change_state_event_request(&wtpman->wtpinfo,cwrmsg->msgelems,cwrmsg->msgelems_len);
cwsend_change_state_event_response(wtpman->conn,cwrmsg->seqnum,wtpman->wtpinfo.radioinfo);
if (rc) {
cw_log(LOG_ERR,"Image download RC: %s",cw_strrc(rc));
}
}
}
*/
/*
wtpman_run_run(wtpman);
exit(0);
if (cwrmsg->type == CW_MSG_IMAGE_DATA_REQUEST) {
cwread_image_data_request(0, cwrmsg->msgelems, cwrmsg->msgelems_len);
cwsend_image_data_response(wtpman->conn, cwrmsg->seqnum,
CW_RESULT_FAILURE);
}
*/
/*
printf("Sending image file\n");
send_image_file(wtpman->conn,"/home/tube/Downloads/c1130-rcvk9w8-tar.124-25e.JAO5.tar");
printf("Back from sending image file\n");
*/
exit(0);
/*
timer = cw_timer_start(30);
cwrmsg = wtpman_wait_for_message(wtpman, timer);
if (cwrmsg)
printf("I have got a message of type %d\n", cwrmsg->type);
if (cwrmsg->type == CW_MSG_IMAGE_DATA_REQUEST) {
cwread_image_data_request(0, cwrmsg->msgelems, cwrmsg->msgelems_len);
cwsend_image_data_response(wtpman->conn, cwrmsg->seqnum,
CW_RESULT_FAILURE);
}
*/
// char wtpinfostr[8192];
// wtpinfo_print(wtpinfostr,&wtpman->wtpinfo);
// cw_log_debug0("WTP joined\n%s",wtpinfostr);
//exit(0);
/*
int msg_counter = 0;
while (1) {
struct cwrmsg *cwrmsg = conn_get_message(wtpman->conn);
if (!cwrmsg) {
msg_counter++;
if (msg_counter < CAPWAP_ECHO_INTERVAL * 2)
continue;
// cw_log_debug0("WTP died");
wtpman_remove(wtpman);
return;
else {
cw_dbg(DBG_INFO,"Image '%s' sucessful sent to %s in %0.1f seconds.",
filename,sock_addr2str(&conn->addr),cw_clock_stop(clk));
conn->capwap_state=CW_STATE_NONE;
}
*/
/*
if (cwrmsg->type == CWMSG_CONFIGURATION_STATUS_REQUEST){
process_conf_status_request(&wtpman->wtpinfo,cwrmsg->msgelems,cwrmsg->msgelems_len);
{
char wtpinfostr[8192];
wtpinfo_print(wtpinfostr,&wtpman->wtpinfo);
cw_dbg(DBG_CW_INFO,"Join request gave us the follwing WTP Info:\n%s",wtpinfostr);
cwsend_conf_status_response(wtpman->conn,cwrmsg->seqnum,result_code,&radioinfo,acinfo,&wtpman->wtpinfo);
}
}
*/
/*
msg_counter = 0;
if (cwrmsg->type == CW_MSG_ECHO_REQUEST) {
cwsend_echo_response(wtpman->conn, cwrmsg->seqnum,
wtpman->wtpinfo.radioinfo);
}
*/
// printf("Got msg: %i\n",cwrmsg->type);
}
fclose(infile);
// process_discovery(wtpman,cwrmsg);
/*
while (1) {
uint8_t *packet = conn_q_get_packet(wtpman->conn);
// int len = *( (uint32_t*)(packet));
// conn_process_packet(wtpman->conn,packet+4,len);
free(packet);
}
*/
return;
}
void wtpman_destroy(struct wtpman *wtpman)
{
if (wtpman->conn)
@ -754,11 +557,11 @@ void wtpman_lw_addpacket(struct wtpman *wtpman, uint8_t * packet, int len)
void wtpman_start(struct wtpman *wtpman, int dtlsmode)
{
if (dtlsmode) {
cw_dbg(DBG_CW_INFO, "Starting wtpman in DTLS mode");
cw_dbg(DBG_INFO, "Starting wtpman in DTLS mode");
pthread_create(&wtpman->thread, NULL, (void *) &wtpman_run,
(void *) wtpman);
} else {
cw_dbg(DBG_CW_INFO, "Starting wtpman in non-dtls mode");
cw_dbg(DBG_INFO, "Starting wtpman in non-dtls mode");
pthread_create(&wtpman->thread, NULL, (void *) &wtpman_run_discovery,
(void *) wtpman);
}