int parse_proxy_etrs(cfg_t *cfg, lisp_xtr_t *xtr) { int n,i; void *fwd_map_inf; /* PROXY-ETR CONFIG */ n = cfg_size(cfg, "proxy-etr"); for(i = 0; i < n; i++) { cfg_t *petr = cfg_getnsec(cfg, "proxy-etr", i); if (add_proxy_etr_entry(xtr->petrs, cfg_getstr(petr, "address"), cfg_getint(petr, "priority"), cfg_getint(petr, "weight")) == GOOD) { OOR_LOG(LDBG_1, "Added %s to proxy-etr list", cfg_getstr(petr, "address")); } else{ OOR_LOG(LERR, "Can't add proxy-etr %s", cfg_getstr(petr, "address")); } } /* Calculate forwarding info for petrs */ fwd_map_inf = xtr->fwd_policy->new_map_cache_policy_inf(xtr->fwd_policy_dev_parm,mcache_entry_mapping(xtr->petrs)); if (fwd_map_inf == NULL){ OOR_LOG(LDBG_1, "xtr_ctrl_construct: Couldn't create routing info for PeTRs!."); mcache_entry_del(xtr->petrs); return(BAD); } mcache_entry_set_routing_info(xtr->petrs,fwd_map_inf,xtr->fwd_policy->del_map_cache_policy_inf); return (GOOD); }
void mcache_entry_del(mcache_entry_t *entry) { locator_t *loct; assert(entry); /* Stop timers associated to the locators */ mapping_foreach_locator(mcache_entry_mapping(entry),loct){ stop_timers_from_obj(loct,ptrs_to_timers_ht, nonces_ht); }mapping_foreach_locator_end;