diff --git a/src/api.rs b/src/api.rs index 883d6a0..84f1b7a 100644 --- a/src/api.rs +++ b/src/api.rs @@ -103,6 +103,7 @@ impl Http { let admin_routes = Router::new() .route("/admin/peers", get(get_peers)) .route("/admin/routes/selected", get(get_selected_routes)) + .route("/admin/routes/fallback", get(get_fallback_routes)) .with_state(server_state.clone()); let msg_routes = Router::new() .route("/messages", get(get_message).post(push_message)) @@ -373,6 +374,30 @@ async fn get_selected_routes(State(state): State) -> Json) -> Json> { + debug!("Loading fallback routes"); + let routes = state + .router + .lock() + .unwrap() + .load_fallback_routes() + .into_iter() + .map(|sr| Route { + subnet: sr.source().subnet().to_string(), + next_hop: sr.neighbour().connection_identifier().clone(), + metric: if sr.metric().is_infinite() { + Metric::Infinite + } else { + Metric::Value(sr.metric().into()) + }, + seqno: sr.seqno().into(), + }) + .collect(); + + Json(routes) +} + impl Serialize for Metric { fn serialize(&self, serializer: S) -> Result where