X-Git-Url: http://www.project-moonshot.org/gitweb/?p=trust_router.git;a=blobdiff_plain;f=include%2Ftr_config.h;fp=include%2Ftr_config.h;h=89777fd2fc5225d24592139b95cdf813804354ca;hp=8a04415fcbb512b8aada30497fbdce505fd8b871;hb=e427f7d366115d72ded50c2d8de7e7c4c37a773f;hpb=7b8f06ede21c614637e8bdc322bac9a95a44996e diff --git a/include/tr_config.h b/include/tr_config.h index 8a04415..89777fd 100644 --- a/include/tr_config.h +++ b/include/tr_config.h @@ -39,32 +39,43 @@ #include #include #include +#include +#include -#include +#include #include #include -#include +#include #define TR_DEFAULT_MAX_TREE_DEPTH 12 #define TR_DEFAULT_TR_PORT 12308 #define TR_DEFAULT_TIDS_PORT 12309 +#define TR_DEFAULT_TRPS_PORT 12310 #define TR_DEFAULT_LOG_THRESHOLD LOG_INFO #define TR_DEFAULT_CONSOLE_THRESHOLD LOG_NOTICE - +#define TR_DEFAULT_TRP_CONNECT_INTERVAL 10 +#define TR_DEFAULT_TRP_UPDATE_INTERVAL 120 +#define TR_DEFAULT_TRP_SWEEP_INTERVAL 30 typedef enum tr_cfg_rc { TR_CFG_SUCCESS = 0, /* No error */ TR_CFG_ERROR, /* General processing error */ TR_CFG_BAD_PARAMS, /* Bad parameters passed to tr_config function */ TR_CFG_NOPARSE, /* Parsing error */ - TR_CFG_NOMEM /* Memory allocation error */ + TR_CFG_NOMEM, /* Memory allocation error */ } TR_CFG_RC; typedef struct tr_cfg_internal { unsigned int max_tree_depth; unsigned int tids_port; + unsigned int trps_port; const char *hostname; int log_threshold; int console_threshold; + unsigned int cfg_poll_interval; + unsigned int cfg_settling_time; + unsigned int trp_sweep_interval; + unsigned int trp_update_interval; + unsigned int trp_connect_interval; } TR_CFG_INTERNAL; typedef struct tr_cfg { @@ -74,24 +85,29 @@ typedef struct tr_cfg { TR_COMM *comms; /* locally-known communities */ TR_AAA_SERVER *default_servers; /* default server list */ /* TBD -- Global Filters */ - /* TBD -- Trust Router Peers */ - /* TBD -- Trust Links */ } TR_CFG; +typedef struct tr_cfg_mgr { + TR_CFG *active; + TR_CFG *new; +} TR_CFG_MGR; + int tr_find_config_files (const char *config_dir, struct dirent ***cfg_files); void tr_free_config_file_list(int n, struct dirent ***cfg_files); -TR_CFG_RC tr_parse_config (TR_INSTANCE *tr, const char *config_dir, int n, struct dirent **cfg_files); -TR_CFG_RC tr_apply_new_config (TR_INSTANCE *tr); +TR_CFG_RC tr_parse_config (TR_CFG_MGR *cfg_mgr, const char *config_dir, int n, struct dirent **cfg_files); +TR_CFG_RC tr_apply_new_config (TR_CFG_MGR *cfg_mgr); TR_CFG_RC tr_cfg_validate (TR_CFG *trc); +TR_CFG *tr_cfg_new(TALLOC_CTX *mem_ctx); +TR_CFG_MGR *tr_cfg_mgr_new(TALLOC_CTX *mem_ctx); void tr_cfg_free(TR_CFG *cfg); +void tr_cfg_mgr_free(TR_CFG_MGR *cfg); void tr_print_config(TR_CFG *cfg); void tr_print_comms(TR_COMM *comm_list); void tr_print_comm_idps(TR_IDP_REALM *idp_list); void tr_print_comm_rps(TR_RP_REALM *rp_list); -TR_IDP_REALM *tr_cfg_find_idp (TR_CFG *tr_cfg, TR_NAME *idp_id, TR_CFG_RC *rc); -TR_RP_CLIENT *tr_cfg_find_rp (TR_CFG *tr_cfg, TR_NAME *rp_gss, TR_CFG_RC *rc); -TR_RP_CLIENT *tr_rp_client_lookup(TR_INSTANCE *tr, TR_NAME *gss_name); +TR_IDP_REALM *tr_cfg_find_idp (TR_CFG *cfg, TR_NAME *idp_id, TR_CFG_RC *rc); +TR_RP_CLIENT *tr_cfg_find_rp (TR_CFG *cfg, TR_NAME *rp_gss, TR_CFG_RC *rc); #endif