 4c8a198f12
			
		
	
	
		4c8a198f12
		
	
	
	
	
		
			
			This has been defaulting to true since 16.03, we don't need this code anymore, also the note in the documentation has been obsolete for quite a while.
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| # This test runs Quagga and checks if OSPF routing works.
 | |
| #
 | |
| # Network topology:
 | |
| #   [ client ]--net1--[ router1 ]--net2--[ router2 ]--net3--[ server ]
 | |
| #
 | |
| # All interfaces are in OSPF Area 0.
 | |
| 
 | |
| import ./make-test.nix ({ pkgs, ... }:
 | |
|   let
 | |
| 
 | |
|     ifAddr = node: iface: (pkgs.lib.head node.config.networking.interfaces.${iface}.ipv4.addresses).address;
 | |
| 
 | |
|     ospfConf = ''
 | |
|       interface eth2
 | |
|         ip ospf hello-interval 1
 | |
|         ip ospf dead-interval 5
 | |
|       !
 | |
|       router ospf
 | |
|         network 192.168.0.0/16 area 0
 | |
|     '';
 | |
| 
 | |
|   in
 | |
|     {
 | |
|       name = "quagga";
 | |
| 
 | |
|       meta = with pkgs.stdenv.lib.maintainers; {
 | |
|         maintainers = [ tavyc ];
 | |
|       };
 | |
| 
 | |
|       nodes = {
 | |
| 
 | |
|         client =
 | |
|           { nodes, ... }:
 | |
|           {
 | |
|             virtualisation.vlans = [ 1 ];
 | |
|             networking.defaultGateway = ifAddr nodes.router1 "eth1";
 | |
|           };
 | |
| 
 | |
|         router1 =
 | |
|           { ... }:
 | |
|           {
 | |
|             virtualisation.vlans = [ 1 2 ];
 | |
|             boot.kernel.sysctl."net.ipv4.ip_forward" = "1";
 | |
|             networking.firewall.extraCommands = "iptables -A nixos-fw -i eth2 -p ospf -j ACCEPT";
 | |
|             services.quagga.ospf = {
 | |
|               enable = true;
 | |
|               config = ospfConf;
 | |
|             };
 | |
|           };
 | |
| 
 | |
|         router2 =
 | |
|           { ... }:
 | |
|           {
 | |
|             virtualisation.vlans = [ 3 2 ];
 | |
|             boot.kernel.sysctl."net.ipv4.ip_forward" = "1";
 | |
|             networking.firewall.extraCommands = "iptables -A nixos-fw -i eth2 -p ospf -j ACCEPT";
 | |
|             services.quagga.ospf = {
 | |
|               enable = true;
 | |
|               config = ospfConf;
 | |
|             };
 | |
|           };
 | |
| 
 | |
|         server =
 | |
|           { nodes, ... }:
 | |
|           {
 | |
|             virtualisation.vlans = [ 3 ];
 | |
|             networking.defaultGateway = ifAddr nodes.router2 "eth1";
 | |
|             networking.firewall.allowedTCPPorts = [ 80 ];
 | |
|             services.httpd.enable = true;
 | |
|             services.httpd.adminAddr = "foo@example.com";
 | |
|           };
 | |
|       };
 | |
| 
 | |
|       testScript =
 | |
|         { ... }:
 | |
|         ''
 | |
|           startAll;
 | |
| 
 | |
|           # Wait for the networking to start on all machines
 | |
|           $_->waitForUnit("network.target") foreach values %vms;
 | |
| 
 | |
|           # Wait for OSPF to form adjacencies
 | |
|           for my $gw ($router1, $router2) {
 | |
|               $gw->waitForUnit("ospfd");
 | |
|               $gw->waitUntilSucceeds("vtysh -c 'show ip ospf neighbor' | grep Full");
 | |
|               $gw->waitUntilSucceeds("vtysh -c 'show ip route' | grep '^O>'");
 | |
|           }
 | |
| 
 | |
|           # Test ICMP.
 | |
|           $client->succeed("ping -c 3 server >&2");
 | |
| 
 | |
|           # Test whether HTTP works.
 | |
|           $server->waitForUnit("httpd");
 | |
|           $client->succeed("curl --fail http://server/ >&2");
 | |
|         '';
 | |
|     })
 |