X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Frmr%2Fcommon%2Finclude%2Frmr_agnostic.h;h=2d80a7526ec52c09285b005bdccf543db0a87da4;hb=9c923bcc9322c22220b574671c7b46f10008c614;hp=6b1537b8dbac35efdf08cb39cd12bd53d2adf575;hpb=4919b11a06c3c96652121922c010c31f27471756;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 6b1537b..2d80a75 100644 --- a/src/rmr/common/include/rmr_agnostic.h +++ b/src/rmr/common/include/rmr_agnostic.h @@ -68,6 +68,7 @@ typedef struct uta_ctx uta_ctx_t; #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 ENV_RTREQ_FREA "RMR_RTREQ_FREQ" // frequency we will request route table updates when we want one (1-300 inclusive) #define NO_FLAGS 0 // no flags to pass to a function @@ -87,6 +88,7 @@ typedef struct uta_ctx uta_ctx_t; #define MFL_NOALLOC 0x02 // send should NOT allocate a new buffer before returning #define MFL_ADDSRC 0x04 // source must be added on send #define MFL_RAW 0x08 // message is 'raw' and not from an RMr based sender (no header) +#define MFL_HUGE 0x10 // buffer was larger than applications indicated usual max; don't cache #define MAX_EP_GROUP 32 // max number of endpoints in a group #define MAX_RTG_MSG_SZ 2048 // max expected message size from route generator @@ -98,6 +100,7 @@ typedef struct uta_ctx uta_ctx_t; #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 DEF_RTREQ_FREQ 5 // delay between route table requests #define UNSET_SUBID (-1) // initial value on msg allocation indicating not set #define UNSET_MSGTYPE (-1) @@ -301,6 +304,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 ); @@ -310,13 +314,17 @@ 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, uta_ctx_t* pctx, char* buf, int vlevel ); +static void parse_rt_rec( uta_ctx_t* ctx, uta_ctx_t* pctx, char* buf, int vlevel, rmr_mbuf_t* mbuf ); 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, int state, char* reason ); +static void send_rt_ack( uta_ctx_t* ctx, rmr_mbuf_t* mbuf, char* table_id, int state, char* reason ); static int send_update_req( uta_ctx_t* pctx, uta_ctx_t* ctx ); +// -------- internal functions that can be referenced by common functions ------- +static rmr_mbuf_t* mt_call( void* vctx, rmr_mbuf_t* mbuf, int call_id, int max_wait, endpoint_t* ep ); + + #endif