anchor.diff:        $tracker->waitForOpenPort(6969);
   
         # Start the initial seeder.
  -      $tracker->mustSucceed("transmissioncli /tmp/test.torrent -M -w /tmp/data >&2 &");
  +      my $pid = $tracker->mustSucceed("transmissioncli /tmp/test.torrent -M -w /tmp/data >&2 & echo \$!");
   
  -      # Now we should be able to download from the client.
  +      # Now we should be able to download from the client behind the NAT.
         $tracker->waitForJob("httpd");
  -      $client->mustSucceed("transmissioncli http://tracker/test.torrent -M -w /tmp >&2 &");
  -      $client->waitForFile("/tmp/test.tar.bz2");
  -      $client->mustSucceed("cmp /tmp/test.tar.bz2 ${file}");
  +      $client1->mustSucceed("transmissioncli http://tracker/test.torrent -w /tmp >&2 &");
  +      $client1->waitForFile("/tmp/test.tar.bz2");
  +      $client1->mustSucceed("cmp /tmp/test.tar.bz2 ${file}");
  +
  +      # Bring down the initial seeder.
  +      $tracker->mustSucceed("kill -9 $pid");
  +
  +      # Now download from the second client.  This can only succeed if
  +      # the first client created a NAT hole in the router.
  +      $client2->mustSucceed("transmissioncli http://tracker/test.torrent -M -w /tmp >&2 &");
  +      $client2->waitForFile("/tmp/test.tar.bz2");
  +      $client2->mustSucceed("cmp /tmp/test.tar.bz2 ${file}");
       '';
     
   }
  
positive.code: { pkgs, ... }:
  
  let
  
    # Some random file to serve.
    file = pkgs.nixUnstable.src;
    
  in
  
  
negative.code:   testScript =
      ''
        startAll;
  
        # Enable NAT on the router and start miniupnpd.
        $router->mustSucceed(
            "iptables -t nat -F",
            "iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 192.168.2.0/24 -j ACCEPT",
            "iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 192.168.1.3", # !!! ugly
            "iptables -t nat -N MINIUPNPD",
            "iptables -t nat -A PREROUTING -i eth1 -j MINIUPNPD",
            "echo 1 > /proc/sys/net/ipv4/ip_forward",
            "miniupnpd -f ${miniupnpdConf}"
        );
  
        # Create the torrent.
        $tracker->mustSucceed("mkdir /tmp/data");
  