From c609571f3908a9d2a345f3a127292f8b236c09cc Mon Sep 17 00:00:00 2001
From: Tim Young <tim.young@lightsys.org>
Date: Mon, 9 Apr 2018 17:17:40 +0300
Subject: [PATCH] Get network loop tracking working.

---
 EduNetworkBuilder/NB.cs                       |   8 +-
 EduNetworkBuilder/NetTest.cs                  |   6 +-
 EduNetworkBuilder/NetTestEditor.cs            |   4 +-
 EduNetworkBuilder/Network.cs                  |  25 +++-
 EduNetworkBuilder/NetworkDevice.cs            |  10 ++
 .../Resources/Level0_NetworkLoop2.enbx        | 123 +++++++++---------
 6 files changed, 111 insertions(+), 65 deletions(-)

diff --git a/EduNetworkBuilder/NB.cs b/EduNetworkBuilder/NB.cs
index d033c47..fab11d6 100644
--- a/EduNetworkBuilder/NB.cs
+++ b/EduNetworkBuilder/NB.cs
@@ -46,7 +46,7 @@ namespace EduNetworkBuilder
     public enum NetTestType { NeedsLocalIPTo, NeedsDefaultGW, NeedsLinkToDevice, NeedsRouteToNet,
         NeedsUntaggedVLAN, NeedsTaggedVLAN, NeedsForbiddenVLAN,
         SuccessfullyPings, SuccessfullyPingsAgain, SuccessfullyArps, SuccessfullyDHCPs, HelpRequest, ReadContextHelp, FailedPing,
-        DHCPServerEnabled, SuccessfullyTraceroutes,
+        DHCPServerEnabled, SuccessfullyTraceroutes, SuccessfullyPingsWithoutLoop,
         LockAll, LockIP, LockRoute, LockNic, LockDHCP, LockGateway, LockLocation,
         LockVLANsOnHost, LockNicVLAN, LockInterfaceVLAN, LockVLANNames,
         DeviceIsFrozen, DeviceBlowsUpWithPower, DeviceNeedsUPS, DeviceNICSprays,
@@ -457,6 +457,12 @@ namespace EduNetworkBuilder
             return Type.GetType("Mono.Runtime") != null;
         }
 
+        public static void NoteLoopHappened()
+        {
+            Network myNet = GetNetwork();
+            if (myNet != null) myNet.HadLoop = true;
+        }
+
         public static Point GetSnapped(Point Location)
         {
             int x = (Location.X / NB.GridSize) * NB.GridSize;
diff --git a/EduNetworkBuilder/NetTest.cs b/EduNetworkBuilder/NetTest.cs
index d761a7c..fd1579e 100644
--- a/EduNetworkBuilder/NetTest.cs
+++ b/EduNetworkBuilder/NetTest.cs
@@ -169,6 +169,7 @@ namespace EduNetworkBuilder
                             break;
                         case NetTestType.SuccessfullyPings:
                         case NetTestType.SuccessfullyPingsAgain:
+                        case NetTestType.SuccessfullyPingsWithoutLoop:
                             toreturn = NB.Translate("NT_TstDiscriptPing");
                             break;
                         case NetTestType.HelpRequest:
@@ -267,6 +268,7 @@ namespace EduNetworkBuilder
                             toreturn = NB.Translate("NT_TstDiscriptTraceroute2");
                             break;
                         case NetTestType.SuccessfullyPings:
+                        case NetTestType.SuccessfullyPingsWithoutLoop:
                         case NetTestType.SuccessfullyPingsAgain:
                             toreturn = NB.Translate("NT_TstDiscriptPing2");
                             break;
@@ -444,7 +446,8 @@ namespace EduNetworkBuilder
             {
                 if (TheTest == NetTestType.FailedPing || TheTest == NetTestType.SuccessfullyArps
                     || TheTest == NetTestType.SuccessfullyDHCPs || TheTest == NetTestType.SuccessfullyPings
-                    || TheTest == NetTestType.SuccessfullyPingsAgain || TheTest == NetTestType.SuccessfullyTraceroutes)
+                    || TheTest == NetTestType.SuccessfullyPingsAgain || TheTest == NetTestType.SuccessfullyTraceroutes 
+                    || TheTest == NetTestType.SuccessfullyPingsWithoutLoop)
                     PacketNumber = PacketID; //Track the packetID of the first packet to complete the task
                 NB.PlaySound(NBSoundType.success);
                 NB.MarkToUpdate();
@@ -535,6 +538,7 @@ namespace EduNetworkBuilder
                 case NetTestType.SuccessfullyArps:
                 case NetTestType.SuccessfullyDHCPs:
                 case NetTestType.SuccessfullyPings:
+                case NetTestType.SuccessfullyPingsWithoutLoop:
                 case NetTestType.SuccessfullyPingsAgain:
                 case NetTestType.SuccessfullyTraceroutes:
                 case NetTestType.HelpRequest:
diff --git a/EduNetworkBuilder/NetTestEditor.cs b/EduNetworkBuilder/NetTestEditor.cs
index ae1b68c..d49484d 100644
--- a/EduNetworkBuilder/NetTestEditor.cs
+++ b/EduNetworkBuilder/NetTestEditor.cs
@@ -338,7 +338,8 @@ namespace EduNetworkBuilder
                         cbDest.Items.Add(host);
                     }
 
-                    if (ToEdit.TheTest == NetTestType.SuccessfullyPings)
+                    if (ToEdit.TheTest == NetTestType.SuccessfullyPings || 
+                        ToEdit.TheTest == NetTestType.SuccessfullyPingsWithoutLoop)
                     {   //List all the network broadcasts
                         foreach (string subnet in Broadcasts)
                         {
@@ -442,6 +443,7 @@ namespace EduNetworkBuilder
                 else
                 {
                     if (ntt == NetTestType.SuccessfullyPings) return true;
+                    if (ntt == NetTestType.SuccessfullyPingsWithoutLoop) return true;
                     if (ntt == NetTestType.SuccessfullyTraceroutes) return true;
                     if (theNet.GetDeviceFromName(cbDest.SelectedItem.ToString()) == null)
                         return false; //This should never happen with a drop-down list, but just in case...
diff --git a/EduNetworkBuilder/Network.cs b/EduNetworkBuilder/Network.cs
index 0dea1b3..d7c2e8a 100644
--- a/EduNetworkBuilder/Network.cs
+++ b/EduNetworkBuilder/Network.cs
@@ -77,6 +77,7 @@ namespace EduNetworkBuilder
         public List<NetShape> Shapes = new List<NetShape>(); //For storing simple shapes which are drawn on the network
         public bool IsRandomNetwork = false;
         public bool InShapeEditMode = false;
+        public bool HadLoop = false;
 
         private List<AnimationClass> Animations = new List<AnimationClass>();
 
@@ -837,7 +838,9 @@ namespace EduNetworkBuilder
             {
                 if (nt.sHost == Source && !nt.TestComplete())
                 {
-                    if (WhatFor == ContextTest.ping && (nt.TheTest == NetTestType.FailedPing || nt.TheTest == NetTestType.SuccessfullyPings 
+                    if (WhatFor == ContextTest.ping && (nt.TheTest == NetTestType.FailedPing 
+                        || nt.TheTest == NetTestType.SuccessfullyPings
+                        || nt.TheTest == NetTestType.SuccessfullyPingsWithoutLoop
                         || nt.TheTest == NetTestType.SuccessfullyPingsAgain))
                         tDests.Add(nt.dHost);
                     if (WhatFor == ContextTest.arp && nt.TheTest == NetTestType.SuccessfullyArps)
@@ -1341,6 +1344,10 @@ namespace EduNetworkBuilder
                     nt.SetDone(PacketID);
                 if (nt.TheTest == NetTestType.SuccessfullyPings && packet_type == PacketType.ping_answer && sHost == nt.sHost && dHost == null && dIP != null && dIP.BroadcastAddress == dIP.GetIP && dIP.GetIPString == nt.dHost)
                     nt.SetDone(PacketID);
+                if (nt.TheTest == NetTestType.SuccessfullyPingsWithoutLoop && !HadLoop && packet_type == PacketType.ping_answer && sHost == nt.sHost && dHost == nt.dHost)
+                    nt.SetDone(PacketID);
+                if (nt.TheTest == NetTestType.SuccessfullyPingsWithoutLoop && !HadLoop && packet_type == PacketType.ping_answer && sHost == nt.sHost && dHost == null && dIP != null && dIP.BroadcastAddress == dIP.GetIP && dIP.GetIPString == nt.dHost)
+                    nt.SetDone(PacketID);
                 if (nt.TheTest == NetTestType.SuccessfullyTraceroutes && packet_type == PacketType.tracert_reply && sHost == nt.sHost && dHost == nt.dHost)
                     nt.SetDone(PacketID);
                 if (nt.TheTest == NetTestType.SuccessfullyTraceroutes && packet_type == PacketType.tracert_reply && sHost == nt.sHost && dHost == null && dIP != null && dIP.BroadcastAddress == dIP.GetIP && dIP.GetIPString == nt.dHost)
@@ -1348,6 +1355,7 @@ namespace EduNetworkBuilder
             }
         }
 
+
         public bool HasCompletedPingTest(PacketType packet_type, NetworkDevice source, NB_IPAddress sIP, NB_IPAddress dIP, int PacketID)
         {
             if (packet_type != PacketType.ping_answer) return false; //This only works with pings.
@@ -1628,6 +1636,7 @@ namespace EduNetworkBuilder
                     AlreadyChosenTimeout = false; //we do this at the beginning of processing
                     NumberOfSecondsForTimeout = DefaultTimeout;
                     NetworkStartTime = DateTime.Now;
+                    ClearPacketCounters();
                 }
                 ProcessPacketsOnce();
                 if(!ProcessingShouldContinue())
@@ -1674,6 +1683,7 @@ namespace EduNetworkBuilder
                     NB.SetProgress(0, NumberOfSecondsForTimeout);
                     NB.UpdateMessages();
                     NB.MarkToUpdate();
+                    ClearPacketCounters();
                 }
                 previously_had_packets = false;
             }
@@ -1687,6 +1697,19 @@ namespace EduNetworkBuilder
             }
         }
 
+        public void ClearPacketCounters()
+        {
+            HadLoop = false;
+            foreach(NetworkComponent NC in NetComponents)
+            {
+                if(NC is NetworkDevice)
+                {
+                    NetworkDevice ND = (NetworkDevice)NC;
+                    ND.PacketIDsPassedThrough.Clear();
+                }
+            }
+        }
+
         public void AddAnimation(AnimationName What, Rectangle Where)
         {
             Animations.Add(new AnimationClass(What, Where));
diff --git a/EduNetworkBuilder/NetworkDevice.cs b/EduNetworkBuilder/NetworkDevice.cs
index fee06b3..6eb2297 100644
--- a/EduNetworkBuilder/NetworkDevice.cs
+++ b/EduNetworkBuilder/NetworkDevice.cs
@@ -39,6 +39,7 @@ namespace EduNetworkBuilder
         public bool PowerOff = false;
         private List<string> tracertmessages = new List<string>();
         public int BadSprayCount = 0;
+        public List<int> PacketIDsPassedThrough = new List<int>();
         
         public NetworkDevice(NetworkComponentType what, string tHostname, Point tLocation, NicType firstNic = NicType.eth)
         {
@@ -1797,6 +1798,15 @@ namespace EduNetworkBuilder
             bool BroadcastMatch = HasBroadcastAddress(tPacket.destIP);
             bool NeedsRouting = MacAddressMatch && (!ExactMatch && !BroadcastMatch);
 
+            int tID = tPacket.packetID;
+            if (!tPacket.MyType.ToString().EndsWith("request"))
+                tID = tID * -1;
+            if(PacketIDsPassedThrough.Contains(tID))
+            {
+                NB.NoteLoopHappened(); //Note that we found a loop
+            }
+            else PacketIDsPassedThrough.Add(tID);
+
             if(ExactMatch || BroadcastMatch || LocalMatch)
             {
                     //Change this.  Need a new ProcessArrival
diff --git a/EduNetworkBuilder/Resources/Level0_NetworkLoop2.enbx b/EduNetworkBuilder/Resources/Level0_NetworkLoop2.enbx
index 487c0c5..6939224 100644
--- a/EduNetworkBuilder/Resources/Level0_NetworkLoop2.enbx
+++ b/EduNetworkBuilder/Resources/Level0_NetworkLoop2.enbx
@@ -2,9 +2,10 @@
 <EduNetworkBuilder>
   <!--This is a network file for EduNetworkBuilder.-->
   <Network>
-    <en_message>Managed Switches can use Spanning Tree, which intelligently figures out the least distance path to a point.  It is made so you can have network loops and survive.  Try pinging pc1 twice from pc0.  The first time, some packets are lost.  But the second time the packet goes where it should.</en_message>
     <fr_message>Les commutateurs gérés peuvent utiliser algorithme de l'arbre (STP), qui détermine intelligemment le chemin le moins éloigné d'un point. Il est fait pour que vous puissiez avoir des boucles réseau et survivre. Essayez de pinger pc1 deux fois à partir de pc0. La première fois, certains paquets sont perdus. Mais à la deuxième fois le paquet ira là où il devrait.</fr_message>
+    <en_message>Managed Switches can use Spanning Tree, which intelligently figures out the least distance path to a point.  It is made so you can have network loops and survive.  Try pinging pc1 twice from pc0.  The first time, some packets are lost.  But the second time the packet goes where it should.</en_message>
     <en_title>Network Loop2</en_title>
+    <en_url />
     <height>1024</height>
     <width>1024</width>
     <itemsize>100</itemsize>
@@ -13,7 +14,7 @@
     <sortorder>3.5</sortorder>
     <uniqueidentifier>214</uniqueidentifier>
     <startinghelplevel>full</startinghelplevel>
-    <vlansenabled>False</vlansenabled>
+    <vlansenabled>True</vlansenabled>
     <VLANPacketColors>False</VLANPacketColors>
     <device>
       <hostname>net_switch0</hostname>
@@ -41,7 +42,7 @@
         <nictype>lo</nictype>
         <uniqueidentifier>101</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>lo0</nicname>
           <myip>
@@ -66,7 +67,7 @@
         <nictype>management_interface</nictype>
         <uniqueidentifier>102</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>management_interface0</nicname>
           <myip>
@@ -91,7 +92,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>103</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port1</nicname>
           <myip>
@@ -116,7 +117,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>104</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port2</nicname>
           <myip>
@@ -141,7 +142,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>105</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port3</nicname>
           <myip>
@@ -166,7 +167,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>106</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port4</nicname>
           <myip>
@@ -191,7 +192,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>107</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port5</nicname>
           <myip>
@@ -216,7 +217,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>108</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port6</nicname>
           <myip>
@@ -241,7 +242,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>109</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port7</nicname>
           <myip>
@@ -281,7 +282,7 @@
         <nictype>lo</nictype>
         <uniqueidentifier>111</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>lo0</nicname>
           <myip>
@@ -306,7 +307,7 @@
         <nictype>management_interface</nictype>
         <uniqueidentifier>112</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>management_interface0</nicname>
           <myip>
@@ -331,7 +332,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>113</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port1</nicname>
           <myip>
@@ -356,7 +357,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>114</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port2</nicname>
           <myip>
@@ -381,7 +382,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>115</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port3</nicname>
           <myip>
@@ -406,7 +407,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>116</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port4</nicname>
           <myip>
@@ -431,7 +432,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>117</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port5</nicname>
           <myip>
@@ -456,7 +457,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>118</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port6</nicname>
           <myip>
@@ -481,7 +482,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>119</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port7</nicname>
           <myip>
@@ -521,7 +522,7 @@
         <nictype>lo</nictype>
         <uniqueidentifier>121</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>lo0</nicname>
           <myip>
@@ -546,7 +547,7 @@
         <nictype>management_interface</nictype>
         <uniqueidentifier>122</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>management_interface0</nicname>
           <myip>
@@ -571,7 +572,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>123</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port1</nicname>
           <myip>
@@ -596,7 +597,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>124</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port2</nicname>
           <myip>
@@ -621,7 +622,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>125</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port3</nicname>
           <myip>
@@ -646,7 +647,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>126</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port4</nicname>
           <myip>
@@ -671,7 +672,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>127</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port5</nicname>
           <myip>
@@ -696,7 +697,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>128</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port6</nicname>
           <myip>
@@ -721,7 +722,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>129</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port7</nicname>
           <myip>
@@ -761,7 +762,7 @@
         <nictype>lo</nictype>
         <uniqueidentifier>161</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>lo0</nicname>
           <myip>
@@ -786,7 +787,7 @@
         <nictype>management_interface</nictype>
         <uniqueidentifier>162</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>management_interface0</nicname>
           <myip>
@@ -811,7 +812,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>163</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port1</nicname>
           <myip>
@@ -836,7 +837,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>164</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port2</nicname>
           <myip>
@@ -861,7 +862,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>165</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port3</nicname>
           <myip>
@@ -886,7 +887,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>166</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port4</nicname>
           <myip>
@@ -911,7 +912,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>167</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port5</nicname>
           <myip>
@@ -936,7 +937,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>168</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port6</nicname>
           <myip>
@@ -961,7 +962,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>169</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port7</nicname>
           <myip>
@@ -1001,7 +1002,7 @@
         <nictype>lo</nictype>
         <uniqueidentifier>171</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>lo0</nicname>
           <myip>
@@ -1026,7 +1027,7 @@
         <nictype>management_interface</nictype>
         <uniqueidentifier>172</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>management_interface0</nicname>
           <myip>
@@ -1051,7 +1052,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>173</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port1</nicname>
           <myip>
@@ -1076,7 +1077,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>174</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port2</nicname>
           <myip>
@@ -1101,7 +1102,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>175</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port3</nicname>
           <myip>
@@ -1126,7 +1127,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>176</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port4</nicname>
           <myip>
@@ -1151,7 +1152,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>177</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port5</nicname>
           <myip>
@@ -1176,7 +1177,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>178</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port6</nicname>
           <myip>
@@ -1201,7 +1202,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>179</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port7</nicname>
           <myip>
@@ -1241,7 +1242,7 @@
         <nictype>lo</nictype>
         <uniqueidentifier>181</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>lo0</nicname>
           <myip>
@@ -1266,7 +1267,7 @@
         <nictype>management_interface</nictype>
         <uniqueidentifier>182</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>management_interface0</nicname>
           <myip>
@@ -1291,7 +1292,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>183</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port1</nicname>
           <myip>
@@ -1316,7 +1317,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>184</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port2</nicname>
           <myip>
@@ -1341,7 +1342,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>185</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port3</nicname>
           <myip>
@@ -1366,7 +1367,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>186</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port4</nicname>
           <myip>
@@ -1391,7 +1392,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>187</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port5</nicname>
           <myip>
@@ -1416,7 +1417,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>188</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port6</nicname>
           <myip>
@@ -1441,7 +1442,7 @@
         <nictype>port</nictype>
         <uniqueidentifier>189</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>port7</nicname>
           <myip>
@@ -1481,7 +1482,7 @@
         <nictype>lo</nictype>
         <uniqueidentifier>191</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>lo0</nicname>
           <myip>
@@ -1506,7 +1507,7 @@
         <nictype>eth</nictype>
         <uniqueidentifier>192</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>eth0</nicname>
           <myip>
@@ -1546,7 +1547,7 @@
         <nictype>lo</nictype>
         <uniqueidentifier>194</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>lo0</nicname>
           <myip>
@@ -1571,7 +1572,7 @@
         <nictype>eth</nictype>
         <uniqueidentifier>195</uniqueidentifier>
         <usesdhcp>False</usesdhcp>
-        <ssid />
+        <encryptionkey />
         <interface>
           <nicname>eth0</nicname>
           <myip>
@@ -1763,7 +1764,7 @@
     <nettest>
       <shost>pc0</shost>
       <dhost>pc1</dhost>
-      <thetest>SuccessfullyPingsAgain</thetest>
+      <thetest>SuccessfullyPingsWithoutLoop</thetest>
     </nettest>
     <tag>Ping</tag>
     <VLANName