55 lines
1.6 KiB
Rust
55 lines
1.6 KiB
Rust
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");
|
|
}
|