From 8c7f741b7f0549387abd96482010bc06b731a55c Mon Sep 17 00:00:00 2001 From: Matthew Salerno Date: Sun, 24 Mar 2024 21:07:31 -0400 Subject: [PATCH] Add error message to parser for incorrectly configured subnets in connections --- parsers/v1.nix | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/parsers/v1.nix b/parsers/v1.nix index b9b94c0..e2eb87c 100644 --- a/parsers/v1.nix +++ b/parsers/v1.nix @@ -43,11 +43,13 @@ let /** getIpAddresses :: acl_peer -> acl_subnet -> [str] */ getIpAddresses = acl_subnet: acl_peer: - if (acl_peer.subnets."${acl_subnet.name}" ? ipAddresses) then ( - if (elem "auto" acl_peer.subnets."${acl_subnet.name}".ipAddresses) then ( - (remove "auto" acl_peer.subnets."${acl_subnet.name}".ipAddresses) ++ (singleton (generateIPv6Address acl_subnet.name acl_peer.name)) - ) else acl_peer.subnets."${acl_subnet.name}".ipAddresses - ) else (singleton (generateIPv6Address acl_subnet.name acl_peer.name)); + lib.throwIfNot (builtins.hasAttr acl_subnet.name acl_peer.subnets) "Tried getting the IP address for ${acl_peer.name} on subnet ${acl_subnet.name}. However, ${acl_peer.name} is not a member of ${acl_subnet.name}. It may be that you forgot to add ${acl_subnet.name} to `connections.*.subnets` in your ACL." ( + if (acl_peer.subnets."${acl_subnet.name}" ? ipAddresses) then ( + if (elem "auto" acl_peer.subnets."${acl_subnet.name}".ipAddresses) then ( + (remove "auto" acl_peer.subnets."${acl_subnet.name}".ipAddresses) ++ (singleton (generateIPv6Address acl_subnet.name acl_peer.name)) + ) else acl_peer.subnets."${acl_subnet.name}".ipAddresses + ) else (singleton (generateIPv6Address acl_subnet.name acl_peer.name)) + ); /** getPeerConnections :: acl_peer -> acl_subnet -> str -> peerConnection */ getPeerConnections = acl_peerFrom: acl_subnet: @@ -127,8 +129,8 @@ let subnetFromName = subnetName: findSingle (subnet: subnet.name == subnetName) - (throw "No subnet " + subnetName) - (throw "Multiply defined subnet " + subnetName) + (throw "No subnet " + subnetName + " when processing peer " + acl_peer) + (throw "Multiply defined subnet " + subnetName + " when processing peer " + acl_peer) v1_acl.subnets;