DTNMA Reference Tools v2.1.0 - 13.gc5c0bac
Delay-Tolerant Networking Management Architecture (DTNMA) Tool Suite
Loading...
Searching...
No Matches
nm_sql.c File Reference

This file is only included in the build when either ::HAVE_POSTGRESQL or ::HAVE_MYSQL are defined. More...

#include "nm_sql.h"
#include <cace/ari/cbor.h>
#include <cace/amm/typing.h>
#include <cace/amm/semtype.h>
#include <cace/util/logging.h>
#include <cace/ari/text.h>
#include <cace/ari/text_util.h>
#include <string.h>
#include <arpa/inet.h>
#include <m-bstring.h>
+ Include dependency graph for nm_sql.c:

Enumerations

enum  db_con_t { DB_CTRL_CON , DB_RPT_CON , DB_REST_CON , MGR_NUM_SQL_CONNECTIONS }
 
enum  queries {
  ARI_RPTSET_INSERT , ARI_AGENT_INSERT , ARI_EXECSET_INSERT , REFDM_DB_LOG_MSG ,
  MGR_NUM_QUERIES
}
 

Functions

cace_ari_ac_tdb_query_ac (size_t dbidx, int ac_id)
 
void refdm_db_log_msg (const char *file, int line, const char *fun, int level, size_t dbidx, const char *format,...)
 Utility function to insert debug or error informational messages into the database.
 
uint32_t refdm_db_mgt_init (refdm_db_t *parms, uint32_t clear, uint32_t log)
 
uint32_t refdm_db_mgt_init_con (size_t idx, refdm_db_t *parms)
 Initialize specified (thread-specific) SQL connection and prepared queries Prepared queries are connection specific.
 
 CACE_LOG_INFO ("refdm_db_mgt_init -->1")
 
void refdm_db_mgt_close (void)
 
void refdm__db_mgt_close_conn (size_t idx)
 
int refdm_db_mgt_connected (size_t idx)
 
 va_start (args, format)
 
 m_string_init_vprintf (query, format, args)
 
 va_end (args)
 
 CACE_LOG_INFO ("-->%d", RET_PASS)
 
int32_t refdm_db_mgt_query_insert (int db_idx, uint32_t *idx, char *format,...)
 
static int transform_cbor_str_to_cace_data (cace_ari_t *ari_item, char *cbor_str, char **errm)
 Takes a C string and returns the corresponding cace_ari_t.
 
refdm_agent_trefdm_db_fetch_agent (int32_t id)
 
int32_t refdm_db_fetch_agent_idx (const char *eid)
 Get the index of an Agent from its endpoint name.
 
uint32_t refdm_db_insert_rptset (const cace_ari_t *val, const refdm_agent_t *agent)
 
uint32_t refdm_db_insert_agent (const m_string_t eid)
 
uint32_t refdm_db_insert_execset (const cace_ari_t *val, const refdm_agent_t *agent)
 

Variables

const char * TBL_NAME_RPTSET = "ari_rptset"
 
const char * COL_NAME_REFERENCE_TIME = "reference_time"
 
const char * COL_NAME_AGENT_ID = "agent_id"
 
const char * COL_NAME_ARI_RPTSET_ID = "ari_rptset_id"
 
const char * COL_NAME_REPORT_LIST = "report_list"
 
const char * COL_NAME_REPORT_LIST_CBOR = "report_list_cbor"
 
const char * COL_NAME_NONCE_INT = "nonce_int"
 
const char * COL_NAME_NONCE_BYTES = "nonce_bytes"
 
static refdm_db_t * gParms
 
static pthread_mutex_t db_rest_con_use
 
 return
 
return result
 
m_string_t query
 
return RET_PASS
 

Detailed Description

This file is only included in the build when either ::HAVE_POSTGRESQL or ::HAVE_MYSQL are defined.

Enumeration Type Documentation

◆ db_con_t

enum db_con_t
Enumerator
DB_CTRL_CON 

Connection for receiving outgoing controls from database.

DB_RPT_CON 

Connection associated with DM RX thread.

All activities in this thread will execute within transactions.

DB_REST_CON 

Connection for REST API access.

MGR_NUM_SQL_CONNECTIONS 

Total number of connections.

◆ queries

enum queries
Enumerator
ARI_RPTSET_INSERT 
ARI_AGENT_INSERT 
ARI_EXECSET_INSERT 
REFDM_DB_LOG_MSG 
MGR_NUM_QUERIES 

Function Documentation

◆ CACE_LOG_INFO() [1/2]

CACE_LOG_INFO ( "-->%d"  ,
RET_PASS   
)

◆ CACE_LOG_INFO() [2/2]

CACE_LOG_INFO ( "refdm_db_mgt_init -->1"  )

◆ db_query_ac()

cace_ari_ac_t * db_query_ac ( size_t  dbidx,
int  ac_id 
)

◆ m_string_init_vprintf()

m_string_init_vprintf ( query  ,
format  ,
args   
)

◆ refdm__db_mgt_close_conn()

void refdm__db_mgt_close_conn ( size_t  idx)

References MGR_NUM_QUERIES.

Referenced by refdm_db_mgt_close().

◆ refdm_db_fetch_agent()

refdm_agent_t * refdm_db_fetch_agent ( int32_t  id)

◆ refdm_db_fetch_agent_idx()

int32_t refdm_db_fetch_agent_idx ( const char *  eid)

Get the index of an Agent from its endpoint name.

Parameters
[in]senderThe agent EID.
Returns
The corresponding Index, or zero if unsuccessful

References CACE_FREE, CACE_LOG_ERR, CACE_LOG_INFO, CACE_MALLOC, DB_REST_CON, DB_RPT_CON, result, and RET_PASS.

Referenced by agentsGetHandler(), agentShowHexReports(), agentShowTextReports(), and refdm_mgr_clear_reports().

◆ refdm_db_insert_agent()

uint32_t refdm_db_insert_agent ( const m_string_t  eid)
Parameters
eidagent eid being added
statusSet to 0 if parsing fails, but not modified on success
Returns
Report Set ID, or 0 on error

References ARI_AGENT_INSERT, CACE_LOG_INFO, and DB_RPT_CON.

Referenced by refdm_mgr_agent_add().

◆ refdm_db_insert_execset()

◆ refdm_db_insert_rptset()

uint32_t refdm_db_insert_rptset ( const cace_ari_t val,
const refdm_agent_t agent 
)

◆ refdm_db_log_msg()

void refdm_db_log_msg ( const char *  filename,
int  lineno,
const char *  funcname,
int  level,
size_t  dbidx,
const char *  format,
  ... 
)

Utility function to insert debug or error informational messages into the database.

NOTE: If operating within a transaction, caller is responsible for committing transaction.

References MGR_NUM_SQL_CONNECTIONS, REFDM_DB_LOG_MSG, va_end(), and va_start().

◆ refdm_db_mgt_close()

void refdm_db_mgt_close ( void  )

◆ refdm_db_mgt_connected()

int refdm_db_mgt_connected ( size_t  idx)

◆ refdm_db_mgt_init()

uint32_t refdm_db_mgt_init ( refdm_db_t *  parms,
uint32_t  clear,
uint32_t  log 
)

◆ refdm_db_mgt_init_con()

uint32_t refdm_db_mgt_init_con ( size_t  idx,
refdm_db_t *  parms 
)

Initialize specified (thread-specific) SQL connection and prepared queries Prepared queries are connection specific.

While we may not use all prepared statements for all connections, initializing the same sets everywhere simplifies management.

References ARI_AGENT_INSERT, ARI_EXECSET_INSERT, ARI_RPTSET_INSERT, CACE_LOG_INFO, CACE_LOG_WARNING, gParms, and REFDM_DB_LOG_MSG.

Referenced by refdm_db_mgt_connected(), and refdm_db_mgt_init().

◆ refdm_db_mgt_query_insert()

int32_t refdm_db_mgt_query_insert ( int  db_idx,
uint32_t *  idx,
char *  format,
  ... 
)

◆ transform_cbor_str_to_cace_data()

static int transform_cbor_str_to_cace_data ( cace_ari_t ari_item,
char *  cbor_str,
char **  errm 
)
static

Takes a C string and returns the corresponding cace_ari_t.

Returns
Returns RET_PASS on success otherwise RET_FAIL_* on failure.
  • Parameters
    [out]ari_itemThe ARI to decode into.
  • Parameters
    [in]cbor_strThe string to decode from.
    [out]errmIf non-null, this will be set to a specific error message associated with any failure. When the return code is non-zero, if the pointed-to pointer is non-null it must be freed using CACE_FREE().

References cace_ari_cbor_decode(), cace_data_deinit(), cace_data_init_view(), errm, RET_FAIL_UNEXPECTED, and RET_PASS.

◆ va_end()

va_end ( args  )

◆ va_start()

va_start ( args  ,
format   
)

Variable Documentation

◆ COL_NAME_AGENT_ID

const char* COL_NAME_AGENT_ID = "agent_id"

◆ COL_NAME_ARI_RPTSET_ID

const char* COL_NAME_ARI_RPTSET_ID = "ari_rptset_id"

◆ COL_NAME_NONCE_BYTES

const char* COL_NAME_NONCE_BYTES = "nonce_bytes"

◆ COL_NAME_NONCE_INT

const char* COL_NAME_NONCE_INT = "nonce_int"

◆ COL_NAME_REFERENCE_TIME

const char* COL_NAME_REFERENCE_TIME = "reference_time"

◆ COL_NAME_REPORT_LIST

const char* COL_NAME_REPORT_LIST = "report_list"

◆ COL_NAME_REPORT_LIST_CBOR

const char* COL_NAME_REPORT_LIST_CBOR = "report_list_cbor"

◆ db_rest_con_use

pthread_mutex_t db_rest_con_use
static

◆ gParms

refdm_db_t* gParms
static

◆ query

m_string_t query

◆ result

return result

Referenced by ari_numeric_add(), bp_recv_worker(), bp_send_worker(), builtin_bool_convert(), builtin_real32_convert(), builtin_real64_convert(), builtin_time_convert(), cace_amm_ari_is_truthy(), cace_amm_numeric_promote_type(), cace_amp_proxy_cli_recv(), cace_amp_proxy_cli_send(), cace_amp_proxy_msg_recv(), cace_amp_proxy_msg_send(), cace_ari_equal(), cace_numeric_binary_comparison_operator(), cace_numeric_binary_operator(), cace_numeric_integer_binary_operator(), check_execute(), check_lookup(), refda_adm_ietf_alarms_ctrl_compress_alarms(), refda_adm_ietf_alarms_ctrl_purge_alarms(), refda_adm_ietf_alarms_ctrl_set_alarms_manager_state(), refda_adm_ietf_alarms_edd_alarm_list(), refda_adm_ietf_alarms_edd_category_inventory(), refda_adm_ietf_alarms_edd_resource_inventory(), refda_adm_ietf_dtnma_agent_acl_edd_access_list(), refda_adm_ietf_dtnma_agent_acl_edd_current_groups(), refda_adm_ietf_dtnma_agent_acl_edd_group_list(), refda_adm_ietf_dtnma_agent_ctrl_catch(), refda_adm_ietf_dtnma_agent_ctrl_if_then_else(), refda_adm_ietf_dtnma_agent_ctrl_wait_cond_check(), refda_adm_ietf_dtnma_agent_edd_capability(), refda_adm_ietf_dtnma_agent_edd_const_list(), refda_adm_ietf_dtnma_agent_edd_exec_running(), refda_adm_ietf_dtnma_agent_edd_last_msg_rx_time(), refda_adm_ietf_dtnma_agent_edd_num_exec_failed(), refda_adm_ietf_dtnma_agent_edd_num_exec_started(), refda_adm_ietf_dtnma_agent_edd_num_exec_succeeded(), refda_adm_ietf_dtnma_agent_edd_num_msg_rx(), refda_adm_ietf_dtnma_agent_edd_num_msg_rx_failed(), refda_adm_ietf_dtnma_agent_edd_num_msg_tx(), refda_adm_ietf_dtnma_agent_edd_num_msg_tx_failed(), refda_adm_ietf_dtnma_agent_edd_odm_list(), refda_adm_ietf_dtnma_agent_edd_sbr_list(), refda_adm_ietf_dtnma_agent_edd_sw_vendor(), refda_adm_ietf_dtnma_agent_edd_sw_version(), refda_adm_ietf_dtnma_agent_edd_tbr_list(), refda_adm_ietf_dtnma_agent_edd_typedef_list(), refda_adm_ietf_dtnma_agent_edd_var_list(), refda_adm_ietf_dtnma_agent_oper_add(), refda_adm_ietf_dtnma_agent_oper_bit_and(), refda_adm_ietf_dtnma_agent_oper_bit_not(), refda_adm_ietf_dtnma_agent_oper_bit_or(), refda_adm_ietf_dtnma_agent_oper_bit_xor(), refda_adm_ietf_dtnma_agent_oper_bool_and(), refda_adm_ietf_dtnma_agent_oper_bool_not(), refda_adm_ietf_dtnma_agent_oper_bool_or(), refda_adm_ietf_dtnma_agent_oper_bool_xor(), refda_adm_ietf_dtnma_agent_oper_compare_eq(), refda_adm_ietf_dtnma_agent_oper_compare_ge(), refda_adm_ietf_dtnma_agent_oper_compare_gt(), refda_adm_ietf_dtnma_agent_oper_compare_le(), refda_adm_ietf_dtnma_agent_oper_compare_lt(), refda_adm_ietf_dtnma_agent_oper_compare_ne(), refda_adm_ietf_dtnma_agent_oper_divide(), refda_adm_ietf_dtnma_agent_oper_multiply(), refda_adm_ietf_dtnma_agent_oper_negate(), refda_adm_ietf_dtnma_agent_oper_remainder(), refda_adm_ietf_dtnma_agent_oper_sub(), refda_adm_ietf_dtnma_agent_oper_tbl_filter(), refda_eval_condition(), refda_eval_target(), refda_exec_check_sbr_condition(), refda_exec_proc_expand(), refda_exec_run_sbr(), refda_exec_sbr_enable(), refda_exec_schedule_sbr(), refda_exec_schedule_tbr(), refda_exec_tbr_enable(), refda_reporting_ctrl(), refdm_db_fetch_agent(), refdm_db_fetch_agent_idx(), refdm_db_mgt_connected(), TEST_CASE(), test_refda_eval_target_failure(), test_reporting_edd_int(), test_reporting_edd_one_int(), timespec_numeric_add(), timespec_numeric_div(), timespec_numeric_mul(), and timespec_numeric_sub().

◆ RET_PASS

◆ return

return

◆ TBL_NAME_RPTSET

const char* TBL_NAME_RPTSET = "ari_rptset"