nixpkgs/nixos/tests/fastnetmon-advanced.nix
2023-10-23 22:51:19 +02:00

65 lines
1.8 KiB
Nix

{ pkgs, lib, ... }:
{
name = "fastnetmon-advanced";
meta.maintainers = lib.teams.wdz.members;
nodes = {
bird = { ... }: {
networking.firewall.allowedTCPPorts = [ 179 ];
services.bird2 = {
enable = true;
config = ''
router id 192.168.1.1;
protocol bgp fnm {
local 192.168.1.1 as 64513;
neighbor 192.168.1.2 as 64514;
multihop;
ipv4 {
import all;
export none;
};
}
'';
};
};
fnm = { ... }: {
networking.firewall.allowedTCPPorts = [ 179 ];
services.fastnetmon-advanced = {
enable = true;
settings = {
networks_list = [ "172.23.42.0/24" ];
gobgp = true;
gobgp_flow_spec_announces = true;
};
bgpPeers = {
bird = {
local_asn = 64514;
remote_asn = 64513;
local_address = "192.168.1.2";
remote_address = "192.168.1.1";
description = "Bird";
ipv4_unicast = true;
multihop = true;
active = true;
};
};
};
};
};
testScript = { nodes, ... }: ''
start_all()
fnm.wait_for_unit("fastnetmon.service")
bird.wait_for_unit("bird2.service")
fnm.wait_until_succeeds('journalctl -eu fastnetmon.service | grep "BGP daemon restarted correctly"')
fnm.wait_until_succeeds("journalctl -eu gobgp.service | grep BGP_FSM_OPENCONFIRM")
bird.wait_until_succeeds("birdc show protocol fnm | grep Estab")
fnm.wait_until_succeeds('journalctl -eu fastnetmon.service | grep "API server listening"')
fnm.succeed("fcli set blackhole 172.23.42.123")
bird.succeed("birdc show route | grep 172.23.42.123")
'';
}