Compare commits
7 Commits
IPV6
...
5fc1e19f71
Author | SHA1 | Date | |
---|---|---|---|
5fc1e19f71 | |||
c227e8676b | |||
dbe2da2063 | |||
cffd0f9576 | |||
9775be502b | |||
f916b1de88 | |||
720a45aa81 |
@ -357,7 +357,7 @@ namespace EduNetworkBuilder
|
|||||||
tnic = ndCLonedItem.AddNic(WhatToAdd[cbQuestions.SelectedIndex]);
|
tnic = ndCLonedItem.AddNic(WhatToAdd[cbQuestions.SelectedIndex]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(tnet != null && tnic != null)
|
if(tnet != null)
|
||||||
tnet.RegisterNICAdded(ndCLonedItem.hostname, tnic.NicName());
|
tnet.RegisterNICAdded(ndCLonedItem.hostname, tnic.NicName());
|
||||||
}
|
}
|
||||||
UpdateForm();
|
UpdateForm();
|
||||||
|
@ -22,13 +22,13 @@
|
|||||||
<UpdatePeriodically>true</UpdatePeriodically>
|
<UpdatePeriodically>true</UpdatePeriodically>
|
||||||
<UpdateRequired>false</UpdateRequired>
|
<UpdateRequired>false</UpdateRequired>
|
||||||
<MapFileExtensions>true</MapFileExtensions>
|
<MapFileExtensions>true</MapFileExtensions>
|
||||||
<InstallUrl>http://tyounglightsys.ddns.info/EduNetworkBuilder/v1/</InstallUrl>
|
<InstallUrl>http://tyounglightsys.com/EduNetworkBuilder/v1/</InstallUrl>
|
||||||
<UpdateUrl>http://tyounglightsys.ddns.info/EduNetworkBuilder/v1/</UpdateUrl>
|
<UpdateUrl>http://tyounglightsys.ddns.info/EduNetworkBuilder/v1/</UpdateUrl>
|
||||||
<ProductName>EduNetworkBuilder</ProductName>
|
<ProductName>EduNetworkBuilder</ProductName>
|
||||||
<PublisherName>Tim Young</PublisherName>
|
<PublisherName>Tim Young</PublisherName>
|
||||||
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
||||||
<WebPage>publish.htm</WebPage>
|
<WebPage>publish.htm</WebPage>
|
||||||
<ApplicationRevision>51</ApplicationRevision>
|
<ApplicationRevision>53</ApplicationRevision>
|
||||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||||
@ -119,7 +119,6 @@
|
|||||||
<DependentUpon>ListBoxWindow.cs</DependentUpon>
|
<DependentUpon>ListBoxWindow.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="NB.cs" />
|
<Compile Include="NB.cs" />
|
||||||
<Compile Include="NBRenumberData.cs" />
|
|
||||||
<Compile Include="NBSettings.cs" />
|
<Compile Include="NBSettings.cs" />
|
||||||
<Compile Include="NetShape.cs" />
|
<Compile Include="NetShape.cs" />
|
||||||
<Compile Include="NetTest.cs" />
|
<Compile Include="NetTest.cs" />
|
||||||
|
@ -24,13 +24,11 @@ namespace EduNetworkBuilder
|
|||||||
private IPAddress theNetmask;
|
private IPAddress theNetmask;
|
||||||
private IPAddress theGateway;
|
private IPAddress theGateway;
|
||||||
|
|
||||||
private bool Unset = true;
|
|
||||||
|
|
||||||
public NB_IPAddress() { } //used for reflection
|
public NB_IPAddress() { } //used for reflection
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Duplicate an IP address structure
|
/// Duplicate an IP address structure
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="Orig">The IP to clone from</param>
|
/// <param name="Orig"></param>
|
||||||
public NB_IPAddress(NB_IPAddress Orig)
|
public NB_IPAddress(NB_IPAddress Orig)
|
||||||
{
|
{
|
||||||
_ip = Orig._ip;
|
_ip = Orig._ip;
|
||||||
@ -40,42 +38,22 @@ namespace EduNetworkBuilder
|
|||||||
theIP = Orig.theIP;
|
theIP = Orig.theIP;
|
||||||
theNetmask = Orig.theNetmask;
|
theNetmask = Orig.theNetmask;
|
||||||
theGateway = Orig.theGateway;
|
theGateway = Orig.theGateway;
|
||||||
Unset = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Make a simple IP address with netmask
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="ip">The new IP</param>
|
|
||||||
/// <param name="mask">The new netmask</param>
|
|
||||||
/// <param name="WhatType"></param>
|
|
||||||
public NB_IPAddress(string ip, string mask, IPAddressType WhatType)
|
public NB_IPAddress(string ip, string mask, IPAddressType WhatType)
|
||||||
{
|
{
|
||||||
myType = WhatType;
|
myType = WhatType;
|
||||||
_ip = ip.ParseIp();
|
_ip = ip.ParseIp();
|
||||||
_mask = mask.ParseIp();
|
_mask = mask.ParseIp();
|
||||||
Unset = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Make a new IP address, netmask, with gateway.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="ip">The IP address</param>
|
|
||||||
/// <param name="mask">The netmask</param>
|
|
||||||
/// <param name="gw">The gateway to use</param>
|
|
||||||
public NB_IPAddress(string ip, string mask, string gw)
|
public NB_IPAddress(string ip, string mask, string gw)
|
||||||
{
|
{
|
||||||
myType = IPAddressType.route;
|
myType = IPAddressType.route;
|
||||||
_ip = ip.ParseIp();
|
_ip = ip.ParseIp();
|
||||||
_mask = mask.ParseIp();
|
_mask = mask.ParseIp();
|
||||||
_gw = gw.ParseIp();
|
_gw = gw.ParseIp();
|
||||||
Unset = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Load an IP address from the XML file
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="theNode">The XmlNode to load from</param>
|
|
||||||
public NB_IPAddress(XmlNode theNode)
|
public NB_IPAddress(XmlNode theNode)
|
||||||
{
|
{
|
||||||
foreach (XmlNode Individual in theNode.ChildNodes)
|
foreach (XmlNode Individual in theNode.ChildNodes)
|
||||||
@ -87,15 +65,12 @@ namespace EduNetworkBuilder
|
|||||||
{
|
{
|
||||||
case "ip":
|
case "ip":
|
||||||
_ip = Individual.InnerText.ParseIp();
|
_ip = Individual.InnerText.ParseIp();
|
||||||
Unset = false;
|
|
||||||
break;
|
break;
|
||||||
case "mask":
|
case "mask":
|
||||||
_mask = Individual.InnerText.ParseIp();
|
_mask = Individual.InnerText.ParseIp();
|
||||||
Unset = false;
|
|
||||||
break;
|
break;
|
||||||
case "gateway":
|
case "gateway":
|
||||||
_gw = Individual.InnerText.ParseIp();
|
_gw = Individual.InnerText.ParseIp();
|
||||||
Unset = false;
|
|
||||||
break;
|
break;
|
||||||
case "type":
|
case "type":
|
||||||
myType = NB.ParseEnum<IPAddressType>(Individual.InnerText);
|
myType = NB.ParseEnum<IPAddressType>(Individual.InnerText);
|
||||||
@ -105,12 +80,6 @@ namespace EduNetworkBuilder
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetIP(UInt32 newIP)
|
|
||||||
{
|
|
||||||
_ip = newIP;
|
|
||||||
Unset = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Equals(NB_IPAddress CompareWith)
|
public bool Equals(NB_IPAddress CompareWith)
|
||||||
{
|
{
|
||||||
if (_ip != CompareWith._ip) return false;
|
if (_ip != CompareWith._ip) return false;
|
||||||
@ -135,13 +104,11 @@ namespace EduNetworkBuilder
|
|||||||
_ip = ip.ParseIp();
|
_ip = ip.ParseIp();
|
||||||
_mask = mask.ParseIp();
|
_mask = mask.ParseIp();
|
||||||
_gw = gw.ParseIp();
|
_gw = gw.ParseIp();
|
||||||
Unset = false;
|
|
||||||
}
|
}
|
||||||
public void Reparse(string ip, string mask)
|
public void Reparse(string ip, string mask)
|
||||||
{
|
{
|
||||||
_ip = ip.ParseIp();
|
_ip = ip.ParseIp();
|
||||||
_mask = mask.ParseIp();
|
_mask = mask.ParseIp();
|
||||||
Unset = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IPAddressType GetAddressType
|
public IPAddressType GetAddressType
|
||||||
@ -274,10 +241,6 @@ namespace EduNetworkBuilder
|
|||||||
get { return NetworkAddress + ~_mask; }
|
get { return NetworkAddress + ~_mask; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Return the list of hosts in the subnet.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public IEnumerable<UInt32> Hosts()
|
public IEnumerable<UInt32> Hosts()
|
||||||
{
|
{
|
||||||
for (var host = NetworkAddress + 1; host < BroadcastAddress; host++)
|
for (var host = NetworkAddress + 1; host < BroadcastAddress; host++)
|
||||||
@ -326,57 +289,6 @@ namespace EduNetworkBuilder
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region IP Status Funcs
|
|
||||||
/// <summary>
|
|
||||||
/// If the IP address has not yet been assigned
|
|
||||||
/// </summary>
|
|
||||||
public bool IsUnassigned() {
|
|
||||||
if (GetIPString == NB.ZeroIPString) return true; //Sometimes we use 0.0.0.0 as unset.
|
|
||||||
return Unset;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// If the IP address is the same as the broadcast address
|
|
||||||
/// </summary>
|
|
||||||
public bool IsBroadcast()
|
|
||||||
{
|
|
||||||
uint BA = BroadcastAddress;
|
|
||||||
if (_ip == BA) return true; //the actual broadcast for the network
|
|
||||||
if (GetIPString == NB.BroadcastIPString) return true; //The special broadcast 255.255.255.255
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// If the IP address is the same as the network address
|
|
||||||
/// </summary>
|
|
||||||
public bool IsNetwork()
|
|
||||||
{
|
|
||||||
uint NA = NetworkAddress;
|
|
||||||
if (_ip == NA) return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// If the IP address is the loopback address. Different for IPv4 than IPv6
|
|
||||||
/// </summary>
|
|
||||||
public bool IsLoopback()
|
|
||||||
{
|
|
||||||
if (GetIPString == NB.LoopbackIPString) return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// If the IP address is 0.0.0.0 or the equavelent
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>true if it is zeroes could be unset or anywhere</returns>
|
|
||||||
public bool IsZeroString() {
|
|
||||||
if (_ip == 0) return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Break an IP
|
#region Break an IP
|
||||||
public string GenRandomIPOrMask()
|
public string GenRandomIPOrMask()
|
||||||
@ -411,12 +323,12 @@ namespace EduNetworkBuilder
|
|||||||
|
|
||||||
public NB_IPAddress BreakIPNetmaskZero()
|
public NB_IPAddress BreakIPNetmaskZero()
|
||||||
{
|
{
|
||||||
NB_IPAddress one = new NB_IPAddress(GetIPString, NB.ZeroIPString, myType); //0.0.0.0
|
NB_IPAddress one = new NB_IPAddress(GetIPString, "0.0.0.0", myType);
|
||||||
return one;
|
return one;
|
||||||
}
|
}
|
||||||
public NB_IPAddress BreakIPNetmask32()
|
public NB_IPAddress BreakIPNetmask32()
|
||||||
{
|
{
|
||||||
NB_IPAddress one = new NB_IPAddress(GetIPString, NB.BroadcastIPString, myType); //255.255.255.0
|
NB_IPAddress one = new NB_IPAddress(GetIPString, "255.255.255.255", myType);
|
||||||
return one;
|
return one;
|
||||||
}
|
}
|
||||||
public NB_IPAddress BreakIPNetmaskRandom()
|
public NB_IPAddress BreakIPNetmaskRandom()
|
||||||
@ -438,12 +350,12 @@ namespace EduNetworkBuilder
|
|||||||
|
|
||||||
public NB_IPAddress BreakIPAddressZero()
|
public NB_IPAddress BreakIPAddressZero()
|
||||||
{
|
{
|
||||||
NB_IPAddress one = new NB_IPAddress(NB.ZeroIPString, GetIPString, myType);
|
NB_IPAddress one = new NB_IPAddress("0.0.0.0", GetIPString, myType);
|
||||||
return one;
|
return one;
|
||||||
}
|
}
|
||||||
public NB_IPAddress BreakIPAddress32()
|
public NB_IPAddress BreakIPAddress32()
|
||||||
{
|
{
|
||||||
NB_IPAddress one = new NB_IPAddress(NB.BroadcastIPString, GetIPString, myType);
|
NB_IPAddress one = new NB_IPAddress("255.255.255.255", GetIPString, myType);
|
||||||
return one;
|
return one;
|
||||||
}
|
}
|
||||||
public NB_IPAddress BreakIPAddressRandom()
|
public NB_IPAddress BreakIPAddressRandom()
|
||||||
|
1
EduNetworkBuilder/IPAddressEntry.Designer.cs
generated
1
EduNetworkBuilder/IPAddressEntry.Designer.cs
generated
@ -103,7 +103,6 @@
|
|||||||
this.btnCancel.Text = "Cancel";
|
this.btnCancel.Text = "Cancel";
|
||||||
this.btnCancel.UseVisualStyleBackColor = true;
|
this.btnCancel.UseVisualStyleBackColor = true;
|
||||||
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
|
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
|
||||||
this.btnCancel.CausesValidation = false;
|
|
||||||
//
|
//
|
||||||
// btnOK
|
// btnOK
|
||||||
//
|
//
|
||||||
|
@ -17,24 +17,10 @@ namespace EduNetworkBuilder
|
|||||||
{
|
{
|
||||||
NB_IPAddress WhatToEdit;
|
NB_IPAddress WhatToEdit;
|
||||||
NB_IPAddress DHCPInterface=null;
|
NB_IPAddress DHCPInterface=null;
|
||||||
bool WellDone = false;
|
bool WellDone = true;
|
||||||
NetworkDevice ParentDevice = null;
|
NetworkDevice ParentDevice = null;
|
||||||
Point StartLocation = new Point (50,50);
|
Point StartLocation = new Point (50,50);
|
||||||
|
|
||||||
NB_IPAddress SavedIPAddress = null;
|
|
||||||
ToolTip myTooltip = new ToolTip();
|
|
||||||
|
|
||||||
//variable to hold true if the for is closing
|
|
||||||
private bool isFormClosing = false;
|
|
||||||
// Contant for the close message
|
|
||||||
private const int WM_CLOSE = 16;
|
|
||||||
//override the WndProc msg to trap the WM_CLOSE message
|
|
||||||
protected override void WndProc(ref Message m)
|
|
||||||
{
|
|
||||||
if (m.Msg == WM_CLOSE)
|
|
||||||
isFormClosing = true;
|
|
||||||
base.WndProc(ref m);
|
|
||||||
}
|
|
||||||
|
|
||||||
public IPAddressEntry(NB_IPAddress toEdit, NetworkDevice ToEdit, Form ParentForm, bool JustPinging=false)
|
public IPAddressEntry(NB_IPAddress toEdit, NetworkDevice ToEdit, Form ParentForm, bool JustPinging=false)
|
||||||
{
|
{
|
||||||
@ -48,12 +34,11 @@ namespace EduNetworkBuilder
|
|||||||
ParentDevice = ToEdit;
|
ParentDevice = ToEdit;
|
||||||
Network myNet = NB.GetNetwork();
|
Network myNet = NB.GetNetwork();
|
||||||
NB_IPAddress lastIP = myNet.RetrieveLastIP();
|
NB_IPAddress lastIP = myNet.RetrieveLastIP();
|
||||||
SavedIPAddress = new NB_IPAddress(toEdit);
|
|
||||||
WhatToEdit = toEdit;
|
WhatToEdit = toEdit;
|
||||||
string hostname = "";
|
string hostname = "";
|
||||||
if (ToEdit != null)
|
if (ToEdit != null)
|
||||||
hostname = ToEdit.hostname;
|
hostname = ToEdit.hostname;
|
||||||
if (toEdit.IsZeroString())
|
if (toEdit.GetIP.ToIpString() == NB.ZeroIPString)
|
||||||
{
|
{
|
||||||
string lIP = lastIP.GetIP.ToIpString();
|
string lIP = lastIP.GetIP.ToIpString();
|
||||||
string lNM = lastIP.GetMask.ToIpString();
|
string lNM = lastIP.GetMask.ToIpString();
|
||||||
@ -163,7 +148,6 @@ namespace EduNetworkBuilder
|
|||||||
WhatToEdit.Reparse(tbIPAddress.Text, tbNetmask.Text, tbGateway.Text);
|
WhatToEdit.Reparse(tbIPAddress.Text, tbNetmask.Text, tbGateway.Text);
|
||||||
Network myNet = NB.GetNetwork();
|
Network myNet = NB.GetNetwork();
|
||||||
myNet.StoreLastIP(WhatToEdit);
|
myNet.StoreLastIP(WhatToEdit);
|
||||||
WellDone = true;
|
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,16 +182,13 @@ namespace EduNetworkBuilder
|
|||||||
|
|
||||||
private void btnCancel_Click(object sender, EventArgs e)
|
private void btnCancel_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if(SavedIPAddress != null)
|
|
||||||
WhatToEdit.Reparse(SavedIPAddress.GetIPString, SavedIPAddress.GetMaskString, SavedIPAddress.GetGateway.ToIpString());
|
|
||||||
UpdateFieldsFromAddress();
|
UpdateFieldsFromAddress();
|
||||||
|
WellDone = false;
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tbGateway_Validating(object sender, CancelEventArgs e)
|
private void tbGateway_Validating(object sender, CancelEventArgs e)
|
||||||
{
|
{
|
||||||
if (isFormClosing) return;
|
|
||||||
|
|
||||||
Network mynet = NB.GetNetwork();
|
Network mynet = NB.GetNetwork();
|
||||||
if (ParentDevice != null)
|
if (ParentDevice != null)
|
||||||
{
|
{
|
||||||
@ -235,8 +216,6 @@ namespace EduNetworkBuilder
|
|||||||
|
|
||||||
private void tbNetmask_Validating(object sender, CancelEventArgs e)
|
private void tbNetmask_Validating(object sender, CancelEventArgs e)
|
||||||
{
|
{
|
||||||
if (isFormClosing) return;
|
|
||||||
|
|
||||||
UInt32 taddress = tbNetmask.Text.ParseIp();
|
UInt32 taddress = tbNetmask.Text.ParseIp();
|
||||||
tbNetmask.Text = taddress.ToIpString();
|
tbNetmask.Text = taddress.ToIpString();
|
||||||
if (DHCPInterface != null)
|
if (DHCPInterface != null)
|
||||||
@ -252,8 +231,6 @@ namespace EduNetworkBuilder
|
|||||||
|
|
||||||
private void tbIPAddress_Validating(object sender, CancelEventArgs e)
|
private void tbIPAddress_Validating(object sender, CancelEventArgs e)
|
||||||
{
|
{
|
||||||
if (isFormClosing) return;
|
|
||||||
|
|
||||||
UInt32 taddress;
|
UInt32 taddress;
|
||||||
Network mynet = NB.GetNetwork();
|
Network mynet = NB.GetNetwork();
|
||||||
NB_IPAddress tIPAddress = null;
|
NB_IPAddress tIPAddress = null;
|
||||||
@ -261,11 +238,9 @@ namespace EduNetworkBuilder
|
|||||||
{
|
{
|
||||||
tIPAddress = mynet.DNSLookup(ParentDevice, tbIPAddress.Text);
|
tIPAddress = mynet.DNSLookup(ParentDevice, tbIPAddress.Text);
|
||||||
}
|
}
|
||||||
if (tIPAddress != null) //device name used, convert to IP address and netmask
|
if(tIPAddress != null)
|
||||||
{
|
{
|
||||||
taddress = tIPAddress.GetIP;
|
taddress = tIPAddress.GetIP;
|
||||||
if (DHCPInterface == null)
|
|
||||||
tbNetmask.Text = tIPAddress.GetMaskString;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
taddress = tbIPAddress.Text.ParseIp();
|
taddress = tbIPAddress.Text.ParseIp();
|
||||||
@ -283,27 +258,5 @@ namespace EduNetworkBuilder
|
|||||||
if (tLocation.X < 0 || tLocation.Y < 0) tLocation = new Point(50, 50);
|
if (tLocation.X < 0 || tLocation.Y < 0) tLocation = new Point(50, 50);
|
||||||
Location = tLocation;
|
Location = tLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ShowAsSubnetGateway()
|
|
||||||
{
|
|
||||||
lblIP.Text = NB.Translate("IPE_Network");
|
|
||||||
Text = NB.Translate("NB_Subnet");
|
|
||||||
|
|
||||||
myTooltip.AutoPopDelay = 5000;
|
|
||||||
myTooltip.InitialDelay = 1000;
|
|
||||||
myTooltip.ReshowDelay = 500;
|
|
||||||
// Force the ToolTip text to be displayed whether or not the form is active.
|
|
||||||
myTooltip.ShowAlways = true;
|
|
||||||
|
|
||||||
myTooltip.SetToolTip(tbIPAddress, NB.Translate("IPE_NetworkTooltip"));
|
|
||||||
myTooltip.SetToolTip(tbGateway, NB.Translate("IPE_GatewayTooltip"));
|
|
||||||
myTooltip.SetToolTip(tbNetmask, NB.Translate("IPE_NetmaskTooltip"));
|
|
||||||
|
|
||||||
myTooltip.SetToolTip(lblIP, NB.Translate("IPE_NetworkTooltip"));
|
|
||||||
myTooltip.SetToolTip(lblGateway, NB.Translate("IPE_GatewayTooltip"));
|
|
||||||
myTooltip.SetToolTip(lblNetmask, NB.Translate("IPE_NetmaskTooltip"));
|
|
||||||
|
|
||||||
ShowDialog();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -755,10 +755,7 @@ namespace EduNetworkBuilder
|
|||||||
{
|
{
|
||||||
NB_IPAddress newip = new NB_IPAddress(NB.ZeroIPString, NB.ZeroIPString, NB.ZeroIPString);
|
NB_IPAddress newip = new NB_IPAddress(NB.ZeroIPString, NB.ZeroIPString, NB.ZeroIPString);
|
||||||
newip.Edit(myNetDevice, this, NB.Translate("LBW_AddRouteCreate"));
|
newip.Edit(myNetDevice, this, NB.Translate("LBW_AddRouteCreate"));
|
||||||
if (!newip.Equals(new NB_IPAddress(NB.ZeroIPString, NB.ZeroIPString, NB.ZeroIPString)))
|
|
||||||
{
|
|
||||||
myNetDevice.AddRoute(newip);
|
myNetDevice.AddRoute(newip);
|
||||||
}
|
|
||||||
UpdateForm();
|
UpdateForm();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -379,8 +379,6 @@ namespace EduNetworkBuilder
|
|||||||
public static int NormalRotation = 5;
|
public static int NormalRotation = 5;
|
||||||
public static int PacketDamageDistance = 25;
|
public static int PacketDamageDistance = 25;
|
||||||
|
|
||||||
public static int InvalidVLAN = -999; //What we return when it is invalid
|
|
||||||
|
|
||||||
public static bool DebugActions = false;
|
public static bool DebugActions = false;
|
||||||
public static bool DebugTests = false;
|
public static bool DebugTests = false;
|
||||||
|
|
||||||
@ -936,46 +934,6 @@ namespace EduNetworkBuilder
|
|||||||
return tbEvent.Text;
|
return tbEvent.Text;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ComboBoxPromptBox(string title, string prompt, List<string> Options, string value)
|
|
||||||
{
|
|
||||||
Form QuestionForm = new Form();
|
|
||||||
QuestionForm.Text = title;
|
|
||||||
Label lbPrompt = new Label();
|
|
||||||
lbPrompt.Text = prompt;
|
|
||||||
lbPrompt.Location = new Point(1, 1);
|
|
||||||
lbPrompt.Size = new Size(200, lbPrompt.Size.Height);
|
|
||||||
|
|
||||||
ComboBox Choice = new ComboBox();
|
|
||||||
List<string> tlist = new List<string>();
|
|
||||||
foreach (string tstring in Options)
|
|
||||||
{
|
|
||||||
Choice.Items.Add(tstring);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value != "" && Choice.Items.Contains(value))
|
|
||||||
{
|
|
||||||
Choice.SelectedItem = value;
|
|
||||||
}
|
|
||||||
Choice.Location = new Point(1, lbPrompt.Location.Y + lbPrompt.Height + 5);
|
|
||||||
|
|
||||||
Button Done = new Button();
|
|
||||||
Done.Click += (s, g) => { Button b = (Button)s; Form f = (Form)b.Parent; f.Close(); };
|
|
||||||
Choice.DoubleClick += (s, g) => { Button b = (Button)s; Form f = (Form)b.Parent; Choice.SelectedIndex = -1; f.Close(); }; ;
|
|
||||||
Done.Text = NB.Translate("_Done");
|
|
||||||
Done.Location = new Point(1, Choice.Location.Y + Choice.Height + 5);
|
|
||||||
QuestionForm.Controls.Clear();
|
|
||||||
QuestionForm.Controls.Add(Choice);
|
|
||||||
QuestionForm.Controls.Add(Done);
|
|
||||||
QuestionForm.Controls.Add(lbPrompt);
|
|
||||||
QuestionForm.AcceptButton = Done;
|
|
||||||
QuestionForm.FormBorderStyle = FormBorderStyle.FixedDialog;
|
|
||||||
QuestionForm.AutoSize = true;
|
|
||||||
QuestionForm.Height = Done.Location.Y + Done.Height + 5; //This is too small for the form, it autosizes to "big enough"
|
|
||||||
QuestionForm.Width = Choice.Location.X + Choice.Width + 5;
|
|
||||||
QuestionForm.ShowDialog();
|
|
||||||
if (Choice.SelectedIndex >= 0) return Choice.SelectedItem.ToString();
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Dictionary<string, bool> CheckPromptBox(Dictionary<string, bool> Checks)
|
public static Dictionary<string, bool> CheckPromptBox(Dictionary<string, bool> Checks)
|
||||||
{
|
{
|
||||||
|
@ -1,293 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EduNetworkBuilder
|
|
||||||
{
|
|
||||||
public class NBRenumberer
|
|
||||||
{
|
|
||||||
private bool renumbered = false;
|
|
||||||
public List<NBRenumberData> ListOfItems = new List<NBRenumberData>();
|
|
||||||
|
|
||||||
public void Count(string what)
|
|
||||||
{
|
|
||||||
NBRenumberData entry = DataFromName(what);
|
|
||||||
if(entry != null)
|
|
||||||
{
|
|
||||||
entry.ActiveCount++;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//If we get here, we have not found it yet.
|
|
||||||
NBRenumberData One = new NBRenumberData(what, ListOfItems.Count);
|
|
||||||
One.ActiveCount++;
|
|
||||||
ListOfItems.Add(One);
|
|
||||||
}
|
|
||||||
public void SetAsGateway(string what)
|
|
||||||
{
|
|
||||||
NBRenumberData GW = DataFromName(what);
|
|
||||||
if (GW == null) {
|
|
||||||
GW = new NBRenumberData(what, ListOfItems.Count);
|
|
||||||
ListOfItems.Add(GW);
|
|
||||||
}
|
|
||||||
GW.isTheGateway = true;
|
|
||||||
GW.UpdateSortOrder();
|
|
||||||
//We can only have one gateway. Make sure all the rest are set not to be the GW
|
|
||||||
foreach(NBRenumberData one in ListOfItems)
|
|
||||||
{
|
|
||||||
if (one != GW) {
|
|
||||||
one.isTheGateway = false;
|
|
||||||
one.UpdateSortOrder();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public NBRenumberData DataFromName(string hostname)
|
|
||||||
{
|
|
||||||
foreach (NBRenumberData NBRD in ListOfItems)
|
|
||||||
{
|
|
||||||
if (NBRD.Hostname == hostname)
|
|
||||||
{
|
|
||||||
return NBRD;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool TryRenumbering(NB_IPAddress Network, NB_IPAddress Gateway)
|
|
||||||
{
|
|
||||||
renumbered = true;
|
|
||||||
//Separate out the devices by type
|
|
||||||
// Find the gateway too
|
|
||||||
int biggestcount = 0;
|
|
||||||
int spacing = 10;
|
|
||||||
bool HasGateway = false;
|
|
||||||
foreach (NBRenumberData NBRD in ListOfItems)
|
|
||||||
{
|
|
||||||
if (NBRD.ActiveCount > biggestcount) biggestcount = NBRD.ActiveCount;
|
|
||||||
}
|
|
||||||
//now, we can prune off everything that is not part of biggestcount.
|
|
||||||
for(int i=ListOfItems.Count-1; i>=0; i--)
|
|
||||||
{
|
|
||||||
if (ListOfItems[i].ActiveCount != biggestcount)
|
|
||||||
ListOfItems.RemoveAt(i);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (ListOfItems[i].isTheGateway) HasGateway = true;
|
|
||||||
ListOfItems[i].SuggestedIP = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!HasGateway)
|
|
||||||
for (int i = ListOfItems.Count - 1; i >= 0; i--)
|
|
||||||
{
|
|
||||||
if (ListOfItems[i].Device.HasIPAddress(Gateway))
|
|
||||||
SetAsGateway(ListOfItems[i].Hostname);
|
|
||||||
}
|
|
||||||
|
|
||||||
int switches = 0;
|
|
||||||
int servers = 0;
|
|
||||||
int printers = 0;
|
|
||||||
int wireless = 0;
|
|
||||||
int clients = 0;
|
|
||||||
foreach(NBRenumberData NBRD in ListOfItems)
|
|
||||||
{
|
|
||||||
switch(NBRD.TypeString())
|
|
||||||
{
|
|
||||||
case "client":
|
|
||||||
clients++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "printer":
|
|
||||||
printers++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "switch":
|
|
||||||
switches++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "server":
|
|
||||||
servers++;
|
|
||||||
break;
|
|
||||||
case "wireless":
|
|
||||||
wireless++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//Decide on which way we want to do this.
|
|
||||||
biggestcount = 0;
|
|
||||||
if (servers > biggestcount) biggestcount = servers;
|
|
||||||
if (switches > biggestcount) biggestcount = switches;
|
|
||||||
if (printers > biggestcount) biggestcount = printers;
|
|
||||||
if (wireless > biggestcount) biggestcount = wireless;
|
|
||||||
if (clients > biggestcount) biggestcount = clients;
|
|
||||||
|
|
||||||
ListOfItems.Sort((p, q) => p.sortorder.CompareTo(q.sortorder));
|
|
||||||
|
|
||||||
//If it works to do 10 for each bunch, do that. Otherwise, see what the smallest bunch that works is.
|
|
||||||
if (biggestcount < 10)
|
|
||||||
{
|
|
||||||
spacing = 10;
|
|
||||||
}
|
|
||||||
if (biggestcount > 10)
|
|
||||||
spacing = 99; //Don't bother with anything fancy. Punt if it does not fit the first time
|
|
||||||
//Fallback is to simply count up from the gateway.
|
|
||||||
if (Network.NumberOfHosts < ListOfItems.Count)
|
|
||||||
return false;
|
|
||||||
if(spacing * 5 > Network.NumberOfHosts)
|
|
||||||
{
|
|
||||||
renumberlist(Network, 1, "");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//We can do this in parts
|
|
||||||
renumberlist(Network, 1, "Gateway");
|
|
||||||
renumberlist(Network, 2, "server");
|
|
||||||
renumberlist(Network, spacing * 1, "switch");
|
|
||||||
renumberlist(Network, spacing * 2, "wireless");
|
|
||||||
renumberlist(Network, spacing * 3, "printer");
|
|
||||||
renumberlist(Network, spacing * 4, "client");
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void renumberlist(NB_IPAddress Network, int Base, string filter)
|
|
||||||
{
|
|
||||||
int count = Base;
|
|
||||||
for (int i = 0; i < ListOfItems.Count; i++)
|
|
||||||
{
|
|
||||||
if (ListOfItems[i].SuggestedIP != "") continue;
|
|
||||||
if (filter == "" || ListOfItems[i].TypeString() == filter || filter == "Gateway" && ListOfItems[i].isTheGateway)
|
|
||||||
{
|
|
||||||
NB_IPAddress next = new NB_IPAddress(Network);
|
|
||||||
next._ip += (UInt32)count;
|
|
||||||
ListOfItems[i].SuggestedIP = next.GetIPString;
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoRenumbering(NB_IPAddress Network, NB_IPAddress Gateway, int vlanID)
|
|
||||||
{
|
|
||||||
if (!renumbered) TryRenumbering(Network, Gateway);
|
|
||||||
|
|
||||||
//loop through and set all the IPs and the gateway IP if not DHCPS
|
|
||||||
for(int i = 0; i < ListOfItems.Count; i++)
|
|
||||||
{
|
|
||||||
ListOfItems[i].Device.RenumberIP(ListOfItems[i].SuggestedIP, Gateway, vlanID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class NBRenumberData
|
|
||||||
{
|
|
||||||
public string Hostname = "";
|
|
||||||
public NetworkDevice Device {
|
|
||||||
get {
|
|
||||||
Network myNet = NB.GetNetwork();
|
|
||||||
if (myNet == null) return null;
|
|
||||||
return myNet.DeviceFromName(Hostname);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public int ActiveCount=0;
|
|
||||||
public string nicname;
|
|
||||||
public string SuggestedIP;
|
|
||||||
public int sortorder = 0;
|
|
||||||
private int _index = 0;
|
|
||||||
public NetworkComponentType mytype = NetworkComponentType.none;
|
|
||||||
|
|
||||||
public bool isTheGateway = false;
|
|
||||||
|
|
||||||
private bool _isRouter = false;
|
|
||||||
/// <summary>
|
|
||||||
/// Return true if the Device specified by hostname does routing.
|
|
||||||
/// </summary>
|
|
||||||
public bool IsRouter {
|
|
||||||
get {
|
|
||||||
if (_isRouter) return true;
|
|
||||||
NetworkDevice ND = Device;
|
|
||||||
if(ND.RoutesPackets())
|
|
||||||
{
|
|
||||||
_isRouter = true;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public NBRenumberData(string hostname, int index)
|
|
||||||
{
|
|
||||||
Hostname = hostname;
|
|
||||||
NetworkDevice nd = Device;
|
|
||||||
mytype = nd.myType;
|
|
||||||
_index = index;
|
|
||||||
UpdateSortOrder();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdateSortOrder()
|
|
||||||
{
|
|
||||||
switch (TypeString())
|
|
||||||
{
|
|
||||||
case "client":
|
|
||||||
sortorder=5000;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "printer":
|
|
||||||
sortorder = 4000;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "switch":
|
|
||||||
sortorder=2000;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "server":
|
|
||||||
sortorder=1000;
|
|
||||||
break;
|
|
||||||
case "wireless":
|
|
||||||
sortorder=3000;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
sortorder = sortorder + _index;
|
|
||||||
if (isTheGateway) sortorder = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string TypeString()
|
|
||||||
{
|
|
||||||
string what = "";
|
|
||||||
switch (mytype)
|
|
||||||
{
|
|
||||||
case NetworkComponentType.cellphone:
|
|
||||||
case NetworkComponentType.ip_phone:
|
|
||||||
case NetworkComponentType.laptop:
|
|
||||||
case NetworkComponentType.pc:
|
|
||||||
case NetworkComponentType.tablet:
|
|
||||||
what = "client";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case NetworkComponentType.printer:
|
|
||||||
case NetworkComponentType.copier:
|
|
||||||
what = "printer";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case NetworkComponentType.net_hub:
|
|
||||||
case NetworkComponentType.net_switch:
|
|
||||||
what = "switch";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case NetworkComponentType.firewall:
|
|
||||||
case NetworkComponentType.router:
|
|
||||||
case NetworkComponentType.server:
|
|
||||||
what = "server";
|
|
||||||
break;
|
|
||||||
case NetworkComponentType.wap:
|
|
||||||
case NetworkComponentType.wbridge:
|
|
||||||
case NetworkComponentType.wrepeater:
|
|
||||||
case NetworkComponentType.wrouter:
|
|
||||||
what = "wireless";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return what;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -513,7 +513,7 @@ namespace EduNetworkBuilder
|
|||||||
case NetTestType.NeedsRouteToNet:
|
case NetTestType.NeedsRouteToNet:
|
||||||
if (Source == null) return false; //Unable to do it. Do not count it against them.
|
if (Source == null) return false; //Unable to do it. Do not count it against them.
|
||||||
tAddr = theNet.DNSLookup(Source,dHost);
|
tAddr = theNet.DNSLookup(Source,dHost);
|
||||||
if (tAddr == null || tAddr.IsZeroString())
|
if (tAddr == null || tAddr.GetIPString == NB.ZeroIPString)
|
||||||
tAddr = new NB_IPAddress(dHost);
|
tAddr = new NB_IPAddress(dHost);
|
||||||
if (Source.HasRouteMatching(tAddr))
|
if (Source.HasRouteMatching(tAddr))
|
||||||
{
|
{
|
||||||
@ -531,9 +531,9 @@ namespace EduNetworkBuilder
|
|||||||
if (Dest.HasIPAddress(tAddr)) return false; //They gave the same address to the source that the dest has.
|
if (Dest.HasIPAddress(tAddr)) return false; //They gave the same address to the source that the dest has.
|
||||||
if (!theNet.HasUniqueIP(tAddr, Source)) return false; //Verify we have not given the IP to someone else
|
if (!theNet.HasUniqueIP(tAddr, Source)) return false; //Verify we have not given the IP to someone else
|
||||||
if (tAddr != null &&
|
if (tAddr != null &&
|
||||||
!tAddr.IsZeroString())
|
tAddr.GetIPString != NB.ZeroIPString)
|
||||||
{
|
{
|
||||||
if(dAddress != null && dAddress.GetMask == tAddr.GetMask)
|
if(dAddress != null & dAddress.GetMask == tAddr.GetMask)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false; //Something is not set right.
|
return false; //Something is not set right.
|
||||||
|
@ -2427,7 +2427,7 @@ namespace EduNetworkBuilder
|
|||||||
src = GetDeviceFromName(NT.sHost);
|
src = GetDeviceFromName(NT.sHost);
|
||||||
if (src == null) continue;
|
if (src == null) continue;
|
||||||
destination = DNSLookup(src, NT.dHost);
|
destination = DNSLookup(src, NT.dHost);
|
||||||
if (destination == null || destination.IsZeroString())
|
if (destination == null || destination.GetIPString == NB.ZeroIPString)
|
||||||
destination = new NB_IPAddress(NT.dHost);
|
destination = new NB_IPAddress(NT.dHost);
|
||||||
src.PingFromHere(destination);
|
src.PingFromHere(destination);
|
||||||
break;
|
break;
|
||||||
@ -2435,7 +2435,7 @@ namespace EduNetworkBuilder
|
|||||||
src = GetDeviceFromName(NT.sHost);
|
src = GetDeviceFromName(NT.sHost);
|
||||||
if (src == null) continue;
|
if (src == null) continue;
|
||||||
destination = DNSLookup(src, NT.dHost);
|
destination = DNSLookup(src, NT.dHost);
|
||||||
if (destination == null || destination.IsZeroString())
|
if (destination == null || destination.GetIPString == NB.ZeroIPString)
|
||||||
destination = new NB_IPAddress(NT.dHost);
|
destination = new NB_IPAddress(NT.dHost);
|
||||||
src.AskArpFromHere(destination);
|
src.AskArpFromHere(destination);
|
||||||
break;
|
break;
|
||||||
@ -2443,7 +2443,7 @@ namespace EduNetworkBuilder
|
|||||||
src = GetDeviceFromName(NT.sHost);
|
src = GetDeviceFromName(NT.sHost);
|
||||||
if (src == null) continue;
|
if (src == null) continue;
|
||||||
destination = DNSLookup(src, NT.dHost);
|
destination = DNSLookup(src, NT.dHost);
|
||||||
if (destination == null || destination.IsZeroString())
|
if (destination == null || destination.GetIPString == NB.ZeroIPString)
|
||||||
destination = new NB_IPAddress(NT.dHost);
|
destination = new NB_IPAddress(NT.dHost);
|
||||||
src.TracerouteFromHere(destination);
|
src.TracerouteFromHere(destination);
|
||||||
break;
|
break;
|
||||||
|
@ -919,12 +919,6 @@ namespace EduNetworkBuilder
|
|||||||
pbNetworkView.ContextMenuStrip.Items.Add(NB.Translate("_Delete"));
|
pbNetworkView.ContextMenuStrip.Items.Add(NB.Translate("_Delete"));
|
||||||
pbNetworkView.ContextMenuStrip.Items[index++].Click += pbNetworkView_Delete_Click;
|
pbNetworkView.ContextMenuStrip.Items[index++].Click += pbNetworkView_Delete_Click;
|
||||||
|
|
||||||
if(!myNetwork.LoadedFromResource)
|
|
||||||
{
|
|
||||||
pbNetworkView.ContextMenuStrip.Items.Add(NB.Translate("NB_Renumber"));
|
|
||||||
pbNetworkView.ContextMenuStrip.Items[index++].Click += pbNetworkRenumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
//We can color-code multiple items
|
//We can color-code multiple items
|
||||||
if (myNetwork.VLANsEnabled)
|
if (myNetwork.VLANsEnabled)
|
||||||
{
|
{
|
||||||
@ -1135,150 +1129,6 @@ namespace EduNetworkBuilder
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Try to renumber a chunk of a network
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void pbNetworkRenumber(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//come up with a plan
|
|
||||||
// sort items by type
|
|
||||||
// loop through the items
|
|
||||||
// come up with the numbers we want to use
|
|
||||||
// Decide which nics to change
|
|
||||||
// On a router, find the nic that is connected to other items in the list
|
|
||||||
// On other devices, find first nic that is connected that is not DHCP
|
|
||||||
// track hostname, nicname, ip_address
|
|
||||||
//print out a list of what we are going to do
|
|
||||||
//Ask if we want to do it. Yes/No
|
|
||||||
//do it
|
|
||||||
if (ItemsSelected.Count > 0)
|
|
||||||
{
|
|
||||||
//This next entry should never happen.
|
|
||||||
if (ItemsSelected.Count < 2)
|
|
||||||
{
|
|
||||||
MessageBox.Show("You need to have more items selected");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ChosenVlanID = 1;
|
|
||||||
if(myNetwork != null && myNetwork.VLANsEnabled)
|
|
||||||
{
|
|
||||||
List<string> vnames = new List<string>();
|
|
||||||
foreach(VLANName vn in myNetwork.VlanNames)
|
|
||||||
{
|
|
||||||
vnames.Add(vn.Name);
|
|
||||||
}
|
|
||||||
string ChosenVlanName = "";
|
|
||||||
if (vnames.Count > 0) ChosenVlanName = vnames[0]; //Usually "Default"
|
|
||||||
if (vnames.Count > 1)
|
|
||||||
{
|
|
||||||
//we need to prompt
|
|
||||||
ChosenVlanName = NB.ComboBoxPromptBox(NB.Translate("NB_ChooseVLANRenumberTitle"), NB.Translate("NB_ChooseVLANRenumber"), vnames, vnames[0]);
|
|
||||||
}
|
|
||||||
ChosenVlanID = myNetwork.VLANIDFromName(ChosenVlanName);
|
|
||||||
}
|
|
||||||
|
|
||||||
NB_IPAddress prompted = new NB_IPAddress("192.168.1.0","255.255.255.0","192.168.1.1");
|
|
||||||
|
|
||||||
IPAddressEntry IPE = new IPAddressEntry(prompted, null, this, false);
|
|
||||||
|
|
||||||
//Read in the settings we will use
|
|
||||||
IPE.ShowAsSubnetGateway();
|
|
||||||
|
|
||||||
//pull out the gateway address
|
|
||||||
NB_IPAddress gw = new NB_IPAddress(prompted.GetGateway.ToIpString(), prompted._mask.ToIpString(),IPAddressType.gw);
|
|
||||||
|
|
||||||
//pull out the network address
|
|
||||||
NB_IPAddress network = new NB_IPAddress(prompted.NetworkAddress.ToIpString(), prompted._mask.ToIpString(), IPAddressType.gw);
|
|
||||||
|
|
||||||
//We need to find the gateway device. If no such device exists, find the most likely candidate
|
|
||||||
string gateway_name = myNetwork.ReverseDNSLookup(ItemsSelected[0],gw);
|
|
||||||
|
|
||||||
NetworkDevice gwDevice = myNetwork.DeviceFromName(gateway_name);
|
|
||||||
if(gwDevice == null)
|
|
||||||
{
|
|
||||||
//Make a list of possibilities
|
|
||||||
//Prompt user to select one of them
|
|
||||||
List<NetworkDevice> gwdevices = new List<NetworkDevice>();
|
|
||||||
for (int i = ItemsSelected.Count - 1; i >= 0; i--)
|
|
||||||
{
|
|
||||||
if (ItemsSelected[i].RoutesPackets()) gwdevices.Add(ItemsSelected[i]);
|
|
||||||
}
|
|
||||||
if (gwdevices.Count == 1) gwDevice = gwdevices[0];
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//We need to prompt which device
|
|
||||||
List<string> names = new List<string>();
|
|
||||||
foreach(NetworkDevice one in gwdevices)
|
|
||||||
{
|
|
||||||
names.Add(one.hostname);
|
|
||||||
}
|
|
||||||
names.Sort();
|
|
||||||
gateway_name = NB.ComboBoxPromptBox(NB.Translate("_Gateway"), NB.Translate("NB_ChooseGateway"), names, names[0]);
|
|
||||||
gwDevice = myNetwork.DeviceFromName(gateway_name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (gwDevice == null) return; //No gateway device selected
|
|
||||||
|
|
||||||
|
|
||||||
NBRenumberer Renumberer = new NBRenumberer();
|
|
||||||
|
|
||||||
//If we get here, we have a gateway and a list of items to renumber.
|
|
||||||
//Loop through all the items
|
|
||||||
//Find find all connected items
|
|
||||||
//loop through all connected items & count them (excluding them if they are not selected)
|
|
||||||
//set the gateway.
|
|
||||||
//count them and exclude items that are not within the threshhold.
|
|
||||||
|
|
||||||
foreach(NetworkDevice one in ItemsSelected)
|
|
||||||
{
|
|
||||||
List<NetworkDevice> alreadydone = new List<NetworkDevice>();
|
|
||||||
List<NetworkDevice> connections = one.ConnectedTo();
|
|
||||||
|
|
||||||
for(int i=0; i< connections.Count; i++)
|
|
||||||
{
|
|
||||||
NetworkDevice connection = connections[i];
|
|
||||||
//If we have not done it yet
|
|
||||||
if (!ItemsSelected.Contains(connection))
|
|
||||||
continue;
|
|
||||||
if (myNetwork.VLANsEnabled && (ChosenVlanID != connection.PrimaryVLAN() && connection.myType != NetworkComponentType.net_switch))
|
|
||||||
continue; //Skip the device if it is not on the primary vlan, and is not a switch (asuming switches are taggexd)
|
|
||||||
if (!alreadydone.Contains(connection))
|
|
||||||
{
|
|
||||||
alreadydone.Add(connection);
|
|
||||||
|
|
||||||
if(!connection.RoutesPackets() || connection.myType == NetworkComponentType.wrouter)
|
|
||||||
connections.AddRange(connection.ConnectedTo(true));
|
|
||||||
Renumberer.Count(connection.hostname);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Renumberer.SetAsGateway(gwDevice.hostname);
|
|
||||||
|
|
||||||
Renumberer.TryRenumbering(network, gw);
|
|
||||||
|
|
||||||
if (Renumberer.ListOfItems.Count > network.NumberOfHosts)
|
|
||||||
{
|
|
||||||
//Not enough room in the subnet for the various items.
|
|
||||||
MessageBox.Show("There are not enough IP addresses in the subnet you specified for the number of items we need to renumber.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//We should print off the things we are hoping to do.
|
|
||||||
string message = "What we are trying to do:\n";
|
|
||||||
foreach(NBRenumberData NBRD in Renumberer.ListOfItems)
|
|
||||||
{
|
|
||||||
message += NBRD.Hostname + " " + NBRD.TypeString() + " -> " + NBRD.SuggestedIP + "\n";
|
|
||||||
}
|
|
||||||
DialogResult answer = MessageBox.Show(message,"Renumber?",MessageBoxButtons.OKCancel);
|
|
||||||
if (answer == DialogResult.OK)
|
|
||||||
Renumberer.DoRenumbering(network, gw, ChosenVlanID);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void pbNetworkView_Hide_Click(object sender, EventArgs e)
|
private void pbNetworkView_Hide_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (ItemClickedOn != null)
|
if (ItemClickedOn != null)
|
||||||
@ -1624,7 +1474,7 @@ namespace EduNetworkBuilder
|
|||||||
string dest = (string)Pressed.Tag;
|
string dest = (string)Pressed.Tag;
|
||||||
NB_IPAddress destination;
|
NB_IPAddress destination;
|
||||||
destination = myNetwork.DNSLookup(ItemClickedOn, dest);
|
destination = myNetwork.DNSLookup(ItemClickedOn, dest);
|
||||||
if (destination == null || destination.IsZeroString())
|
if (destination == null || destination.GetIPString == NB.ZeroIPString)
|
||||||
destination = new NB_IPAddress(dest);
|
destination = new NB_IPAddress(dest);
|
||||||
//ItemClickedOn.PingFromHere(destination);
|
//ItemClickedOn.PingFromHere(destination);
|
||||||
NB.DoActionPingDevice(ItemClickedOn.GetUniqueIdentifier, destination);
|
NB.DoActionPingDevice(ItemClickedOn.GetUniqueIdentifier, destination);
|
||||||
@ -1640,7 +1490,7 @@ namespace EduNetworkBuilder
|
|||||||
string dest = (string)Pressed.Tag;
|
string dest = (string)Pressed.Tag;
|
||||||
NB_IPAddress destination;
|
NB_IPAddress destination;
|
||||||
destination = myNetwork.DNSLookup(ItemClickedOn, dest);
|
destination = myNetwork.DNSLookup(ItemClickedOn, dest);
|
||||||
if (destination == null || destination.IsZeroString())
|
if (destination == null || destination.GetIPString == NB.ZeroIPString)
|
||||||
destination = new NB_IPAddress(dest);
|
destination = new NB_IPAddress(dest);
|
||||||
//ItemClickedOn.TracerouteFromHere(destination);
|
//ItemClickedOn.TracerouteFromHere(destination);
|
||||||
NB.DoActionTracertDevice(ItemClickedOn.GetUniqueIdentifier, destination);
|
NB.DoActionTracertDevice(ItemClickedOn.GetUniqueIdentifier, destination);
|
||||||
@ -1656,7 +1506,7 @@ namespace EduNetworkBuilder
|
|||||||
string dest = (string)Pressed.Tag;
|
string dest = (string)Pressed.Tag;
|
||||||
NB_IPAddress destination;
|
NB_IPAddress destination;
|
||||||
destination = myNetwork.DNSLookup(ItemClickedOn, dest);
|
destination = myNetwork.DNSLookup(ItemClickedOn, dest);
|
||||||
if (destination == null || destination.IsZeroString())
|
if (destination == null || destination.GetIPString == NB.ZeroIPString)
|
||||||
destination = new NB_IPAddress(dest);
|
destination = new NB_IPAddress(dest);
|
||||||
NB.DoActionArpDevice(ItemClickedOn.GetUniqueIdentifier, destination);
|
NB.DoActionArpDevice(ItemClickedOn.GetUniqueIdentifier, destination);
|
||||||
//ItemClickedOn.AskArpFromHere(destination);
|
//ItemClickedOn.AskArpFromHere(destination);
|
||||||
@ -2036,6 +1886,7 @@ namespace EduNetworkBuilder
|
|||||||
|
|
||||||
private void pbNetworkView_MouseMove(object sender, MouseEventArgs e)
|
private void pbNetworkView_MouseMove(object sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
|
Image tImage;
|
||||||
//Only do this 10 times a second
|
//Only do this 10 times a second
|
||||||
if (DateTime.UtcNow - LastMoveTime < TimeSpan.FromMilliseconds(100)) return;
|
if (DateTime.UtcNow - LastMoveTime < TimeSpan.FromMilliseconds(100)) return;
|
||||||
|
|
||||||
@ -2044,7 +1895,25 @@ namespace EduNetworkBuilder
|
|||||||
//If we are dragging lines, do that first.
|
//If we are dragging lines, do that first.
|
||||||
if (selectedButton == "btnLink")
|
if (selectedButton == "btnLink")
|
||||||
{
|
{
|
||||||
//We are trying to do a link. Do not drag...
|
if (MouseIsDown)
|
||||||
|
{
|
||||||
|
//We are trying to do a link. Drag a line...
|
||||||
|
if (ItemClickedOn != null)
|
||||||
|
{
|
||||||
|
Point OrigCenter = ItemClickedOn.GetCenter();
|
||||||
|
//Draw a line from the item-clicked on to the mouse
|
||||||
|
tImage = new Bitmap(pbNetworkView.BackgroundImage.Width, pbNetworkView.BackgroundImage.Height);
|
||||||
|
Graphics tGraphics = Graphics.FromImage(tImage);
|
||||||
|
tGraphics.Clear(Color.Transparent); //erase the whole thing
|
||||||
|
|
||||||
|
//draw the line
|
||||||
|
//tGraphics.FillRectangle(semiTransBrush, selectbox);
|
||||||
|
tGraphics.DrawLine(Pens.Black, OrigCenter, MouseLocation);
|
||||||
|
pbNetworkView.Image = tImage;
|
||||||
|
pbNetworkView.Invalidate();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (MouseIsDown && LastBackgroundImage != null && ItemClickedOn != null && ItemsSelected.Count == 0) //We are trying to drag something
|
else if (MouseIsDown && LastBackgroundImage != null && ItemClickedOn != null && ItemsSelected.Count == 0) //We are trying to drag something
|
||||||
{
|
{
|
||||||
@ -2074,7 +1943,7 @@ namespace EduNetworkBuilder
|
|||||||
else if (MouseIsDown && ItemClickedOn == null) //Dragging an empty area
|
else if (MouseIsDown && ItemClickedOn == null) //Dragging an empty area
|
||||||
{
|
{
|
||||||
//make a rectangle
|
//make a rectangle
|
||||||
Image tImage = new Bitmap(pbNetworkView.BackgroundImage.Width, pbNetworkView.BackgroundImage.Height);
|
tImage = new Bitmap(pbNetworkView.BackgroundImage.Width, pbNetworkView.BackgroundImage.Height);
|
||||||
Graphics tGraphics = Graphics.FromImage(tImage);
|
Graphics tGraphics = Graphics.FromImage(tImage);
|
||||||
tGraphics.Clear(Color.Transparent); //erase the whole thing
|
tGraphics.Clear(Color.Transparent); //erase the whole thing
|
||||||
int sx;
|
int sx;
|
||||||
|
@ -45,7 +45,7 @@ namespace EduNetworkBuilder
|
|||||||
myID = new HostNicID(HostID, UniqueIdentifier, hostname, _nic_name);
|
myID = new HostNicID(HostID, UniqueIdentifier, hostname, _nic_name);
|
||||||
NetworkInterface nInterface = new NetworkInterface(NicName(), NB.ZeroIPString, NB.ZeroIPString, myID);
|
NetworkInterface nInterface = new NetworkInterface(NicName(), NB.ZeroIPString, NB.ZeroIPString, myID);
|
||||||
if(theType == NicType.lo)
|
if(theType == NicType.lo)
|
||||||
nInterface = new NetworkInterface(NicName(), NB.LoopbackIPString, "255.0.0.0", myID);
|
nInterface = new NetworkInterface(NicName(), "127.0.0.1", "255.0.0.0", myID);
|
||||||
interfaces.Add(nInterface);
|
interfaces.Add(nInterface);
|
||||||
ApplyNicRules();
|
ApplyNicRules();
|
||||||
SetIPForDHCP();
|
SetIPForDHCP();
|
||||||
@ -313,7 +313,7 @@ namespace EduNetworkBuilder
|
|||||||
if (iface.myIP.BroadcastAddress == 0) continue; //a netmask of 0.0.0.0 causes grief
|
if (iface.myIP.BroadcastAddress == 0) continue; //a netmask of 0.0.0.0 causes grief
|
||||||
if (iface.myIP.BroadcastAddress == dest.GetIP)
|
if (iface.myIP.BroadcastAddress == dest.GetIP)
|
||||||
return true;//If they are pinging the broadcast IP
|
return true;//If they are pinging the broadcast IP
|
||||||
if (iface.myIP.IsBroadcast())
|
if (iface.myIP.GetIPString == NB.BroadcastIPString)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -435,7 +435,7 @@ namespace EduNetworkBuilder
|
|||||||
if (UsesDHCP && CanUseDHCP)
|
if (UsesDHCP && CanUseDHCP)
|
||||||
{
|
{
|
||||||
bool doIt = true;
|
bool doIt = true;
|
||||||
if (interfaces.Count > 0 && interfaces[0].myIP.IsZeroString())
|
if (interfaces.Count > 0 && interfaces[0].myIP.GetIPString == NB.ZeroIPString)
|
||||||
{
|
{
|
||||||
doIt = true;
|
doIt = true;
|
||||||
}
|
}
|
||||||
@ -568,15 +568,15 @@ namespace EduNetworkBuilder
|
|||||||
nf.ProcessOutboundPacket(nPacket);
|
nf.ProcessOutboundPacket(nPacket);
|
||||||
if (nPacket.MyStatus == PacketStatus.finished || nPacket.MyStatus == PacketStatus.finished_failed || nPacket.MyStatus == PacketStatus.finished_ok)
|
if (nPacket.MyStatus == PacketStatus.finished || nPacket.MyStatus == PacketStatus.finished_failed || nPacket.MyStatus == PacketStatus.finished_ok)
|
||||||
continue; //If the packet cannot be sent out (VLAN stuff)
|
continue; //If the packet cannot be sent out (VLAN stuff)
|
||||||
if (tPacket.OutboundIP == null || (nf.isLocal(tPacket.OutboundIP) || (tPacket.OutboundIP.IsBroadcast() && tPacket.isFresh)))
|
if (tPacket.OutboundIP == null || (nf.isLocal(tPacket.OutboundIP) || (tPacket.OutboundIP.GetIPString == NB.BroadcastIPString && tPacket.isFresh)))
|
||||||
{
|
{
|
||||||
if ((nf != null && !nf.myIP.IsZeroString()) || nPacket.MyType == PacketType.dhcp_request)
|
if ((nf != null && nf.myIP.GetIPString != NB.ZeroIPString) || nPacket.MyType == PacketType.dhcp_request)
|
||||||
{
|
{
|
||||||
//this means we have a local interface to send it out of
|
//this means we have a local interface to send it out of
|
||||||
//if(nPacket.sourceMAC == null || nPacket.sourceMAC == "" || nPacket.isFresh)
|
//if(nPacket.sourceMAC == null || nPacket.sourceMAC == "" || nPacket.isFresh)
|
||||||
nPacket.sourceMAC = MAC;
|
nPacket.sourceMAC = MAC;
|
||||||
//If the source IP is empty then it is a new packet. We set the source to be us
|
//If the source IP is empty then it is a new packet. We set the source to be us
|
||||||
if (nPacket.sourceIP == null || nPacket.sourceIP.IsZeroString())
|
if (nPacket.sourceIP == null || nPacket.sourceIP.GetIPString == NB.ZeroIPString)
|
||||||
nPacket.sourceIP = nf.myIP;
|
nPacket.sourceIP = nf.myIP;
|
||||||
nPacket.TsourceIP = nf.myIP;
|
nPacket.TsourceIP = nf.myIP;
|
||||||
if (nPacket.destMAC == null || nPacket.destMAC == "")
|
if (nPacket.destMAC == null || nPacket.destMAC == "")
|
||||||
@ -627,14 +627,14 @@ namespace EduNetworkBuilder
|
|||||||
if (nPacket.MyStatus == PacketStatus.finished || nPacket.MyStatus == PacketStatus.finished_failed || nPacket.MyStatus == PacketStatus.finished_ok)
|
if (nPacket.MyStatus == PacketStatus.finished || nPacket.MyStatus == PacketStatus.finished_failed || nPacket.MyStatus == PacketStatus.finished_ok)
|
||||||
continue; //If the packet cannot be sent out (VLAN stuff)
|
continue; //If the packet cannot be sent out (VLAN stuff)
|
||||||
|
|
||||||
if (tPacket.OutboundIP != null && (nf.isLocal(tPacket.OutboundIP) || tPacket.OutboundIP.IsBroadcast()))
|
if (tPacket.OutboundIP != null && (nf.isLocal(tPacket.OutboundIP) || tPacket.OutboundIP.GetIPString == NB.BroadcastIPString))
|
||||||
{
|
{
|
||||||
if ((nf != null && nf.myIP != null && !nf.myIP.IsZeroString()) || nPacket.MyType == PacketType.dhcp_request)
|
if ((nf != null && nf.myIP != null && nf.myIP.GetIPString != NB.ZeroIPString) || nPacket.MyType == PacketType.dhcp_request)
|
||||||
{
|
{
|
||||||
//this means we have a local interface to send it out of
|
//this means we have a local interface to send it out of
|
||||||
nPacket.sourceMAC = MAC;
|
nPacket.sourceMAC = MAC;
|
||||||
//If the source IP is empty then it originated from here. We set the source to be us
|
//If the source IP is empty then it originated from here. We set the source to be us
|
||||||
if (nPacket.sourceIP == null || nPacket.sourceIP.IsZeroString())
|
if (nPacket.sourceIP == null || nPacket.sourceIP.GetIPString == NB.ZeroIPString)
|
||||||
{
|
{
|
||||||
nPacket.sourceIP = nf.myIP;
|
nPacket.sourceIP = nf.myIP;
|
||||||
WhereFrom.StoreOutgoingPacketInfo(nPacket); //the packet is not masqueraded, just accepted
|
WhereFrom.StoreOutgoingPacketInfo(nPacket); //the packet is not masqueraded, just accepted
|
||||||
@ -701,10 +701,10 @@ namespace EduNetworkBuilder
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (nf != null && nf.myIP != null && !nf.myIP.IsZeroString())
|
if (nf != null && nf.myIP != null && nf.myIP.GetIPString != NB.ZeroIPString)
|
||||||
{
|
{
|
||||||
//If the source IP is empty then it originated from here. We set the source to be us
|
//If the source IP is empty then it originated from here. We set the source to be us
|
||||||
if (tPacket.sourceIP == null || tPacket.sourceIP.IsZeroString())
|
if (tPacket.sourceIP == null || tPacket.sourceIP.GetIPString == NB.ZeroIPString)
|
||||||
{
|
{
|
||||||
tPacket.sourceIP = nf.myIP;
|
tPacket.sourceIP = nf.myIP;
|
||||||
WhereFrom.StoreOutgoingPacketInfo(tPacket); //the packet is not yet tunneled
|
WhereFrom.StoreOutgoingPacketInfo(tPacket); //the packet is not yet tunneled
|
||||||
@ -785,7 +785,7 @@ namespace EduNetworkBuilder
|
|||||||
//Need to find the managament interface MAC
|
//Need to find the managament interface MAC
|
||||||
nPacket.sourceMAC = WhereFrom.HubManagementMAC();
|
nPacket.sourceMAC = WhereFrom.HubManagementMAC();
|
||||||
}
|
}
|
||||||
if ((nPacket.sourceIP == null || nPacket.sourceIP.IsZeroString()) && nPacket.MyType != PacketType.dhcp_request)
|
if ((nPacket.sourceIP == null || nPacket.sourceIP.GetIPString == NB.ZeroIPString) && nPacket.MyType != PacketType.dhcp_request)
|
||||||
{
|
{
|
||||||
//set it to be the ip of management interface
|
//set it to be the ip of management interface
|
||||||
nPacket.sourceIP = WhereFrom.HubManagementIP();
|
nPacket.sourceIP = WhereFrom.HubManagementIP();
|
||||||
@ -800,7 +800,7 @@ namespace EduNetworkBuilder
|
|||||||
nl = myNet.GetLinkFromID(ConnectedLink);
|
nl = myNet.GetLinkFromID(ConnectedLink);
|
||||||
if (nl == null)
|
if (nl == null)
|
||||||
break;
|
break;
|
||||||
if ((nPacket.sourceIP == null || nPacket.sourceIP.IsZeroString()) && tPacket.MyType != PacketType.dhcp_request) return false; //We still have no IP. Do not send the packet out.
|
if ((nPacket.sourceIP == null || nPacket.sourceIP.GetIPString == NB.ZeroIPString) && tPacket.MyType != PacketType.dhcp_request) return false; //We still have no IP. Do not send the packet out.
|
||||||
nPacket.StartOnLink(nl, WhereFrom); //This sends the packet down the link.
|
nPacket.StartOnLink(nl, WhereFrom); //This sends the packet down the link.
|
||||||
myNet.addPacket(nPacket);
|
myNet.addPacket(nPacket);
|
||||||
if (tPacket.isFresh)
|
if (tPacket.isFresh)
|
||||||
|
@ -655,196 +655,6 @@ namespace EduNetworkBuilder
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Return the list of devices connected to this device
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="skipwan">For routers, do not show things connected on the WAN</param>
|
|
||||||
/// <returns>A list of devices</returns>
|
|
||||||
public List<NetworkDevice> ConnectedTo(bool skipwan= false)
|
|
||||||
{
|
|
||||||
List<NetworkDevice> connected = new List<NetworkDevice>();
|
|
||||||
foreach (NetworkCard nic in NICs)
|
|
||||||
{
|
|
||||||
//We want to skip connections through the wan when searching a broadcast network
|
|
||||||
if (!(myType == NetworkComponentType.wrouter && skipwan && nic.GetNicType == NicType.wan))
|
|
||||||
{
|
|
||||||
NetworkDevice nd = ConnectedTo(nic);
|
|
||||||
if (nd != null) connected.Add(nd);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return connected;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// return the device this nic is attached to
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="NIC"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public NetworkDevice ConnectedTo(NetworkCard NIC)
|
|
||||||
{
|
|
||||||
return NIC.ConnectedTo();
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// return the device this nic is attached to
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="NIC">the network card ID</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public NetworkDevice ConnectedTo(HostNicID NIC)
|
|
||||||
{
|
|
||||||
NetworkCard nic = NicFromID(NIC);
|
|
||||||
if (nic == null) return null;
|
|
||||||
return nic.ConnectedTo();
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// return the device this nic is attached to
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="nicname">The network card name</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public NetworkDevice ConnectedTo(string nicname)
|
|
||||||
{
|
|
||||||
NetworkCard nic = NicFromName(nicname);
|
|
||||||
if (nic == null) return null;
|
|
||||||
return nic.ConnectedTo();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int VLANFromNIF(NetworkInterface nif, int level = 0)
|
|
||||||
{
|
|
||||||
level++;
|
|
||||||
if (DoesVLANs())
|
|
||||||
{
|
|
||||||
//This device itself does vlans
|
|
||||||
int vlan = nif.GetUntaggedVLAN();
|
|
||||||
if (vlan != NB.InvalidVLAN)
|
|
||||||
{
|
|
||||||
return vlan;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (nif == null) return NB.InvalidVLAN;
|
|
||||||
NetworkCard nic = NicFromID(nif.AttachedToHostNic);
|
|
||||||
if (nic == null) return NB.InvalidVLAN; //Nothing
|
|
||||||
if (level > 5) return NB.InvalidVLAN;
|
|
||||||
return VLANFromNIC(nic, level);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int VLANFromNIC(NetworkCard nic, int level=0)
|
|
||||||
{
|
|
||||||
level++;
|
|
||||||
int vlan = NB.InvalidVLAN;
|
|
||||||
if (DoesVLANs())
|
|
||||||
{
|
|
||||||
foreach (NetworkInterface nif in nic.interfaces)
|
|
||||||
{
|
|
||||||
int tvlan = NB.InvalidVLAN;
|
|
||||||
if(DoesVLANs())
|
|
||||||
tvlan = VLANFromNIF(nif, level);
|
|
||||||
if (tvlan != NB.InvalidVLAN)
|
|
||||||
{
|
|
||||||
if (vlan != NB.InvalidVLAN && vlan != tvlan)
|
|
||||||
return NB.InvalidVLAN; //We have multiple VLANs defined on this nic. Cannot determine it from the nic. Need to look using nif
|
|
||||||
vlan = tvlan;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return vlan;
|
|
||||||
}
|
|
||||||
//If the device does not do vlans, we need to trace the wire to the device.
|
|
||||||
NetworkDevice FarEnd = ConnectedTo(nic);
|
|
||||||
if (FarEnd == null) return NB.InvalidVLAN; //Nothing connected to this link
|
|
||||||
|
|
||||||
//if it is a switch or wrouter(does vlans), return vlan for the device
|
|
||||||
if (FarEnd.myType == NetworkComponentType.net_switch || FarEnd.myType == NetworkComponentType.wrouter)
|
|
||||||
return FarEnd.VLANFromSwitchPort(hostname);
|
|
||||||
//if it is a hub, return invalid
|
|
||||||
if (FarEnd.myType == NetworkComponentType.net_hub)
|
|
||||||
return NB.InvalidVLAN;
|
|
||||||
//if it is a wireless device, find the vlan the device is attached to.
|
|
||||||
if (FarEnd.IsWirelessForwarder())
|
|
||||||
{
|
|
||||||
return FarEnd.PrimaryVLAN();
|
|
||||||
}
|
|
||||||
return NB.InvalidVLAN;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Used by PrimaryVLAN
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="tList"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private int ProcessVLANlist(List<NetworkCard> tList)
|
|
||||||
{
|
|
||||||
int VLAN = NB.InvalidVLAN;
|
|
||||||
int tvlan = NB.InvalidVLAN;
|
|
||||||
foreach(NetworkCard nic in tList)
|
|
||||||
{
|
|
||||||
tvlan = VLANFromNIC(nic);
|
|
||||||
if(VLAN != NB.InvalidVLAN && tvlan != VLAN)
|
|
||||||
{
|
|
||||||
//We have multiple VLANs defined on these nics. We do not know what is primary
|
|
||||||
return NB.InvalidVLAN;
|
|
||||||
}
|
|
||||||
VLAN = tvlan;
|
|
||||||
}
|
|
||||||
return VLAN;
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// Return the primary vlan of the device.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int PrimaryVLAN()
|
|
||||||
{
|
|
||||||
int tVLAN;
|
|
||||||
List<NetworkCard> Connections;
|
|
||||||
|
|
||||||
Connections = NICsFromTypeNic(NicType.management_interface);
|
|
||||||
tVLAN = ProcessVLANlist(Connections);
|
|
||||||
if (tVLAN != NB.InvalidVLAN) return tVLAN;
|
|
||||||
|
|
||||||
//Connections = NICsFromTypeNic(NicType.wan); //If the device has a wan vlan defined
|
|
||||||
//tVLAN = ProcessVLANlist(Connections);
|
|
||||||
//if (tVLAN != NB.InvalidVLAN) return tVLAN;
|
|
||||||
|
|
||||||
Connections = NICsFromTypeNic(NicType.eth);
|
|
||||||
tVLAN = ProcessVLANlist(Connections);
|
|
||||||
if (tVLAN != NB.InvalidVLAN) return tVLAN;
|
|
||||||
|
|
||||||
Connections = NICsFromTypeNic(NicType.wlan);
|
|
||||||
tVLAN = ProcessVLANlist(Connections);
|
|
||||||
if (tVLAN != NB.InvalidVLAN) return tVLAN;
|
|
||||||
|
|
||||||
return NB.InvalidVLAN;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// On a switch, return the vlan that hostname is attached to. Returns invalid if not found on this switch
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="hostname">the hostname of the device</param>
|
|
||||||
/// <returns>nb.invalid if it is not attached to this switch, or if this is not a switch</returns>
|
|
||||||
public int VLANFromSwitchPort(string hostname)
|
|
||||||
{
|
|
||||||
if (myType == NetworkComponentType.net_hub) return NB.InvalidVLAN; //Hubs do not know what vlan they are on
|
|
||||||
if(myType == NetworkComponentType.net_switch || myType == NetworkComponentType.wrouter)
|
|
||||||
{
|
|
||||||
//We want to find the port the hostname is on.
|
|
||||||
foreach(NetworkCard nic in NICs)
|
|
||||||
{
|
|
||||||
NetworkDevice FarEnd = ConnectedTo(nic); //Get the device at the far end
|
|
||||||
if (FarEnd == null) continue;
|
|
||||||
if(FarEnd.hostname == hostname)
|
|
||||||
{
|
|
||||||
//This is the port the host is on
|
|
||||||
return VLANFromNIC(nic);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return NB.InvalidVLAN;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int VLANFromIP(string ip)
|
|
||||||
{
|
|
||||||
NetworkInterface nif = InterfaceFromIP(ip);
|
|
||||||
if (nif == null) return NB.InvalidVLAN; //Nothing
|
|
||||||
return VLANFromNIF(nif);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Check to see if the device has a link to the specified host
|
/// Check to see if the device has a link to the specified host
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -1354,73 +1164,6 @@ namespace EduNetworkBuilder
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NetworkInterface InterfaceFromIP(string IP)
|
|
||||||
{
|
|
||||||
foreach (NetworkCard nic in NICs)
|
|
||||||
{
|
|
||||||
foreach (NetworkInterface nif in nic.interfaces)
|
|
||||||
{
|
|
||||||
if (nif.myIP.GetIPString == IP)
|
|
||||||
return nif;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool RenumberIP(string newip, NB_IPAddress gateway, int vlanID)
|
|
||||||
{
|
|
||||||
DefaultGW = new NB_IPAddress(gateway);
|
|
||||||
//figure out which interface to change.
|
|
||||||
|
|
||||||
if (!RenumberIP(newip, gateway, NicType.management_interface, vlanID))
|
|
||||||
if (!RenumberIP(newip, gateway, NicType.eth, vlanID))
|
|
||||||
return RenumberIP(newip, gateway, NicType.wlan, vlanID);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool RenumberIP(string newip, NB_IPAddress gateway, NicType what, int vlan)
|
|
||||||
{
|
|
||||||
List<NetworkCard> smalllist = NICsFromTypeNic(what);
|
|
||||||
smalllist.Sort((p, q) => p._nic_name.CompareTo(q._nic_name));
|
|
||||||
foreach (NetworkCard nic in smalllist)
|
|
||||||
{
|
|
||||||
//see if we can renumber this one
|
|
||||||
//It cannot be dhcp, and must be connected.
|
|
||||||
if((!nic.UsesDHCP && nic.isConnected(false)) || nic.GetNicType == NicType.management_interface)
|
|
||||||
{
|
|
||||||
//If we are doing vlans, the vlan should match the interface if eth
|
|
||||||
//If we are doing vlans, the vlan should match if we are doing management interface
|
|
||||||
//
|
|
||||||
//right now, just do it.
|
|
||||||
NetworkInterface nif = nic.PrimaryInterface();
|
|
||||||
if(nif == null)
|
|
||||||
{ //There are multiple interfaces, or there are no interfaces.
|
|
||||||
//If multiple interfaces, try one with the specified vlan.
|
|
||||||
nif = nic.InterfaceFromVlanTag(vlan);
|
|
||||||
}
|
|
||||||
if (nif != null)
|
|
||||||
{
|
|
||||||
nif.myIP = new NB_IPAddress(newip, gateway._mask.ToIpString(), IPAddressType.ip);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NetworkCard NicFromIP(string IP)
|
|
||||||
{
|
|
||||||
foreach (NetworkCard nic in NICs)
|
|
||||||
{
|
|
||||||
foreach(NetworkInterface nif in nic.interfaces)
|
|
||||||
{
|
|
||||||
if (nif.myIP.GetIPString == IP)
|
|
||||||
return nic;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
public NetworkCard NicFromID(HostNicID ID)
|
public NetworkCard NicFromID(HostNicID ID)
|
||||||
{
|
{
|
||||||
return NicFromID(ID.NicID);
|
return NicFromID(ID.NicID);
|
||||||
@ -1672,7 +1415,7 @@ namespace EduNetworkBuilder
|
|||||||
public bool HasRouteMatching(string destString)
|
public bool HasRouteMatching(string destString)
|
||||||
{
|
{
|
||||||
NB_IPAddress dest = new NB_IPAddress(destString);
|
NB_IPAddress dest = new NB_IPAddress(destString);
|
||||||
if (dest.IsZeroString()) return false;
|
if (dest.GetIPString == NB.ZeroIPString) return false;
|
||||||
return HasRouteMatching(dest);
|
return HasRouteMatching(dest);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1688,11 +1431,6 @@ namespace EduNetworkBuilder
|
|||||||
public bool HasBroadcastAddress(NB_IPAddress dest)
|
public bool HasBroadcastAddress(NB_IPAddress dest)
|
||||||
{
|
{
|
||||||
if (dest.BroadcastAddress == dest.GetIP) return true;
|
if (dest.BroadcastAddress == dest.GetIP) return true;
|
||||||
|
|
||||||
//This "fixes" a strange fringe case of when we configure a subnet such that
|
|
||||||
//a packet that is traversing the network suddenly is a broadcast packet on the
|
|
||||||
//target network. Gotta have odd subnetting for this to happen
|
|
||||||
if (dest.IsBroadcast()) return true;
|
|
||||||
foreach(NetworkCard nic in NICs)
|
foreach(NetworkCard nic in NICs)
|
||||||
{
|
{
|
||||||
if (nic.HasBroadcastAddresses(dest))
|
if (nic.HasBroadcastAddresses(dest))
|
||||||
@ -1806,24 +1544,6 @@ namespace EduNetworkBuilder
|
|||||||
RouteTable.AddRange(ndCopyFrom.RouteTable);
|
RouteTable.AddRange(ndCopyFrom.RouteTable);
|
||||||
DHCPRanges.Clear();
|
DHCPRanges.Clear();
|
||||||
DHCPRanges.AddRange(ndCopyFrom.DHCPRanges);
|
DHCPRanges.AddRange(ndCopyFrom.DHCPRanges);
|
||||||
//if the IP address has changed, also update the corresponding address in DHCP rules
|
|
||||||
foreach (NB_IPAddress dhcpIP in DHCPRanges)
|
|
||||||
{
|
|
||||||
foreach (NetworkCard nic in NICs)
|
|
||||||
{
|
|
||||||
NetworkInterface matchingIF = nic.LocalInterface(dhcpIP, null);
|
|
||||||
if (matchingIF != null && !matchingIF.myIP.Equals(dhcpIP.GetIP) && !matchingIF.myIP.Equals(0))
|
|
||||||
{
|
|
||||||
//only validate the entry if the new address doesn't conflict with the DHCP range.
|
|
||||||
UInt32 nStartingDHCP = dhcpIP.GetMask;
|
|
||||||
UInt32 nEndingDHCP = dhcpIP.GetGateway;
|
|
||||||
if (matchingIF.myIP.GetIP < nStartingDHCP || matchingIF.myIP.GetIP > nEndingDHCP)
|
|
||||||
{
|
|
||||||
dhcpIP.SetIP(matchingIF.myIP.GetIP);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
DHCPLeases.Clear();
|
DHCPLeases.Clear();
|
||||||
DHCPLeases.AddRange(ndCopyFrom.DHCPLeases);
|
DHCPLeases.AddRange(ndCopyFrom.DHCPLeases);
|
||||||
|
|
||||||
@ -2103,7 +1823,7 @@ namespace EduNetworkBuilder
|
|||||||
//Change this. Need a new ProcessArrival
|
//Change this. Need a new ProcessArrival
|
||||||
if (tPacket.MyType != PacketType.dhcp_answer) //If it is a match, it should be handled elsewhere
|
if (tPacket.MyType != PacketType.dhcp_answer) //If it is a match, it should be handled elsewhere
|
||||||
ProcessArrival(tPacket);
|
ProcessArrival(tPacket);
|
||||||
if (ExactMatch && tPacket.isFinished())
|
if (ExactMatch && tPacket.isFinshed())
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2119,7 +1839,7 @@ namespace EduNetworkBuilder
|
|||||||
//It was destined for here, or it is starting from scratch. See if we need to route it.
|
//It was destined for here, or it is starting from scratch. See if we need to route it.
|
||||||
if (tPacket.destIP == null) tPacket.destIP = new NB_IPAddress(NB.ZeroIPString);
|
if (tPacket.destIP == null) tPacket.destIP = new NB_IPAddress(NB.ZeroIPString);
|
||||||
NB_IPAddress dest = DestinationFromIP(tPacket.destIP); //Get the IP, or GW
|
NB_IPAddress dest = DestinationFromIP(tPacket.destIP); //Get the IP, or GW
|
||||||
if(dest.IsZeroString() && !tPacket.destIP.IsBroadcast())
|
if(dest.GetIPString == NB.ZeroIPString && tPacket.destIP.GetIPString != NB.BroadcastIPString)
|
||||||
{
|
{
|
||||||
//No gateway set and no route...
|
//No gateway set and no route...
|
||||||
string errString = string.Format(NB.Translate("ND_NoRouteStr"), hostname, tPacket.destIP.GetIPString);
|
string errString = string.Format(NB.Translate("ND_NoRouteStr"), hostname, tPacket.destIP.GetIPString);
|
||||||
@ -2135,7 +1855,7 @@ namespace EduNetworkBuilder
|
|||||||
tPacket.OutboundIP = tPacket.destIP;
|
tPacket.OutboundIP = tPacket.destIP;
|
||||||
tPacket.TsourceIP = null;
|
tPacket.TsourceIP = null;
|
||||||
}
|
}
|
||||||
else if(!tPacket.destIP.IsBroadcast())
|
else if(tPacket.destIP.GetIPString != NB.BroadcastIPString)
|
||||||
{
|
{
|
||||||
//it needs to go to a gateway. Set the next destination is the GW
|
//it needs to go to a gateway. Set the next destination is the GW
|
||||||
tPacket.OutboundIP = dest;
|
tPacket.OutboundIP = dest;
|
||||||
@ -2150,7 +1870,7 @@ namespace EduNetworkBuilder
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tPacket.isFinished() && !BroadcastMatch) return;
|
if (tPacket.isFinshed() && !BroadcastMatch) return;
|
||||||
|
|
||||||
NetworkCard dNic = null;
|
NetworkCard dNic = null;
|
||||||
NetworkCard sNic = null;
|
NetworkCard sNic = null;
|
||||||
@ -2424,7 +2144,7 @@ namespace EduNetworkBuilder
|
|||||||
nPacket.sourceIP = new NB_IPAddress(NB.ZeroIPString);
|
nPacket.sourceIP = new NB_IPAddress(NB.ZeroIPString);
|
||||||
nPacket.TsourceIP = new NB_IPAddress(NB.ZeroIPString);
|
nPacket.TsourceIP = new NB_IPAddress(NB.ZeroIPString);
|
||||||
}
|
}
|
||||||
if (!tip.IsZeroString())
|
if (tip.GetIP.ToIpString() != NB.ZeroIPString)
|
||||||
nPacket.destIP = tip;
|
nPacket.destIP = tip;
|
||||||
if (tPacket.isFresh)
|
if (tPacket.isFresh)
|
||||||
{
|
{
|
||||||
@ -2709,7 +2429,7 @@ namespace EduNetworkBuilder
|
|||||||
if (tNic.GetNicType == NicType.lo) continue; //Don't check loopback nics
|
if (tNic.GetNicType == NicType.lo) continue; //Don't check loopback nics
|
||||||
if (tNic.GetNicType == NicType.port) continue; //Don't check ports
|
if (tNic.GetNicType == NicType.port) continue; //Don't check ports
|
||||||
nif = tNic.LocalInterface(ip, null);
|
nif = tNic.LocalInterface(ip, null);
|
||||||
if(nif != null && !nif.myIP.IsUnassigned())
|
if(nif != null && nif.myIP.GetIPString != NB.ZeroIPString)
|
||||||
{
|
{
|
||||||
return nif.myIP;
|
return nif.myIP;
|
||||||
}
|
}
|
||||||
@ -2832,11 +2552,6 @@ namespace EduNetworkBuilder
|
|||||||
NetworkCard tCard = null;
|
NetworkCard tCard = null;
|
||||||
NB_IPAddress DestAddr;
|
NB_IPAddress DestAddr;
|
||||||
string DHCPGW = "";
|
string DHCPGW = "";
|
||||||
|
|
||||||
//Do not ping the zero string. Should not go anywhere
|
|
||||||
if (dest != null && dest.IsZeroString())
|
|
||||||
return new NB_IPAddress(NB.ZeroIPString);
|
|
||||||
|
|
||||||
foreach( NB_IPAddress ip in RouteTable)
|
foreach( NB_IPAddress ip in RouteTable)
|
||||||
{
|
{
|
||||||
if (ip.IsLocal(dest))
|
if (ip.IsLocal(dest))
|
||||||
@ -2850,7 +2565,7 @@ namespace EduNetworkBuilder
|
|||||||
DHCPGW = nic.FirstIP().GetGateway.ToIpString();
|
DHCPGW = nic.FirstIP().GetGateway.ToIpString();
|
||||||
}
|
}
|
||||||
nIF = nic.LocalInterface(dest,null);
|
nIF = nic.LocalInterface(dest,null);
|
||||||
if (nIF != null && !nIF.myIP.IsZeroString())
|
if (nIF != null && nIF.myIP.GetIPString != NB.ZeroIPString)
|
||||||
{
|
{
|
||||||
DestAddr = dest; //We found it. Send it to the destination
|
DestAddr = dest; //We found it. Send it to the destination
|
||||||
return DestAddr;
|
return DestAddr;
|
||||||
@ -2859,12 +2574,8 @@ namespace EduNetworkBuilder
|
|||||||
if (oNic != null)
|
if (oNic != null)
|
||||||
{
|
{
|
||||||
List<NB_IPAddress> tlist = oNic.IPAddressList();
|
List<NB_IPAddress> tlist = oNic.IPAddressList();
|
||||||
|
if(tlist.Count > 0 && tlist[0].GetGateway.ToIpString() != NB.ZeroIPString)
|
||||||
if(tlist.Count > 0)
|
|
||||||
{
|
{
|
||||||
//Make sure the address is not the zerostring...
|
|
||||||
NB_IPAddress nAddress = new NB_IPAddress(tlist[0].GetGateway.ToIpString());
|
|
||||||
if(!nAddress.IsZeroString())
|
|
||||||
return new NB_IPAddress(tlist[0].GetGateway.ToIpString());
|
return new NB_IPAddress(tlist[0].GetGateway.ToIpString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2927,10 +2638,10 @@ namespace EduNetworkBuilder
|
|||||||
tPacket.MyStatus = PacketStatus.finished; //we have replaced it with other ones
|
tPacket.MyStatus = PacketStatus.finished; //we have replaced it with other ones
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (tPacket.OutboundIP == null || tPacket.OutboundIP.IsZeroString() && tPacket.MyType != PacketType.dhcp_request)
|
if (tPacket.OutboundIP == null || tPacket.OutboundIP.GetIP.ToIpString() == NB.ZeroIPString && tPacket.MyType != PacketType.dhcp_request)
|
||||||
{
|
{
|
||||||
tPacket.OutboundIP = DestinationFromIP(dest,tPacket.OutboundNic);
|
tPacket.OutboundIP = DestinationFromIP(dest,tPacket.OutboundNic);
|
||||||
if (tPacket.OutboundIP.IsZeroString())
|
if (tPacket.OutboundIP.GetIP.ToIpString() == NB.ZeroIPString)
|
||||||
{
|
{
|
||||||
if (tPacket.MyType == PacketType.dhcp_answer)
|
if (tPacket.MyType == PacketType.dhcp_answer)
|
||||||
{
|
{
|
||||||
@ -3017,7 +2728,7 @@ namespace EduNetworkBuilder
|
|||||||
{
|
{
|
||||||
nIF = nic.LocalInterface(toFind, null);
|
nIF = nic.LocalInterface(toFind, null);
|
||||||
if (nIF != null) {
|
if (nIF != null) {
|
||||||
if (nIF.myIP.IsZeroString())
|
if (nIF.myIP.GetIPString == NB.ZeroIPString)
|
||||||
continue;
|
continue;
|
||||||
return nic;
|
return nic;
|
||||||
}
|
}
|
||||||
@ -3066,7 +2777,7 @@ namespace EduNetworkBuilder
|
|||||||
{
|
{
|
||||||
foreach(NB_IPAddress ip in nic.IPAddressList())
|
foreach(NB_IPAddress ip in nic.IPAddressList())
|
||||||
{
|
{
|
||||||
if (!ip.IsZeroString() && !ip.IsLoopback())
|
if (ip.GetIPString != NB.ZeroIPString && ip.GetIPString != NB.LoopbackIPString)
|
||||||
return ip;
|
return ip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3074,26 +2785,13 @@ namespace EduNetworkBuilder
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<NetworkCard> NICsFromTypeNic(NicType What)
|
|
||||||
{
|
|
||||||
List<NetworkCard> tList = new List<NetworkCard>();
|
|
||||||
foreach (NetworkCard nic in NB.Randomize(NICs).ToList())
|
|
||||||
{
|
|
||||||
if (nic.GetNicType == What)
|
|
||||||
{
|
|
||||||
tList.Add(nic);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return tList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NB_IPAddress BestIPForThis(NetworkDevice Source=null)
|
public NB_IPAddress BestIPForThis(NetworkDevice Source=null)
|
||||||
{
|
{
|
||||||
NB_IPAddress answer=null;
|
NB_IPAddress answer=null;
|
||||||
if(Source != null)
|
if(Source != null)
|
||||||
{
|
{
|
||||||
answer = LocalDeviceIP(Source);
|
answer = LocalDeviceIP(Source);
|
||||||
if (answer != null && !answer.IsZeroString())
|
if (answer != null && answer.GetIPString != NB.ZeroIPString)
|
||||||
return answer;
|
return answer;
|
||||||
}
|
}
|
||||||
//If we have a WAN Nic, use that first
|
//If we have a WAN Nic, use that first
|
||||||
@ -3214,16 +2912,14 @@ namespace EduNetworkBuilder
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ForwardsPackets() || HasIPAddress(tPacket.destIP))
|
if (!ForwardsPackets())
|
||||||
{
|
{
|
||||||
//Traceroute bounce-back
|
//Traceroute bounce-back
|
||||||
if(tPacket.MyType == PacketType.tracert_request)
|
if(tPacket.MyType == PacketType.tracert_request)
|
||||||
{
|
{
|
||||||
if (ProcessTracertPacket(tPacket)) return; //the packet stops if it gets bounced.
|
if (ProcessTracertPacket(tPacket)) return; //the packet stops if it gets bounced.
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!ForwardsPackets())
|
|
||||||
{
|
|
||||||
if (tPacket.MyType == PacketType.dhcp_request && !isDHCPServer)
|
if (tPacket.MyType == PacketType.dhcp_request && !isDHCPServer)
|
||||||
{
|
{
|
||||||
tPacket.AddMessage(DebugLevel.debug, NB.LeftPad(hostname) + " " +string.Format(NB.Translate("ND_DoInFromLnkDeaf")));
|
tPacket.AddMessage(DebugLevel.debug, NB.LeftPad(hostname) + " " +string.Format(NB.Translate("ND_DoInFromLnkDeaf")));
|
||||||
@ -3294,12 +2990,7 @@ namespace EduNetworkBuilder
|
|||||||
//Console.WriteLine(" Tracert bounce: " + tPacket.OrigTTL + " " + hostname + " " + tPacket.payloadData);
|
//Console.WriteLine(" Tracert bounce: " + tPacket.OrigTTL + " " + hostname + " " + tPacket.payloadData);
|
||||||
|
|
||||||
//Finish setting up the new packet - sending it back
|
//Finish setting up the new packet - sending it back
|
||||||
// respond from requested address, not outgoing address: important for routers.
|
|
||||||
if (HasIPAddress(tPacket.destIP))
|
|
||||||
nPacket.sourceIP = tPacket.destIP;
|
|
||||||
else
|
|
||||||
nPacket.sourceIP = new NB_IPAddress(NB.ZeroIPString);
|
nPacket.sourceIP = new NB_IPAddress(NB.ZeroIPString);
|
||||||
|
|
||||||
nPacket.TsourceIP = new NB_IPAddress(NB.ZeroIPString);
|
nPacket.TsourceIP = new NB_IPAddress(NB.ZeroIPString);
|
||||||
myNet.addPacket(nPacket);
|
myNet.addPacket(nPacket);
|
||||||
//Console.WriteLine(" Tracert bounce pkt:" + nPacket.OrigTTL + nPacket.payloadData);
|
//Console.WriteLine(" Tracert bounce pkt:" + nPacket.OrigTTL + nPacket.payloadData);
|
||||||
@ -3419,8 +3110,7 @@ namespace EduNetworkBuilder
|
|||||||
{
|
{
|
||||||
ArpTable.Add(AE);
|
ArpTable.Add(AE);
|
||||||
}
|
}
|
||||||
NB_IPAddress tAddress = new NB_IPAddress(ip);
|
if(IPFromArp(mac) != ip && ip != NB.ZeroIPString)
|
||||||
if(IPFromArp(mac) != ip && !tAddress.IsZeroString())
|
|
||||||
{
|
{
|
||||||
foreach (ArpEntry arp in ArpTable.ToList())
|
foreach (ArpEntry arp in ArpTable.ToList())
|
||||||
{
|
{
|
||||||
@ -3507,7 +3197,7 @@ namespace EduNetworkBuilder
|
|||||||
List<string> theStrings = new List<string>();
|
List<string> theStrings = new List<string>();
|
||||||
foreach(NB_IPAddress ip in DHCPRanges)
|
foreach(NB_IPAddress ip in DHCPRanges)
|
||||||
{
|
{
|
||||||
if (!ip.IsLoopback())
|
if (ip.GetIP.ToIpString() != "127.0.0.1")
|
||||||
{
|
{
|
||||||
if (WithAdditionalInfo)
|
if (WithAdditionalInfo)
|
||||||
{
|
{
|
||||||
@ -3528,7 +3218,7 @@ namespace EduNetworkBuilder
|
|||||||
if (InterfaceIP == null) return null;
|
if (InterfaceIP == null) return null;
|
||||||
foreach (NB_IPAddress ip in DHCPRanges)
|
foreach (NB_IPAddress ip in DHCPRanges)
|
||||||
{
|
{
|
||||||
if (!ip.IsLoopback() && InterfaceIP.IsLocal(ip))
|
if (ip.GetIP.ToIpString() != "127.0.0.1" && InterfaceIP.IsLocal(ip))
|
||||||
return ip;
|
return ip;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -123,16 +123,6 @@ namespace EduNetworkBuilder
|
|||||||
return VLANTagType.Forbidden; //if not defined, it is forbidden
|
return VLANTagType.Forbidden; //if not defined, it is forbidden
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetUntaggedVLAN()
|
|
||||||
{
|
|
||||||
foreach (VLANInfo vin in VLANs)
|
|
||||||
{
|
|
||||||
if (vin.Tag == VLANTagType.Untagged)
|
|
||||||
return vin.ID;
|
|
||||||
}
|
|
||||||
return NB.InvalidVLAN;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int GetNonForbiddenVLANID()
|
public int GetNonForbiddenVLANID()
|
||||||
{
|
{
|
||||||
foreach(VLANInfo vin in VLANs)
|
foreach(VLANInfo vin in VLANs)
|
||||||
@ -140,7 +130,7 @@ namespace EduNetworkBuilder
|
|||||||
if (vin.Tag != VLANTagType.Forbidden)
|
if (vin.Tag != VLANTagType.Forbidden)
|
||||||
return vin.ID;
|
return vin.ID;
|
||||||
}
|
}
|
||||||
return NB.InvalidVLAN;
|
return -999;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetVLANTag(int id, VLANTagType Tag)
|
public void SetVLANTag(int id, VLANTagType Tag)
|
||||||
@ -281,7 +271,7 @@ namespace EduNetworkBuilder
|
|||||||
NetworkCard nic = HD.NicFromID(AttachedToHostNic);
|
NetworkCard nic = HD.NicFromID(AttachedToHostNic);
|
||||||
if(nic != null && nic.GetNicType != NicType.port && nic.GetNicType != NicType.wport)
|
if(nic != null && nic.GetNicType != NicType.port && nic.GetNicType != NicType.wport)
|
||||||
tPacket.TsourceIP = myIP;
|
tPacket.TsourceIP = myIP;
|
||||||
if(tPacket.TsourceIP == null || tPacket.TsourceIP.IsZeroString())
|
if(tPacket.TsourceIP == null || tPacket.TsourceIP.GetIPString == NB.ZeroIPString)
|
||||||
tPacket.TsourceIP = myIP;
|
tPacket.TsourceIP = myIP;
|
||||||
|
|
||||||
if (What == VLANTagType.Forbidden)
|
if (What == VLANTagType.Forbidden)
|
||||||
|
@ -489,7 +489,7 @@ namespace EduNetworkBuilder
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool isFinished()
|
public bool isFinshed()
|
||||||
{
|
{
|
||||||
if (_MyStatus == PacketStatus.finished_ok) return true;
|
if (_MyStatus == PacketStatus.finished_ok) return true;
|
||||||
if (_MyStatus == PacketStatus.finished_failed) return true;
|
if (_MyStatus == PacketStatus.finished_failed) return true;
|
||||||
|
@ -70,7 +70,7 @@
|
|||||||
<interface>
|
<interface>
|
||||||
<nicname>management_interface0</nicname>
|
<nicname>management_interface0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
<ip>192.168.1.4</ip>
|
<ip>102.168.1.4</ip>
|
||||||
<mask>255.255.255.0</mask>
|
<mask>255.255.255.0</mask>
|
||||||
<gateway>0.0.0.0</gateway>
|
<gateway>0.0.0.0</gateway>
|
||||||
<type>ip</type>
|
<type>ip</type>
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
<EduNetworkBuilder>
|
<EduNetworkBuilder>
|
||||||
<!--This is a network file for EduNetworkBuilder.-->
|
<!--This is a network file for EduNetworkBuilder.-->
|
||||||
<Network>
|
<Network>
|
||||||
<en_message>The one router got replaced and needs the correct IP-Addresses and routes given to it.</en_message>
|
<en_message>The one router got replaced and needs the correct IP-Addresses given to it.</en_message>
|
||||||
<fr_message>Le routeur a été remplacé et a besoin des adresses IP correctes qui lui ont été attribuées et des itinéraires.</fr_message>
|
<fr_message>Le routeur a été remplacé et a besoin des adresses IP correctes qui lui ont été attribuées.</fr_message>
|
||||||
<en_title>Router Replacement</en_title>
|
<en_title>Router Replacement</en_title>
|
||||||
<height>1024</height>
|
<height>1024</height>
|
||||||
<width>1024</width>
|
<width>1024</width>
|
||||||
@ -1205,6 +1205,18 @@
|
|||||||
ID="1">Untagged</VLAN>
|
ID="1">Untagged</VLAN>
|
||||||
</interface>
|
</interface>
|
||||||
</nic>
|
</nic>
|
||||||
|
<route>
|
||||||
|
<ip>172.16.1.2</ip>
|
||||||
|
<mask>255.255.255.252</mask>
|
||||||
|
<gateway>172.16.1.9</gateway>
|
||||||
|
<type>route</type>
|
||||||
|
</route>
|
||||||
|
<route>
|
||||||
|
<ip>172.16.1.18</ip>
|
||||||
|
<mask>255.255.255.252</mask>
|
||||||
|
<gateway>172.16.1.14</gateway>
|
||||||
|
<type>route</type>
|
||||||
|
</route>
|
||||||
</device>
|
</device>
|
||||||
<device>
|
<device>
|
||||||
<hostname>router4</hostname>
|
<hostname>router4</hostname>
|
||||||
|
@ -1478,11 +1478,6 @@ Someone is complaining that they cannot access the servers on the other side of
|
|||||||
<dhost>pc3</dhost>
|
<dhost>pc3</dhost>
|
||||||
<thetest>SuccessfullyPings</thetest>
|
<thetest>SuccessfullyPings</thetest>
|
||||||
</nettest>
|
</nettest>
|
||||||
<nettest>
|
|
||||||
<shost>laptop0</shost>
|
|
||||||
<dhost>server0</dhost>
|
|
||||||
<thetest>NeedsLocalIPTo</thetest>
|
|
||||||
</nettest>
|
|
||||||
<VLANName
|
<VLANName
|
||||||
ID="1"
|
ID="1"
|
||||||
Color="Blue">Default</VLANName>
|
Color="Blue">Default</VLANName>
|
||||||
|
@ -1102,6 +1102,6 @@ Ce puzzle a un interrupteur que vous avez été bloqué. Réinitialisez-le (clic
|
|||||||
Color="Blue">Default</VLANName>
|
Color="Blue">Default</VLANName>
|
||||||
<VLANName
|
<VLANName
|
||||||
ID="2"
|
ID="2"
|
||||||
Color="Blue">Staff</VLANName>
|
Color="Blue">Sttaff</VLANName>
|
||||||
</Network>
|
</Network>
|
||||||
</EduNetworkBuilder>
|
</EduNetworkBuilder>
|
@ -3,7 +3,7 @@
|
|||||||
<!--This is a network file for EduNetworkBuilder.-->
|
<!--This is a network file for EduNetworkBuilder.-->
|
||||||
<Network>
|
<Network>
|
||||||
<en_message>Switch Ports can have three states:
|
<en_message>Switch Ports can have three states:
|
||||||
UnTagged
|
Unagged
|
||||||
Tagged
|
Tagged
|
||||||
Forbidden
|
Forbidden
|
||||||
When you are connecting switch-to-switch, they should be "Tagged." This makes a "Trunk", or a backbone link that can pass any VLAN. This allows packets to go to all the switches, and let the switches determine what devices they can go to from there.
|
When you are connecting switch-to-switch, they should be "Tagged." This makes a "Trunk", or a backbone link that can pass any VLAN. This allows packets to go to all the switches, and let the switches determine what devices they can go to from there.
|
||||||
@ -1124,6 +1124,6 @@ Pour compléter ce puzzle, vérifiez les deux commutateurs. L'un d'eux n'a pas l
|
|||||||
Color="Blue">Default</VLANName>
|
Color="Blue">Default</VLANName>
|
||||||
<VLANName
|
<VLANName
|
||||||
ID="2"
|
ID="2"
|
||||||
Color="Blue">Staff</VLANName>
|
Color="Blue">Sttaff</VLANName>
|
||||||
</Network>
|
</Network>
|
||||||
</EduNetworkBuilder>
|
</EduNetworkBuilder>
|
@ -2,7 +2,7 @@
|
|||||||
<EduNetworkBuilder>
|
<EduNetworkBuilder>
|
||||||
<!--This is a network file for EduNetworkBuilder.-->
|
<!--This is a network file for EduNetworkBuilder.-->
|
||||||
<Network>
|
<Network>
|
||||||
<en_message>A staff member brought in a laptop and they have problems. As always, they want you to fix it.
|
<en_message>A staff memner brought in a laptop and they have problems. As always, they want you to fix it.
|
||||||
Some vlan issues are a lot simpler than they originally look.</en_message>
|
Some vlan issues are a lot simpler than they originally look.</en_message>
|
||||||
<fr_message>Un membre du personnel a apporté un ordinateur portable et ils ont des problèmes. Comme toujours, ils veulent que vous le répariez.
|
<fr_message>Un membre du personnel a apporté un ordinateur portable et ils ont des problèmes. Comme toujours, ils veulent que vous le répariez.
|
||||||
Certains problèmes de vlan sont beaucoup plus simples qu'ils ne le paraissent à l'origine.</fr_message>
|
Certains problèmes de vlan sont beaucoup plus simples qu'ils ne le paraissent à l'origine.</fr_message>
|
||||||
|
@ -1204,6 +1204,6 @@
|
|||||||
Color="Blue">Default</VLANName>
|
Color="Blue">Default</VLANName>
|
||||||
<VLANName
|
<VLANName
|
||||||
ID="2"
|
ID="2"
|
||||||
Color="Blue">Staff</VLANName>
|
Color="Blue">Sttaff</VLANName>
|
||||||
</Network>
|
</Network>
|
||||||
</EduNetworkBuilder>
|
</EduNetworkBuilder>
|
@ -1214,6 +1214,6 @@ Pour que cela fonctionne, nous avons besoin de deux VLAN différents sur le seul
|
|||||||
Color="Blue">Default</VLANName>
|
Color="Blue">Default</VLANName>
|
||||||
<VLANName
|
<VLANName
|
||||||
ID="2"
|
ID="2"
|
||||||
Color="Blue">Staff</VLANName>
|
Color="Blue">Sttaff</VLANName>
|
||||||
</Network>
|
</Network>
|
||||||
</EduNetworkBuilder>
|
</EduNetworkBuilder>
|
@ -1121,6 +1121,6 @@ Faites un ping sur un certain nombre d'ordinateurs et faites des pings de diffus
|
|||||||
Color="Blue">Default</VLANName>
|
Color="Blue">Default</VLANName>
|
||||||
<VLANName
|
<VLANName
|
||||||
ID="2"
|
ID="2"
|
||||||
Color="Blue">Staff</VLANName>
|
Color="Blue">Sttaff</VLANName>
|
||||||
</Network>
|
</Network>
|
||||||
</EduNetworkBuilder>
|
</EduNetworkBuilder>
|
@ -42,8 +42,6 @@
|
|||||||
<nictype>lo</nictype>
|
<nictype>lo</nictype>
|
||||||
<uniqueidentifier>101</uniqueidentifier>
|
<uniqueidentifier>101</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>lo0</nicname>
|
<nicname>lo0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -68,8 +66,6 @@
|
|||||||
<nictype>wan</nictype>
|
<nictype>wan</nictype>
|
||||||
<uniqueidentifier>104</uniqueidentifier>
|
<uniqueidentifier>104</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>wan0</nicname>
|
<nicname>wan0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -94,8 +90,6 @@
|
|||||||
<nictype>eth</nictype>
|
<nictype>eth</nictype>
|
||||||
<uniqueidentifier>102</uniqueidentifier>
|
<uniqueidentifier>102</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>eth0</nicname>
|
<nicname>eth0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -159,8 +153,6 @@
|
|||||||
<nictype>eth</nictype>
|
<nictype>eth</nictype>
|
||||||
<uniqueidentifier>103</uniqueidentifier>
|
<uniqueidentifier>103</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>eth1</nicname>
|
<nicname>eth1</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -210,8 +202,6 @@
|
|||||||
<nictype>lo</nictype>
|
<nictype>lo</nictype>
|
||||||
<uniqueidentifier>106</uniqueidentifier>
|
<uniqueidentifier>106</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>lo0</nicname>
|
<nicname>lo0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -236,8 +226,6 @@
|
|||||||
<nictype>management_interface</nictype>
|
<nictype>management_interface</nictype>
|
||||||
<uniqueidentifier>107</uniqueidentifier>
|
<uniqueidentifier>107</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>management_interface0</nicname>
|
<nicname>management_interface0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -262,8 +250,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>108</uniqueidentifier>
|
<uniqueidentifier>108</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port1</nicname>
|
<nicname>port1</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -290,8 +276,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>109</uniqueidentifier>
|
<uniqueidentifier>109</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port2</nicname>
|
<nicname>port2</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -318,8 +302,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>110</uniqueidentifier>
|
<uniqueidentifier>110</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port3</nicname>
|
<nicname>port3</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -346,8 +328,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>111</uniqueidentifier>
|
<uniqueidentifier>111</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port4</nicname>
|
<nicname>port4</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -374,8 +354,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>112</uniqueidentifier>
|
<uniqueidentifier>112</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port5</nicname>
|
<nicname>port5</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -402,8 +380,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>113</uniqueidentifier>
|
<uniqueidentifier>113</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port6</nicname>
|
<nicname>port6</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -434,8 +410,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>114</uniqueidentifier>
|
<uniqueidentifier>114</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port7</nicname>
|
<nicname>port7</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -481,8 +455,6 @@
|
|||||||
<nictype>lo</nictype>
|
<nictype>lo</nictype>
|
||||||
<uniqueidentifier>116</uniqueidentifier>
|
<uniqueidentifier>116</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>lo0</nicname>
|
<nicname>lo0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -507,8 +479,6 @@
|
|||||||
<nictype>management_interface</nictype>
|
<nictype>management_interface</nictype>
|
||||||
<uniqueidentifier>117</uniqueidentifier>
|
<uniqueidentifier>117</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>management_interface0</nicname>
|
<nicname>management_interface0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -535,8 +505,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>118</uniqueidentifier>
|
<uniqueidentifier>118</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port1</nicname>
|
<nicname>port1</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -565,8 +533,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>119</uniqueidentifier>
|
<uniqueidentifier>119</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port2</nicname>
|
<nicname>port2</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -576,11 +542,11 @@
|
|||||||
<type>ip</type>
|
<type>ip</type>
|
||||||
</myip>
|
</myip>
|
||||||
<VLAN
|
<VLAN
|
||||||
ID="1">Forbidden</VLAN>
|
ID="1">Untagged</VLAN>
|
||||||
<VLAN
|
<VLAN
|
||||||
ID="2">Forbidden</VLAN>
|
ID="2">Forbidden</VLAN>
|
||||||
<VLAN
|
<VLAN
|
||||||
ID="3">Untagged</VLAN>
|
ID="3">Forbidden</VLAN>
|
||||||
</interface>
|
</interface>
|
||||||
</nic>
|
</nic>
|
||||||
<nic>
|
<nic>
|
||||||
@ -595,8 +561,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>120</uniqueidentifier>
|
<uniqueidentifier>120</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port3</nicname>
|
<nicname>port3</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -625,8 +589,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>121</uniqueidentifier>
|
<uniqueidentifier>121</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port4</nicname>
|
<nicname>port4</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -655,8 +617,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>122</uniqueidentifier>
|
<uniqueidentifier>122</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port5</nicname>
|
<nicname>port5</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -685,8 +645,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>123</uniqueidentifier>
|
<uniqueidentifier>123</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port6</nicname>
|
<nicname>port6</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -717,8 +675,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>124</uniqueidentifier>
|
<uniqueidentifier>124</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port7</nicname>
|
<nicname>port7</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -764,8 +720,6 @@
|
|||||||
<nictype>lo</nictype>
|
<nictype>lo</nictype>
|
||||||
<uniqueidentifier>126</uniqueidentifier>
|
<uniqueidentifier>126</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>lo0</nicname>
|
<nicname>lo0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -790,8 +744,6 @@
|
|||||||
<nictype>management_interface</nictype>
|
<nictype>management_interface</nictype>
|
||||||
<uniqueidentifier>127</uniqueidentifier>
|
<uniqueidentifier>127</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>management_interface0</nicname>
|
<nicname>management_interface0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -818,8 +770,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>128</uniqueidentifier>
|
<uniqueidentifier>128</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port1</nicname>
|
<nicname>port1</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -848,8 +798,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>129</uniqueidentifier>
|
<uniqueidentifier>129</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port2</nicname>
|
<nicname>port2</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -878,8 +826,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>130</uniqueidentifier>
|
<uniqueidentifier>130</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port3</nicname>
|
<nicname>port3</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -906,8 +852,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>131</uniqueidentifier>
|
<uniqueidentifier>131</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port4</nicname>
|
<nicname>port4</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -934,8 +878,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>132</uniqueidentifier>
|
<uniqueidentifier>132</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port5</nicname>
|
<nicname>port5</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -962,8 +904,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>133</uniqueidentifier>
|
<uniqueidentifier>133</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port6</nicname>
|
<nicname>port6</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -994,8 +934,6 @@
|
|||||||
<nictype>port</nictype>
|
<nictype>port</nictype>
|
||||||
<uniqueidentifier>134</uniqueidentifier>
|
<uniqueidentifier>134</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>port7</nicname>
|
<nicname>port7</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1042,8 +980,6 @@
|
|||||||
<nictype>lo</nictype>
|
<nictype>lo</nictype>
|
||||||
<uniqueidentifier>136</uniqueidentifier>
|
<uniqueidentifier>136</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>lo0</nicname>
|
<nicname>lo0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1068,8 +1004,6 @@
|
|||||||
<nictype>eth</nictype>
|
<nictype>eth</nictype>
|
||||||
<uniqueidentifier>137</uniqueidentifier>
|
<uniqueidentifier>137</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>eth0</nicname>
|
<nicname>eth0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1110,8 +1044,6 @@
|
|||||||
<nictype>lo</nictype>
|
<nictype>lo</nictype>
|
||||||
<uniqueidentifier>139</uniqueidentifier>
|
<uniqueidentifier>139</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>lo0</nicname>
|
<nicname>lo0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1136,8 +1068,6 @@
|
|||||||
<nictype>eth</nictype>
|
<nictype>eth</nictype>
|
||||||
<uniqueidentifier>140</uniqueidentifier>
|
<uniqueidentifier>140</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>eth0</nicname>
|
<nicname>eth0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1178,8 +1108,6 @@
|
|||||||
<nictype>lo</nictype>
|
<nictype>lo</nictype>
|
||||||
<uniqueidentifier>142</uniqueidentifier>
|
<uniqueidentifier>142</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>lo0</nicname>
|
<nicname>lo0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1204,8 +1132,6 @@
|
|||||||
<nictype>eth</nictype>
|
<nictype>eth</nictype>
|
||||||
<uniqueidentifier>143</uniqueidentifier>
|
<uniqueidentifier>143</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>eth0</nicname>
|
<nicname>eth0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1246,8 +1172,6 @@
|
|||||||
<nictype>lo</nictype>
|
<nictype>lo</nictype>
|
||||||
<uniqueidentifier>145</uniqueidentifier>
|
<uniqueidentifier>145</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>lo0</nicname>
|
<nicname>lo0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1272,8 +1196,6 @@
|
|||||||
<nictype>eth</nictype>
|
<nictype>eth</nictype>
|
||||||
<uniqueidentifier>146</uniqueidentifier>
|
<uniqueidentifier>146</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>eth0</nicname>
|
<nicname>eth0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1314,8 +1236,6 @@
|
|||||||
<nictype>lo</nictype>
|
<nictype>lo</nictype>
|
||||||
<uniqueidentifier>148</uniqueidentifier>
|
<uniqueidentifier>148</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>lo0</nicname>
|
<nicname>lo0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1340,8 +1260,6 @@
|
|||||||
<nictype>eth</nictype>
|
<nictype>eth</nictype>
|
||||||
<uniqueidentifier>149</uniqueidentifier>
|
<uniqueidentifier>149</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>eth0</nicname>
|
<nicname>eth0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1382,8 +1300,6 @@
|
|||||||
<nictype>lo</nictype>
|
<nictype>lo</nictype>
|
||||||
<uniqueidentifier>151</uniqueidentifier>
|
<uniqueidentifier>151</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>lo0</nicname>
|
<nicname>lo0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1408,8 +1324,6 @@
|
|||||||
<nictype>eth</nictype>
|
<nictype>eth</nictype>
|
||||||
<uniqueidentifier>152</uniqueidentifier>
|
<uniqueidentifier>152</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>eth0</nicname>
|
<nicname>eth0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1450,8 +1364,6 @@
|
|||||||
<nictype>lo</nictype>
|
<nictype>lo</nictype>
|
||||||
<uniqueidentifier>154</uniqueidentifier>
|
<uniqueidentifier>154</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>lo0</nicname>
|
<nicname>lo0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
@ -1476,8 +1388,6 @@
|
|||||||
<nictype>eth</nictype>
|
<nictype>eth</nictype>
|
||||||
<uniqueidentifier>155</uniqueidentifier>
|
<uniqueidentifier>155</uniqueidentifier>
|
||||||
<usesdhcp>False</usesdhcp>
|
<usesdhcp>False</usesdhcp>
|
||||||
<encryptionkey />
|
|
||||||
<ssid />
|
|
||||||
<interface>
|
<interface>
|
||||||
<nicname>eth0</nicname>
|
<nicname>eth0</nicname>
|
||||||
<myip>
|
<myip>
|
||||||
|
@ -1,689 +1,301 @@
|
|||||||
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
|
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}}
|
||||||
{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
|
{\colortbl ;\red0\green0\blue255;}
|
||||||
{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
{\*\generator Riched20 10.0.22621}{\*\mmathPr\mdispDef1\mwrapIndent1440 }\viewkind4\uc1
|
||||||
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}
|
\pard\nowidctlpar\sa200\sl276\slmult1\b\f0\fs22\lang9 Version 1.0.52\par
|
||||||
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
\b0 * Change publish URL to an actual domain.\b\par
|
||||||
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
|
Version 1.0.51\par
|
||||||
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f40\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f41\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
\b0 * Added small time-based delay when printing packets; on fast computers the packets would fly by too fast.\par
|
||||||
{\f43\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f44\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f45\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f46\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
\b Version 1.0.50\par
|
||||||
{\f47\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f48\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f60\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f61\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}
|
\b0 * Added regression testing for making sure we do not break things while making changes to the UI or how the system works.\par
|
||||||
{\f63\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f64\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f65\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f66\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}
|
* Added regression tests for most all the networks\par
|
||||||
{\f67\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f68\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f380\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f381\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}
|
* Able to change gateway if the primary network connection does not have DHCP. There was an issue with a puzzle because of this.\par
|
||||||
{\f383\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f384\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f387\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f388\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}
|
* Do not check firewall rules if the firewall checkmark is turned off. You can disable the firewall rules by turning off the firewall.\par
|
||||||
{\f430\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f431\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f433\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f434\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
|
* Get the reload button working properly. You can reload a puzzle and it will reset to its original state.\par
|
||||||
{\f435\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\f436\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\f437\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f438\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}
|
* Better listing of puzzles and highlighting the next puzzle to do.\par
|
||||||
{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
|
* When resetting a switch, reset the vlans on that switch. Somewhere this broke and we needed to put it back.\par
|
||||||
{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
* Added some action debugging. No impact on users, just developers.\par
|
||||||
{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
* Better processing of wireless link autojoin\par
|
||||||
{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
|
\b Version 1.0.49\par
|
||||||
{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
|
\b0 * Change level1_practice5. It had been a puzzle with two DHCP servers, but we have not taught that concept yet. I change it so the DHCP server was passing out bad DHCP. IPs already exist.\par
|
||||||
{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}
|
* Fixed a few bugs in other \ldblquote practice\rdblquote levels.\par
|
||||||
{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}
|
* Made a test for a network loop. So we can have a \ldblquote ping without looping\rdblquote test. So we need to have a successful ping that does not cause a network loop.\par
|
||||||
{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}
|
* Fixed an issue with wireless bridges. They were routing packets instead of forwarding packets, which broke them in a few instances.\par
|
||||||
{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
|
* Make it so a NIC can spray. It creates bad packets that just keep coming.\par
|
||||||
{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
* Fix some issues with wireless links. Some puzzles had saved multiple wireless links to the same device, which ended up having some rather bizarre issues. Since all wireless links are rebuilt on load, I made it so none of the wireless links are saved, and if they are loaded, they are discarded. It solved a number of issues. \par
|
||||||
{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
\b Version 1.0.48\par
|
||||||
{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
|
\b0 * Fix a traversal class not serializable error\par
|
||||||
{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
|
* Close the file -> load toolstrip menu after a load. It had remained annoyingly open.\par
|
||||||
{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
* Added a bunch of \ldblquote practice\rdblquote puzzles. These are for practicing troubleshooting. They do not give you a lot of information about what the problem is; you need to do a bit more testing and trying things to figure them out.\par
|
||||||
{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
* Added a bunch of level5 practice puzzles. More physical networking and wireless than routing issues.\par
|
||||||
{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
|
* Added the solved versions of the office networks. One with wireless linking between them, and the other having physical wires.\par
|
||||||
{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
|
\b Version 1.0.47\par
|
||||||
{\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
|
\b0 * YAY! The long-awaited ctrl-z / ctrl-y works. Undo / redo.\par
|
||||||
{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
* Lock a device to a location\par
|
||||||
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
* Add a tree. Wireless packets cannot go through a tree.\par
|
||||||
{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
|
* Add background shapes. So we can draw a building and have understandable line of sight.\par
|
||||||
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
|
* Add a wireless line of sight puzzle.\par
|
||||||
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1
|
* Went through old puzzles and locked some items in their locations. Makes some puzzles need to be solved the way the puzzle was intended to be solved.\par
|
||||||
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
|
\b Version 1.0.46\par
|
||||||
\fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
|
\b0 * Added a frozen device. Fix it with a reboot. (power off / power on)\par
|
||||||
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1
|
* Added a bad power-supply (device catches fire when powered on. Need to replace the device to fix)\par
|
||||||
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused
|
* Added bad electricity. (device continues to catch fire, even after being replaced, until a UPS is added)\par
|
||||||
Normal Table;}}{\*\listtable{\list\listtemplateid-678110632\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat4\levelspace0\levelindent0{\leveltext\leveltemplateid1569626406\'01\u-3913 ?;}{\levelnumbers;}
|
* Can right-click a network wire. Delete, edit, replace.\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
* Added frozen device, bad power-supply and Needs UPS as ways to randomly break networks.\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
* Optimize the redrawing of the screen packets. Speeded it up considerably\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
* Add puzzles for frozen device, bad power-supply, and needs a UPS.\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
\b Version 1.0.45\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
\b0 * More infrastructure for translating the main program\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
\b Version 1.0.44\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
\b0 * Added ability to add a video URL to a help topic\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
* Added video URL for individual puzzles\par
|
||||||
;}\listid159203163}{\list\listtemplateid-103407058\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\leveltemplateid379213054\'01\u-3913 ?;}{\levelnumbers;}
|
* Added some initial videos\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
* More work on translation window (most people will not see this)\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
* Fix order of help-level radio-buttons.\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
* Some puzzles are properly translated to French\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
\b Version 1.0.43\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
\b0 * Added the title to the translation window. Puzzle titles can now be translated.\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
* Use the translated titles for the puzzle names on the puzzle selection box\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
\b Version 1.0.42\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
\b0 * Fixed some bugs with working in French \endash puzzles would not show\par
|
||||||
;}\listid237788805}{\list\listtemplateid-1448205776\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat4\levelspace0\levelindent0{\leveltext\leveltemplateid-1831819778\'01\u-3913 ?;}{\levelnumbers;}
|
* Fixed bug in French \endash \ldblquote Ping to\rdblquote would not work\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
* Added a translation box when working on puzzles. Ctrl-click the network message in the options window to pull up a translation box. Look at two languages simultaneously. Has save button to save your changes from there.\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
\b Version 1.0.41\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
\b0 * Have the ability to randomly break a network. If you want to just test your brain for fun, or if you are a teacher and just want to generate some homework of some sort. This can help.\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
* Added another solved network (InternetHomeAndOffice)\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
* Give us more options for viewing text under devices. This lets us see things much more cleanly.\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
* Allow different captioning systems. Hostname only, IP only, host + IP, none, full\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
* firewall rules can now affect VPN traffic. You can block from a VPN to the office VLAN, for example. Also, can block guest VLAN from pinging something across the VPN.\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
\b Version 1.0.40\par
|
||||||
;}\listid272565942}{\list\listtemplateid951750322\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\leveltemplateid-557448562\'01\u-3913 ?;}{\levelnumbers;}
|
\b0 * Jumping ahead version numbers. Adding Educational Mode (see doc on the wiki for a description of the basic functionality added) {{\field{\*\fldinst{HYPERLINK https://git.solidcharity.com/timy/EduNetworkBuilder/wikis/Teacherdoc }}{\fldrslt{https://git.solidcharity.com/timy/EduNetworkBuilder/wikis/Teacherdoc\ul0\cf0}}}}\f0\fs22\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
* Added the ability to make msi files for better deployment in multi-user settings\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
* Adjusted drag functionality so we do not jostle devices around accidentally\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
* Fixed bug when trying to ping wireless devices by name\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
* Fixed a bug pinging 0.0.0.0\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
* Fixed lots of other bugs\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
\b Version 1.0.33\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
\b0 * Fixed a major bug in settings that would blow up new installs.\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
* ctrl-right-click a device to add \ldblquote hide\rdblquote to the context menu.\par
|
||||||
;}\listid300036472}{\list\listtemplateid1850757320\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat4\levelspace0\levelindent0{\leveltext\leveltemplateid-1251324124\'01\u-3913 ?;}{\levelnumbers;}
|
* From the puzzle menu you can ctrl-alt click items to mark them as solved.\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
* Display bad subnet masks (that cannot be displayed using CIDR notation) as /?\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
* Allow pings from devices that are locked. A bug made it so we could not change the address we wanted to ping to; all ip-addresses were locked, even a \ldblquote ping to\rdblquote address.\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
* Minor bug: If we ping a local IP that does not exist, the error message we were getting was the wrong error message. Fixed that.\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
* When wireless device is powered off, remove all wireless links. Links connected to WLAN had been reconnected. Fixed that.\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
* Cannot go into the network options if we have loaded the network from resources. This way we cannot \ldblquote cheat\rdblquote by changing the network options. This is in preparation for setting this up for school use. Making it harder for students to cheat on homework assignments.\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
\b Version 1.0.32\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
\b0 * Allow dragging of items\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
* Select multiple items for dragging by using a nice big drag-box.\par
|
||||||
;}\listid569733219}{\list\listtemplateid1348617656\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat4\levelspace0\levelindent0{\leveltext\leveltemplateid-1331424806\'01\u-3913 ?;}{\levelnumbers;}
|
* Highlight the multiple items if selecting them\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
* Allow the ESC key to clear the selected items.\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
* Can right-click and delete of multiple selected items\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
* Can right-click and change color of multiple selected items\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
* Fixed some tracert bugs\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
* lots of minor fixes so is more stable on Linux\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
* Saves settings in ~/.conf/EduNetworkbuilder_config.xml file on Linux\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
* Cannot edit something that is powered off. Also, cannot ping, do DHCP refresh, etc.\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
* Fixed losing the VPN password changes when editing VPN Info.\par
|
||||||
;}\listid1059207521}{\list\listtemplateid-1653202988\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\leveltemplateid1996378994\'01\u-3913 ?;}{\levelnumbers;}
|
* Fixed anchoring of puzzle filter box.\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li480\lin480 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
* Added invisible items. Forgotten switches and unseen network wires. Right now, the only way to make something hidden is by editing the file and saying <invisible>true</invisible> on it.\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1200\lin1200 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
\b Version 1.0.31\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li1920\lin1920 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
\b0 * Added powering off switches, routers, and the like\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2640\lin2640 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
* Added traceroute\par
|
||||||
\fi-360\li3360\lin3360 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
* Added a few puzzles for those\par
|
||||||
\fi-360\li4080\lin4080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
* Moved to a new git repository\par
|
||||||
\fi-360\li4800\lin4800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5520\lin5520 }
|
* Changed the default location of popups. They worked very strange in a multi-window environment.\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6240\lin6240 }{\listname
|
\b Version 1.0.30\par
|
||||||
;}\listid1164392343}{\list\listtemplateid1293564504\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\leveltemplateid-1614118322\'01\u-3913 ?;}{\levelnumbers;}
|
\b0 * Another downloadable (zip only, stable) version.\b\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
Version 1.0.29\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
\b0 * Lots of VLAN butfixes\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
* Fixed ping-fail test\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
* Lots more VLAN puzzles\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
* Update VLAN documentation\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
\b Version 1.0.28\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
\b0 * Initial VLAN release\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
\b Version 1.0.27\par
|
||||||
;}\listid1272543532}{\list\listtemplateid-884542874\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\leveltemplateid-1963024970\'01\u-3913 ?;}{\levelnumbers;}
|
\b0 * Made distribution easier by CD (does updates from web, but we also have a downloadable zip you can install from)\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
\b Version 1.0.26\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
\b0 * Major graphics overhaul\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
- Packets move on timer\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
- Graphics drawn "smarter"\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
- Result is that things flow smoother. Loopback2 also works much nicer. \par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
* Fixed minor issue with "help" puzzle\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
* Made help "?" button turn red when it is part of the puzzle\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
* Put checkmark to display names and IPs of devices on front form.\par
|
||||||
;}\listid1332484604}{\list\listtemplateid-308776008\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\leveltemplateid142246634\'01\u-3913 ?;}{\levelnumbers;}
|
* Add a NetTest to show people to click on the "display Device names and IP" checkmark\b\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
Version 1.0.25\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
\b0 * Minor changes to help file\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
* Fixed size of labels on IP-Address editor box\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
* Hide gateway label when we do not need it. (ip-address editor)\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
* rename "mixed network" puzzle to be "adding devices" (the puzzle was about adding devices)\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
* Changed layout of many messages\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
* Save the level we are working on. Allows us to finish level 5 before level 3 if we want to.\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
* Make network-loop puzzles sit next to each-other\par
|
||||||
;}\listid1436513145}{\list\listtemplateid711852752\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\leveltemplateid1548498794\'01\u-3913 ?;}{\levelnumbers;}
|
* Make it so network-loop2 puzzle asks for second ping after first one finishes \par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
* Lots of work towards the French translation\b\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
Version 1.0.24 \par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
\b0 * Add sound when ctrl-s is pressed so we know we saved.\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
* Add sound fail when save is canceled (will use it later if ctrl-s fails)\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
* Added some wireless puzzles\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
* Fix issue with WAP not forwarding packets correctly\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
* Clear out old status message if we do something. So we do not say "saved" forever...\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
* Fixed bad gateway on wireless router issue\par
|
||||||
;}\listid1535926840}{\list\listtemplateid96765656\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\leveltemplateid-2137615088\'01\u-3913 ?;}{\levelnumbers;}
|
* Fixed wbridge misbehaving. (issue with gateway)\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
* Added wireless items to help and context help topics\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
* Thanks to Peter Wilson for so much of the translation backbone.\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
* Lots of translation string changes. The French translation should be soon in coming.\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
\b Version 1.0.23 09/20/2015\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
\b0 * Fixed issues with broadcast packets\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
* Fixed a network loop issue\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
* Fixed issue with multiple interfaces and being able to go out a different interface than we came in on\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
* Fixed many small bugs that crept in when fixing other bugs. Now all puzzles seem to play correctly\b\par
|
||||||
;}\listid1574776731}{\list\listtemplateid-898045548\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\leveltemplateid-212272924\'01\u-3913 ?;}{\levelnumbers;}
|
Version 1.0.22 09/01/2015\b0\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
* Added ssid and keys for wireless links\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
* Wireless will auto-disconnect if link is too long\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
* Wireless will auto-connect if ssid and key match, if link is short enough\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
* Packets will drop on wireless links if distance is too great\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
* wport has no interface (cannot edit IP address)\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
* wireless router works properly - forwards broadcast packets\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
* wireless router handles dhcp requests properly (both responds to it but also passes it on)\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
* right-clicking light and microwave no longer has ping, arp, edit, and other context menus\par
|
||||||
;}\listid1668097324}{\list\listtemplateid-496706588\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\leveltemplateid-34189396\'01\u-3913 ?;}{\levelnumbers;}
|
* added net-test for DHCP server status (on/off)\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
* If multiple DHCP servers, client randomly chooses which to keep.\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
*Add Wireless Puzzle\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
*Fix many wireless device bugs\line\b Version 1.0.21 08/15/2015\b0\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
* Added a microwave and fluorescent light. They corrupt data when packets run close to them.\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
* Added some packet corruption puzzles\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
* Fixed window resize-on-load issue where the help window popped up first, then the builder window resized over to hide the help window. \par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
\b Version 1.0.20 08/12/2015\b0\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
* wports do not display on tooltips or when printing the device info\par
|
||||||
;}\listid1729453556}{\list\listtemplateid1472331976\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\leveltemplateid-1529854154\'01\u-3913 ?;}{\levelnumbers;}
|
* Added ctrl-s to quick-save a network we are working on\par
|
||||||
\loch\af3\hich\af3\dbch\af31505\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}
|
* commented out wireless devices for now - doing a big demo and wireless is not yet complete\par
|
||||||
\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
|
* added search box to help\par
|
||||||
\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
|
\b Version 1.0.19 08/08/2015\b0\par
|
||||||
\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0
|
*Updated context help for most puzzles that introduce new ideas.\par
|
||||||
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0
|
* Sorted Help topics when adding them in net-tests.\par
|
||||||
\fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0
|
* Added some images to the help to help clarify things.\par
|
||||||
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
|
* Start with the help windows being the same "height" as the network window.\par
|
||||||
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
|
* Open Help so it can be kept open while the puzzles progress.\par
|
||||||
;}\listid1903905976}}{\*\listoverridetable{\listoverride\listid300036472\listoverridecount0\ls1}{\listoverride\listid1535926840\listoverridecount0\ls2}{\listoverride\listid569733219\listoverridecount0\ls3}{\listoverride\listid1059207521
|
* Deal with minimized state better (used to shrink window to smallest possible state)\par
|
||||||
\listoverridecount0\ls4}{\listoverride\listid159203163\listoverridecount0\ls5}{\listoverride\listid272565942\listoverridecount0\ls6}{\listoverride\listid1574776731\listoverridecount0\ls7}{\listoverride\listid1332484604\listoverridecount0\ls8}
|
* Remember size and location of main window between uses.\par
|
||||||
{\listoverride\listid237788805\listoverridecount0\ls9}{\listoverride\listid1164392343\listoverridecount0\ls10}{\listoverride\listid1272543532\listoverridecount0\ls11}{\listoverride\listid1729453556\listoverridecount0\ls12}{\listoverride\listid1903905976
|
\b Version 1.0.18 08/08/2015\b0\par
|
||||||
\listoverridecount0\ls13}{\listoverride\listid1436513145\listoverridecount0\ls14}{\listoverride\listid1668097324\listoverridecount0\ls15}}{\*\rsidtbl \rsid935579\rsid1715044\rsid2361093\rsid2634409\rsid3230122\rsid3738219\rsid3953182\rsid3954092
|
* Added Context Help for puzzles.\par
|
||||||
\rsid4002608\rsid4014997\rsid4148115\rsid4201155\rsid4330009\rsid4674322\rsid4984628\rsid4995504\rsid5902490\rsid6243721\rsid6709067\rsid7014465\rsid7089617\rsid7091827\rsid7425313\rsid7431196\rsid7475506\rsid8135144\rsid8154512\rsid8807737\rsid8871995
|
- Each puzzle can have context help\par
|
||||||
\rsid9005806\rsid9076344\rsid9125153\rsid9187300\rsid9664289\rsid10361403\rsid11235612\rsid11358317\rsid11886434\rsid12019296\rsid12193239\rsid12329139\rsid12389542\rsid12613072\rsid12727249\rsid12727595\rsid12738045\rsid13122645\rsid13307397\rsid13454907
|
- There is a net-test to have us read help\par
|
||||||
\rsid13783353\rsid13982156\rsid14170698\rsid14353560\rsid14427571\rsid14508595\rsid14577306\rsid14746156\rsid14829014\rsid15677065\rsid15949156\rsid16005564\rsid16457871}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0
|
* fixed minor problem with a "ding" sound when we load a puzzle that has something locked.\par
|
||||||
\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim0}{\info{\operator tim.young@lightsys.org}{\creatim\yr2017\mo3\dy14\hr9\min58}{\revtim\yr2019\mo1\dy23\hr8\min23}{\version62}{\edmins74}{\nofpages13}{\nofwords3262}{\nofchars15042}{\nofcharsws17946}{\vern95}}
|
\b Version 1.0.17 08/01/2015\b0\par
|
||||||
{\*\userprops {\propname amzn:id}\proptype30{\staticval 5d8f9aa3-7362-4e9d-ad7a-41823ad84e09}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
|
* Added more help\par
|
||||||
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701
|
* Much progress made in preparing for a French translation\par
|
||||||
\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot14577306 \nouicompat \fet0{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1
|
* allow for Puzzle's description to be in another language\par
|
||||||
\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5
|
* Added more to help\par
|
||||||
\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
|
* Removed edit -> cut, paste, copy, undo. They never did anything. So why have them?\par
|
||||||
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid13982156 \rtlch\fcs1 \af0\afs22\alang1025
|
* Save box starts in the directory of the file we opened (if we have one)\par
|
||||||
\ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid4330009 \hich\af39\dbch\af31505\loch\f39 Version 1.0.51
|
* Choose a language at startup if one has never been chosen, and have option to change language.\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12613072\charrsid12613072 \hich\af39\dbch\af31505\loch\f39 * }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12613072 \hich\af39\dbch\af31505\loch\f39
|
* Added another puzzle, showing what happens (or does not happen) if we have two networks that use the same IP addresses, and we want to build a VPN between them.\par
|
||||||
Added small \hich\af39\dbch\af31505\loch\f39 time-based delay when printing packets; on fast computers the pa\hich\af39\dbch\af31505\loch\f39 ckets would fly by too fast.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0
|
\b Version 1.0.16 07/18/2015\b0\par
|
||||||
\f39\lang9\langfe1033\langnp9\insrsid12613072\charrsid12613072
|
* Added ability to break links (bad network wire)\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid13982156 \hich\af39\dbch\af31505\loch\f39 Version 1.0.50
|
* "connection lights" on network cards / ports when we edit devices\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid10361403 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid10361403\charrsid10361403 \hich\af39\dbch\af31505\loch\f39 *}{
|
* Test for "needs link to" does not succeed if the link in question is a broken link\par
|
||||||
\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid10361403 \hich\af39\dbch\af31505\loch\f39 Added regression testing for making sure we do not break things while making changes to the UI or how the system works.
|
* Added a puzzle to show you how to find broken links \par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Added regression tests for most all the networks
|
* Used broken links in other puzzles\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Able to change gateway if the primary network connection does not have DHCP. Ther\hich\af39\dbch\af31505\loch\f39 e was an issue with a puzzle because of this.
|
* Fixed bug: switches could not use DHCP for many different reasons. Now it works for them.\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Do not check firewall rules if the firewall checkmark is turned off. You can disable the firewall rules by turning off the firewall.
|
\b Version 1.0.15 07/11/2015\b0\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Get the reload button working properly. You can reload a puzzle and it \hich\af39\dbch\af31505\loch\f39 will reset to its original state.
|
* Added ping time progress bar\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Better listing of puzzles and highlighting the next puzzle to do.
|
* Fixed issue with things timing out before they completed. If the network screen is too large, it makes it go just a tiny bit slower and various things would fail. When the first packet successfully makes it to the far end, it recomputes the time needed and gives extra time.\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * When resetting a switch, reset the vlans on that switch. Somewhere this broke and we needed to put it back.
|
* Added context menu ping. If an item is supposed to ping something, right-clicking adds the ping test to the menu. Takes some of the guess-work out of things.\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Added some action debugging. No impact o\hich\af39\dbch\af31505\loch\f39 n users, just developers.
|
* Fixed minor issue with this change log. Had two 1.0.11 versions & somehow was stating we were at version 10.x.x instead of 1.x.x (sigh) \par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Better processing of wireless link autojoin}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid10361403\charrsid10361403
|
* Fixed the VPNify puzzle. Had a goof in it.\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6709067 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid11886434 \hich\af39\dbch\af31505\loch\f39 Version 1.0.49}{\rtlch\fcs1
|
* Made it so you cannot connect a link to a VPN. A VPN should be a virtual connection, not a physical connection.\par
|
||||||
\ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid6709067
|
\b Version 1.0.14 07/10/2015\b0\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid11886434\charrsid11886434 \hich\af39\dbch\af31505\loch\f39 * Change level1_practice5.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid11886434
|
* When we finish a puzzle, allow us to auto-open the "next puzzle" box.\par
|
||||||
\hich\af39\dbch\af31505\loch\f39 It had been a puzzle with two DHCP servers, but we have not taught that concept yet. I change it so the DHCP server was passing out bad DHCP\hich\af39\dbch\af31505\loch\f39 . IPs already exist.
|
* Added lots more puzzles\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid7014465 \hich\af39\dbch\af31505\loch\f39 \hich\f39 * Fixed a few bugs in other \'93\loch\f39 \hich\f39 practice\'94\loch\f39 levels.
|
* Added more help & documentation\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 * Made a test for a network loop. So we can have a \'93\loch\f39 \hich\f39 ping without looping\'94\loch\f39 test. So we need to have a successful ping that does not cause a network loop.
|
* Made it so test for local IP also checked to make sure the subnet-masks matched\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid935579 \hich\af39\dbch\af31505\loch\f39 * Fixed an issue with wireless b\hich\af39\dbch\af31505\loch\f39
|
* Made it so the test for a matching route compared netmasks\par
|
||||||
ridges. They were routing packets instead of forwarding packets, which broke them in a few instances.
|
* Added a printer object\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Make it so a NIC can spray. It creates bad packets that just keep coming.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12738045
|
* Added a copier object\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Fix some issues with wireless links. Some puzzles had saved multiple wire\hich\af39\dbch\af31505\loch\f39
|
\b Version 1.0.13 06/21/2015\b0\par
|
||||||
less links to the same device, which ended up having some rather bizarre issues. Since all wireless links are rebuilt on load, I made it so none of the wireless links are saved, and if they are loaded, they are discarded. It solved a number of issues.}{
|
* Fixed issues with arp - arp could go through routers. Now works correctly\par
|
||||||
\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid7014465 \hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid7014465\charrsid11886434
|
* Made it test for puzzle completion after adding devices\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid11886434 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid11886434 \hich\af39\dbch\af31505\loch\f39 V
|
* Made it test for completion after changing / deleting devices\par
|
||||||
\hich\af39\dbch\af31505\loch\f39 ersion 1.0.48
|
* Let you delete / add NICs on PCs, primarily so we can solve the duplicate MAC puzzle\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6709067 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid4002608\charrsid4002608 \hich\af39\dbch\af31505\loch\f39
|
* Replaced the "Network Loop" puzzle with the correct one.\par
|
||||||
* Fix a traversal class not serializable error}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid4002608
|
\b Version 1.0.12 06/20/2015\b0\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid15949156 \hich\af39\dbch\af31505\loch\f39 * Close the file -> load toolstrip menu after a load. It had remained annoyingly open.
|
* Added VPN and TUN nic types\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid11358317 \hich\af39\dbch\af31505\loch\f39 \hich\f39 * Added a bunch of \'93\loch\f39 \hich\f39 practice\'94\hich\af39\dbch\af31505\loch\f39
|
* Fixed numerous small bugs\par
|
||||||
puzzles. These are for practicing troubleshooting. They do not give you a lot of information about what the problem is; you need to do a bit more testing and trying things to figure them out.
|
* Fixed bug with early solution to failed ping test\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid2634409 \hich\af39\dbch\af31505\loch\f39 * Added a bunch of level5 practice puzzles. More physical ne\hich\af39\dbch\af31505\loch\f39 tworking and wireless than routing issues.
|
* Added "ding" when a test is solved.\par
|
||||||
|
* Added a "firewall" network that has a firewall and vpns\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid3953182 \hich\af39\dbch\af31505\loch\f39 * Added the solved versions of the office networks. One with wireless linking between them, and the other having physical wires.}{
|
* Added numerous firewall / vpn puzzles\par
|
||||||
\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid3953182\charrsid4002608
|
* Fixed a DNS issue. It now more intelligently finds the right IP address when you ping it\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid6709067 \hich\af39\dbch\af31505\loch\f39 Version 1.0.47
|
\b Version 1.0.11 06/14/2015\b0\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3738219 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid8807737\charrsid8807737 \hich\af39\dbch\af31505\loch\f39 * YAY!}{
|
* Added the ability to lock various important features to make puzzles better\par
|
||||||
\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid8807737 \hich\af39\dbch\af31505\loch\f39 The long-awaited ctrl-z / ctrl-y works. Undo / redo.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0
|
* Able to add interfaces (multiple IPs on a Network Card)\par
|
||||||
\f39\lang9\langfe1033\langnp9\insrsid8807737\charrsid8807737
|
* Right-click context menu to add net-tests. \par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid1715044\charrsid1715044 \hich\af39\dbch\af31505\loch\f39 *}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid1715044 \hich\af39\dbch\af31505\loch\f39
|
* Del key now deletes the last item we had clicked on\par
|
||||||
Lock a device to a location
|
* Can add NICs (on some devices)\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Add a tree. Wireless packets cannot go through a tree.
|
* Can delete NICs\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Add background shapes. So we can draw a building and have understandable line of sight.
|
* Fixed minor bug with broadcast pinging solving ping test for individual computers\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Add a wireless line of sight puzzle.
|
\b Version 1.0.10 06/13/2015\b0\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid7091827 \hich\af39\dbch\af31505\loch\f39 * Went through old puzzles and locked s\hich\af39\dbch\af31505\loch\f39
|
* Renamed puzzles to manage them easier\par
|
||||||
ome items in their locations. Makes some puzzles need to be solved the way the puzzle was intended to be solved.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid7091827\charrsid1715044
|
* Deal with duplicate IPs, and what happens when a packet returns to a computer that did not send it.\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid8154512 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid8154512 \hich\af39\dbch\af31505\loch\f39 Version 1.0.46
|
* Change to the help window so you can keep the window open while working with the puzzle.\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3738219 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid3738219 \hich\af39\dbch\af31505\loch\f39
|
* Change to the donation link. Not that it will ever be used, but it makes me feel better having a few places for people to donate to if they wish.\par
|
||||||
* Added a frozen device. Fix it with a reboot. (power off / power on)
|
* Minor change for how broadcast packets work, specifically dealing with duplicate IP addresses.\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14427571 \hich\af39\dbch\af31505\loch\f39 * Added a bad power-supply (device catches fire when powered on. Need to replace the device to fix)
|
* Added a "firewall" device & WAN port with masquerade\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Added bad electricity. (device continues to catch fire, even after being replaced, until a UPS is added)
|
* Added a FailedPing test so we can ping things that must fail (show the firewall works)\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Can right-c}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid7425313 \hich\af39\dbch\af31505\loch\f39 lick a network wire. Delete, }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0
|
* added more to the help\par
|
||||||
\f39\lang9\langfe1033\langnp9\insrsid14427571 \hich\af39\dbch\af31505\loch\f39 edit}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid7425313 ,\hich\af39\dbch\af31505\loch\f39 replace}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0
|
* added more puzzles\par
|
||||||
\f39\lang9\langfe1033\langnp9\insrsid14427571 .
|
\b Version 1.0.0.9 05/29/2015\b0\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14746156 \hich\af39\dbch\af31505\loch\f39 * Added frozen device, bad power-supply and Needs UPS as ways to randomly break networks.
|
* Add a grid to the network map. It makes things easier to straighten up\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid13122645 \hich\af39\dbch\af31505\loch\f39 * Optimize the redrawing of the screen packets. Speeded it up considerably
|
* Sorted and organized the puzzles\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid13783353 \hich\af39\dbch\af31505\loch\f39 * Add puzzles for frozen device, bad power-supply, and needs a UPS.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0
|
* Made a level for each puzzle.\par
|
||||||
\f39\lang9\langfe1033\langnp9\insrsid13783353\charrsid9005806
|
* Tracked the puzzles which have been completed\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid9005806 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid9005806 \hich\af39\dbch\af31505\loch\f39 Version 1.0.
|
* When we open the puzzle list, we now show the first level of puzzles that have an uncompleted puzzle.\par
|
||||||
\hich\af39\dbch\af31505\loch\f39 45
|
* Added more "tests", viewing help, pinging, arp, and dhcp.\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid9005806\charrsid9005806 \hich\af39\dbch\af31505\loch\f39 *}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid9005806 \hich\af39\dbch\af31505\loch\f39 }{
|
* Reset buttons when we load a new network.\par
|
||||||
\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid9005806\charrsid9005806 \hich\af39\dbch\af31505\loch\f39 More infrastructure for translating the main program}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0
|
* Added a bunch more puzzles\par
|
||||||
\f39\lang9\langfe1033\langnp9\insrsid9005806
|
* Sometimes the remembered IP gets annoying when it remembers odd gateways and numbers we cannot change. Fixed that in many cases.\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid5902490 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid5902490 \hich\af39\dbch\af31505\loch\f39 Version 1.0.44
|
\b Version 1.0.0.8 05/25/2015\b0\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid5902490\charrsid5902490 \hich\af39\dbch\af31505\loch\f39 *}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid5902490 \hich\af39\dbch\af31505\loch\f39
|
* Always Start with level0 puzzles for now\par
|
||||||
Added ability to add a video URL to a help topic
|
* Fixed the icon when program running\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Added video URL for individual puzzles
|
* Added an infrastructure for Puzzles (needs work)\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid2361093 \hich\af39\dbch\af31505\loch\f39 * Added some initial videos
|
* Added a number of basic puzzles\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14508595 \hich\af39\dbch\af31505\loch\f39 * More work on translation window}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12329139
|
* Fixed DHCP Leases. Now it clears leases when you change the DHCP server range.\par
|
||||||
\hich\af39\dbch\af31505\loch\f39 (most people\hich\af39\dbch\af31505\loch\f39 will not see this)}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14508595
|
\b Version 1.0.0.7 05/16/2015\b0\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12329139 \hich\af39\dbch\af31505\loch\f39 * Fix order of help-level radio-buttons.
|
* Added file association so we can double-click an enbx file\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid8135144 \hich\af39\dbch\af31505\loch\f39 * Some puzzles are properly translated to French}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0
|
* Fixed the icon so it looks right (removed left edge)\par
|
||||||
\f39\lang9\langfe1033\langnp9\insrsid8135144\charrsid5902490
|
\b Version 1.0.0.6 05/16/2015\b0\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid9076344 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid9076344 \hich\af39\dbch\af31505\loch\f39 Version 1.0.43
|
* Able to delete a route (right click route and delete it)\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid13307397 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid13307397 \hich\af39\dbch\af31505\loch\f39 * }{\rtlch\fcs1 \ab\af39
|
* Add map title as something we can load/save\par
|
||||||
\ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid9076344\charrsid9076344 \hich\af39\dbch\af31505\loch\f39 Added }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid9076344 \hich\af39\dbch\af31505\loch\f39 the title }{\rtlch\fcs1
|
* Add message as something we can load and save\par
|
||||||
\ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid9076344\charrsid9076344 \hich\af39\dbch\af31505\loch\f39 to the translation window}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid9076344 \hich\af39\dbch\af31505\loch\f39
|
* Changing size of items affects all items\par
|
||||||
. Puzzle titles can now be translated.
|
* Allow entering a hostname in the IP address field (ping / gateway)\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid6243721 \hich\af39\dbch\af31505\loch\f39 * Use the translated titles for the puzzle names\hich\af39\dbch\af31505\loch\f39 on the puzzle selection box}{\rtlch\fcs1 \ab\af39
|
\b Version 1.0.0.5 04/26/2015\b0\par
|
||||||
\ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid6243721\charrsid9076344
|
* Fixed ping from switch\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid4148115 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid14829014 \hich\af39\dbch\af31505\loch\f39 Version 1.0.42
|
* Fixed error message when pinging IP that does not exist\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14829014\charrsid14829014 \hich\af39\dbch\af31505\loch\f39 * Fixed some bugs with working in French}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14829014
|
\b Version 1.0.0.4 04/26/2015\b0\par
|
||||||
\hich\af39\dbch\af31505\loch\f39 \hich\f39 \endash \loch\f39 puzzles would not show
|
* Fixed broadcast ping\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Fixed bug in French \hich\f39 \endash \loch\f39 \hich\f39 \'93\loch\f39 \hich\f39 Ping to\'94\loch\f39 would not work
|
*Fixed dhcp request error\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Added a translation box when working on puzzles\hich\af39\dbch\af31505\loch\f39
|
\b Version 1.0.0.3 04/15/2015\par
|
||||||
. Ctrl-click the network message in the options window to pull up a translation box. Look at two languages simultaneously. Has save button to save your changes from there.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0
|
\b0 * Added "file" -> "new" to erase and start a clean new network\par
|
||||||
\f39\lang9\langfe1033\langnp9\insrsid14829014\charrsid14829014
|
* Fixed pc2 to have gateway on "solved"->"Two Networks"\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid4148115 \hich\af39\dbch\af31505\loch\f39 Version 1.0.41
|
* Fixed - only machines capable of doing DHCP do dhcp request if we do DHCP request on all\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14353560 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14353560 \hich\af39\dbch\af31505\loch\f39
|
* Changed - major overhaul to tcp-stack.\par
|
||||||
* Have the ability to randomly break a network. If you want to ju\hich\af39\dbch\af31505\loch\f39 st test your brain for fun, or if you are a teacher and just want to generate some homework of some sort. This can help.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0
|
* Downgrade - Arp temporarily removed from system while tcp-stack overhaul completed\par
|
||||||
\f39\lang9\langfe1033\langnp9\insrsid14353560\charrsid4148115
|
\b Version 1.0.0.2 4/19/2015\b0\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid9664289 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid4148115\charrsid4148115 \hich\af39\dbch\af31505\loch\f39 * }{\rtlch\fcs1
|
* Added IP-Phone\par
|
||||||
\ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid4148115 \hich\af39\dbch\af31505\loch\f39 Added another solved }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12193239 \hich\af39\dbch\af31505\loch\f39 network (Internet}{
|
* Packets terminate at the far end - this makes it easier to see packets go both directions\par
|
||||||
\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14353560 \hich\af39\dbch\af31505\loch\f39 HomeAndOffice}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12193239 \hich\af39\dbch\af31505\loch\f39 )}{\rtlch\fcs1
|
* Packets are randomized in transit - Allows packets to arrive at slightly different times\par
|
||||||
\ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid4148115
|
\b Version 1.0.0.1 4/11/2015\b0\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid4674322 \hich\af39\dbch\af31505\loch\f39 * Give us more options for viewing text under devices. This lets us see things\hich\af39\dbch\af31505\loch\f39 much more cleanly.
|
* DHCP selection on nics is not functioning correctly\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12389542 \hich\af39\dbch\af31505\loch\f39 * Allow different captioning systems. Hostname only, IP only, host + IP, none, full
|
* Various small bug-fixes\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid7089617 \hich\af39\dbch\af31505\loch\f39
|
\b Version 1.0.0.0 4/10/2015\b0\par
|
||||||
* firewall rules can now affect VPN traffic. You can block from a VPN to the office VLAN, for example. Also, can block guest VLAN from pinging someth\hich\af39\dbch\af31505\loch\f39 ing across the VPN.
|
This is the initial alpha build\par
|
||||||
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid4984628 \hich\af39\dbch\af31505\loch\f39 Version 1.0.40
|
* basic pinging\par
|
||||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid4984628 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid4984628 \hich\af39\dbch\af31505\loch\f39
|
* basic arp\par
|
||||||
* Jumping ahead version numbers. Adding Educational Mode (see doc on the wiki for a description of the basic functionality added) }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid4984628\charrsid4984628
|
* Routers\par
|
||||||
\hich\af39\dbch\af31505\loch\f39 https://git.solidcharity.com/timy/EduNetworkBuilder/wikis/Teacherdoc}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid4984628
|
* Switches/Hubs\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Added the ability to make msi files for better deployment in multi-user settings
|
* PCs/Laptops\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Adjusted drag functionality so we do not jostle devices around accidentally
|
* Network Links (ethernet)\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Fixed bug when trying to ping wireless devices by name
|
* Basic DHCP\par
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Fixed a bug pinging 0.0.0.0
|
}
|
||||||
\par \hich\af39\dbch\af31505\loch\f39 * Fixed \hich\af39\dbch\af31505\loch\f39 lots of other bugs}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid4984628\charrsid4984628
|
|