From ea3a43173f76c0211e77c4aab3be173c14734f4b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 17 Dec 2025 10:18:40 +0000 Subject: [PATCH 1/2] Initial plan From e223f571e68c7c493598f4cc8f2c9c4cadf4f662 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 17 Dec 2025 10:25:23 +0000 Subject: [PATCH 2/2] Fix panic when invalid area-type is provided in OSPF configuration Co-authored-by: Shbinging <62472682+Shbinging@users.noreply.github.com> --- holo-ospf/src/northbound/configuration.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/holo-ospf/src/northbound/configuration.rs b/holo-ospf/src/northbound/configuration.rs index 6a4883488..a2f5ab6d9 100644 --- a/holo-ospf/src/northbound/configuration.rs +++ b/holo-ospf/src/northbound/configuration.rs @@ -511,7 +511,9 @@ where let area = &mut instance.arenas.areas[area_idx]; let area_type = args.dnode.get_string(); - let area_type = AreaType::try_from_yang(&area_type).unwrap(); + // This should not fail as validation has already checked this + let area_type = AreaType::try_from_yang(&area_type) + .expect("area_type should be valid after validation"); area.config.area_type = area_type; area.config.summary = ospf::areas::area::summary::DFLT; area.config.default_cost = ospf::areas::area::default_cost::DFLT; @@ -1665,7 +1667,11 @@ fn load_validation_callbacks() -> ValidationCallbacks { .path(ospf::areas::area::area_type::PATH) .validate(|args| { let area_type = args.dnode.get_string(); - let area_type = AreaType::try_from_yang(&area_type).unwrap(); + let area_type = AreaType::try_from_yang(&area_type) + .ok_or_else(|| format!( + "invalid area type '{}'. Valid options are: 'ietf-ospf:normal-area', 'ietf-ospf:stub-area', 'ietf-ospf:nssa-area'", + area_type + ))?; if area_type == AreaType::Nssa { return Err("unsupported area type".to_string()); }