From 7da8df51903cf3fa8a6419dc6c277220a7ce1d1e Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Thu, 30 Apr 2015 12:10:59 +0000 Subject: [PATCH] More work on SQL support... FossilOrigin-Name: d1c0825caf267daffe8dd04ad59a9b6f56026144fb891ac6879ddeb2988a38a2 --- src/ac/db.c | 42 ++++++++++++++++++++++++++++++++++++++---- src/ac/db.h | 2 ++ src/ac/wtpman.c | 2 ++ src/capwap/mbag.c | 4 ++-- src/capwap/send.c | 12 ++++++++++++ 5 files changed, 56 insertions(+), 6 deletions(-) diff --git a/src/ac/db.c b/src/ac/db.c index 95bbbfdf..a78747b9 100644 --- a/src/ac/db.c +++ b/src/ac/db.c @@ -27,7 +27,7 @@ int db_init() { const char * filename="ac.sqlite3"; - cw_dbg(DBG_INFO,"Initializing Sqlite3 DB: %s",filename); + cw_dbg(DBG_INFO,"Initializing Sqlite3 DB: %s, SQLite3 Version %s",filename,SQLITE_VERSION); int rc = sqlite3_open(filename,&handle); if (rc != SQLITE_OK) { @@ -51,7 +51,7 @@ int db_init() static sqlite3_stmt * ping_stmt; static sqlite3_stmt * put_wtp_prop_stmt; -static sqlite3_stmt * get_task_stmt; +static sqlite3_stmt * get_tasks_stmt; @@ -76,16 +76,24 @@ int db_start() rc = sqlite3_bind_text(ping_stmt,1,conf_acid,-1,SQLITE_STATIC); + /* Prepare statement to update a WTP property */ sql = "INSERT OR REPLACE INTO wtpprops\ (wtpid,rid,prop,val,upd)\ VALUES (?,?,?,?,?)"; - /* Prepare statement to update a WTP property */ rc = sqlite3_prepare_v2(handle, sql,-1, &put_wtp_prop_stmt,0); if (rc) goto errX; + + sql = "SELECT * FROM wtpprops WHERE upd=0 AND wtpid=?"; + rc = sqlite3_prepare_v2(handle, sql,-1, &get_tasks_stmt,0); + if (rc) + goto errX; + + + return 1; @@ -141,8 +149,34 @@ errX: int db_get_tasks(const char * wtpid) { - + + sqlite3_reset(put_wtp_prop_stmt); + sqlite3_clear_bindings(put_wtp_prop_stmt); + if(sqlite3_bind_text(get_tasks_stmt,1,wtpid,-1,SQLITE_STATIC)) + goto errX; + + int rc; + + rc = sqlite3_step(get_tasks_stmt); + if (rc == SQLITE_ROW) { + DBGX("Have a rowi %s",sqlite3_column_text(get_tasks_stmt,0)); + DBGX("Have a rowi %s",sqlite3_column_text(get_tasks_stmt,1)); + DBGX("Have a rowi %s",sqlite3_column_text(get_tasks_stmt,2)); + DBGX("Have a rowi %s",sqlite3_column_text(get_tasks_stmt,3)); + DBGX("Have a rowi %s",sqlite3_column_text(get_tasks_stmt,4)); + } + + DBGX("The SQL RC: %d\n",rc); + return 1; + +errX: + if (rc) { + cw_log(LOG_ERR,"Can't update database with WTP props: %d - %s", + rc,sqlite3_errmsg(handle)); + } + + return 0; } diff --git a/src/ac/db.h b/src/ac/db.h index 49302a9a..8a0aeff3 100644 --- a/src/ac/db.h +++ b/src/ac/db.h @@ -2,5 +2,7 @@ extern void db_ping(); extern int db_init(); int db_start(); void db_put_wtp_prop(const char *wtp_id,int rid, const char * prop,const char * val); +int db_get_tasks(const char * wtpid); + diff --git a/src/ac/wtpman.c b/src/ac/wtpman.c index 09644ea1..a943cca6 100644 --- a/src/ac/wtpman.c +++ b/src/ac/wtpman.c @@ -438,6 +438,8 @@ static void wtpman_run(void *arg) if (errno != EAGAIN) break; } + + db_get_tasks(sock_addr2str(&conn->addr)); } diff --git a/src/capwap/mbag.c b/src/capwap/mbag.c index 4fafae7c..aa999ef0 100644 --- a/src/capwap/mbag.c +++ b/src/capwap/mbag.c @@ -14,7 +14,7 @@ static int mbag_bstr16str(void *item,char *dst) if (utf8) { - d += sprintf(d, "\"%.*s\"", bstr16_len(i->data), bstr16_data(i->data)); + d += sprintf(d, "%.*s", bstr16_len(i->data), bstr16_data(i->data)); } else { d += sprintf(d, "\".x"); d += cw_format_hex(d, bstr16_data(i->data), bstr16_len(i->data)); @@ -27,7 +27,7 @@ static int mbag_bstr16str(void *item,char *dst) static int mbag_strstr(void *item,char *dst) { mbag_item_t *i= item; - return sprintf(dst, "\"%s\"", i->data); + return sprintf(dst, "%s", i->data); } diff --git a/src/capwap/send.c b/src/capwap/send.c index 69dc576c..82d261de 100644 --- a/src/capwap/send.c +++ b/src/capwap/send.c @@ -115,3 +115,15 @@ int cw_send_request(struct conn *conn,int msg_id) return rc; } + + +// XXX find a better name for this function +int cw_send_request_2() +{ + + + + + return 0; +} +