use std::net::{IpAddr, Ipv4Addr}; use harmony_types::switch::PortLocation; #[tokio::main] async fn main() { env_logger::init(); let ip = IpAddr::V4(Ipv4Addr::new(10, 0, 0, 250)); // old brocade @ ianlet // let ip = IpAddr::V4(Ipv4Addr::new(192, 168, 55, 101)); // brocade @ sto1 let switch_addresses = vec![ip]; let brocade = brocade::init(&switch_addresses, 22, "admin", "password", None) .await .expect("Brocade client failed to connect"); let version = brocade.version().await.unwrap(); println!("Version: {version:?}"); println!("--------------"); println!("Showing MAC Address table..."); let mac_adddresses = brocade.show_mac_address_table().await.unwrap(); println!("VLAN\tMAC\t\t\tPORT"); for mac in mac_adddresses { println!("{}\t{}\t{}", mac.vlan, mac.mac_address, mac.port); } println!("--------------"); let channel_name = "HARMONY_LAG"; println!("Clearing port channel '{channel_name}'..."); brocade.clear_port_channel(channel_name).await.unwrap(); println!("Cleared"); println!("--------------"); println!("Finding next available channel..."); let channel_id = brocade.find_available_channel_id().await.unwrap(); println!("Channel id: {channel_id}"); println!("--------------"); let channel_name = "HARMONY_LAG"; let ports = [PortLocation(1, 1, 3), PortLocation(1, 1, 4)]; println!("Creating port channel '{channel_name}' with ports {ports:?}'..."); brocade .create_port_channel(channel_id, channel_name, &ports) .await .unwrap(); println!("Created"); }