X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Frmr%2Fcommon%2Finclude%2Frmr_agnostic.h;h=c396097369623f5732609a9f29731c391f10f6bc;hb=4d1f9bf4b14788f957964d93af940e84f8f01601;hp=6ef3aee654ea42b69675fdec7e6d08cbe12efa48;hpb=c1f84f8a4a4e2b90ad9ec18aba2b5365d3e51386;p=ric-plt%2Flib%2Frmr.git diff --git a/src/rmr/common/include/rmr_agnostic.h b/src/rmr/common/include/rmr_agnostic.h index 6ef3aee..c396097 100644 --- a/src/rmr/common/include/rmr_agnostic.h +++ b/src/rmr/common/include/rmr_agnostic.h @@ -29,6 +29,8 @@ #ifndef _rmr_agnostic_h #define _rmr_agnostic_h +#include // needed to support some structs + typedef struct endpoint endpoint_t; // place holder for structs defined in nano/nng private.h typedef struct uta_ctx uta_ctx_t; @@ -53,15 +55,19 @@ typedef struct uta_ctx uta_ctx_t; #define RMR_MSG_VER 3 // message version this code was designed to handle // environment variable names we'll suss out -#define ENV_BIND_IF "RMR_BIND_IF" // the interface to bind to for both normal comma and RTG (0.0.0.0 if missing) -#define ENV_RTG_PORT "RMR_RTG_SVC" // the port we'll listen on for rtg connections -#define ENV_SEED_RT "RMR_SEED_RT" // where we expect to find the name of the seed route table +#define ENV_BIND_IF "RMR_BIND_IF" // the interface to bind to for both normal comma and RTG (0.0.0.0 if missing) +#define ENV_RTG_PORT "RMR_RTG_SVC" // the port we'll listen on for rtg connections (deprecated; see RTG_SVC and CTL_PORT) +#define ENV_RTG_ADDR "RMR_RTG_SVC" // the address we will connect to for route manager updates +#define ENV_SEED_RT "RMR_SEED_RT" // where we expect to find the name of the seed route table #define ENV_SEED_MEMAP "RMR_SEED_MEMAP" // where we expect to find the name of the seed route table -#define ENV_RTG_RAW "RMR_RTG_ISRAW" // if > 0 we expect route table gen messages as raw (not sent from an RMr application) +#define ENV_RTG_RAW "RMR_RTG_ISRAW" // if > 0 we expect route table gen messages as raw (not sent from an RMr application) #define ENV_VERBOSE_FILE "RMR_VCTL_FILE" // file where vlevel may be managed for some (non-time critical) functions -#define ENV_NAME_ONLY "RMR_SRC_NAMEONLY" // src in message is name only +#define ENV_NAME_ONLY "RMR_SRC_NAMEONLY" // src in message is name only #define ENV_WARNINGS "RMR_WARNINGS" // if == 1 then we write some, non-performance impacting, warnings #define ENV_SRC_ID "RMR_SRC_ID" // forces this string (adding :port, max 63 ch) into the source field; host name used if not set +#define ENV_LOG_HR "RMR_HR_LOG" // set to 0 to turn off human readable logging and write using some formatting +#define ENV_LOG_VLEVEL "RMR_LOG_VLEVEL" // set the verbosity level (0 == 0ff; 1 == crit .... 5 == debug ) +#define ENV_CTL_PORT "RMR_CTL_PORT" // route collector will listen here for control messages (4561 default) #define NO_FLAGS 0 // no flags to pass to a function @@ -71,6 +77,7 @@ typedef struct uta_ctx uta_ctx_t; //#define IFL_.... #define CFL_MTC_ENABLED 0x01 // multi-threaded call is enabled +#define CFL_NO_RTACK 0x02 // no route table ack needed when end received // context flags #define CTXFL_WARN 0x01 // ok to warn on stderr for some things that shouldn't happen @@ -86,8 +93,10 @@ typedef struct uta_ctx uta_ctx_t; #define MAX_CALL_ID 255 // largest call ID that is supported //#define DEF_RTG_MSGID "" // default to pick up all messages from rtg -#define DEF_RTG_PORT "tcp:4561" // default port that we accept rtg connections on +#define DEF_CTL_PORT "4561" // default control port that rtc listens on +#define DEF_RTG_PORT "tcp:4561" // default port that we accept rtg connections on (deprecated) #define DEF_COMM_PORT "tcp:4560" // default port we use for normal communications +#define DEF_RTG_WK_ADDR "routemgr:4561" // well known address for the route manager #define DEF_TR_LEN (-1) // use default trace data len from context #define UNSET_SUBID (-1) // initial value on msg allocation indicating not set @@ -292,6 +301,7 @@ static int ie_test( void* r, int i_factor, long inserts ); static inline uint64_t build_rt_key( int32_t sub_id, int32_t mtype ); static void collect_things( void* st, void* entry, char const* name, void* thing, void* vthing_list ); static void del_rte( void* st, void* entry, char const* name, void* thing, void* data ); +static endpoint_t* get_meid_owner( route_table_t *rt, char* meid ); static char* uta_fib( char* fname ); static route_table_t* uta_rt_init( ); static route_table_t* uta_rt_clone( route_table_t* srt ); @@ -301,9 +311,13 @@ static endpoint_t* uta_add_ep( route_table_t* rt, rtable_ent_t* rte, char* ep_n static rtable_ent_t* uta_add_rte( route_table_t* rt, uint64_t key, int nrrgroups ); static endpoint_t* uta_get_ep( route_table_t* rt, char const* ep_name ); static void read_static_rt( uta_ctx_t* ctx, int vlevel ); -static void parse_rt_rec( uta_ctx_t* ctx, char* buf, int vlevel ); +static void parse_rt_rec( uta_ctx_t* ctx, uta_ctx_t* pctx, char* buf, int vlevel ); static rmr_mbuf_t* realloc_msg( rmr_mbuf_t* msg, int size ); static void* rtc( void* vctx ); static endpoint_t* rt_ensure_ep( route_table_t* rt, char const* ep_name ); +// --------- route manager communications ----------------- +static void send_rt_ack( uta_ctx_t* ctx, char* table_id, int state, char* reason ); +static int send_update_req( uta_ctx_t* pctx, uta_ctx_t* ctx ); + #endif