diff --git a/machines/router03/router.nix b/machines/router03/router.nix index 656bdd9..730f21d 100644 --- a/machines/router03/router.nix +++ b/machines/router03/router.nix @@ -4,10 +4,11 @@ enable = true; enablePrimary = true; routerId = 1; - virtualRouterId = 1; + virtualRouterId = 51; vip = "129.199.146.230"; rip = "129.199.146.231"; trunkPort.macAddress = "92:E3:9C:CE:EF:14"; + virtualNeighbors = [ 2 ]; }; # systemd.services."systemd-networkd".environment.SYSTEMD_LOG_LEVEL = "debug"; diff --git a/machines/router04/router.nix b/machines/router04/router.nix index 5fce041..a1bb53a 100644 --- a/machines/router04/router.nix +++ b/machines/router04/router.nix @@ -4,10 +4,11 @@ enable = true; enablePrimary = false; routerId = 2; - virtualRouterId = 1; + virtualRouterId = 51; vip = "129.199.146.230"; rip = "129.199.146.232"; trunkPort.macAddress = "92:E3:9C:CE:EF:15"; + virtualNeighbors = [ 1 ]; }; # systemd.services."systemd-networkd".environment.SYSTEMD_LOG_LEVEL = "debug"; diff --git a/modules/krz-router.nix b/modules/krz-router.nix index 85a3e78..7bc9794 100644 --- a/modules/krz-router.nix +++ b/modules/krz-router.nix @@ -56,6 +56,11 @@ in # As recommended per RFC. default = if cfg.enablePrimary then 100 else 50; }; + virtualNeighbors = mkOption { + type = types.listOf types.int; + description = "Virtual router neighbors in terms of router IDs"; + default = [ ]; + }; }; config = mkIf cfg.enable { @@ -353,6 +358,7 @@ in virtualIps = [{ addr = "${cfg.vip}/24"; dev = "swp"; scope = "global"; }]; inherit (cfg) virtualRouterId; noPreempt = !cfg.enablePrimary; + unicastPeers = map (n: "10.0.0.${toString n}") cfg.virtualNeighbors; }; }; };