TRPS_INSTANCE *trps_new (TALLOC_CTX *mem_ctx);
void trps_free (TRPS_INSTANCE *trps);
void trps_set_ptable(TRPS_INSTANCE *trps, TRP_PTABLE *ptable);
+void trps_set_peer_status_callback(TRPS_INSTANCE *trps, void (*cb)(TRP_PEER *, void *), void *cookie);
TRP_RC trps_init_rtable(TRPS_INSTANCE *trps);
void trps_clear_rtable(TRPS_INSTANCE *trps);
void trps_set_connect_interval(TRPS_INSTANCE *trps, unsigned int interval);
trps_set_update_interval(trps, new_cfg->internal->trp_update_interval);
trps_set_sweep_interval(trps, new_cfg->internal->trp_sweep_interval);
trps_set_ptable(trps, new_cfg->peers);
+ trps_set_peer_status_callback(trps, tr_peer_status_change, (void *)trps);
trps_clear_rtable(trps); /* should we do this every time??? */
tr_add_local_routes(trps, new_cfg); /* should we do this every time??? */
trps_update_active_routes(trps); /* find new routes */
trps->ptable=ptable;
}
+void trps_set_peer_status_callback(TRPS_INSTANCE *trps, void (*cb)(TRP_PEER *, void *), void *cookie)
+{
+ TRP_PTABLE_ITER *iter=NULL;
+ TRP_PEER *peer=NULL;
+ if (trps->ptable==NULL)
+ return;
+
+ iter=trp_ptable_iter_new(NULL);
+ for (peer=trp_ptable_iter_first(iter, trps->ptable); peer!=NULL; peer=trp_ptable_iter_next(iter))
+ trp_peer_set_conn_status_cb(peer, cb, cookie);
+ trp_ptable_iter_free(iter);
+}
+
TRPC_INSTANCE *trps_find_trpc(TRPS_INSTANCE *trps, TRP_PEER *peer)
{
TRPC_INSTANCE *cur=NULL;