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");
 | 
						|
        '';
 | 
						|
    })
 |