63 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			63 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								import ./make-test.nix (
							 | 
						||
| 
								 | 
							
								  let
							 | 
						||
| 
								 | 
							
								    chap-secrets = {
							 | 
						||
| 
								 | 
							
								      text = ''"flynn" * "reindeerflotilla" *'';
							 | 
						||
| 
								 | 
							
								      mode = "0640";
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  in {
							 | 
						||
| 
								 | 
							
								    nodes = {
							 | 
						||
| 
								 | 
							
								      server = {config, pkgs, ...}: {
							 | 
						||
| 
								 | 
							
								        config = {
							 | 
						||
| 
								 | 
							
								          # Run a PPPoE access concentrator server. It will spawn an
							 | 
						||
| 
								 | 
							
								          # appropriate PPP server process when a PPPoE client sets up a
							 | 
						||
| 
								 | 
							
								          # PPPoE session.
							 | 
						||
| 
								 | 
							
								          systemd.services.pppoe-server = {
							 | 
						||
| 
								 | 
							
								            restartTriggers = [
							 | 
						||
| 
								 | 
							
								              config.environment.etc."ppp/pppoe-server-options".source
							 | 
						||
| 
								 | 
							
								              config.environment.etc."ppp/chap-secrets".source
							 | 
						||
| 
								 | 
							
								            ];
							 | 
						||
| 
								 | 
							
								            after = ["network.target"];
							 | 
						||
| 
								 | 
							
								            serviceConfig = {
							 | 
						||
| 
								 | 
							
								              ExecStart = "${pkgs.rpPPPoE}/sbin/pppoe-server -F -O /etc/ppp/pppoe-server-options -q ${pkgs.ppp}/sbin/pppd -I eth1 -L 192.0.2.1 -R 192.0.2.2";
							 | 
						||
| 
								 | 
							
								            };
							 | 
						||
| 
								 | 
							
								            wantedBy = ["multi-user.target"];
							 | 
						||
| 
								 | 
							
								          };
							 | 
						||
| 
								 | 
							
								          environment.etc = {
							 | 
						||
| 
								 | 
							
								            "ppp/pppoe-server-options".text = ''
							 | 
						||
| 
								 | 
							
								              lcp-echo-interval 10
							 | 
						||
| 
								 | 
							
								              lcp-echo-failure 2
							 | 
						||
| 
								 | 
							
								              plugin rp-pppoe.so
							 | 
						||
| 
								 | 
							
								              require-chap
							 | 
						||
| 
								 | 
							
								              nobsdcomp
							 | 
						||
| 
								 | 
							
								              noccp
							 | 
						||
| 
								 | 
							
								              novj
							 | 
						||
| 
								 | 
							
								            '';
							 | 
						||
| 
								 | 
							
								            "ppp/chap-secrets" = chap-secrets;
							 | 
						||
| 
								 | 
							
								          };
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      client = {config, pkgs, ...}: {
							 | 
						||
| 
								 | 
							
								        services.pppd = {
							 | 
						||
| 
								 | 
							
								          enable = true;
							 | 
						||
| 
								 | 
							
								          peers.test = {
							 | 
						||
| 
								 | 
							
								            config = ''
							 | 
						||
| 
								 | 
							
								              plugin rp-pppoe.so eth1
							 | 
						||
| 
								 | 
							
								              name "flynn"
							 | 
						||
| 
								 | 
							
								              noipdefault
							 | 
						||
| 
								 | 
							
								              persist
							 | 
						||
| 
								 | 
							
								              noauth
							 | 
						||
| 
								 | 
							
								              debug
							 | 
						||
| 
								 | 
							
								            '';
							 | 
						||
| 
								 | 
							
								          };
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        environment.etc."ppp/chap-secrets" = chap-secrets;
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								    testScript = ''
							 | 
						||
| 
								 | 
							
								      startAll;
							 | 
						||
| 
								 | 
							
								      $client->waitUntilSucceeds("ping -c1 -W1 192.0.2.1");
							 | 
						||
| 
								 | 
							
								      $server->waitUntilSucceeds("ping -c1 -W1 192.0.2.2");
							 | 
						||
| 
								 | 
							
								    '';
							 | 
						||
| 
								 | 
							
								  })  
							 |