Add a zero-capacity site correction to UISP integration.

This commit is contained in:
Herbert Wolverson 2024-04-25 10:43:15 -05:00
parent 4e3da50adf
commit 1c0aba7c78
2 changed files with 27 additions and 0 deletions

View File

@ -10,6 +10,7 @@ mod squash_single_entry_aps;
mod tree_walk;
mod uisp_fetch;
mod utils;
mod zero_capacity_sites;
use crate::errors::UispIntegrationError;
use crate::ip_ranges::IpRanges;
@ -28,6 +29,7 @@ use crate::strategies::full::utils::{print_sites, warn_of_no_parents};
use crate::uisp_types::{UispSite, UispSiteType};
pub use bandwidth_overrides::BandwidthOverrides;
use lqos_config::Config;
use crate::strategies::full::zero_capacity_sites::correct_zero_capacity_sites;
/// Attempt to construct a full hierarchy topology for the UISP network.
pub async fn build_full_network(
@ -94,6 +96,9 @@ pub async fn build_full_network(
// Build Path Weights
walk_tree_for_routing(&mut sites, &root_site, &routing_overrides)?;
// Correct any sites with zero capacity
correct_zero_capacity_sites(&mut sites, &config);
// Issue No Parent Warnings
warn_of_no_parents(&sites, &devices_raw);

View File

@ -0,0 +1,22 @@
use lqos_config::Config;
use crate::uisp_types::UispSite;
pub fn correct_zero_capacity_sites(sites: &mut [UispSite], config: &Config) {
for i in 0 .. sites.len() {
if sites[i].max_down_mbps == 0 {
if let Some(parent_idx) = sites[i].selected_parent {
sites[i].max_down_mbps = sites[parent_idx].max_down_mbps;
} else {
sites[i].max_down_mbps = config.queues.generated_pn_download_mbps;
}
}
if sites[i].max_up_mbps == 0 {
if let Some(parent_idx) = sites[i].selected_parent {
sites[i].max_up_mbps = sites[parent_idx].max_up_mbps;
} else {
sites[i].max_up_mbps = config.queues.generated_pn_upload_mbps;
}
}
}
}