From 2746124a2a07152f32bef494a4140f61dcdb5b3f Mon Sep 17 00:00:00 2001 From: "S. Persikov" Date: Mon, 19 Jul 2010 00:28:29 +0300 Subject: [PATCH] New network simulation project tracert and mtu discovery Signed-off-by: S. Persikov --- .classpath | 6 + .project | 24 + META-INF/MANIFEST.MF | 2 + envelope.gif | Bin 0 -> 109 bytes frag.gif | Bin 0 -> 193 bytes host.gif | Bin 0 -> 1368 bytes ipv6/network/BaseNetworkElement.java | 32 ++ ipv6/network/Host.java | 42 ++ ipv6/network/INetworkElement.java | 16 + ipv6/network/Network.java | 29 ++ ipv6/network/NetworkSimulator.java | 14 + ipv6/network/Router.java | 25 + ipv6/network/datagram/Datagram.java | 56 +++ ipv6/network/datagram/ICMPDatagram.java | 31 ++ ipv6/network/datagram/ICMPMessageType.java | 10 + ipv6/network/datagram/IDatagram.java | 27 ++ ipv6/network/datagram/UDPDatagram.java | 13 + java.policy.applet | 7 + mtutr/.p4ignore | 7 + mtutr/MainDrawBoard.java | 575 +++++++++++++++++++++++ mtutr/MtuTr.java | 78 +++ mtutr/common/.p4ignore | 1 + mtutr/common/BoardCleaner.java | 34 ++ mtutr/common/IPAddress.java | 328 +++++++++++++ mtutr/listeners/.p4ignore | 3 + mtutr/listeners/MainMouseListener.java | 129 +++++ mtutr/listeners/MenuListener.java | 138 ++++++ mtutr/listeners/NetworkPlacementListener.java | 324 +++++++++++++ mtutr/listeners/NetworkTypeButtonListener.java | 38 ++ mtutr/listeners/SelectionMouseListener.java | 132 ++++++ mtutr/messages/AnimationMonitor.java | 165 +++++++ mtutr/messages/HostSelectionMessage.java | 56 +++ mtutr/messages/NetworkSelectionMessage.java | 52 ++ mtutr/messages/RouterSelectionMessage.java | 52 ++ mtutr/objects/.p4ignore | 8 + mtutr/objects/Datagram.java | 365 ++++++++++++++ mtutr/objects/Host.java | 33 ++ mtutr/objects/IPKitItem.java | 15 + mtutr/objects/Network.java | 191 ++++++++ mtutr/objects/RouteTestResult.java | 30 ++ mtutr/objects/Router.java | 112 +++++ mtutr/objects/RoutingTable.java | 248 ++++++++++ mtutr/objects/RoutingTableEntry.java | 109 +++++ mtutr/windows/.p4ignore | 5 + mtutr/windows/ChooseDefaultGateway.java | 76 +++ mtutr/windows/DatagramProperties.java | 101 ++++ mtutr/windows/IPInputVerifier.java | 27 ++ mtutr/windows/JExtendedTable.java | 41 ++ mtutr/windows/NetworkProperties.java | 351 ++++++++++++++ mtutr/windows/RouterProperties.java | 234 +++++++++ mtutr/windows/buttonhandlers/.p4ignore | 2 + mtutr/windows/buttonhandlers/ButtonEditor.java | 74 +++ mtutr/windows/buttonhandlers/ButtonRenderer.java | 36 ++ network2.gif | Bin 0 -> 3866 bytes router.gif | Bin 0 -> 825 bytes site/1.jpg | Bin 0 -> 6759 bytes site/10.gif | Bin 0 -> 109 bytes site/11.jpg | Bin 0 -> 10889 bytes site/12.jpg | Bin 0 -> 10636 bytes site/13.jpg | Bin 0 -> 3133 bytes site/14.jpg | Bin 0 -> 9179 bytes site/15.jpg | Bin 0 -> 6357 bytes site/16.jpg | Bin 0 -> 5216 bytes site/17.jpg | Bin 0 -> 3889 bytes site/18.jpg | Bin 0 -> 2798 bytes site/19.gif | Bin 0 -> 1368 bytes site/2.jpg | Bin 0 -> 6325 bytes site/20.jpg | Bin 0 -> 20950 bytes site/21.gif | Bin 0 -> 3866 bytes site/22.jpg | Bin 0 -> 18218 bytes site/23.jpg | Bin 0 -> 8849 bytes site/24.jpg | Bin 0 -> 6550 bytes site/25.jpg | Bin 0 -> 9228 bytes site/26.jpg | Bin 0 -> 8153 bytes site/27.jpg | Bin 0 -> 6586 bytes site/28.jpg | Bin 0 -> 5419 bytes site/29.gif | Bin 0 -> 825 bytes site/3.jpg | Bin 0 -> 6573 bytes site/30.jpg | Bin 0 -> 4257 bytes site/31.jpg | Bin 0 -> 8912 bytes site/32.jpg | Bin 0 -> 6128 bytes site/33.jpg | Bin 0 -> 9324 bytes site/34.jpg | Bin 0 -> 8942 bytes site/35.jpg | Bin 0 -> 9229 bytes site/36.jpg | Bin 0 -> 3694 bytes site/37.jpg | Bin 0 -> 3736 bytes site/38.jpg | Bin 0 -> 4347 bytes site/39.jpg | Bin 0 -> 6157 bytes site/4.jpg | Bin 0 -> 6819 bytes site/40.jpg | Bin 0 -> 7901 bytes site/41.jpg | Bin 0 -> 4541 bytes site/42.jpg | Bin 0 -> 7636 bytes site/43.jpg | Bin 0 -> 30318 bytes site/44.gif | Bin 0 -> 193 bytes site/45.jpg | Bin 0 -> 3202 bytes site/46.jpg | Bin 0 -> 5910 bytes site/5.jpg | Bin 0 -> 23110 bytes site/6.jpg | Bin 0 -> 12788 bytes site/7.jpg | Bin 0 -> 7835 bytes site/8.jpg | Bin 0 -> 8773 bytes site/9.jpg | Bin 0 -> 5263 bytes site/main.htm | 565 ++++++++++++++++++++++ 102 files changed, 5069 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 META-INF/MANIFEST.MF create mode 100644 envelope.gif create mode 100644 frag.gif create mode 100644 host.gif create mode 100644 ipv6/network/BaseNetworkElement.java create mode 100644 ipv6/network/Host.java create mode 100644 ipv6/network/INetworkElement.java create mode 100644 ipv6/network/Network.java create mode 100644 ipv6/network/NetworkSimulator.java create mode 100644 ipv6/network/Router.java create mode 100644 ipv6/network/datagram/Datagram.java create mode 100644 ipv6/network/datagram/ICMPDatagram.java create mode 100644 ipv6/network/datagram/ICMPMessageType.java create mode 100644 ipv6/network/datagram/IDatagram.java create mode 100644 ipv6/network/datagram/UDPDatagram.java create mode 100644 java.policy.applet create mode 100644 mtutr/.p4ignore create mode 100644 mtutr/MainDrawBoard.java create mode 100644 mtutr/MtuTr.java create mode 100644 mtutr/common/.p4ignore create mode 100644 mtutr/common/BoardCleaner.java create mode 100644 mtutr/common/IPAddress.java create mode 100644 mtutr/listeners/.p4ignore create mode 100644 mtutr/listeners/MainMouseListener.java create mode 100644 mtutr/listeners/MenuListener.java create mode 100644 mtutr/listeners/NetworkPlacementListener.java create mode 100644 mtutr/listeners/NetworkTypeButtonListener.java create mode 100644 mtutr/listeners/SelectionMouseListener.java create mode 100644 mtutr/messages/AnimationMonitor.java create mode 100644 mtutr/messages/HostSelectionMessage.java create mode 100644 mtutr/messages/NetworkSelectionMessage.java create mode 100644 mtutr/messages/RouterSelectionMessage.java create mode 100644 mtutr/objects/.p4ignore create mode 100644 mtutr/objects/Datagram.java create mode 100644 mtutr/objects/Host.java create mode 100644 mtutr/objects/IPKitItem.java create mode 100644 mtutr/objects/Network.java create mode 100644 mtutr/objects/RouteTestResult.java create mode 100644 mtutr/objects/Router.java create mode 100644 mtutr/objects/RoutingTable.java create mode 100644 mtutr/objects/RoutingTableEntry.java create mode 100644 mtutr/windows/.p4ignore create mode 100644 mtutr/windows/ChooseDefaultGateway.java create mode 100644 mtutr/windows/DatagramProperties.java create mode 100644 mtutr/windows/IPInputVerifier.java create mode 100644 mtutr/windows/JExtendedTable.java create mode 100644 mtutr/windows/NetworkProperties.java create mode 100644 mtutr/windows/RouterProperties.java create mode 100644 mtutr/windows/buttonhandlers/.p4ignore create mode 100644 mtutr/windows/buttonhandlers/ButtonEditor.java create mode 100644 mtutr/windows/buttonhandlers/ButtonRenderer.java create mode 100644 network2.gif create mode 100644 router.gif create mode 100644 site/1.jpg create mode 100644 site/10.gif create mode 100644 site/11.jpg create mode 100644 site/12.jpg create mode 100644 site/13.jpg create mode 100644 site/14.jpg create mode 100644 site/15.jpg create mode 100644 site/16.jpg create mode 100644 site/17.jpg create mode 100644 site/18.jpg create mode 100644 site/19.gif create mode 100644 site/2.jpg create mode 100644 site/20.jpg create mode 100644 site/21.gif create mode 100644 site/22.jpg create mode 100644 site/23.jpg create mode 100644 site/24.jpg create mode 100644 site/25.jpg create mode 100644 site/26.jpg create mode 100644 site/27.jpg create mode 100644 site/28.jpg create mode 100644 site/29.gif create mode 100644 site/3.jpg create mode 100644 site/30.jpg create mode 100644 site/31.jpg create mode 100644 site/32.jpg create mode 100644 site/33.jpg create mode 100644 site/34.jpg create mode 100644 site/35.jpg create mode 100644 site/36.jpg create mode 100644 site/37.jpg create mode 100644 site/38.jpg create mode 100644 site/39.jpg create mode 100644 site/4.jpg create mode 100644 site/40.jpg create mode 100644 site/41.jpg create mode 100644 site/42.jpg create mode 100644 site/43.jpg create mode 100644 site/44.gif create mode 100644 site/45.jpg create mode 100644 site/46.jpg create mode 100644 site/5.jpg create mode 100644 site/6.jpg create mode 100644 site/7.jpg create mode 100644 site/8.jpg create mode 100644 site/9.jpg create mode 100644 site/main.htm diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..3baf1bd --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..dedbbe7 --- /dev/null +++ b/.project @@ -0,0 +1,24 @@ + + + IPKit + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.ve.java.core.vebuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.jdt.core.javanature + org.eclipse.jem.beaninfo.BeanInfoNature + + diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 0000000..58630c0 --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/envelope.gif b/envelope.gif new file mode 100644 index 0000000000000000000000000000000000000000..d9ad97a041e970e722926297151b02b6b797bbad GIT binary patch literal 109 zcwTe&bhEHb6kyRtL>U5jISap+vt=NRF*O0vFi?!imfS!Dz$AqfTfTP8IoxNpsgF{j`%$Lt`*>mkGHBF^p{%>tzc8PM+=)$kbe`v>v*2=Dm` z?Dz}({sQ{_1Ni&|_520@{s8~~09aT^|L_I>@df|w2LJ8`|LO<-><9nm2><8^|LF+- z;2K=+?&P)y3)9$nD+E?cB}(g(&}qDF1{h zYiDHtf+_!iD*u5hS5;L1Ycc<9G5=^X|7kM+XEXm_LH}Pu|6W7?UPS*^Q~y>}|5a80 z|Ns5{{rmg-`T6g43)-rnBT)z#9{($3D#%F4>d#>Th`_2iw)xKU!gawt=xbOo|yLsurn$($*(-Yi-;bLz}VGGRS$@jwQp zMZl#)Ts;xi%f_@R(|WY(xuB6liJxdN%>NRL#g7mWAz<=XK!GJ2jKpHa$CWs(jfG8qKC#JBn%P+(n6To>3WViqY2axs*J0O7=RU(ym zQc5ej1XBz$00?lN128%ufe55YW8;lBLbZrd4e^puJrM*MfdwIuM$M5(9tjmJu{7!A zld;HBPc-#BVC4fS(8$p>Ty}{K6|e9J(koBY!@!vgR8RnE+qBtcH&P7I!<=;1X=e{e z*q{Ied?sK3Y2O6;O*l~q;lrVbCaNf+Kh(g&2`8jL0%_z_TFw+f6rt&+oOar&5jVWx z!3Q#sW{x@NH~|C^thVavtFW>)$^;hHI71pb?KGjp61?{6>#xB2y2BL&)nf$|NgSc< avdlK?tg|{~F%UgsR$DDNC1s0HKma=d^Q-;< literal 0 HcwPel00001 diff --git a/ipv6/network/BaseNetworkElement.java b/ipv6/network/BaseNetworkElement.java new file mode 100644 index 0000000..b9e94ac --- /dev/null +++ b/ipv6/network/BaseNetworkElement.java @@ -0,0 +1,32 @@ +package ipv6.network; + +import java.net.InetAddress; + +public abstract class BaseNetworkElement implements INetworkElement { + + private InetAddress inetAddress; + private int mtu; + + public BaseNetworkElement() { + super(); + } + + public InetAddress getInetAddress() { + return inetAddress; + } + + public void setInetAddress(InetAddress inetAddress) { + this.inetAddress = inetAddress; + + } + + public int getMTU() { + return mtu; + } + + public void setMTU(int mtu) { + this.mtu = mtu; + + } + +} \ No newline at end of file diff --git a/ipv6/network/Host.java b/ipv6/network/Host.java new file mode 100644 index 0000000..4ae63c4 --- /dev/null +++ b/ipv6/network/Host.java @@ -0,0 +1,42 @@ +/** + * + */ +package ipv6.network; + +import ipv6.network.datagram.IDatagram; + + +/** + * @author New user + * + */ +public class Host extends BaseNetworkElement { + + private Network network; + + /** + * + */ + public Host() { + } + + public void receiveDatagram(IDatagram datagram) { + // TODO Auto-generated method stub + } + + public void sendDatagram(IDatagram datagram) { + if (datagram.getDestination().getInetAddress().equals(this.getInetAddress())){ + return; + } + network.sendDatagram(datagram); + } + + public void setNetwork(Network network) { + this.network = network; + } + + public Network getNetwork() { + return network; + } + +} diff --git a/ipv6/network/INetworkElement.java b/ipv6/network/INetworkElement.java new file mode 100644 index 0000000..8e6412d --- /dev/null +++ b/ipv6/network/INetworkElement.java @@ -0,0 +1,16 @@ +package ipv6.network; + +import ipv6.network.datagram.IDatagram; + +import java.net.InetAddress; + +public interface INetworkElement { + public void sendDatagram(IDatagram datagram); + public void receiveDatagram(IDatagram datagram); + public InetAddress getInetAddress(); + public void setInetAddress(InetAddress inetAddress); + + public void setMTU(int mtu); + public int getMTU(); + +} diff --git a/ipv6/network/Network.java b/ipv6/network/Network.java new file mode 100644 index 0000000..c4eaa3f --- /dev/null +++ b/ipv6/network/Network.java @@ -0,0 +1,29 @@ +package ipv6.network; + +import ipv6.network.datagram.IDatagram; + +import java.net.InetAddress; +import java.util.HashMap; +import java.util.Map; + +public class Network extends BaseNetworkElement { + + private final Map hosts = new HashMap(); + private final Map routers = new HashMap(); + + + public void receiveDatagram(IDatagram datagram) { + // TODO Auto-generated method stub + + } + + public void sendDatagram(IDatagram datagram) { + Host host = hosts.get(datagram.getDestination().getInetAddress()); + if ( host != null){ + host.sendDatagram(datagram); + } else { + + } + + } +} diff --git a/ipv6/network/NetworkSimulator.java b/ipv6/network/NetworkSimulator.java new file mode 100644 index 0000000..de2cea8 --- /dev/null +++ b/ipv6/network/NetworkSimulator.java @@ -0,0 +1,14 @@ +package ipv6.network; + +import ipv6.network.datagram.IDatagram; + +public class NetworkSimulator { + + public void startSimulation(IDatagram datagram){ + + Host sourceHost = datagram.getSource(); + sourceHost.sendDatagram(datagram); + + } + +} diff --git a/ipv6/network/Router.java b/ipv6/network/Router.java new file mode 100644 index 0000000..d0652ce --- /dev/null +++ b/ipv6/network/Router.java @@ -0,0 +1,25 @@ +package ipv6.network; + +import ipv6.network.datagram.IDatagram; + +import java.net.InetAddress; +import java.util.HashMap; +import java.util.Map; + +public class Router extends BaseNetworkElement { + + private final Map hosts = new HashMap(); + + @Override + public void receiveDatagram(IDatagram datagram) { + // TODO Auto-generated method stub + + } + + @Override + public void sendDatagram(IDatagram datagram) { + // TODO Auto-generated method stub + + } + +} diff --git a/ipv6/network/datagram/Datagram.java b/ipv6/network/datagram/Datagram.java new file mode 100644 index 0000000..d636c7c --- /dev/null +++ b/ipv6/network/datagram/Datagram.java @@ -0,0 +1,56 @@ +package ipv6.network.datagram; + +import ipv6.network.Host; + +public class Datagram implements IDatagram { + + private Host source; + private Host destination; + + private int ttl; + private boolean doNotFragment; + private int size; + + + + public Datagram(Host source, Host destination, int ttl, + boolean doNotFragment, int size) { + super(); + this.source = source; + this.destination = destination; + this.ttl = ttl; + this.doNotFragment = doNotFragment; + this.size = size; + } + public Host getSource() { + return source; + } + public void setSource(Host source) { + this.source = source; + } + public Host getDestination() { + return destination; + } + public void setDestination(Host destination) { + this.destination = destination; + } + public int getTtl() { + return ttl; + } + public void setTtl(int ttl) { + this.ttl = ttl; + } + public boolean isDoNotFragment() { + return doNotFragment; + } + public void setDoNotFragment(boolean doNotFragment) { + this.doNotFragment = doNotFragment; + } + public int getSize() { + return size; + } + public void setSize(int size) { + this.size = size; + } + +} diff --git a/ipv6/network/datagram/ICMPDatagram.java b/ipv6/network/datagram/ICMPDatagram.java new file mode 100644 index 0000000..98bfe1d --- /dev/null +++ b/ipv6/network/datagram/ICMPDatagram.java @@ -0,0 +1,31 @@ +/** + * + */ +package ipv6.network.datagram; + +import ipv6.network.Host; + + +/** + * @author New user + * + */ +public class ICMPDatagram extends Datagram { + + private int mtuSize; + + public ICMPDatagram(Host source, Host destination, int ttl, + boolean doNotFragment, int size) { + super(source, destination, ttl, doNotFragment, size); + } + + public int getMtuSize() { + return mtuSize; + } + + public void setMtuSize(int mtuSize) { + this.mtuSize = mtuSize; + } + + +} diff --git a/ipv6/network/datagram/ICMPMessageType.java b/ipv6/network/datagram/ICMPMessageType.java new file mode 100644 index 0000000..6dedb33 --- /dev/null +++ b/ipv6/network/datagram/ICMPMessageType.java @@ -0,0 +1,10 @@ +package ipv6.network.datagram; + +public enum ICMPMessageType { + + ECHO_REQUEST, + ECHO_REPLY, + DESTINATION_UNREACHABLE, + IPv6_PACKET_TOO_BIG + +} diff --git a/ipv6/network/datagram/IDatagram.java b/ipv6/network/datagram/IDatagram.java new file mode 100644 index 0000000..0aee4ae --- /dev/null +++ b/ipv6/network/datagram/IDatagram.java @@ -0,0 +1,27 @@ +package ipv6.network.datagram; + +import ipv6.network.Host; + +public interface IDatagram { + + public abstract Host getSource(); + + public abstract void setSource(Host source); + + public abstract Host getDestination(); + + public abstract void setDestination(Host destination); + + public abstract int getTtl(); + + public abstract void setTtl(int ttl); + + public abstract boolean isDoNotFragment(); + + public abstract void setDoNotFragment(boolean doNotFragment); + + public abstract int getSize(); + + public abstract void setSize(int size); + +} \ No newline at end of file diff --git a/ipv6/network/datagram/UDPDatagram.java b/ipv6/network/datagram/UDPDatagram.java new file mode 100644 index 0000000..9a616e6 --- /dev/null +++ b/ipv6/network/datagram/UDPDatagram.java @@ -0,0 +1,13 @@ +package ipv6.network.datagram; + +import ipv6.network.Host; + + +public class UDPDatagram extends Datagram { + + public UDPDatagram(Host source, Host destination, int ttl, + boolean doNotFragment, int size) { + super(source, destination, ttl, doNotFragment, size); + } + +} diff --git a/java.policy.applet b/java.policy.applet new file mode 100644 index 0000000..35527af --- /dev/null +++ b/java.policy.applet @@ -0,0 +1,7 @@ +/* AUTOMATICALLY GENERATED ON Tue Apr 16 17:20:59 EDT 2002*/ +/* DO NOT EDIT */ + +grant { + permission java.security.AllPermission; +}; + diff --git a/mtutr/.p4ignore b/mtutr/.p4ignore new file mode 100644 index 0000000..8666da2 --- /dev/null +++ b/mtutr/.p4ignore @@ -0,0 +1,7 @@ +Host.JPG +HostSelectionMessage.java +IPKit.java +MainDrawBoard.java +Network.JPG +NetworkSelectionMessage.java +Router.jpg diff --git a/mtutr/MainDrawBoard.java b/mtutr/MainDrawBoard.java new file mode 100644 index 0000000..b3761a1 --- /dev/null +++ b/mtutr/MainDrawBoard.java @@ -0,0 +1,575 @@ +package mtutr; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Cursor; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Toolkit; +import java.io.BufferedInputStream; +import java.io.IOException; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.ListIterator; + +import javax.swing.BorderFactory; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; + +import mtutr.listeners.MainMouseListener; +import mtutr.listeners.MenuListener; +import mtutr.listeners.NetworkPlacementListener; +import mtutr.listeners.NetworkTypeButtonListener; +import mtutr.listeners.SelectionMouseListener; +import mtutr.messages.HostSelectionMessage; +import mtutr.messages.NetworkSelectionMessage; +import mtutr.messages.RouterSelectionMessage; +import mtutr.objects.Datagram; +import mtutr.objects.Host; +import mtutr.objects.Network; +import mtutr.objects.Router; +import mtutr.windows.ChooseDefaultGateway; + +public class MainDrawBoard extends JPanel { + public static MainDrawBoard staticInstance = null; + public MtuTr ipKit = null; + int MAX_IMAGE_SIZE = 3868; + byte[] buf = new byte[this.MAX_IMAGE_SIZE]; + private static final long serialVersionUID = 1L; + private ImageIcon networkImage = null; + private ImageIcon hostImage = null; + private ImageIcon envelopeImage = null; + private ImageIcon fragImage = null; + private ImageIcon routerImage = null; + + int x = 10; + int y = 20; + + public JPopupMenu main_menu = null; + public JPopupMenu network_menu = null; + public JPopupMenu host_menu = null; + public JPopupMenu router_menu = null; + public JPopupMenu datagram_menu = null; + + public MenuListener menuListener = null; + public NetworkPlacementListener networkPlacementListener = null; + public MainMouseListener mouseListener = null; + public SelectionMouseListener selMouseListener = null; + public JPanel messagePanel; + public List networks = new LinkedList(); + public List routers = new LinkedList(); + public List datagrams = new LinkedList(); + public JMenuItem addHost = null; + public JMenuItem sendDatagram = null; + private Datagram datagram; + public boolean sourceAndTarget = false; + public boolean firstClick; + private boolean isIPv6; + + public JButton btnIPv6; + public JButton btnIPv4; + + public MainDrawBoard(JPanel theMsgPanel, MtuTr frame) { + staticInstance = this; + this.messagePanel = theMsgPanel; + + this.messagePanel.setBackground(new Color(222, 231, 254)); + this.messagePanel.setVisible(true); + ((FlowLayout) this.messagePanel.getLayout()).setAlignment(0); + this.ipKit = frame; + + if (frame.firstClick) { + this.firstClick = frame.firstClick; + + this.btnIPv6 = new JButton("IPv6"); + Font font = new Font("Arial", 1, 40); + this.btnIPv6.setFont(font); + this.btnIPv6.setSize(this.btnIPv6.getPreferredSize()); + this.btnIPv6.setLocation(120, 250); + this.btnIPv6.addActionListener(new NetworkTypeButtonListener(this, true)); + + this.btnIPv4 = new JButton("IPv4"); + this.btnIPv4.setFont(font); + this.btnIPv4.setSize(this.btnIPv4.getPreferredSize()); + this.btnIPv4.setLocation(350, 250); + this.btnIPv4.addActionListener(new NetworkTypeButtonListener(this, false)); + + add(this.btnIPv6); + add(this.btnIPv4); + } + + this.mouseListener = new MainMouseListener(this); + this.selMouseListener = new SelectionMouseListener(this); + + addMouseListener(this.mouseListener); + addMouseMotionListener(this.mouseListener); + + this.menuListener = new MenuListener(this); + this.main_menu = new JPopupMenu("Main Menu"); + JMenuItem m_item = new JMenuItem("Add Network"); + m_item.addActionListener(this.menuListener); + this.main_menu.add(m_item); + m_item = new JMenuItem("Add Router"); + m_item.addActionListener(this.menuListener); + this.main_menu.add(m_item); + m_item = new JMenuItem("Add Datagram"); + m_item.addActionListener(this.menuListener); + this.main_menu.add(m_item); + this.main_menu.addSeparator(); + + this.networkPlacementListener = new NetworkPlacementListener(this, + this.menuListener); + JMenu place_networks = new JMenu("Place Networks"); + m_item = new JMenuItem("Star"); + m_item.addActionListener(this.networkPlacementListener); + place_networks.add(m_item); + m_item = new JMenuItem("Loop"); + m_item.addActionListener(this.networkPlacementListener); + place_networks.add(m_item); + m_item = new JMenuItem("Long"); + m_item.addActionListener(this.networkPlacementListener); + place_networks.add(m_item); + this.main_menu.add(place_networks); + + this.main_menu.addSeparator(); + m_item = new JMenuItem("Remove All"); + m_item.addActionListener(this.menuListener); + this.main_menu.add(m_item); + + this.network_menu = new JPopupMenu("Network menu"); + this.addHost = new JMenuItem("Add Host"); + this.addHost.addActionListener(this.menuListener); + this.network_menu.add(this.addHost); + this.network_menu.addSeparator(); + m_item = new JMenuItem("Set Default Gateway"); + m_item.addActionListener(this.menuListener); + this.network_menu.add(m_item); + this.network_menu.addSeparator(); + m_item = new JMenuItem("Edit Network"); + m_item.addActionListener(this.menuListener); + this.network_menu.add(m_item); + m_item = new JMenuItem("Remove Network"); + m_item.addActionListener(this.menuListener); + this.network_menu.add(m_item); + + this.router_menu = new JPopupMenu("Router menu"); + m_item = new JMenuItem("Connect to Networks"); + m_item.addActionListener(this.menuListener); + this.router_menu.add(m_item); + this.router_menu.addSeparator(); + m_item = new JMenuItem("Edit Routing Table"); + m_item.addActionListener(this.menuListener); + this.router_menu.add(m_item); + m_item = new JMenuItem("Remove Router"); + m_item.addActionListener(this.menuListener); + this.router_menu.add(m_item); + + this.host_menu = new JPopupMenu("Host menu"); + m_item = new JMenuItem("Remove Host"); + m_item.addActionListener(this.menuListener); + this.host_menu.add(m_item); + + this.datagram_menu = new JPopupMenu("Datagram menu"); + this.sendDatagram = new JMenuItem("Send Datagram"); + this.sendDatagram.addActionListener(this.menuListener); + this.datagram_menu.add(this.sendDatagram); + this.datagram_menu.addSeparator(); + m_item = new JMenuItem("Set Source & Target"); + m_item.addActionListener(this.menuListener); + this.datagram_menu.add(m_item); + m_item = new JMenuItem("Set Source Only"); + m_item.addActionListener(this.menuListener); + this.datagram_menu.add(m_item); + m_item = new JMenuItem("Set Target Only"); + m_item.addActionListener(this.menuListener); + this.datagram_menu.add(m_item); + this.datagram_menu.addSeparator(); + m_item = new JMenuItem("Edit Datagram"); + m_item.addActionListener(this.menuListener); + this.datagram_menu.add(m_item); + m_item = new JMenuItem("Remove Datagram"); + m_item.addActionListener(this.menuListener); + this.datagram_menu.add(m_item); + } + + @Override + protected void paintComponent(Graphics graphics) { + super.paintComponent(graphics); + Iterator it = this.networks.iterator(); + Network net = null; + Host host = null; + while (it.hasNext()) { + net = (Network) it.next(); + Iterator hIt = net.hosts.iterator(); + while (hIt.hasNext()) { + host = (Host) hIt.next(); + graphics.drawLine(getCenterX(net), getCenterY(net), + getCenterX(host), getCenterY(host)); + graphics.drawString(host.getIP().getIPStr(), + getCenterX(host) - 23, getCenterY(host) + 25); + } + + } + + it = this.routers.iterator(); + while (it.hasNext()) { + Router router = (Router) it.next(); + Iterator nIt = router.networks.iterator(); + while (nIt.hasNext()) { + net = (Network) nIt.next(); + graphics.drawLine(getCenterX(net), getCenterY(net), + getCenterX(router), getCenterY(router)); + graphics.drawString(router.getIP(net).getIPStr(), + getCenterX(net) + + (getCenterX(router) - getCenterX(net)) / 5 + * 4, getCenterY(net) + + (getCenterY(router) - getCenterY(net)) / 5 + * 4); + + if ((net.defaultGateway != null) + && (net.defaultGateway.equals(router))) + graphics.drawString("d", getCenterX(net) + + (getCenterX(router) - getCenterX(net)) / 2, + getCenterY(net) + + (getCenterY(router) - getCenterY(net)) + / 2); + } + } + } + + private int getCenterX(Component c) { + return c.getX() + c.getWidth() / 2; + } + + private int getCenterY(Component c) { + return c.getY() + c.getHeight() / 2; + } + + public void exitSelectionMode() { + removeMouseListener(this.selMouseListener); + addMouseListener(this.mouseListener); + setCursor(new Cursor(0)); + Iterator it = this.networks.iterator(); + this.messagePanel.remove(NetworkSelectionMessage.getInstance()); + + updateUI(); + this.messagePanel.updateUI(); + while (it.hasNext()) { + ((Network) it.next()).setBorder(BorderFactory.createEmptyBorder()); + } + + if (((Router) this.selMouseListener.selectedObject).cleanRoutingTable()) { + JOptionPane.showMessageDialog(this, + "Router's routing table has been changed.", "Warning", 2); + } + + it = this.networks.iterator(); + Network net = null; + while (it.hasNext()) { + net = (Network) it.next(); + if ((net.defaultGateway != null) + && (!net.routers.contains(net.defaultGateway))) { + net.defaultGateway = null; + new ChooseDefaultGateway(net, net.defaultGateway); + } + } + + this.selMouseListener.selectedObject = null; + this.selMouseListener.selectionClass = null; + } + + public void exitHostSelectionMode() { + removeMouseListener(this.selMouseListener); + this.selMouseListener.selectedObject = null; + this.selMouseListener.selectionClass = null; + addMouseListener(this.mouseListener); + setCursor(new Cursor(0)); + this.messagePanel.remove(HostSelectionMessage.getInstance(true)); + + updateUI(); + this.messagePanel.updateUI(); + if (this.datagram.getSource() != null) { + this.datagram.getSource().setBorder( + BorderFactory.createEmptyBorder()); + } + if (this.datagram.getTarget() != null) { + this.datagram.getTarget().setBorder( + BorderFactory.createEmptyBorder()); + } + + if (this.sourceAndTarget) { + enterSelectionMode(this.datagram, false); + this.sourceAndTarget = false; + } else { + this.datagram = null; + } + } + + public void exitRouterSelectionMode() { + removeMouseListener(this.selMouseListener); + this.selMouseListener.selectedObject = null; + this.selMouseListener.selectionClass = null; + addMouseListener(this.mouseListener); + setCursor(new Cursor(0)); + this.messagePanel.remove(RouterSelectionMessage.getInstance(this)); + + updateUI(); + this.messagePanel.updateUI(); + + Iterator it = this.routers.iterator(); + while (it.hasNext()) + ((Router) it.next()).setBorder(BorderFactory.createEmptyBorder()); + } + + public void enterSelectionMode(Router router) { + setCursor(new Cursor(12)); + removeMouseListener(this.mouseListener); + addMouseListener(this.selMouseListener); + this.selMouseListener.selectionClass = Network.class; + this.selMouseListener.selectedObject = router; + this.messagePanel.add(NetworkSelectionMessage.getInstance()); + + updateUI(); + this.messagePanel.updateUI(); + Iterator it = router.networks.iterator(); + while (it.hasNext()) + ((JLabel) it.next()).setBorder(BorderFactory + .createLineBorder(Color.GREEN)); + } + + public void enterSelectionMode(Network net) { + Iterator it = net.routers.iterator(); + + if (net.routers.size() == 1) { + net.defaultGateway = ((Router) it.next()); + return; + } + if (net.routers.size() == 0) { + JOptionPane + .showMessageDialog( + this, + "First connect routers to network.\nOnly then you will be able to choose a default gateway for the network."); + + return; + } + + Router r = null; + while (it.hasNext()) { + r = (Router) it.next(); + r.setBorder(BorderFactory.createLineBorder(Color.BLUE)); + } + + if (net.defaultGateway != null) { + net.defaultGateway.setBorder(BorderFactory + .createLineBorder(Color.GREEN)); + } + + setCursor(new Cursor(12)); + removeMouseListener(this.mouseListener); + addMouseListener(this.selMouseListener); + this.selMouseListener.selectionClass = Router.class; + this.selMouseListener.selectedObject = net; + this.messagePanel.add(RouterSelectionMessage.getInstance(this)); + + updateUI(); + this.messagePanel.updateUI(); + } + + public void enterSelectionMode(Datagram datagram, boolean source) { + this.datagram = datagram; + setCursor(new Cursor(12)); + removeMouseListener(this.mouseListener); + addMouseListener(this.selMouseListener); + this.selMouseListener.selectionClass = Host.class; + this.selMouseListener.selectedObject = datagram; + this.selMouseListener.source = source; + this.messagePanel.add(HostSelectionMessage.getInstance(source)); + + updateUI(); + this.messagePanel.updateUI(); + + Host h = (source) ? datagram.getSource() : datagram.getTarget(); + if (h != null) + h.setBorder(BorderFactory.createLineBorder(Color.GREEN)); + } + + public Network createNewNetwork() { + Network network = new Network(this); + network.setHorizontalAlignment(10); + if (this.networkImage == null) { + this.networkImage = loadImage("network2.gif"); + } + + while (this.networkImage.getImageLoadStatus() != 8) + ; + network.setIconTextGap(11 - this.networkImage.getIconWidth()); + + network.setIcon(this.networkImage); + network.setSize(network.getPreferredSize()); + return network; + } + + public void removeNetwork(Network network) { + remove(network); + this.networks.remove(network); + removeNetworkConnections(network); + } + + public void removeNetworkConnections(Network network) { + ListIterator it = network.hosts.listIterator(); + + while (it.hasNext()) { + Host host = (Host) it.next(); + removeFromDatagrams(host); + remove(host); + } + + network.hosts.clear(); + + it = network.routers.listIterator(); + boolean rtChanged = false; + while (it.hasNext()) { + Router router = (Router) it.next(); + if (router.detachFromNetwork(network)) { + rtChanged = true; + } + } + + if (rtChanged) + JOptionPane.showMessageDialog(this, + "One or more connected routers' routing tables affected.", + "Warning", 2); + } + + public void removeRouter(Router router) { + remove(router); + this.routers.remove(router); + + Iterator it1 = this.networks.listIterator(); + while (it1.hasNext()) { + Network net = (Network) it1.next(); + if (router.equals(net.defaultGateway)) { + net.defaultGateway = null; + new ChooseDefaultGateway(net, router); + } + + if (net.routers.contains(router)) { + net.routers.remove(router); + net.deAllocateIP(router); + } + } + } + + public void removeHost(Host host) { + remove(host); + + Iterator it = this.networks.iterator(); + while (it.hasNext()) { + Network net = (Network) it.next(); + if (net.hosts.contains(host)) { + removeFromDatagrams(host); + net.hosts.remove(host); + net.deAllocateIP(host); + } + } + } + + public void removeFromDatagrams(Host host) { + Iterator it = this.datagrams.iterator(); + while (it.hasNext()) { + Datagram datagram = (Datagram) it.next(); + if (host == datagram.getSource()) { + datagram.setSource(null); + } + + if (host == datagram.getTarget()) + datagram.setTarget(null); + } + } + + public void removeDatagram(Datagram datagram) { + remove(datagram); + } + + public Router createNewRouter() { + Router router = new Router(""); + router.setHorizontalAlignment(10); + if (this.routerImage == null) { + this.routerImage = loadImage("router.gif"); + } + + router.setIconTextGap(5 - this.routerImage.getIconWidth()); + router.setIcon(this.routerImage); + router.setSize(router.getPreferredSize()); + return router; + } + + public Host createNewHost(Network net) { + Host host = new Host("", net); + host.setHorizontalAlignment(10); + if (this.hostImage == null) { + this.hostImage = loadImage("host.gif"); + } + + host.setIconTextGap(5 - this.hostImage.getIconWidth()); + host.setIcon(this.hostImage); + host.setSize(host.getPreferredSize()); + return host; + } + + public Datagram createNewDatagram() { + Datagram dg = new Datagram(""); + dg.setHorizontalAlignment(10); + if (this.envelopeImage == null) { + this.envelopeImage = loadImage("envelope.gif"); + } + + dg.main = this.envelopeImage; + if (this.fragImage == null) { + this.fragImage = loadImage("frag.gif"); + } + dg.frag = this.fragImage; + dg.setIconTextGap(5 - this.envelopeImage.getIconWidth()); + dg.setIcon(this.envelopeImage); + dg.setSize(dg.getPreferredSize()); + return dg; + } + + public ImageIcon loadImage(String path) { + int count = 0; + BufferedInputStream imgStream = new BufferedInputStream(super + .getClass().getClassLoader().getResourceAsStream(path)); + if (imgStream != null) { + try { + count = imgStream.read(this.buf); + imgStream.close(); + } catch (IOException ioe) { + System.err.println("Couldn't read stream from file: " + path); + return null; + } + if (count <= 0) { + System.err.println("Empty file: " + path); + return null; + } + return new ImageIcon(Toolkit.getDefaultToolkit().createImage( + this.buf)); + } + System.err.println("Couldn't find file: " + path); + return null; + } + public boolean isIPv6() { + return isIPv6; + } + + public void setIPv6(boolean isIPv6) { + this.isIPv6 = isIPv6; + } +} diff --git a/mtutr/MtuTr.java b/mtutr/MtuTr.java new file mode 100644 index 0000000..6a4b664 --- /dev/null +++ b/mtutr/MtuTr.java @@ -0,0 +1,78 @@ +package mtutr; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import javax.swing.BoxLayout; +import javax.swing.ImageIcon; +import javax.swing.JApplet; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; + +public class MtuTr extends JApplet +{ + private static final long serialVersionUID = 1L; + private JPanel jContentPane = null; + private JPanel north = null; + public boolean firstClick = true; + public ImageIcon m = null; + + public void init() + { + setSize(750, 640); + try + { + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + MtuTr.this.createGUI(); + } } ); + } + catch (Exception e) { + System.err.println("createGUI didn't successfully complete"); + } + } + + public void createGUI() { + setContentPane(getJContentPane()); + } + + private JPanel getJContentPane() + { + if (this.jContentPane == null) { + this.jContentPane = new JPanel(); + this.jContentPane.setLayout(new BoxLayout(this.jContentPane, 1)); + + this.north = new JPanel(); + this.north.setAlignmentY(0.0F); + this.north.setAlignmentX(0.0F); + this.north.setVisible(false); + this.north.setBackground(new Color(255, 255, 128)); + this.north.setMaximumSize(new Dimension(getSize().width, 45)); + this.north.setPreferredSize(new Dimension(getSize().width, 45)); + + JPanel south = new MainDrawBoard(this.north, this); + + if (this.firstClick) { + this.firstClick = false; + } + + south.setLayout(null); + + this.jContentPane.add(this.north); + this.jContentPane.add(south); + } + return this.jContentPane; + } + + public MainDrawBoard setNewMainBoard(Component comp) { + this.jContentPane.remove(comp); + MainDrawBoard south = new MainDrawBoard(this.north, this); + MainDrawBoard.staticInstance = south; + south.setLayout(null); + south.setSize(comp.getSize()); + this.jContentPane.add(south); + + return south; + } +} + diff --git a/mtutr/common/.p4ignore b/mtutr/common/.p4ignore new file mode 100644 index 0000000..5417d0e --- /dev/null +++ b/mtutr/common/.p4ignore @@ -0,0 +1 @@ +IPAddress.java diff --git a/mtutr/common/BoardCleaner.java b/mtutr/common/BoardCleaner.java new file mode 100644 index 0000000..fe4e73a --- /dev/null +++ b/mtutr/common/BoardCleaner.java @@ -0,0 +1,34 @@ +/* */ package mtutr.common; +/* */ +/* */ import mtutr.MtuTr; +import mtutr.MainDrawBoard; +/* */ +/* */ public class BoardCleaner +/* */ implements Runnable +/* */ { +/* */ private MtuTr kit; +/* */ private MainDrawBoard board; +/* */ +/* */ public BoardCleaner(MainDrawBoard _board) +/* */ { +/* 11 */ this.kit = _board.ipKit; +/* 12 */ this.board = _board; +/* */ } +/* */ +/* */ public void run() { +/* */ try { +/* 17 */ Thread.sleep(100L); +/* */ } +/* */ catch (InterruptedException e) { +/* 20 */ e.printStackTrace(); +/* */ } +/* */ +/* 23 */ this.kit.setNewMainBoard(this.board); +/* 24 */ this.kit.repaint(); +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.common.BoardCleaner + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/common/IPAddress.java b/mtutr/common/IPAddress.java new file mode 100644 index 0000000..ed68cb6 --- /dev/null +++ b/mtutr/common/IPAddress.java @@ -0,0 +1,328 @@ +package mtutr.common; + +import java.util.StringTokenizer; +import java.util.regex.Pattern; + +public class IPAddress { + public static final int CLASS_A = 8; + public static final int CLASS_B = 16; + public static final int CLASS_C = 24; + public static final int CLASS_D = 32; + private static Pattern pattern = Pattern + .compile("(\\d{1,3}+\\.){3}+\\d{1,3}+"); + private long ip; + + public static boolean isValidAddress(String ip) { + if (pattern.matcher(ip).matches()) { + StringTokenizer st = new StringTokenizer(ip, "."); + while (st.hasMoreTokens()) { + try { + int val = Integer.parseInt(st.nextToken()); + if ((val > 255) || (val < 0)) + return false; + } catch (Throwable e) { + return false; + } + } + return true; + } + return false; + } + + public IPAddress(long val) { + this.ip = val; + } + + public IPAddress(String val) throws Exception { + String[] str = new String[4]; + StringTokenizer tokens = new StringTokenizer(val, "."); + str[3] = tokens.nextToken(); + str[2] = tokens.nextToken(); + str[1] = tokens.nextToken(); + str[0] = tokens.nextToken(); + + setIP(Integer.parseInt(str[3]), Integer.parseInt(str[2]), Integer + .parseInt(str[1]), Integer.parseInt(str[0])); + } + + public void setIP(Integer i1, Integer i2, Integer i3, Integer i4) { + setIP(i1.intValue(), i2.intValue(), i3.intValue(), i4.intValue()); + } + + public void setIP(long i1, long i2, long i3, long i4) { + this.ip = (i1 << 24 | i2 << 16 | i3 << 8 | i4); + } + + public void setIP(long newIP) { + this.ip = newIP; + } + + public long getIPLong() { + return this.ip; + } + + public long getIPByte(int b) { + return this.ip >> b * 8 & 0xFF; + } + + public Integer getIPByteInt(int b) { + return new Integer((int) (this.ip >> b * 8 & 0xFF)); + } + + public String getIPByteStr(int b) { + return String.valueOf(this.ip >> b * 8 & 0xFF); + } + + public String getIPStr() { + StringBuffer sb = new StringBuffer(20); + for (int i = 3; i >= 0; --i) { + sb.append(getIPByte(i)); + if (i == 0) + continue; + sb.append('.'); + } + return sb.toString(); + } + + public int getIPClass() { + return getIPClass(this.ip); + } + + private static final int getIPClass(long ip) { + long reg = 0L; + + reg = 14L; + if ((ip & reg << 28) == reg << 28) { + return 32; + } + + reg = 6L; + if ((ip & reg << 29) == reg << 29) { + return 24; + } + + reg = 2L; + if ((ip & reg << 30) == reg << 30) { + return 16; + } + + reg = 1L; + if ((ip & reg << 31) == 0L) { + return 8; + } + + return -1; + } + + public IPAddress getNetworkIPByClass() { + long reg = 0L; + + reg = 14L; + if ((this.ip & reg << 28) == reg << 28) { + return new IPAddress(this.ip); + } + + reg = 6L; + if ((this.ip & reg << 29) == reg << 29) { + return new IPAddress(this.ip & 0xFFFFFF00); + } + + reg = 2L; + if ((this.ip & reg << 30) == reg << 30) { + return new IPAddress(this.ip & 0xFFFF0000); + } + + reg = 1L; + if ((this.ip & reg << 31) == reg << 31) { + return new IPAddress(this.ip & 0xFF000000); + } + + return null; + } + + public IPAddress getNetworkIPByCIDR(int cidr) { + long reg = -1L; + return new IPAddress(this.ip & reg >>> 32 - cidr << 32 - cidr); + } + + public boolean isLegalHostWithCIDR(long _ip, int _cidr) { + long reg = -1L; + reg = reg >>> 32 - _cidr << 32 - _cidr; + return (_ip & reg) == (this.ip & reg); + } + + public boolean isLegalHostWithClasses(long _ip) { + long mask = 32L; + switch (getIPClass(_ip)) { + case 8: + mask = 8L; + break; + case 16: + mask = 16L; + break; + case 24: + mask = 24L; + break; + case 32: + mask = 32L; + } + + long reg = -1L; + return (_ip & reg >>> (int) (32L - mask) << (int) (32L - mask)) == this.ip; + } + + @Override + public String toString() { + return getIPStr(); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof IPAddress) { + return ((IPAddress) obj).getIPLong() == this.ip; + } + if (obj instanceof String) { + return obj.equals(toString()); + } + return false; + } + + private int getLastBitAppearanceOnByte(int i) { + long l = getIPByte(i); + + if (l == 0L) { + return 0; + } + int bit = 8; + for (; bit > 0; --bit) { + long mod = l % 2L; + l /= 2L; + + if (mod == 1L) { + break; + } + } + return bit; + } + + public int getMinimalMask() { + int mask = 0; + + int mask3 = getLastBitAppearanceOnByte(3); + int mask2 = getLastBitAppearanceOnByte(2); + int mask1 = getLastBitAppearanceOnByte(1); + int mask0 = getLastBitAppearanceOnByte(0); + + boolean b3 = mask3 == 0; + boolean b2 = mask2 == 0; + boolean b1 = mask1 == 0; + boolean b0 = mask0 == 0; + + if ((b3) && (b2) && (b1) && (b0)) { + return 0; + } + + if ((b3) && (b2) && (b1) && (!b0)) { + return 24 + mask0; + } + + if ((b3) && (b2) && (!b1) && (b0)) { + return 16 + mask1; + } + + if ((b3) && (b2) && (!b1) && (!b0)) { + return 24 + mask0; + } + + if ((b3) && (!b2) && (b1) && (b0)) { + return 8 + mask2; + } + + if ((b3) && (!b2) && (b1) && (!b0)) { + return 24 + mask0; + } + + if ((b3) && (!b2) && (!b1) && (b0)) { + return 16 + mask1; + } + + if ((b3) && (!b2) && (!b1) && (!b0)) { + return 24 + mask0; + } + + if ((!b3) && (b2) && (b1) && (b0)) { + return mask3; + } + + if ((!b3) && (b2) && (b1) && (!b0)) { + return 24 + mask0; + } + + if ((!b3) && (b2) && (!b1) && (b0)) { + return 16 + mask1; + } + + if ((!b3) && (b2) && (!b1) && (!b0)) { + return 24 + mask0; + } + + if ((!b3) && (!b2) && (b1) && (b0)) { + return 8 + mask2; + } + + if ((!b3) && (!b2) && (b1) && (!b0)) { + return 24 + mask0; + } + + if ((!b3) && (!b2) && (!b1) && (b0)) { + return 16 + mask1; + } + + if ((!b3) && (!b2) && (!b1) && (!b0)) { + return 24 + mask0; + } + + return mask; + } + + private String getBinStrByte(int i) { + long l = getIPByte(i); + long[] ip = new long[9]; + + if (l == 0L) { + return "00000000"; + } + int numOfZeros = 8; + for (; numOfZeros > 0; --numOfZeros) { + ip[numOfZeros] = (l % 2L); + l /= 2L; + + if (l == 0L) { + break; + } + } + + --numOfZeros; + + String s = ""; + for (int j = 1; j <= numOfZeros; ++j) { + s = s + "0"; + } + + for (int j = numOfZeros + 1; j <= 8; ++j) { + s = s + ip[j]; + } + + return s; + } + + public String getBinStrIP() { + return getBinStrByte(3) + "." + getBinStrByte(2) + "." + + getBinStrByte(1) + "." + getBinStrByte(0); + } +} + +/* + * Location: C:\Users\MT\Desktop\mtutr.jar Qualified Name: + * mtutr.common.IPAddress JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/listeners/.p4ignore b/mtutr/listeners/.p4ignore new file mode 100644 index 0000000..1eb6b9d --- /dev/null +++ b/mtutr/listeners/.p4ignore @@ -0,0 +1,3 @@ +MainMouseListener.java +MenuListener.java +SelectionMouseListener.java diff --git a/mtutr/listeners/MainMouseListener.java b/mtutr/listeners/MainMouseListener.java new file mode 100644 index 0000000..274cd18 --- /dev/null +++ b/mtutr/listeners/MainMouseListener.java @@ -0,0 +1,129 @@ +package mtutr.listeners; + +import java.awt.Component; +import java.awt.Point; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; + +import javax.swing.JLabel; + +import mtutr.MainDrawBoard; +import mtutr.objects.Datagram; +import mtutr.objects.Host; +import mtutr.objects.Network; +import mtutr.objects.Router; +import mtutr.windows.DatagramProperties; +import mtutr.windows.NetworkProperties; +import mtutr.windows.RouterProperties; + +public class MainMouseListener implements MouseListener, MouseMotionListener { + private boolean inDrag = false; + int dX; + int dY; + MainDrawBoard board; + Component draggedComp = null; + boolean selectMode; + Class selectionClass; + + public MainMouseListener(MainDrawBoard val) { + this.board = val; + } + + public void mouseClicked(MouseEvent event) { + if (event.getButton() == 3) { + if (this.board.firstClick) { + this.board.firstClick = false; +// this.board.remove(this.board.startLabel); + this.board.updateUI(); + } + + this.board.menuListener.setSelectedComponent(event); + Component comp = this.board.getComponentAt(event.getPoint()); + + if (comp instanceof Network) { + if (((Network) comp).getIP() == null) { + this.board.addHost.setEnabled(false); + } else { + this.board.addHost.setEnabled(true); + } + this.board.network_menu.show(this.board, event.getX(), event + .getY()); + } else if (comp instanceof Datagram) { + if ((((Datagram) comp).getTarget() == null) + || (((Datagram) comp).getSource() == null)) + this.board.sendDatagram.setEnabled(false); + else { + this.board.sendDatagram.setEnabled(true); + } + this.board.datagram_menu.show(this.board, event.getX(), event + .getY()); + } else if (comp instanceof Router) { + this.board.router_menu.show(this.board, event.getX(), event + .getY()); + } else if (comp instanceof Host) { + this.board.host_menu.show(this.board, event.getX(), event + .getY()); + } else { + this.board.main_menu.show(this.board, event.getX(), event + .getY()); + } + } else if ((event.getButton() == 1) && (event.getClickCount() == 2)) { + Component comp = this.board.getComponentAt(event.getPoint()); + if (comp instanceof Network) { + new NetworkProperties((Network) comp).setVisible(true); + } + + if (comp instanceof Datagram) { + new DatagramProperties((Datagram) comp).setVisible(true); + } + + if (comp instanceof Router) { + new RouterProperties((Router) comp).setVisible(true); + } + } + } + + public void mouseEntered(MouseEvent arg0) { + } + + public void mouseExited(MouseEvent arg0) { + } + + public void mousePressed(MouseEvent event) { + Point p = event.getPoint(); + Component comp = this.board.getComponentAt(event.getPoint()); + + if ((comp instanceof JLabel) + && (((JLabel) comp).getText() + .equals("Right-click to get started"))) { + return; + } + + if ((!this.inDrag) && (comp != null) && (comp != this.board)) { + this.inDrag = true; + this.draggedComp = comp; + this.board.remove(comp); + this.board.add(comp, 0); + this.dX = (comp.getX() - p.x); + this.dY = (comp.getY() - p.y); + } + } + + public void mouseReleased(MouseEvent arg0) { + this.inDrag = false; + this.draggedComp = null; + } + + public void mouseDragged(MouseEvent event) { + Point p = event.getPoint(); + if ((!this.inDrag) || (p.x <= 0) || (p.x >= this.board.getWidth()) + || (p.y <= 0) || (p.y >= this.board.getHeight())) + return; + this.draggedComp.setLocation(this.dX + p.x, this.dY + p.y); + this.board.repaint(); + } + + public void mouseMoved(MouseEvent arg0) { + } +} diff --git a/mtutr/listeners/MenuListener.java b/mtutr/listeners/MenuListener.java new file mode 100644 index 0000000..1692a00 --- /dev/null +++ b/mtutr/listeners/MenuListener.java @@ -0,0 +1,138 @@ +/* */ package mtutr.listeners; +/* */ +/* */ /* */ import java.awt.Component; +/* */ import java.awt.event.ActionEvent; +/* */ import java.awt.event.ActionListener; +/* */ import java.awt.event.MouseEvent; +/* */ import java.util.List; +import javax.swing.JOptionPane; + +import mtutr.MainDrawBoard; +import mtutr.common.BoardCleaner; +import mtutr.objects.Datagram; +import mtutr.objects.Host; +import mtutr.objects.IPKitItem; +import mtutr.objects.Network; +import mtutr.objects.Router; +import mtutr.windows.DatagramProperties; +import mtutr.windows.NetworkProperties; +import mtutr.windows.RouterProperties; +/* */ +/* */ public class MenuListener +/* */ implements ActionListener +/* */ { +/* */ private MainDrawBoard board; +/* */ private MouseEvent mouseEvent; +/* 24 */ private Component selectedComponent = null; +/* 25 */ private IPKitItem item = null; +/* */ +/* */ public MenuListener(MainDrawBoard newBoard) { +/* 28 */ this.board = newBoard; +/* */ } +/* */ +/* */ public void setSelectedComponent(MouseEvent newItem) { +/* 32 */ this.mouseEvent = newItem; +/* 33 */ this.selectedComponent = this.board.getComponentAt(this.mouseEvent.getPoint()); +/* */ } +/* */ +/* */ public void actionPerformed(ActionEvent event) { +/* 37 */ if (event.getActionCommand().equalsIgnoreCase("Add Network")) { +/* 38 */ Network network = this.board.createNewNetwork(); +/* 39 */ this.item = network; +/* 40 */ this.board.networks.add(network); +/* 41 */ network.setLocation(this.mouseEvent.getPoint()); +/* 42 */ this.board.add(network, 0); +/* */ } +/* 44 */ else if (event.getActionCommand().equalsIgnoreCase("Remove Network")) { +/* 45 */ this.board.removeNetwork((Network)this.selectedComponent); +/* */ } +/* 47 */ else if (event.getActionCommand().equalsIgnoreCase("Add Router")) { +/* 48 */ Router router = this.board.createNewRouter(); +/* 49 */ this.item = router; +/* 50 */ router.setLocation(this.mouseEvent.getPoint()); +/* 51 */ this.board.routers.add(router); +/* 52 */ this.board.add(router, 0); +/* 53 */ }if (event.getActionCommand().equalsIgnoreCase("Add Host")) { +/* 54 */ Network net = (Network)this.selectedComponent; +/* 55 */ if (net.getIP() == null) { +/* 56 */ JOptionPane.showMessageDialog(this.board, "Unable adding a host while network's IP addresses haven't defined.\nDefine network's IP addresses before adding a host to it."); +/* */ +/* 58 */ return; +/* */ } +/* 60 */ Host host = this.board.createNewHost(net); +/* 61 */ this.item = host; +/* 62 */ if (net.allocateIP(host) == null) { +/* 63 */ JOptionPane.showMessageDialog(this.board, "Unable adding new host: IP addresses pool is empty."); +/* */ } +/* */ else +/* */ { +/* 67 */ ((Network)this.selectedComponent).hosts.add(host); +/* 68 */ host.setLocation(this.mouseEvent.getPoint()); +/* 69 */ this.board.add(host, 0); +/* */ } +/* */ } +/* 72 */ else if (event.getActionCommand().equalsIgnoreCase("Edit Network")) { +/* 73 */ NetworkProperties tmp = new NetworkProperties((Network)this.selectedComponent); +/* 74 */ tmp.show(); +/* */ } +/* 76 */ else if (event.getActionCommand().equalsIgnoreCase("Edit Routing Table")) { +/* 77 */ RouterProperties tmp = new RouterProperties((Router)this.selectedComponent); +/* 78 */ tmp.show(); +/* */ } +/* 80 */ else if (event.getActionCommand().equalsIgnoreCase("Set Default Gateway")) { +/* 81 */ this.board.enterSelectionMode((Network)this.selectedComponent); +/* */ } +/* 83 */ else if (event.getActionCommand().equalsIgnoreCase("Remove Router")) { +/* 84 */ this.board.removeRouter((Router)this.selectedComponent); +/* */ } +/* 86 */ else if (event.getActionCommand().equalsIgnoreCase("Remove Host")) { +/* 87 */ this.board.removeHost((Host)this.selectedComponent); +/* */ } +/* 89 */ else if (event.getActionCommand().equalsIgnoreCase("Connect to networks")) { +/* 90 */ this.board.enterSelectionMode((Router)this.selectedComponent); +/* */ } +/* 92 */ else if (event.getActionCommand().equalsIgnoreCase("Add Datagram")) { +/* 93 */ Datagram datagram = this.board.createNewDatagram(); +/* 94 */ this.item = datagram; +/* 95 */ this.board.datagrams.add(datagram); +/* 96 */ datagram.setLocation(this.mouseEvent.getPoint()); +/* 97 */ this.board.add(datagram, 0); +/* */ } +/* 99 */ else if (event.getActionCommand().equalsIgnoreCase("Send Datagram")) { +/* 100 */ Datagram d = (Datagram)this.selectedComponent; +/* 101 */ d.send(); +/* */ } +/* 103 */ else if (event.getActionCommand().equalsIgnoreCase("Edit Datagram")) { +/* 104 */ new DatagramProperties((Datagram)this.selectedComponent); +/* */ } +/* 106 */ else if (event.getActionCommand().equalsIgnoreCase("Remove Datagram")) { +/* 107 */ this.board.removeDatagram((Datagram)this.selectedComponent); +/* */ } +/* 109 */ else if (event.getActionCommand().equalsIgnoreCase("Set Source & Target")) { +/* 110 */ this.board.sourceAndTarget = true; +/* 111 */ this.board.enterSelectionMode((Datagram)this.selectedComponent, true); +/* */ } +/* 113 */ else if (event.getActionCommand().equalsIgnoreCase("Set Source Only")) { +/* 114 */ this.board.enterSelectionMode((Datagram)this.selectedComponent, true); +/* */ } +/* 116 */ else if (event.getActionCommand().equalsIgnoreCase("Set Target Only")) { +/* 117 */ this.board.enterSelectionMode((Datagram)this.selectedComponent, false); +/* */ } +/* 119 */ else if (event.getActionCommand().equalsIgnoreCase("Remove All")) +/* */ { +/* 121 */ new Thread(new BoardCleaner(this.board)).start(); +/* 122 */ return; +/* */ } +/* */ +/* 125 */ this.board.repaint(); +/* */ } +/* */ +/* */ public IPKitItem getLastItem() { +/* 129 */ return this.item; +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.listeners.MenuListener + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/listeners/NetworkPlacementListener.java b/mtutr/listeners/NetworkPlacementListener.java new file mode 100644 index 0000000..4972975 --- /dev/null +++ b/mtutr/listeners/NetworkPlacementListener.java @@ -0,0 +1,324 @@ +/* */ package mtutr.listeners; +/* */ +/* */ /* */ import java.awt.Component; +/* */ import java.awt.Point; +/* */ import java.awt.event.ActionEvent; +/* */ import java.awt.event.ActionListener; +/* */ import java.awt.event.MouseEvent; +/* */ import java.util.LinkedList; +/* */ import java.util.List; +import javax.swing.JOptionPane; + +import mtutr.MainDrawBoard; +import mtutr.common.IPAddress; +import mtutr.objects.Datagram; +import mtutr.objects.Host; +import mtutr.objects.Network; +import mtutr.objects.Router; +import mtutr.objects.RoutingTable; +import mtutr.objects.RoutingTableEntry; +/* */ +/* */ public class NetworkPlacementListener +/* */ implements ActionListener +/* */ { +/* */ private MainDrawBoard board; +/* */ private MouseEvent mouseEvent; +/* 22 */ private Component selectedComponent = null; +/* 23 */ private MenuListener menuListener = null; +/* */ +/* */ public NetworkPlacementListener(MainDrawBoard newBoard, MenuListener newMenuListener) { +/* 26 */ this.board = newBoard; +/* 27 */ this.menuListener = newMenuListener; +/* */ } +/* */ +/* */ public void setSelectedComponent(MouseEvent newItem) { +/* 31 */ this.mouseEvent = newItem; +/* 32 */ this.selectedComponent = this.board.getComponentAt(this.mouseEvent.getPoint()); +/* */ } +/* */ +/* */ public void actionPerformed(ActionEvent event) { +/* 36 */ if (event.getActionCommand().equalsIgnoreCase("Star")) { +/* 37 */ placeNetwork1(); +/* */ } +/* 39 */ else if (event.getActionCommand().equalsIgnoreCase("Loop")) { +/* 40 */ placeNetwork2(); +/* */ } +/* 42 */ else if (event.getActionCommand().equalsIgnoreCase("Long")) +/* 43 */ placeNetwork3(); +/* */ } +/* */ +/* */ public void placeNetwork1() +/* */ { +/* */ try { +/* 49 */ Router mainRouter = placeRouter(215, 320); +/* */ +/* 51 */ RoutingTableEntry rte = new RoutingTableEntry(); +/* 52 */ rte.net = "1.0.0.0"; rte.cidr = "8"; rte.gateway = "1.0.0.2"; rte.ifc = "1.0.0.0"; rte.isNew = false; +/* 53 */ mainRouter.routingTable.entries.add(rte); +/* */ +/* 55 */ rte = new RoutingTableEntry(); +/* 56 */ rte.net = "2.0.0.0"; rte.cidr = "8"; rte.gateway = "2.0.0.2"; rte.ifc = "2.0.0.0"; rte.isNew = false; +/* 57 */ mainRouter.routingTable.entries.add(rte); +/* */ +/* 59 */ rte = new RoutingTableEntry(); +/* 60 */ rte.net = "3.0.0.0"; rte.cidr = "8"; rte.gateway = "3.0.0.2"; rte.ifc = "3.0.0.0"; rte.isNew = false; +/* 61 */ mainRouter.routingTable.entries.add(rte); +/* */ +/* 63 */ Network net1 = placeNetwork(70, 250); +/* 64 */ net1.setCIDR_IP(new IPAddress("1.0.0.0"), 16); +/* 65 */ Router router1 = placeRouter(85, 150); +/* 66 */ Network net11 = placeNetwork(0, 0); +/* 67 */ net11.setCIDR_IP(new IPAddress("1.1.0.0"), 24); +/* 68 */ Network net12 = placeNetwork(140, 0); +/* 69 */ net12.setCIDR_IP(new IPAddress("1.2.0.0"), 24); +/* 70 */ connectNetworkToRouter(net1, mainRouter); +/* 71 */ connectNetworkToRouter(net1, router1); +/* 72 */ connectNetworkToRouter(net11, router1); +/* 73 */ connectNetworkToRouter(net12, router1); +/* 74 */ placeHost(net11, 11, 58); +/* 75 */ placeHost(net11, 100, 58); +/* 76 */ placeHost(net12, 201, 58); +/* */ +/* 78 */ rte = new RoutingTableEntry(); +/* 79 */ rte.net = "1.1.0.0"; rte.cidr = "24"; rte.gateway = "1.1.0.1"; rte.ifc = "1.1.0.0"; rte.isNew = false; +/* 80 */ router1.routingTable.entries.add(rte); +/* */ +/* 82 */ rte = new RoutingTableEntry(); +/* 83 */ rte.net = "1.2.0.0"; rte.cidr = "24"; rte.gateway = "1.2.0.1"; rte.ifc = "1.2.0.0"; rte.isNew = false; +/* 84 */ router1.routingTable.entries.add(rte); +/* */ +/* 86 */ rte = new RoutingTableEntry(); +/* 87 */ rte.net = "0.0.0.0"; rte.cidr = "0"; rte.gateway = "1.0.0.1"; rte.ifc = "1.0.0.0"; rte.isNew = false; +/* 88 */ router1.routingTable.entries.add(rte); +/* */ +/* 92 */ Network net2 = placeNetwork(330, 250); +/* 93 */ net2.setCIDR_IP(new IPAddress("2.0.0.0"), 16); +/* 94 */ Router router2 = placeRouter(340, 150); +/* 95 */ Network net21 = placeNetwork(260, 0); +/* 96 */ net21.setCIDR_IP(new IPAddress("2.1.0.0"), 24); +/* 97 */ Network net22 = placeNetwork(380, 0); +/* 98 */ net22.setCIDR_IP(new IPAddress("2.2.0.0"), 24); +/* 99 */ connectNetworkToRouter(net2, mainRouter); +/* 100 */ connectNetworkToRouter(net2, router2); +/* 101 */ connectNetworkToRouter(net21, router2); +/* 102 */ connectNetworkToRouter(net22, router2); +/* 103 */ placeHost(net21, 291, 58); +/* 104 */ placeHost(net22, 455, 58); +/* */ +/* 107 */ rte = new RoutingTableEntry(); +/* 108 */ rte.net = "2.1.0.0"; rte.cidr = "24"; rte.gateway = "2.1.0.1"; rte.ifc = "2.1.0.0"; rte.isNew = false; +/* 109 */ router2.routingTable.entries.add(rte); +/* */ +/* 111 */ rte = new RoutingTableEntry(); +/* 112 */ rte.net = "2.2.0.0"; rte.cidr = "24"; rte.gateway = "2.2.0.1"; rte.ifc = "2.2.0.0"; rte.isNew = false; +/* 113 */ router2.routingTable.entries.add(rte); +/* */ +/* 115 */ rte = new RoutingTableEntry(); +/* 116 */ rte.net = "0.0.0.0"; rte.cidr = "0"; rte.gateway = "2.0.0.1"; rte.ifc = "2.0.0.0"; rte.isNew = false; +/* 117 */ router2.routingTable.entries.add(rte); +/* */ +/* 120 */ Network net3 = placeNetwork(195, 389); +/* 121 */ net3.setCIDR_IP(new IPAddress("3.0.0.0"), 16); +/* 122 */ Router router3 = placeRouter(210, 480); +/* 123 */ Network net31 = placeNetwork(13, 529); +/* 124 */ net31.setCIDR_IP(new IPAddress("3.1.0.0"), 24); +/* 125 */ Network net32 = placeNetwork(378, 529); +/* 126 */ net32.setCIDR_IP(new IPAddress("3.2.0.0"), 24); +/* 127 */ connectNetworkToRouter(net3, mainRouter); +/* 128 */ connectNetworkToRouter(net3, router3); +/* 129 */ connectNetworkToRouter(net31, router3); +/* 130 */ connectNetworkToRouter(net32, router3); +/* 131 */ placeHost(net31, 139, 549); +/* 132 */ placeHost(net31, 13, 484); +/* 133 */ placeHost(net32, 318, 549); +/* 134 */ placeHost(net32, 443, 484); +/* */ +/* 136 */ rte = new RoutingTableEntry(); +/* 137 */ rte.net = "3.1.0.0"; rte.cidr = "24"; rte.gateway = "3.1.0.1"; rte.ifc = "3.1.0.0"; rte.isNew = false; +/* 138 */ router3.routingTable.entries.add(rte); +/* */ +/* 140 */ rte = new RoutingTableEntry(); +/* 141 */ rte.net = "3.2.0.0"; rte.cidr = "24"; rte.gateway = "3.2.0.1"; rte.ifc = "3.2.0.0"; rte.isNew = false; +/* 142 */ router3.routingTable.entries.add(rte); +/* */ +/* 144 */ rte = new RoutingTableEntry(); +/* 145 */ rte.net = "0.0.0.0"; rte.cidr = "0"; rte.gateway = "3.0.0.1"; rte.ifc = "3.0.0.0"; rte.isNew = false; +/* 146 */ router3.routingTable.entries.add(rte); +/* */ +/* 148 */ placeDatagram(221, 221); +/* */ +/* 150 */ this.board.repaint(); +/* 151 */ JOptionPane.showMessageDialog(this.board, +/* 152 */ "Star - This network is constructed of three main networks connected using
\t\t
a router to each other. Each of these main networks is connected to another two
\t\t
\"sub-networks\".
\t\t
Hosts are allocated only in the \"sub-networks\".
\t\t
All routers are already configured to transfer datagrams between the hosts.
\t\t
Determine datagram's source and target, and send it"); +/* */ } +/* */ catch (Throwable e) +/* */ { +/* 160 */ return; +/* */ } +/* */ } +/* */ +/* */ public void placeNetwork2() { +/* */ try { +/* 166 */ Network net1 = placeNetwork(22, 292); +/* 167 */ net1.setCIDR_IP(new IPAddress("1.0.0.0"), 16); +/* 168 */ Network net2 = placeNetwork(324, 292); +/* 169 */ net2.setCIDR_IP(new IPAddress("2.0.0.0"), 16); +/* 170 */ Router router1 = placeRouter(206, 84); +/* 171 */ Router router2 = placeRouter(206, 489); +/* 172 */ Host h1 = placeHost(net1, 162, 310); +/* 173 */ Host h2 = placeHost(net2, 264, 310); +/* 174 */ connectNetworkToRouter(net1, router1); +/* 175 */ connectNetworkToRouter(net2, router2); +/* 176 */ connectNetworkToRouter(net1, router2); +/* 177 */ connectNetworkToRouter(net2, router1); +/* */ +/* 179 */ RoutingTableEntry rte = new RoutingTableEntry(); +/* 180 */ rte.net = "2.0.0.0"; +/* 181 */ rte.cidr = "255.0.0.0"; +/* 182 */ rte.gateway = "2.0.0.2"; +/* 183 */ rte.ifc = "2.0.0.0"; +/* 184 */ rte.isNew = false; +/* 185 */ router1.routingTable.entries.add(rte); +/* 186 */ rte = new RoutingTableEntry(); +/* 187 */ rte.net = "1.0.0.0"; +/* 188 */ rte.cidr = "255.0.0.0"; +/* 189 */ rte.gateway = "1.0.0.3"; +/* 190 */ rte.ifc = "1.0.0.0"; +/* 191 */ rte.isNew = false; +/* 192 */ router1.routingTable.entries.add(rte); +/* */ +/* 195 */ rte = new RoutingTableEntry(); +/* 196 */ rte.net = "1.0.0.0"; +/* 197 */ rte.cidr = "255.0.0.0"; +/* 198 */ rte.gateway = "1.0.0.2"; +/* 199 */ rte.ifc = "1.0.0.0"; +/* 200 */ rte.isNew = false; +/* 201 */ router2.routingTable.entries.add(rte); +/* 202 */ rte = new RoutingTableEntry(); +/* 203 */ rte.net = "2.0.0.0"; +/* 204 */ rte.cidr = "255.0.0.0"; +/* 205 */ rte.gateway = "2.0.0.3"; +/* 206 */ rte.ifc = "2.0.0.0"; +/* 207 */ rte.isNew = false; +/* 208 */ router2.routingTable.entries.add(rte); +/* */ +/* 210 */ Datagram d = placeDatagram(221, 221); +/* 211 */ d.setTTL(3); +/* 212 */ d.setSource(h1); +/* 213 */ d.setTarget(h2); +/* */ +/* 215 */ this.board.repaint(); +/* 216 */ JOptionPane.showMessageDialog(this.board, +/* 217 */ "Loop - This network simulates an error in the configuration of the routers.
\t\t
The source and the target of the datagram are already determined.
\t\t
Simply send the datagram and watch what happens.
"); +/* */ } +/* */ catch (Throwable e) +/* */ { +/* 223 */ return; +/* */ } +/* */ } +/* */ +/* */ public void placeNetwork3() { +/* */ try { +/* 228 */ Network net1 = placeNetwork(0, 0); +/* 229 */ net1.setCIDR_IP(new IPAddress("1.0.0.0"), 8); +/* 230 */ Router router1 = placeRouter(32, 120); +/* 231 */ connectNetworkToRouter(net1, router1); +/* 232 */ placeHost(net1, 150, 12); +/* */ +/* 234 */ Network net2 = placeNetwork(0, 215); +/* 235 */ net2.setCIDR_IP(new IPAddress("2.0.0.0"), 8); +/* 236 */ Router router2 = placeRouter(32, 335); +/* 237 */ connectNetworkToRouter(net2, router2); +/* 238 */ connectNetworkToRouter(net2, router1); +/* 239 */ placeHost(net2, 150, 225); +/* */ +/* 241 */ Network net3 = placeNetwork(0, 430); +/* 242 */ net3.setCIDR_IP(new IPAddress("3.0.0.0"), 8); +/* 243 */ Router router3 = placeRouter(32, 550); +/* 244 */ connectNetworkToRouter(net3, router3); +/* 245 */ connectNetworkToRouter(net3, router2); +/* 246 */ placeHost(net3, 150, 438); +/* */ +/* 248 */ Network net4 = placeNetwork(202, 540); +/* 249 */ net4.setCIDR_IP(new IPAddress("4.0.0.0"), 8); +/* 250 */ Router router4 = placeRouter(412, 550); +/* 251 */ connectNetworkToRouter(net4, router4); +/* 252 */ connectNetworkToRouter(net4, router3); +/* 253 */ placeHost(net4, 242, 483); +/* */ +/* 255 */ Network net5 = placeNetwork(380, 430); +/* 256 */ net5.setCIDR_IP(new IPAddress("5.0.0.0"), 8); +/* 257 */ Router router5 = placeRouter(412, 335); +/* 258 */ connectNetworkToRouter(net5, router5); +/* 259 */ connectNetworkToRouter(net5, router4); +/* 260 */ placeHost(net5, 312, 438); +/* */ +/* 262 */ Network net6 = placeNetwork(380, 215); +/* 263 */ net6.setCIDR_IP(new IPAddress("6.0.0.0"), 8); +/* 264 */ Router router6 = placeRouter(412, 120); +/* 265 */ connectNetworkToRouter(net6, router6); +/* 266 */ connectNetworkToRouter(net6, router5); +/* 267 */ placeHost(net6, 312, 225); +/* */ +/* 269 */ Network net7 = placeNetwork(380, 0); +/* 270 */ net7.setCIDR_IP(new IPAddress("7.0.0.0"), 8); +/* 271 */ connectNetworkToRouter(net7, router6); +/* 272 */ placeHost(net7, 312, 12); +/* */ +/* 274 */ placeDatagram(241, 120); +/* */ +/* 276 */ this.board.repaint(); +/* 277 */ JOptionPane.showMessageDialog(this.board, +/* 278 */ "Long - This network is constructed of a list of routers and networks.

Routers are not configured.

You may add networks, hosts, routers, datagrams and configure them as you like.
"); +/* */ } +/* */ catch (Throwable e) +/* */ { +/* 285 */ return; +/* */ } +/* */ } +/* */ +/* */ public Network placeNetwork(int x, int y) { +/* 290 */ x += 125; +/* 291 */ this.menuListener.setSelectedComponent(new MouseEvent(this.board, 0, 0L, 0, x, y, 1, false)); +/* 292 */ this.menuListener.actionPerformed(new ActionEvent(this, 1001, "Add Network")); +/* 293 */ Network net = (Network)this.menuListener.getLastItem(); +/* 294 */ net.setMTU(500); +/* 295 */ return net; +/* */ } +/* */ +/* */ public Router placeRouter(int x, int y) { +/* 299 */ x += 125; +/* 300 */ this.menuListener.setSelectedComponent(new MouseEvent(this.board, 0, 0L, 0, x, y, 1, false)); +/* 301 */ this.menuListener.actionPerformed(new ActionEvent(this, 1001, "Add Router")); +/* 302 */ return (Router)this.menuListener.getLastItem(); +/* */ } +/* */ +/* */ public Datagram placeDatagram(int x, int y) { +/* 306 */ x += 125; +/* 307 */ this.menuListener.setSelectedComponent(new MouseEvent(this.board, 0, 0L, 0, x, y, 1, false)); +/* 308 */ this.menuListener.actionPerformed(new ActionEvent(this, 1001, "Add Datagram")); +/* 309 */ return (Datagram)this.menuListener.getLastItem(); +/* */ } +/* */ +/* */ public Host placeHost(Network net, int x, int y) { +/* 313 */ x += 125; +/* 314 */ this.menuListener.setSelectedComponent(new MouseEvent(net, 0, 0L, 0, (int)net.getLocation().getX(), (int)net.getLocation().getY(), 1, false)); +/* 315 */ this.menuListener.actionPerformed(new ActionEvent(net, 1001, "Add Host")); +/* 316 */ Host host = (Host)this.menuListener.getLastItem(); +/* 317 */ host.setLocation(x, y); +/* 318 */ return host; +/* */ } +/* */ +/* */ public void connectNetworkToRouter(Network net, Router router) { +/* 322 */ router.networks.add(net); +/* 323 */ router.getIP(net); +/* 324 */ net.routers.add(router); +/* 325 */ if (net.defaultGateway == null) +/* 326 */ net.defaultGateway = router; +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.listeners.NetworkPlacementListener + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/listeners/NetworkTypeButtonListener.java b/mtutr/listeners/NetworkTypeButtonListener.java new file mode 100644 index 0000000..e3dc6c2 --- /dev/null +++ b/mtutr/listeners/NetworkTypeButtonListener.java @@ -0,0 +1,38 @@ +/** + * + */ +package mtutr.listeners; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import mtutr.MainDrawBoard; + +/** + * @author New user + * + */ +public class NetworkTypeButtonListener implements ActionListener { + + + private final MainDrawBoard mainDrawBoard; + private final boolean isIPv6; + + public NetworkTypeButtonListener(MainDrawBoard mainDrawBoard, boolean isIPv6) { + super(); + this.mainDrawBoard = mainDrawBoard; + this.isIPv6 = isIPv6; + } + + /* (non-Javadoc) + * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) + */ + @Override + public void actionPerformed(ActionEvent e) { + mainDrawBoard.setIPv6(isIPv6); + this.mainDrawBoard.removeAll(); + this.mainDrawBoard.updateUI(); + + } + +} diff --git a/mtutr/listeners/SelectionMouseListener.java b/mtutr/listeners/SelectionMouseListener.java new file mode 100644 index 0000000..8aa14ec --- /dev/null +++ b/mtutr/listeners/SelectionMouseListener.java @@ -0,0 +1,132 @@ +/* */ package mtutr.listeners; +/* */ +/* */ /* */ import java.awt.Color; +/* */ import java.awt.Component; +/* */ import java.awt.event.MouseEvent; +/* */ import java.awt.event.MouseListener; +/* */ import java.util.List; +/* */ import javax.swing.BorderFactory; +/* */ import javax.swing.JLabel; +import javax.swing.JOptionPane; + +import mtutr.MainDrawBoard; +import mtutr.objects.Datagram; +import mtutr.objects.Host; +import mtutr.objects.IPKitItem; +import mtutr.objects.Network; +import mtutr.objects.Router; +/* */ +/* */ public class SelectionMouseListener +/* */ implements MouseListener +/* */ { +/* 20 */ MainDrawBoard board = null; +/* */ public Class selectionClass; +/* 22 */ public IPKitItem selectedObject = null; +/* */ public boolean source; +/* */ +/* */ public SelectionMouseListener(MainDrawBoard theBoard) +/* */ { +/* 26 */ this.board = theBoard; +/* */ } +/* */ +/* */ public void mouseClicked(MouseEvent event) { +/* 30 */ Component comp = this.board.getComponentAt(event.getPoint()); +/* 31 */ if (this.selectedObject instanceof Router) { +/* 32 */ Router router = (Router)this.selectedObject; +/* 33 */ if (comp.getClass().equals(this.selectionClass)) { +/* 34 */ Network net = (Network)comp; +/* 35 */ if (net.getIP() == null) { +/* 36 */ JOptionPane.showMessageDialog(this.board, "Unable connecting to router while network's IP addresses haven't defined.\nDefine network's IP addresses before connecting it to a router.", +/* 37 */ "Warning", 2); +/* 38 */ return; +/* */ } +/* */ +/* 41 */ if (router.networks.contains(comp)) { +/* 42 */ ((JLabel)comp).setBorder(BorderFactory.createEmptyBorder()); +/* 43 */ router.networks.remove(comp); +/* 44 */ net.routers.remove(this.selectedObject); +/* 45 */ net.deAllocateIP(this.selectedObject); +/* */ } +/* 48 */ else if (net.allocateIP(this.selectedObject) != null) { +/* 49 */ net.setBorder(BorderFactory.createLineBorder(Color.GREEN)); +/* 50 */ router.networks.add(comp); +/* 51 */ net.routers.add(this.selectedObject); +/* 52 */ if (net.routers.size() == 1) +/* 53 */ net.defaultGateway = ((Router)this.selectedObject); +/* */ } +/* */ else +/* */ { +/* 57 */ JOptionPane.showMessageDialog(this.board, "Unable to connect router to selected network: IP addresses pool is empty."); +/* */ } +/* */ +/* */ } +/* */ +/* */ } +/* 63 */ else if (this.selectedObject instanceof Datagram) { +/* 64 */ if (comp instanceof Host) { +/* 65 */ Datagram dg = (Datagram)this.selectedObject; +/* */ +/* 67 */ Host host1 = (this.source) ? dg.getSource() : dg.getTarget(); +/* 68 */ if (host1 != null) { +/* 69 */ host1.setBorder(BorderFactory.createEmptyBorder()); +/* */ } +/* */ +/* 72 */ Host host2 = (Host)comp; +/* 73 */ if (host2.equals(host1)) +/* */ { +/* 75 */ host2.setBorder(BorderFactory.createEmptyBorder()); +/* 76 */ host2 = null; +/* */ } +/* */ else +/* */ { +/* 80 */ host2.setBorder(BorderFactory.createLineBorder(Color.GREEN)); +/* */ } +/* */ +/* 83 */ if (this.source) { +/* 84 */ dg.setSource(host2); +/* */ } +/* */ else { +/* 87 */ dg.setTarget(host2); +/* */ } +/* */ } +/* */ } +/* 91 */ else if (this.selectedObject instanceof Network) { +/* 92 */ Network net = (Network)this.selectedObject; +/* 93 */ Router defaultGateway = net.defaultGateway; +/* 94 */ if (defaultGateway != null) { +/* 95 */ defaultGateway.setBorder(BorderFactory.createLineBorder(Color.GREEN)); +/* */ } +/* 97 */ if (comp instanceof Router) { +/* 98 */ Router r = (Router)comp; +/* 99 */ if (net.routers.contains(r)) { +/* 100 */ if (defaultGateway != null) { +/* 101 */ defaultGateway.setBorder(BorderFactory.createLineBorder(Color.BLUE)); +/* */ } +/* 103 */ r.setBorder(BorderFactory.createLineBorder(Color.GREEN)); +/* 104 */ net.defaultGateway = r; +/* */ } +/* */ } +/* */ } +/* */ } +/* */ +/* */ public void mouseEntered(MouseEvent arg0) +/* */ { +/* */ } +/* */ +/* */ public void mouseExited(MouseEvent arg0) +/* */ { +/* */ } +/* */ +/* */ public void mousePressed(MouseEvent arg0) +/* */ { +/* */ } +/* */ +/* */ public void mouseReleased(MouseEvent arg0) +/* */ { +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.listeners.SelectionMouseListener + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/messages/AnimationMonitor.java b/mtutr/messages/AnimationMonitor.java new file mode 100644 index 0000000..2877a51 --- /dev/null +++ b/mtutr/messages/AnimationMonitor.java @@ -0,0 +1,165 @@ +package mtutr.messages; + +import java.awt.Color; +import java.awt.Component; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Iterator; +import java.util.Map; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JToggleButton; + +import mtutr.objects.Datagram; +import mtutr.objects.Network; +import mtutr.objects.RouteTestResult; +import mtutr.objects.Router; + +public class AnimationMonitor extends JPanel implements ActionListener { + private static final long serialVersionUID = 1L; + private static AnimationMonitor instance = null; + private final JLabel MTULabel; + private final JLabel ttlLabel; + private final JLabel errLabel; + private final JToggleButton stopAnimn; + public boolean shouldStop = false; + public JLabel legendLabel; + + public static AnimationMonitor getInstance() { + if (instance == null) { + instance = new AnimationMonitor(); + } + return instance; + } + + public void updateTTL(int ttl) { + this.ttlLabel.setText("TTL: " + ttl + " "); + this.ttlLabel.updateUI(); + } + + public void updateMTU(int mtu) { + this.MTULabel.setText("Datagram size: " + mtu + " "); + } + + public void updateMTUs(Map fragments) { + StringBuffer sb = new StringBuffer(); + sb + .append("Datagram fragments: fragment size(num of fragments)   "); + Iterator it = fragments.keySet().iterator(); + while (it.hasNext()) { + Object o = it.next(); + sb.append(""); + } + sb.append("
").append(o).append(" (x").append(fragments.get(o)) + .append(")
"); + this.MTULabel.setText(sb.toString()); + } + + public void setError(String err) { + this.errLabel.setText(err); + this.errLabel.updateUI(); + } + + public void enableStop() { + this.shouldStop = false; + this.stopAnimn.setVisible(true); + this.stopAnimn.setText("Stop Simulation"); + this.stopAnimn.setEnabled(true); + this.stopAnimn.setSelected(false); + this.stopAnimn.setForeground(Color.black); + repaint(); + } + + public void enableStopping() { + this.shouldStop = true; + this.stopAnimn.setVisible(true); + this.stopAnimn.setText("Stopping Simulation..."); + this.stopAnimn.setSelected(true); + repaint(); + } + + public void hideStopSim() { + this.stopAnimn.setVisible(false); + repaint(); + } + + public void setLegend(Component obj, Datagram d) { + if (obj == null) { + this.legendLabel.setText(""); + return; + } + + String str = "       "; + + if (obj instanceof Router) { + RouteTestResult rtr = ((Router) obj).routingTable.findMatch(d + .getTarget().getIP()); + if (rtr == null) { + this.legendLabel.setText(""); + return; + } + + str = str + "Current Router: matched routing entry
"; + str = str + + "            " + + rtr.rte.toString(); + this.legendLabel.setText("" + str + ""); + } else if (obj instanceof Network) { + str = str + "Current Network
"; + str = str + + "            MTU size:  " + + ((Network) obj).getMTU(); + this.legendLabel.setText("" + str + ""); + } + } + + private AnimationMonitor() { + FlowLayout fl = new FlowLayout(); + fl.setAlignment(0); + setLayout(fl); + + setOpaque(false); + + this.MTULabel = new JLabel(""); + this.MTULabel.setHorizontalAlignment(10); + this.MTULabel.setFont(new Font("Tahoma", 0, 11)); + add(this.MTULabel); + + this.ttlLabel = new JLabel(""); + this.ttlLabel.setHorizontalAlignment(10); + this.ttlLabel.setFont(new Font("Tahoma", 0, 11)); + add(this.ttlLabel); + + this.errLabel = new JLabel(""); + this.errLabel.setHorizontalAlignment(10); + this.errLabel.setFont(new Font("Tahoma", 0, 11)); + this.errLabel.setForeground(Color.RED); + add(this.errLabel); + + this.stopAnimn = new JToggleButton("Stop Simulation"); + this.stopAnimn.setHorizontalAlignment(10); + this.stopAnimn.setFont(new Font("Tahoma", 0, 11)); + this.stopAnimn.setBackground(new Color(188, 213, 254)); + this.stopAnimn.addActionListener(this); + add(this.stopAnimn); + + this.legendLabel = new JLabel(""); + this.legendLabel.setHorizontalAlignment(10); + this.legendLabel.setFont(new Font("Tahoma", 0, 11)); + add(this.legendLabel); + + repaint(); + } + + public void actionPerformed(ActionEvent arg0) { + enableStopping(); + } +} + +/* + * Location: C:\Users\MT\Desktop\mtutr.jar Qualified Name: + * mtutr.messages.AnimationMonitor JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/messages/HostSelectionMessage.java b/mtutr/messages/HostSelectionMessage.java new file mode 100644 index 0000000..a3af246 --- /dev/null +++ b/mtutr/messages/HostSelectionMessage.java @@ -0,0 +1,56 @@ +/* */ package mtutr.messages; +/* */ +/* */ /* */ import java.awt.Color; +/* */ import java.awt.FlowLayout; +/* */ import java.awt.Font; +/* */ import java.awt.event.ActionEvent; +/* */ import java.awt.event.ActionListener; +/* */ import javax.swing.JButton; +/* */ import javax.swing.JLabel; +import javax.swing.JPanel; + +import mtutr.MainDrawBoard; +/* */ +/* */ public class HostSelectionMessage extends JPanel +/* */ { +/* */ private static final long serialVersionUID = 1L; +/* 17 */ private static HostSelectionMessage instance = null; +/* 18 */ private static JLabel label = null; +/* */ +/* */ public static HostSelectionMessage getInstance(boolean source) { +/* 21 */ if (instance == null) { +/* 22 */ instance = new HostSelectionMessage(source); +/* */ } +/* */ +/* 25 */ label.setText("Select " + ((source) ? "source" : "target") + " host of datagram "); +/* */ +/* 27 */ return instance; +/* */ } +/* */ +/* */ private HostSelectionMessage(boolean source) { +/* 31 */ FlowLayout fl = new FlowLayout(); +/* 32 */ fl.setAlignment(0); +/* 33 */ setLayout(fl); +/* */ +/* 35 */ setOpaque(false); +/* */ +/* 37 */ label = new JLabel("Select " + ((source) ? "source" : "target") + " host of datagram "); +/* 38 */ label.setHorizontalAlignment(10); +/* 39 */ label.setFont(new Font("Tahoma", 0, 11)); +/* 40 */ add(label); +/* 41 */ JButton button = new JButton("Done"); +/* 42 */ button.setBackground(new Color(188, 213, 254)); +/* 43 */ button.setFont(new Font("Tahoma", 0, 11)); +/* 44 */ button.addActionListener(new ActionListener() { +/* */ public void actionPerformed(ActionEvent event) { +/* 46 */ MainDrawBoard.staticInstance.exitHostSelectionMode(); +/* */ } +/* */ }); +/* 49 */ add(button); +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.messages.HostSelectionMessage + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/messages/NetworkSelectionMessage.java b/mtutr/messages/NetworkSelectionMessage.java new file mode 100644 index 0000000..9c7fbfc --- /dev/null +++ b/mtutr/messages/NetworkSelectionMessage.java @@ -0,0 +1,52 @@ +/* */ package mtutr.messages; +/* */ +/* */ /* */ import java.awt.Color; +/* */ import java.awt.FlowLayout; +/* */ import java.awt.Font; +/* */ import java.awt.event.ActionEvent; +/* */ import java.awt.event.ActionListener; +/* */ import javax.swing.JButton; +/* */ import javax.swing.JLabel; +import javax.swing.JPanel; + +import mtutr.MainDrawBoard; +/* */ +/* */ public class NetworkSelectionMessage extends JPanel +/* */ { +/* */ private static final long serialVersionUID = 1L; +/* 17 */ private static NetworkSelectionMessage instance = null; +/* */ +/* */ public static NetworkSelectionMessage getInstance() { +/* 20 */ if (instance == null) { +/* 21 */ instance = new NetworkSelectionMessage(); +/* */ } +/* 23 */ return instance; +/* */ } +/* */ +/* */ private NetworkSelectionMessage() { +/* 27 */ FlowLayout fl = new FlowLayout(); +/* 28 */ fl.setAlignment(0); +/* 29 */ setLayout(fl); +/* */ +/* 31 */ setOpaque(false); +/* */ +/* 33 */ JLabel label = new JLabel("Select networks by mouse left button "); +/* 34 */ label.setHorizontalAlignment(10); +/* 35 */ label.setFont(new Font("Tahoma", 0, 11)); +/* 36 */ add(label); +/* 37 */ JButton button = new JButton("Done"); +/* 38 */ button.setBackground(new Color(188, 213, 254)); +/* 39 */ button.setFont(new Font("Tahoma", 0, 11)); +/* 40 */ button.addActionListener(new ActionListener() { +/* */ public void actionPerformed(ActionEvent event) { +/* 42 */ MainDrawBoard.staticInstance.exitSelectionMode(); +/* */ } +/* */ }); +/* 45 */ add(button); +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.messages.NetworkSelectionMessage + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/messages/RouterSelectionMessage.java b/mtutr/messages/RouterSelectionMessage.java new file mode 100644 index 0000000..1039208 --- /dev/null +++ b/mtutr/messages/RouterSelectionMessage.java @@ -0,0 +1,52 @@ +/* */ package mtutr.messages; +/* */ +/* */ /* */ import java.awt.Color; +/* */ import java.awt.FlowLayout; +/* */ import java.awt.Font; +/* */ import java.awt.event.ActionEvent; +/* */ import java.awt.event.ActionListener; +/* */ import javax.swing.JButton; +/* */ import javax.swing.JLabel; +import javax.swing.JPanel; + +import mtutr.MainDrawBoard; +/* */ +/* */ public class RouterSelectionMessage extends JPanel +/* */ { +/* */ private static final long serialVersionUID = 1L; +/* 17 */ private static RouterSelectionMessage instance = null; +/* */ +/* */ public static RouterSelectionMessage getInstance(MainDrawBoard board) { +/* 20 */ if (instance == null) { +/* 21 */ instance = new RouterSelectionMessage(board); +/* */ } +/* 23 */ return instance; +/* */ } +/* */ +/* */ private RouterSelectionMessage(MainDrawBoard theBoard) { +/* 27 */ FlowLayout fl = new FlowLayout(); +/* 28 */ fl.setAlignment(0); +/* 29 */ setLayout(fl); +/* */ +/* 31 */ setOpaque(false); +/* */ +/* 33 */ JLabel label = new JLabel("Select network's default gateway "); +/* 34 */ label.setHorizontalAlignment(10); +/* 35 */ label.setFont(new Font("Tahoma", 0, 11)); +/* 36 */ add(label); +/* 37 */ JButton button = new JButton("Done"); +/* 38 */ button.setBackground(new Color(188, 213, 254)); +/* 39 */ button.setFont(new Font("Tahoma", 0, 11)); +/* 40 */ button.addActionListener(new ActionListener() { +/* */ public void actionPerformed(ActionEvent event) { +/* 42 */ MainDrawBoard.staticInstance.exitRouterSelectionMode(); +/* */ } +/* */ }); +/* 45 */ add(button); +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.messages.RouterSelectionMessage + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/objects/.p4ignore b/mtutr/objects/.p4ignore new file mode 100644 index 0000000..af8fd8b --- /dev/null +++ b/mtutr/objects/.p4ignore @@ -0,0 +1,8 @@ +Datagram.java +Host.java +IPKitItem.java +Network.java +RouteTestResult.java +Router.java +RoutingTable.java +RoutingTableEntry.java diff --git a/mtutr/objects/Datagram.java b/mtutr/objects/Datagram.java new file mode 100644 index 0000000..553b38d --- /dev/null +++ b/mtutr/objects/Datagram.java @@ -0,0 +1,365 @@ +package mtutr.objects; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Font; +import java.awt.Point; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedList; + +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.JOptionPane; + +import mtutr.MainDrawBoard; +import mtutr.messages.AnimationMonitor; + +public class Datagram extends JLabel implements IPKitItem, Runnable { + private static final long serialVersionUID = 1L; + private int ttl; + private int length; + private Host source; + private Host target; + private final LinkedList path = new LinkedList(); + public ImageIcon main = null; + public ImageIcon frag = null; + + private int largets_fragment = 0; + public HashMap fragments = null; + + public Datagram(String string) { + super(string); + this.ttl = 10; + this.length = 500; + } + + public void dispatchEvent() { + } + + public Component getjComponent() { + return this; + } + + public void setTTL(int i) { + this.ttl = i; + } + + public int getTTL() { + return this.ttl; + } + + public void setLength(int i) { + this.length = i; + } + + public int getLength() { + return this.length; + } + + public Host getSource() { + return this.source; + } + + public void setSource(Host source) { + this.source = source; + } + + public Host getTarget() { + return this.target; + } + + public void setTarget(Host target) { + this.target = target; + } + + public void send() { + this.path.clear(); + this.path.add(this.source); + this.path.add(this.source.network); + if (this.source.network.equals(this.target.network)) { + this.path.add(this.target); + } else if (this.source.network.defaultGateway != null) { + calculateRoute(); + } + + new Thread(this).start(); + } + + protected void calculateRoute() { + int routers_count = 0; + Router router = this.source.network.defaultGateway; + this.path.add(router); + RouteTestResult rtr = null; + Network net = null; + while (true) { + rtr = router.routingTable.findMatch(this.target.getIP()); + if (rtr == null) { + break; + } + + if (rtr.nextHop.equals(router.getIP(rtr.network))) { + this.path.add(rtr.network); + if (!rtr.network.hosts.contains(this.target)) + break; + this.path.add(this.target); + + break; + } + + net = rtr.network; + router = net.getRouter(rtr.nextHop); + this.path.add(net); + + if (router == null) { + break; + } + this.path.add(router); + ++routers_count; + if (routers_count > this.ttl + 1) { + break; + } + + } + } + + public void runAnimation() { + Point origLoc = getLocation(); + int localTTL = this.ttl; + + this.fragments = new HashMap(); + this.fragments.put(new Integer(this.length), new Integer(1)); + this.largets_fragment = this.length; + + MainDrawBoard board = MainDrawBoard.staticInstance; + AnimationMonitor animMonitor = AnimationMonitor.getInstance(); + animMonitor.updateTTL(localTTL); + animMonitor.updateMTU(this.length); + animMonitor.setError(""); + animMonitor.setLegend(null, this); + animMonitor.enableStop(); + animMonitor.repaint(); + board.removeMouseListener(board.mouseListener); + board.messagePanel.add(animMonitor); + + board.updateUI(); + board.messagePanel.updateUI(); + + Component src = null; + Component trg = null; + boolean err = false; + + if (this.path.size() < 3) { + animMonitor + .setError("Datagram can not be sent: no default router available."); + } else { + for (int i = 1; i < this.path.size(); ++i) { + if (animMonitor.shouldStop) { + break; + } + src = (Component) this.path.get(i - 1); + trg = (Component) this.path.get(i); + + if (src instanceof Router) { + if (localTTL == 0) { + animMonitor.setError("Datagram expired"); + err = true; + break; + } + + --localTTL; + animMonitor.updateTTL(localTTL); + } + + if (trg instanceof Network) { + int mtu = ((Network) trg).getMTU(); + if (mtu < this.largets_fragment) { + setIcon(this.frag); + + this.largets_fragment = mtu; + + HashMap newFragments = new HashMap(); + + Iterator it = this.fragments.keySet().iterator(); + Integer size = null; + Integer count = null; + + Integer tmpVal = null; + while (it.hasNext()) { + size = (Integer) it.next(); + count = (Integer) this.fragments.get(size); + if (size.intValue() > mtu) { + int s1 = size.intValue() % mtu; + int s2 = mtu; + + int c1 = (size.intValue() % mtu == 0) ? 0 + : count.intValue(); + int c2 = size.intValue() / mtu + * count.intValue(); + + if ((s1 != 0) && (c1 != 0)) { + tmpVal = (Integer) newFragments + .get(new Integer(s1)); + if (tmpVal == null) { + newFragments.put(new Integer(s1), + new Integer(c1)); + } else { + newFragments.put(new Integer(s1), + new Integer(c1 + + tmpVal.intValue())); + } + } + + tmpVal = (Integer) newFragments + .get(new Integer(s2)); + if (tmpVal == null) { + newFragments.put(new Integer(s2), + new Integer(c2)); + } else + newFragments + .put(new Integer(s2), new Integer( + c2 + tmpVal.intValue())); + } else { + tmpVal = (Integer) newFragments.get(size); + if (tmpVal == null) { + newFragments.put(size, count); + } else { + newFragments.put(size, new Integer(count + .intValue() + + tmpVal.intValue())); + } + } + } + this.fragments = newFragments; + it = this.fragments.values().iterator(); + int acc = 0; + while (it.hasNext()) { + acc += ((Integer) it.next()).intValue(); + } + + setFont(new Font("Tahoma", 1, 15)); + setForeground(Color.blue); + setText(" (" + acc + ")"); + setSize(getPreferredSize()); + + animMonitor.updateMTUs(this.fragments); + } + } + runAnimation(src, trg, animMonitor); + } + } + + if (!err) { + if (animMonitor.shouldStop) { + animMonitor.setError("Simulation stopped due to user request"); + } else if (this.path.get(this.path.size() - 1) instanceof Network) { + animMonitor + .setError("Host can not be reached: check routing tables settings."); + err = true; + } else if (this.path.get(this.path.size() - 1) instanceof Router) { + animMonitor + .setError("Message dropped by router: no matching lines in routing table"); + err = true; + } + + } + + animMonitor.hideStopSim(); + animMonitor.setLegend(null, this); + + JOptionPane.showMessageDialog(board, "Simulation" + + ((animMonitor.shouldStop) ? " interrupted" : " completed") + + ((err) ? " with errors" : ""), "Message", (err) ? 0 : 1); + + setText(""); + setIcon(this.main); + setSize(getPreferredSize()); + + setLocation(origLoc); + board.repaint(); + board.messagePanel.remove(animMonitor); + + board.messagePanel.updateUI(); + board.updateUI(); + board.addMouseListener(board.mouseListener); + } + + public void runAnimation(Component src, Component trg, + AnimationMonitor animMonitor) { + MainDrawBoard board = MainDrawBoard.staticInstance; + + boolean overItem = false; + + int sourceX = src.getX() + src.getWidth() / 2; + int sourceY = src.getY() + src.getHeight() / 2; + int targetX = trg.getX() + trg.getWidth() / 2; + int targetY = trg.getY() + trg.getHeight() / 2; + + double x = sourceX; + double y = sourceY; + + if (targetX != sourceX) { + double a = (targetY - sourceY) / (targetX - sourceX); + double b = sourceY - a * sourceX; + + int sign = (targetX > sourceX) ? 1 : -1; + do { + do { + x += 1 * sign; + y = (int) (a * x + b); + + Component overComp = board.getComponentAt((int) x, (int) y); + if ((overComp instanceof Router) + || (overComp instanceof Network)) { + if (!overItem) { + overItem = true; + animMonitor.setLegend(overComp, this); + animMonitor.repaint(); + } + + } else if (overItem) { + overItem = false; + } + + setLocation((int) x, (int) y); + board.repaint(); + try { + Thread.sleep(30L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } while ((sign == 1) && (x <= targetX)); + if (sign != -1) + return; + } while (x >= targetX); + } else { + int sign = (targetY > sourceY) ? 1 : -1; + while (((sign == 1) && (y <= targetY)) + || ((sign == -1) && (y >= targetY))) { + y += 1 * sign; + + setLocation((int) x, (int) y); + board.repaint(); + try { + Thread.sleep(40L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + } + + public void run() { + try { + Thread.sleep(500L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + runAnimation(); + } +} + +/* + * Location: C:\Users\MT\Desktop\mtutr.jar Qualified Name: + * mtutr.objects.Datagram JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/objects/Host.java b/mtutr/objects/Host.java new file mode 100644 index 0000000..7e97538 --- /dev/null +++ b/mtutr/objects/Host.java @@ -0,0 +1,33 @@ +package mtutr.objects; + +import java.awt.Component; + +import javax.swing.JLabel; + +import mtutr.common.IPAddress; + +public class Host extends JLabel implements IPKitItem { + private static final long serialVersionUID = 1L; + public Network network = null; + + public Host(String string, Network net) { + super(string); + this.network = net; + } + + public IPAddress getIP() { + return this.network.allocateIP(this); + } + + public void dispatchEvent() { + } + + public Component getjComponent() { + return this; + } +} + +/* + * Location: C:\Users\MT\Desktop\mtutr.jar Qualified Name: mtutr.objects.Host + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/objects/IPKitItem.java b/mtutr/objects/IPKitItem.java new file mode 100644 index 0000000..84bd740 --- /dev/null +++ b/mtutr/objects/IPKitItem.java @@ -0,0 +1,15 @@ +package mtutr.objects; + +import java.awt.Component; + +public abstract interface IPKitItem +{ + public abstract void dispatchEvent(); + + public abstract Component getjComponent(); +} + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.objects.IPKitItem + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/objects/Network.java b/mtutr/objects/Network.java new file mode 100644 index 0000000..54a5a1b --- /dev/null +++ b/mtutr/objects/Network.java @@ -0,0 +1,191 @@ +package mtutr.objects; + +import java.awt.Component; +import java.awt.Font; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import javax.swing.JLabel; + +import mtutr.MainDrawBoard; +import mtutr.common.IPAddress; + +public class Network extends JLabel implements IPKitItem { + private static final long serialVersionUID = 1L; + public List hosts = new LinkedList(); + public List routers = new LinkedList(); + private IPAddress netAddress; + private int cidr = 0; + private int mtu = 0; + private boolean isCIDR = false; + private boolean isAssigned = false; + public Router defaultGateway = null; + private final MainDrawBoard board; + private final Map dhcp = new Hashtable(); + long nextHostIP = -1L; + + private IPAddress findNextValidHostIP() { + long current = this.nextHostIP++; + IPAddress ipAddr = new IPAddress(0L); + while (this.nextHostIP != current) { + if ((this.nextHostIP == -2147483648L) + || ((this.isCIDR) && (!this.netAddress.isLegalHostWithCIDR( + this.nextHostIP, this.cidr))) + || ((!this.isCIDR) && (!this.netAddress + .isLegalHostWithClasses(this.nextHostIP)))) { + this.nextHostIP = (this.netAddress.getIPLong() + 1L); + } else { + ipAddr.setIP(this.nextHostIP); + if (this.dhcp.containsValue(ipAddr)) { + this.nextHostIP += 1L; + } else + return ipAddr; + } + } + return null; + } + + public IPAddress allocateIP(Object obj) { + if (!this.dhcp.containsKey(obj)) { + IPAddress ip = findNextValidHostIP(); + if (ip == null) { + return null; + } + + this.dhcp.put(obj, ip); + return ip; + } + + return (IPAddress) this.dhcp.get(obj); + } + + public void deAllocateIP(Object obj) { + if (this.dhcp.containsKey(obj)) + this.nextHostIP = (((IPAddress) this.dhcp.remove(obj)).getIPLong() - 1L); + } + + public Router getRouter(IPAddress ip) { + Iterator it = this.routers.iterator(); + Router r = null; + while (it.hasNext()) { + r = (Router) it.next(); + if (this.dhcp.get(r).equals(ip)) { + return r; + } + } + + return null; + } + + public Network(MainDrawBoard theBoard) { + super("    Not assigned"); + setFont(new Font("Tahoma", 1, 11)); + this.board = theBoard; + } + + public void setCIDR_IP(IPAddress newIP, int _cidr) { + if ((!this.isAssigned) || (this.netAddress == null) || (!this.isCIDR) + || (this.cidr != _cidr) || (!newIP.equals(this.netAddress))) { + this.netAddress = newIP; + this.isAssigned = true; + setText("
" + + newIP.getIPStr() + + "
           /" + + _cidr + ""); + + this.isCIDR = true; + this.cidr = _cidr; + this.dhcp.clear(); + this.nextHostIP = newIP.getIPLong(); + } + + MainDrawBoard.staticInstance.repaint(); + } + + public static String getClassName(int className) { + switch (className) { + case 8: + return "A"; + case 16: + return "B"; + case 24: + return "C"; + case 32: + return "D"; + } + return "undefined"; + } + + public void setCLASS_IP(IPAddress newIP) { + if ((!this.isAssigned) || (this.netAddress == null) || (this.isCIDR) + || (newIP.getIPClass() == this.netAddress.getIPClass()) + || (!newIP.equals(this.netAddress))) { + this.netAddress = newIP; + this.isAssigned = true; + setText("
" + + newIP.getIPStr() + + "
           (" + + getClassName(this.netAddress.getIPClass()) + + ")"); + this.isCIDR = false; + this.dhcp.clear(); + this.nextHostIP = newIP.getIPLong(); + } + MainDrawBoard.staticInstance.repaint(); + } + + public IPAddress getIP() { + return this.netAddress; + } + + public int getCIDR() { + return this.cidr; + } + + public void setCIDR(Integer theCIDR) { + this.cidr = theCIDR.intValue(); + } + + public void setCIDR(int theCIDR) { + this.cidr = theCIDR; + } + + public void dispatchEvent() { + } + + public void setMTU(Integer theMTU) { + this.mtu = theMTU.intValue(); + } + + public void setMTU(int theMTU) { + this.mtu = theMTU; + } + + public int getMTU() { + return this.mtu; + } + + public boolean getIsCIDR() { + return this.isCIDR; + } + + public boolean isAssigned() { + return this.isAssigned; + } + + public Component getjComponent() { + return this; + } + + public void removeAllConnections() { + this.board.removeNetworkConnections(this); + } +} + +/* + * Location: C:\Users\MT\Desktop\mtutr.jar Qualified Name: mtutr.objects.Network + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/objects/RouteTestResult.java b/mtutr/objects/RouteTestResult.java new file mode 100644 index 0000000..bd8ba7b --- /dev/null +++ b/mtutr/objects/RouteTestResult.java @@ -0,0 +1,30 @@ +package mtutr.objects; + +import mtutr.common.IPAddress; + +public class RouteTestResult implements Comparable { + public int bits; + public IPAddress ifc; + public IPAddress nextHop; + public Network network; + public RoutingTableEntry rte; + + public RouteTestResult(RoutingTableEntry r) { + this.rte = r; + } + + public int compareTo(Object o) { + if (o instanceof RouteTestResult) { + RouteTestResult r = (RouteTestResult) o; + return this.bits - r.bits; + } + + System.out.print("Invalid object"); + return -1; + } +} + +/* + * Location: C:\Users\MT\Desktop\mtutr.jar Qualified Name: + * mtutr.objects.RouteTestResult JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/objects/Router.java b/mtutr/objects/Router.java new file mode 100644 index 0000000..11cc610 --- /dev/null +++ b/mtutr/objects/Router.java @@ -0,0 +1,112 @@ +package mtutr.objects; + +import java.awt.Component; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.ListIterator; + +import javax.swing.JLabel; + +import mtutr.common.IPAddress; + +public class Router extends JLabel implements IPKitItem { + private static final long serialVersionUID = 1L; + public List networks = new LinkedList(); + public RoutingTable routingTable = new RoutingTable(this); + + public Router(String string) { + super(string); + } + + public IPAddress getIP(Network net) { + return net.allocateIP(this); + } + + public void dispatchEvent() { + } + + private Network findNetworkByIP(String a) { + try { + IPAddress ip = new IPAddress(a); + Iterator it = this.networks.iterator(); + while (it.hasNext()) { + Network net = null; + net = (Network) it.next(); + if (net.getIP().equals(ip)) { + return net; + } + } + return null; + } catch (Throwable e) { + } + return null; + } + + public boolean cleanRoutingTable() { + if ((this.networks.size() == 0) + && (this.routingTable.entries.size() != 0)) { + this.routingTable.entries.clear(); + return true; + } + + boolean rtChanged = false; + Iterator it = this.routingTable.entries.iterator(); + RoutingTableEntry rte = null; + while (it.hasNext()) { + rte = (RoutingTableEntry) it.next(); + if (findNetworkByIP(rte.ifc) == null) { + it.remove(); + rtChanged = true; + } + } + + return rtChanged; + } + + private boolean cleanRoutingTableByNet(Network net) { + boolean rtChanged = false; + IPAddress netIP = net.getIP(); + if (netIP == null) { + return false; + } + ListIterator it = this.routingTable.entries.listIterator(); + while (it.hasNext()) { + RoutingTableEntry rte = (RoutingTableEntry) it.next(); + if (netIP.equals(rte.ifc)) { + it.remove(); + rtChanged = true; + } + } + return rtChanged; + } + + public boolean detachFromNetwork(Network net) { + if (this.networks.contains(net)) { + this.networks.remove(net); + } + + return cleanRoutingTableByNet(net); + } + + public Network getNetwork(IPAddress ifc) { + Iterator it = this.networks.iterator(); + + while (it.hasNext()) { + Network network = (Network) it.next(); + if (network.getIP().equals(ifc)) { + return network; + } + } + return null; + } + + public Component getjComponent() { + return this; + } +} + +/* + * Location: C:\Users\MT\Desktop\mtutr.jar Qualified Name: mtutr.objects.Router + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/objects/RoutingTable.java b/mtutr/objects/RoutingTable.java new file mode 100644 index 0000000..6aec3b0 --- /dev/null +++ b/mtutr/objects/RoutingTable.java @@ -0,0 +1,248 @@ +package mtutr.objects; + +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.ListIterator; + +import javax.swing.JLabel; +import javax.swing.table.AbstractTableModel; + +import mtutr.common.IPAddress; + +public class RoutingTable extends AbstractTableModel { + private static final long serialVersionUID = 1L; + public LinkedList entries = new LinkedList(); + public LinkedList backupDeletedEntries = null; + boolean val; + Router router; + JLabel errMsgContainer; + + public void addDefaultEntry() { + RoutingTableEntry rte = new RoutingTableEntry(); + rte.net = "0.0.0.0"; + rte.cidr = "0"; + this.entries.add(rte); + fireTableRowsInserted(1, 1); + } + + public void addEntriesForInterface() { + Iterator it = this.router.networks.iterator(); + Network net = null; + RoutingTableEntry rte = null; + while (it.hasNext()) { + net = (Network) it.next(); + rte = new RoutingTableEntry(); + rte.net = net.getIP().toString(); + if (net.getIsCIDR()) { + rte.cidr = Integer.toString(net.getCIDR()); + } else { + rte.cidr = Integer.toString(net.getIP().getIPClass()); + } + rte.gateway = this.router.getIP(net).toString(); + rte.ifc = net.getIP().toString(); + this.entries.add(rte); + } + + if (this.router.networks.size() != 0) + fireTableRowsInserted(1, this.router.networks.size()); + } + + public void clear() { + if (this.backupDeletedEntries == null) { + this.backupDeletedEntries = this.entries; + } + this.entries = new LinkedList(); + fireTableRowsDeleted(0, 0); + } + + public void openedInEditor(JLabel comp) { + this.errMsgContainer = comp; + backupBeforeEdit(); + } + + public void backupBeforeEdit() { + Iterator it = this.entries.iterator(); + RoutingTableEntry rte = null; + while (it.hasNext()) { + rte = (RoutingTableEntry) it.next(); + rte.backup(); + } + } + + public void rollbackAfterChange() { + if (this.backupDeletedEntries != null) { + this.entries = this.backupDeletedEntries; + this.backupDeletedEntries = null; + } + ListIterator it = this.entries.listIterator(); + RoutingTableEntry rte = null; + while (it.hasNext()) { + rte = (RoutingTableEntry) it.next(); + if (rte.isNew) { + it.remove(); + } else + rte.rollback(); + } + } + + public void commitData() { + this.backupDeletedEntries = null; + Iterator it = this.entries.iterator(); + while (it.hasNext()) + ((RoutingTableEntry) it.next()).isNew = false; + } + + public RoutingTable(Router r) { + this.router = r; + } + + public int getColumnCount() { + return 5; + } + + public int getRowCount() { + return this.entries.size(); + } + + public Object getValueAt(int row, int col) { + switch (col) { + case 0: + return ((RoutingTableEntry) this.entries.get(row)).net; + case 1: + return ((RoutingTableEntry) this.entries.get(row)).cidr; + case 2: + return ((RoutingTableEntry) this.entries.get(row)).gateway; + case 3: + return ((RoutingTableEntry) this.entries.get(row)).ifc; + case 4: + return "Remove"; + } + return null; + } + + @Override + public Class getColumnClass(int c) { + return getValueAt(0, c).getClass(); + } + + @Override + public boolean isCellEditable(int row, int col) { + return true; + } + + @Override + public void setValueAt(Object value, int row, int col) { + if (value == null) { + return; + } + + switch (col) { + case 0: + ((RoutingTableEntry) this.entries.get(row)).net = ((String) value); + break; + case 1: + ((RoutingTableEntry) this.entries.get(row)).cidr = ((String) value); + break; + case 2: + ((RoutingTableEntry) this.entries.get(row)).gateway = ((String) value); + break; + case 3: + ((RoutingTableEntry) this.entries.get(row)).ifc = ((String) value); + case 4: + } + } + + public void addRow() { + this.entries.add(new RoutingTableEntry()); + fireTableRowsInserted(1, 1); + } + + public void selectionChanged(int from, int to) { + if (this.entries.size() == 0) { + return; + } + + RoutingTableEntry entry = (RoutingTableEntry) this.entries.get(from); + boolean cidrError = false; + try { + Integer.parseInt(entry.cidr); + } catch (Throwable e) { + if (!IPAddress.isValidAddress(entry.cidr)) { + cidrError = true; + } + } + + if ((entry.net.equals("")) || (!IPAddress.isValidAddress(entry.net))) { + this.errMsgContainer.setText("Invalid network entry in row " + + (from + 1)); + } else if ((entry.cidr.equals("")) || (cidrError)) { + this.errMsgContainer.setText("Invalid netmask entry in row " + + (from + 1)); + } else if ((entry.ifc.equals("")) + || (!IPAddress.isValidAddress(entry.ifc))) { + this.errMsgContainer.setText("Invalid interface entry in row " + + (from + 1)); + } else if ((entry.gateway.equals("")) + || (!IPAddress.isValidAddress(entry.gateway))) + this.errMsgContainer.setText("Invalid gateway entry in row " + + (from + 1)); + } + + public String validateData() { + StringBuffer msg = new StringBuffer(); + int pos = 0; + Iterator it = this.entries.iterator(); + while (it.hasNext()) { + if (!((RoutingTableEntry) it.next()).isValid()) { + msg.append("Invalid syntax in line "); + msg.append(pos + 1); + msg.append("\n"); + } + ++pos; + } + + return (msg.length() == 0) ? null : msg.toString(); + } + + public RouteTestResult findMatch(IPAddress ip) { + List results = new LinkedList(); + Iterator it = this.entries.iterator(); + RoutingTableEntry rte = null; + RouteTestResult rtr = null; + while (it.hasNext()) { + rte = (RoutingTableEntry) it.next(); + rtr = rte.findMatch(ip); + if (rtr != null) { + results.add(rtr); + } + } + + if (results.size() == 0) { + return null; + } + + Collections.sort(results); + rtr = (RouteTestResult) results.get(results.size() - 1); + rtr.network = this.router.getNetwork(rtr.ifc); + if (rtr.network == null) { + return null; + } + return rtr; + } + + public void deleteRow(int row) { + if (this.entries.size() > row) { + if (this.backupDeletedEntries == null) { + this.backupDeletedEntries = new LinkedList(this.entries); + } + this.entries.remove(row); + } + } +} + +/* + * Location: C:\Users\MT\Desktop\mtutr.jar Qualified Name: + * mtutr.objects.RoutingTable JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/objects/RoutingTableEntry.java b/mtutr/objects/RoutingTableEntry.java new file mode 100644 index 0000000..087fefa --- /dev/null +++ b/mtutr/objects/RoutingTableEntry.java @@ -0,0 +1,109 @@ +package mtutr.objects; + +import mtutr.common.IPAddress; + +public class RoutingTableEntry { + public String net = ""; + public String ifc = ""; + public String gateway = ""; + public String cidr = ""; + + public String net_backup = ""; + public String ifc_backup = ""; + public String gateway_backup = ""; + public String cidr_backup = ""; + + public boolean isNew = true; + + public boolean isValid() { + try { + Integer.parseInt(this.cidr); + } catch (Throwable e) { + if (!IPAddress.isValidAddress(this.cidr)) { + return false; + } + + } + + return (IPAddress.isValidAddress(this.net)) + && (IPAddress.isValidAddress(this.ifc)) + && (IPAddress.isValidAddress(this.gateway)); + } + + public void backup() { + this.net_backup = this.net; + this.ifc_backup = this.ifc; + this.gateway_backup = this.gateway; + this.cidr_backup = this.cidr; + } + + public void rollback() { + this.net = this.net_backup; + this.ifc = this.ifc_backup; + this.gateway = this.gateway_backup; + this.cidr = this.cidr_backup; + } + + public void commit() { + this.isNew = false; + } + + public RouteTestResult findMatch(IPAddress ip) { + IPAddress netIP = null; + try { + netIP = new IPAddress(this.net); + } catch (Throwable e) { + return null; + } + + int intCIDR = -1; + boolean cont = false; + try { + intCIDR = Integer.parseInt(this.cidr); + if (ip.getNetworkIPByCIDR(intCIDR).equals(netIP)) + cont = true; + } catch (Throwable e) { + long netmask = -1L; + try { + netmask = new IPAddress(this.cidr).getIPLong(); + } catch (Throwable ee) { + return null; + } + + if (new IPAddress(ip.getIPLong() & netmask).equals(netIP)) { + cont = true; + try { + intCIDR = new IPAddress(this.cidr).getMinimalMask(); + } catch (Throwable ee) { + return null; + } + } + + } + + if (cont) { + RouteTestResult rtr = new RouteTestResult(this); + try { + rtr.ifc = new IPAddress(this.ifc); + rtr.nextHop = new IPAddress(this.gateway); + } catch (Throwable e) { + return null; + } + rtr.bits = intCIDR; + return rtr; + } + + return null; + } + + @Override + public String toString() { + return this.net + " / " + this.cidr + " / " + this.gateway + " / " + + this.net; + } +} + +/* + * Location: C:\Users\MT\Desktop\mtutr.jar Qualified Name: + * mtutr.objects.RoutingTableEntry JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/windows/.p4ignore b/mtutr/windows/.p4ignore new file mode 100644 index 0000000..7a88f71 --- /dev/null +++ b/mtutr/windows/.p4ignore @@ -0,0 +1,5 @@ +DatagramProperties.java +IPInputVerifier.java +JExtendedTable.java +NetworkProperties.java +RouterProperties.java diff --git a/mtutr/windows/ChooseDefaultGateway.java b/mtutr/windows/ChooseDefaultGateway.java new file mode 100644 index 0000000..af40610 --- /dev/null +++ b/mtutr/windows/ChooseDefaultGateway.java @@ -0,0 +1,76 @@ +/* */ package mtutr.windows; +/* */ +/* */ /* */ import java.awt.event.ActionEvent; +/* */ import java.awt.event.ActionListener; +/* */ import java.util.Iterator; +/* */ import java.util.List; +import javax.swing.JOptionPane; + +import mtutr.common.IPAddress; +import mtutr.objects.Network; +import mtutr.objects.Router; +/* */ +/* */ public class ChooseDefaultGateway +/* */ implements ActionListener +/* */ { +/* */ public ChooseDefaultGateway(Network net, Router r) +/* */ { +/* 18 */ if (net.routers.size() == 2) +/* */ { +/* 20 */ if (r.equals(net.routers.get(0))) +/* 21 */ net.defaultGateway = ((Router)net.routers.get(1)); +/* */ else { +/* 23 */ net.defaultGateway = ((Router)net.routers.get(0)); +/* */ } +/* */ } +/* 26 */ else if (net.routers.size() > 1) +/* */ { +/* 28 */ String[] box = new String[net.routers.size() - 1]; +/* */ +/* 30 */ Iterator it = net.routers.iterator(); +/* 31 */ int i = 0; +/* 32 */ while (it.hasNext()) { +/* 33 */ Router router = (Router)it.next(); +/* 34 */ if (!router.equals(r)) { +/* 35 */ box[i] = router.getIP(net).getIPStr(); +/* 36 */ ++i; +/* */ } +/* */ +/* */ } +/* */ +/* 41 */ String st = (String)JOptionPane.showInputDialog(null, +/* 42 */ "The Router you are removing is a default gateway for
network " + +/* 43 */ net.getIP().getIPStr() + ".

" + +/* 44 */ "Please choose an alternative default gateway for the network:", +/* 45 */ "Default Gateway Removal", 3, null, box, box[0]); +/* */ +/* 47 */ i = 0; +/* 48 */ it = net.routers.iterator(); +/* 49 */ while (it.hasNext()) { +/* 50 */ Router router = (Router)it.next(); +/* 51 */ if (router.getIP(net).getIPStr().equals(st)) { +/* 52 */ net.defaultGateway = router; +/* 53 */ return; +/* */ } +/* */ } +/* */ +/* */ } +/* */ else +/* */ { +/* 60 */ JOptionPane.showMessageDialog(null, +/* 61 */ "Attention: You have just removed the default gateway of
network " + +/* 62 */ net.getIP().getIPStr() + ".

" + +/* 63 */ "Notice that the network now has no default gateway.", +/* 64 */ "Default Gateway Removal", 1, null); +/* */ } +/* */ } +/* */ +/* */ public void actionPerformed(ActionEvent e) +/* */ { +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.windows.ChooseDefaultGateway + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/windows/DatagramProperties.java b/mtutr/windows/DatagramProperties.java new file mode 100644 index 0000000..b29eacb --- /dev/null +++ b/mtutr/windows/DatagramProperties.java @@ -0,0 +1,101 @@ +/* */ package mtutr.windows; +/* */ +/* */ /* */ import java.awt.Container; +/* */ import java.awt.Dimension; +/* */ import java.awt.GridLayout; +/* */ import java.awt.event.ActionEvent; +/* */ import java.awt.event.ActionListener; +/* */ import javax.swing.JButton; +/* */ import javax.swing.JFrame; +/* */ import javax.swing.JLabel; +/* */ import javax.swing.JPanel; +/* */ import javax.swing.JSpinner; +import javax.swing.SpinnerNumberModel; + +import mtutr.common.IPAddress; +import mtutr.objects.Datagram; +import mtutr.objects.Host; +/* */ +/* */ public class DatagramProperties extends JFrame +/* */ implements ActionListener +/* */ { +/* */ private static final long serialVersionUID = 1L; +/* */ private Datagram datagram; +/* */ private JSpinner ttl; +/* */ private JSpinner length; +/* */ +/* */ public DatagramProperties(Datagram thedatagram) +/* */ { +/* 29 */ this.datagram = thedatagram; +/* */ +/* 31 */ setTitle("Datagram Properties"); +/* 32 */ Container c = getContentPane(); +/* 33 */ c.setLayout(new GridLayout(0, 1)); +/* 34 */ setSize(new Dimension(250, 200)); +/* 35 */ setResizable(false); +/* */ +/* 37 */ JPanel sourcePanel = new JPanel(); +/* 38 */ c.add(sourcePanel); +/* 39 */ String s = (this.datagram.getSource() == null) ? "Not Assigned" : this.datagram.getSource().getIP().getIPStr(); +/* 40 */ sourcePanel.add(new JLabel("Source Host: " + s)); +/* */ +/* 42 */ JPanel targetPanel = new JPanel(); +/* 43 */ c.add(targetPanel); +/* 44 */ s = (this.datagram.getTarget() == null) ? "Not Assigned" : this.datagram.getTarget().getIP().getIPStr(); +/* 45 */ targetPanel.add(new JLabel("Target Host: " + s)); +/* */ +/* 47 */ JPanel lengthPanel = new JPanel(); +/* 48 */ c.add(lengthPanel); +/* 49 */ lengthPanel.add(new JLabel("Length: ")); +/* 50 */ this.length = new JSpinner(new SpinnerNumberModel(this.datagram.getLength(), 1, 2147483647, 1)); +/* 51 */ this.length.setPreferredSize(new Dimension(80, 20)); +/* 52 */ lengthPanel.add(this.length); +/* */ +/* 54 */ JPanel ttlPanel = new JPanel(); +/* 55 */ c.add(ttlPanel); +/* 56 */ ttlPanel.add(new JLabel("TTL: ")); +/* 57 */ this.ttl = new JSpinner(new SpinnerNumberModel(this.datagram.getTTL(), 1, 2147483647, 1)); +/* 58 */ this.ttl.setPreferredSize(new Dimension(50, 20)); +/* 59 */ ttlPanel.add(this.ttl); +/* */ +/* 61 */ JPanel buttons = new JPanel(); +/* 62 */ JButton ok = new JButton("OK"); +/* 63 */ ok.addActionListener(this); +/* 64 */ buttons.add(ok); +/* 65 */ JButton cancel = new JButton("Cancel"); +/* 66 */ cancel.addActionListener(this); +/* 67 */ buttons.add(cancel); +/* */ +/* 69 */ c.add(buttons); +/* 70 */ show(); +/* */ } +/* */ +/* */ public void actionPerformed(ActionEvent e) +/* */ { +/* 75 */ if (e.getActionCommand().equals("OK")) +/* */ { +/* 77 */ okPressed(); +/* */ } +/* */ else +/* */ { +/* 81 */ cancelPressed(); +/* */ } +/* */ } +/* */ +/* */ public void okPressed() +/* */ { +/* 87 */ this.datagram.setTTL(((Integer)this.ttl.getValue()).intValue()); +/* 88 */ this.datagram.setLength(((Integer)this.length.getValue()).intValue()); +/* 89 */ dispose(); +/* */ } +/* */ +/* */ public void cancelPressed() +/* */ { +/* 94 */ dispose(); +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.windows.DatagramProperties + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/windows/IPInputVerifier.java b/mtutr/windows/IPInputVerifier.java new file mode 100644 index 0000000..c320b6e --- /dev/null +++ b/mtutr/windows/IPInputVerifier.java @@ -0,0 +1,27 @@ +/* */ package mtutr.windows; +/* */ +/* */ import javax.swing.InputVerifier; +/* */ import javax.swing.JComponent; +/* */ import javax.swing.JTextField; +/* */ +/* */ public class IPInputVerifier extends InputVerifier +/* */ { +/* */ public boolean verify(JComponent comp) +/* */ { +/* 10 */ JTextField field = (JTextField)comp; +/* 11 */ String strValue = field.getText(); +/* */ try +/* */ { +/* 14 */ int value = Integer.parseInt(strValue); +/* */ +/* 16 */ return (value >= 0) && (value <= 255); +/* */ } catch (NumberFormatException e) { +/* */ } +/* 19 */ return false; +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.windows.IPInputVerifier + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/windows/JExtendedTable.java b/mtutr/windows/JExtendedTable.java new file mode 100644 index 0000000..5463b9e --- /dev/null +++ b/mtutr/windows/JExtendedTable.java @@ -0,0 +1,41 @@ +/* */ package mtutr.windows; +/* */ +/* */ /* */ import javax.swing.JTable; +import javax.swing.event.ListSelectionEvent; + +import mtutr.objects.RoutingTable; +/* */ +/* */ public class JExtendedTable extends JTable +/* */ { +/* */ private static final long serialVersionUID = 1L; +/* */ private RoutingTable routingTable; +/* */ +/* */ public JExtendedTable(RoutingTable theRoutingTable) +/* */ { +/* 13 */ super(theRoutingTable); +/* 14 */ this.routingTable = theRoutingTable; +/* */ } +/* */ +/* */ public void valueChanged(ListSelectionEvent e) { +/* 18 */ super.valueChanged(e); +/* 19 */ if (e.getFirstIndex() == e.getLastIndex()) +/* 20 */ return; +/* */ int trg; +/* */ int src; +/* 24 */ if (e.getFirstIndex() == getSelectedRow()) { +/* 25 */ src = e.getLastIndex(); +/* 26 */ trg = e.getFirstIndex(); +/* */ } +/* */ else { +/* 29 */ trg = e.getLastIndex(); +/* 30 */ src = e.getFirstIndex(); +/* */ } +/* */ +/* 33 */ this.routingTable.selectionChanged(src, trg); +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.windows.JExtendedTable + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/windows/NetworkProperties.java b/mtutr/windows/NetworkProperties.java new file mode 100644 index 0000000..3bd5a35 --- /dev/null +++ b/mtutr/windows/NetworkProperties.java @@ -0,0 +1,351 @@ +/* */ package mtutr.windows; +/* */ +/* */ /* */ import java.awt.Container; +/* */ import java.awt.Dimension; +/* */ import java.awt.GridLayout; +/* */ import java.awt.event.ActionEvent; +/* */ import java.awt.event.ActionListener; +/* */ import java.util.Iterator; +/* */ import java.util.List; +/* */ import javax.swing.ButtonGroup; +/* */ import javax.swing.JButton; +/* */ import javax.swing.JFrame; +/* */ import javax.swing.JLabel; +/* */ import javax.swing.JOptionPane; +/* */ import javax.swing.JPanel; +/* */ import javax.swing.JRadioButton; +/* */ import javax.swing.JSpinner; +/* */ import javax.swing.SpinnerNumberModel; +/* */ import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import mtutr.MainDrawBoard; +import mtutr.common.IPAddress; +import mtutr.objects.Network; +/* */ +/* */ public class NetworkProperties extends JFrame +/* */ implements ActionListener +/* */ { +/* */ private static final long serialVersionUID = 1L; +/* 30 */ private JSpinner mask = null; +/* 31 */ private SpinnerNumberModel maskModel = null; +/* 32 */ private JLabel slash = null; +/* 33 */ private JSpinner ip1 = null; +/* 34 */ private JSpinner ip2 = null; +/* 35 */ private JSpinner ip3 = null; +/* 36 */ private JSpinner ip4 = null; +/* 37 */ private ButtonGroup group = null; +/* 38 */ private JRadioButton _CIDR = null; +/* 39 */ private JRadioButton _class = null; +/* 40 */ private JSpinner MTU = null; +/* 41 */ private JLabel bin = null; +/* */ private Network network; +/* */ +/* */ public NetworkProperties(Network theNetwork) +/* */ { +/* 46 */ this.network = theNetwork; +/* */ +/* 48 */ setTitle("Network Properties"); +/* 49 */ Container c = getContentPane(); +/* 50 */ c.setLayout(new GridLayout(0, 1)); +/* 51 */ setSize(new Dimension(450, 200)); +/* 52 */ setResizable(false); +/* */ +/* 54 */ JPanel addressing_panel = new JPanel(); +/* 55 */ c.add(addressing_panel); +/* */ +/* 57 */ JLabel addressing = new JLabel("Addressing Type: "); +/* 58 */ addressing_panel.add(addressing); +/* 59 */ this._class = new JRadioButton("Class Based", true); +/* 60 */ addressing_panel.add(this._class); +/* 61 */ this._class.addActionListener(new ActionListener() +/* */ { +/* */ public void actionPerformed(ActionEvent e) { +/* 64 */ if (NetworkProperties.this.mask != null) +/* */ { +/* 66 */ NetworkProperties.this.mask.setEnabled(false); +/* */ } +/* 68 */ if (NetworkProperties.this.slash == null) +/* */ return; +/* 70 */ NetworkProperties.this.slash.setEnabled(false); +/* */ } +/* */ }); +/* 74 */ this._CIDR = new JRadioButton("CIDR Based"); +/* 75 */ addressing_panel.add(this._CIDR); +/* 76 */ this._CIDR.addActionListener(new ActionListener() +/* */ { +/* */ public void actionPerformed(ActionEvent e) { +/* 79 */ if (NetworkProperties.this.mask != null) +/* */ { +/* 81 */ NetworkProperties.this.mask.setEnabled(true); +/* */ } +/* 83 */ if (NetworkProperties.this.slash == null) +/* */ return; +/* 85 */ NetworkProperties.this.slash.setEnabled(true); +/* */ } +/* */ }); +/* 89 */ this.group = new ButtonGroup(); +/* 90 */ this.group.add(this._CIDR); +/* 91 */ this.group.add(this._class); +/* */ +/* 93 */ JPanel IPPanel = new JPanel(); +/* 94 */ c.add(IPPanel); +/* 95 */ IPPanel.add(new JLabel("Network IP Address:")); +/* 96 */ this.ip1 = new JSpinner(new SpinnerNumberModel(1, 1, 255, 1)); +/* 97 */ this.ip1.setPreferredSize(new Dimension(40, 20)); +/* 98 */ this.ip2 = new JSpinner(new SpinnerNumberModel(0, 0, 255, 1)); +/* 99 */ this.ip2.setPreferredSize(new Dimension(40, 20)); +/* 100 */ this.ip3 = new JSpinner(new SpinnerNumberModel(0, 0, 255, 1)); +/* 101 */ this.ip3.setPreferredSize(new Dimension(40, 20)); +/* 102 */ this.ip4 = new JSpinner(new SpinnerNumberModel(0, 0, 255, 1)); +/* 103 */ this.ip4.setPreferredSize(new Dimension(40, 20)); +/* */ +/* 105 */ this.ip1.addChangeListener(new ChangeListener() { +/* */ public void stateChanged(ChangeEvent e) { +/* 107 */ NetworkProperties.this.updateMaskSpinner(); +/* */ } +/* */ }); +/* 111 */ this.ip2.addChangeListener(new ChangeListener() { +/* */ public void stateChanged(ChangeEvent e) { +/* 113 */ NetworkProperties.this.updateMaskSpinner(); +/* */ } +/* */ }); +/* 117 */ this.ip3.addChangeListener(new ChangeListener() { +/* */ public void stateChanged(ChangeEvent e) { +/* 119 */ NetworkProperties.this.updateMaskSpinner(); +/* */ } +/* */ }); +/* 123 */ this.ip4.addChangeListener(new ChangeListener() { +/* */ public void stateChanged(ChangeEvent e) { +/* 125 */ NetworkProperties.this.updateMaskSpinner(); +/* */ } +/* */ }); +/* 130 */ IPPanel.add(this.ip1); +/* 131 */ IPPanel.add(new JLabel(".")); +/* 132 */ IPPanel.add(this.ip2); +/* 133 */ IPPanel.add(new JLabel(".")); +/* 134 */ IPPanel.add(this.ip3); +/* 135 */ IPPanel.add(new JLabel(".")); +/* 136 */ IPPanel.add(this.ip4); +/* 137 */ this.slash = new JLabel("/"); +/* 138 */ this.slash.setEnabled(false); +/* 139 */ this.maskModel = new SpinnerNumberModel(1, 1, 31, 1); +/* 140 */ this.mask = new JSpinner(this.maskModel); +/* 141 */ this.mask.setPreferredSize(new Dimension(40, 20)); +/* 142 */ this.mask.setEnabled(false); +/* 143 */ IPPanel.add(this.slash); +/* 144 */ IPPanel.add(this.mask); +/* */ +/* 146 */ JPanel binPresentation = new JPanel(); +/* 147 */ this.bin = new JLabel("Binary Representation: 00000001.00000000.00000000.00000000"); +/* 148 */ binPresentation.add(this.bin); +/* 149 */ c.add(binPresentation); +/* */ +/* 151 */ JPanel MTUPanel = new JPanel(); +/* 152 */ MTUPanel.add(new JLabel("MTU: ")); +/* 153 */ this.MTU = new JSpinner(new SpinnerNumberModel(500, 1, 2147483647, 1)); +/* 154 */ this.MTU.setPreferredSize(new Dimension(70, 20)); +/* 155 */ MTUPanel.add(this.MTU); +/* 156 */ c.add(MTUPanel); +/* */ +/* 158 */ JPanel buttons = new JPanel(); +/* 159 */ JButton ok = new JButton("OK"); +/* 160 */ ok.addActionListener(this); +/* 161 */ buttons.add(ok); +/* 162 */ JButton cancel = new JButton("Cancel"); +/* 163 */ cancel.addActionListener(this); +/* 164 */ buttons.add(cancel); +/* */ +/* 166 */ c.add(buttons); +/* */ +/* 168 */ if (this.network.isAssigned()) { +/* 169 */ IPAddress netIP = this.network.getIP(); +/* 170 */ this.ip1.setValue(netIP.getIPByteInt(3)); +/* 171 */ this.ip2.setValue(netIP.getIPByteInt(2)); +/* 172 */ this.ip3.setValue(netIP.getIPByteInt(1)); +/* 173 */ this.ip4.setValue(netIP.getIPByteInt(0)); +/* */ +/* 175 */ this.MTU.setValue(new Integer(this.network.getMTU())); +/* 176 */ if (this.network.getIsCIDR()) { +/* 177 */ this._CIDR.setSelected(true); +/* 178 */ this.mask.setValue(new Integer(this.network.getCIDR())); +/* 179 */ this.mask.setEnabled(true); +/* */ } +/* */ } +/* */ } +/* */ +/* */ public void updateMaskSpinner() { +/* 185 */ IPAddress ip = new IPAddress(0L); +/* 186 */ ip.setIP( +/* 187 */ (Integer)this.ip1.getValue(), +/* 188 */ (Integer)this.ip2.getValue(), +/* 189 */ (Integer)this.ip3.getValue(), +/* 190 */ (Integer)this.ip4.getValue()); +/* */ +/* 192 */ int minimalMask = ip.getMinimalMask(); +/* 193 */ if (minimalMask == 32) { +/* 194 */ minimalMask = 31; +/* */ } +/* */ +/* 197 */ this.maskModel.setMinimum(new Integer(minimalMask)); +/* 198 */ if (((Integer)this.maskModel.getValue()).intValue() < minimalMask) { +/* 199 */ this.maskModel.setValue(new Integer(minimalMask)); +/* */ } +/* */ +/* 202 */ this.bin.setText("Binary Representation: " + ip.getBinStrIP()); +/* */ } +/* */ +/* */ public void actionPerformed(ActionEvent e) +/* */ { +/* 207 */ if (e.getActionCommand().equals("OK")) +/* */ { +/* 209 */ okPressed(); +/* */ } +/* */ else +/* */ { +/* 213 */ cancelPressed(); +/* */ } +/* */ } +/* */ +/* */ public void okPressed() +/* */ { +/* 219 */ IPAddress ip = new IPAddress(0L); +/* 220 */ ip.setIP( +/* 221 */ (Integer)this.ip1.getValue(), +/* 222 */ (Integer)this.ip2.getValue(), +/* 223 */ (Integer)this.ip3.getValue(), +/* 224 */ (Integer)this.ip4.getValue()); +/* */ +/* 228 */ boolean invalidAddress = false; +/* 229 */ String msg = null; +/* */ +/* 231 */ if (this._CIDR.isSelected()) { +/* 232 */ int cidr = ((Integer)this.mask.getValue()).intValue(); +/* */ +/* 234 */ if (ip.getNetworkIPByCIDR(cidr).getIPLong() == 0L) { +/* 235 */ invalidAddress = true; +/* 236 */ msg = "Network address consist of all zeros"; +/* */ } +/* 238 */ else if (ip.getNetworkIPByCIDR(cidr).getIPLong() != ip.getIPLong()) { +/* 239 */ invalidAddress = true; +/* 240 */ msg = "Network IP does not fit to CIDR \n(CIDR mask does not cover network IP)"; +/* */ } +/* */ +/* */ } +/* 245 */ else if (((Integer)this.ip1.getValue()).intValue() >= 224) { +/* 246 */ invalidAddress = true; +/* 247 */ msg = "Class D is not supported"; +/* */ } +/* 249 */ else if (ip.getNetworkIPByCIDR(ip.getIPClass()).getIPLong() != ip.getIPLong()) { +/* 250 */ invalidAddress = true; +/* 251 */ String className = Network.getClassName(ip.getIPClass()); +/* 252 */ msg = "Network address does not fit class " + className + "\n" + +/* 253 */ "Maximum number of bits alloscated for network at class " + className + " is " + +/* 254 */ ip.getIPClass() + " bits"; +/* */ } +/* */ +/* 257 */ if (invalidAddress) { +/* 258 */ JOptionPane.showMessageDialog(this, "Address is not valid: " + msg, "Error", 0); +/* 259 */ return; +/* */ } +/* */ +/* 263 */ Iterator it = MainDrawBoard.staticInstance.networks.iterator(); +/* 264 */ Network compNet = null; +/* 265 */ while (it.hasNext()) { +/* 266 */ compNet = (Network)it.next(); +/* 267 */ if (compNet == this.network) continue; if (!compNet.isAssigned()) { +/* */ continue; +/* */ } +/* */ +/* 271 */ if (!ip.equals(compNet.getIP())) +/* */ continue; +/* */ int c1; +/* 273 */ if (this._CIDR.isSelected()) { +/* 274 */ c1 = ((Integer)this.mask.getValue()).intValue(); +/* */ } +/* */ else +/* 277 */ c1 = ip.getIPClass(); +/* */ int c2; +/* 280 */ if (compNet.getIsCIDR()) { +/* 281 */ c2 = compNet.getCIDR(); +/* */ } +/* */ else { +/* 284 */ c2 = compNet.getIP().getIPClass(); +/* */ } +/* */ +/* 287 */ if (c1 == c2) { +/* 288 */ JOptionPane.showMessageDialog(this, "Address is not valid: network with same address already exists", "Error", 0); +/* 289 */ return; +/* */ } +/* */ +/* */ } +/* */ +/* 296 */ if (this.network.isAssigned()) +/* */ { +/* 298 */ int maxHosts = 0; +/* */ +/* 300 */ if (this._CIDR.isSelected()) { +/* 301 */ maxHosts = (0x2 ^ 32 - ((Integer)this.mask.getValue()).intValue()) - 1; +/* */ } +/* */ else { +/* 304 */ switch (ip.getIPClass()) +/* */ { +/* */ case 8: +/* 306 */ maxHosts = 16777214; +/* 307 */ break; +/* */ case 16: +/* 309 */ maxHosts = 65534; +/* 310 */ break; +/* */ case 24: +/* 312 */ maxHosts = 254; +/* 313 */ break; +/* */ case 32: +/* 316 */ maxHosts = 0; +/* */ } +/* */ +/* */ } +/* */ +/* 323 */ if (maxHosts < this.network.hosts.size() + this.network.routers.size()) { +/* 324 */ String[] options = { "Use previous configuration", +/* 325 */ "Use new configuration", +/* 326 */ "Edit current configuration" }; +/* */ +/* 328 */ int selected = JOptionPane.showOptionDialog(null, +/* 329 */ "The new configuration of the network doesn't allow connecting\nall the hosts \\ routers that were already allocated.\n\nWarning: Using the new configuration will result in deleting all the\nnetwork's hosts and disconnecting from all its routers!\n\nWhat would you like to do?", +/* 334 */ "Properties Update Confirmation", +/* 335 */ 1, +/* 336 */ 3, null, options, null); +/* */ +/* 338 */ if (selected == 0) { +/* 339 */ dispose(); +/* 340 */ return; +/* 341 */ }if (selected == 1) +/* 342 */ this.network.removeAllConnections(); +/* */ else { +/* 344 */ return; +/* */ } +/* */ } +/* */ +/* */ } +/* */ +/* 350 */ if (this._CIDR.isSelected()) { +/* 351 */ this.network.setCIDR_IP(ip, ((Integer)this.mask.getValue()).intValue()); +/* */ } +/* */ else { +/* 354 */ this.network.setCLASS_IP(ip); +/* */ } +/* */ +/* 357 */ this.network.setMTU((Integer)this.MTU.getValue()); +/* 358 */ dispose(); +/* */ } +/* */ +/* */ public void cancelPressed() +/* */ { +/* 363 */ dispose(); +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.windows.NetworkProperties + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/windows/RouterProperties.java b/mtutr/windows/RouterProperties.java new file mode 100644 index 0000000..fff9a84 --- /dev/null +++ b/mtutr/windows/RouterProperties.java @@ -0,0 +1,234 @@ +/* */ package mtutr.windows; +/* */ +/* */ /* */ import java.awt.Color; +/* */ import java.awt.Container; +/* */ import java.awt.Dimension; +/* */ import java.awt.Font; +/* */ import java.awt.GridLayout; +/* */ import java.awt.event.ActionEvent; +/* */ import java.awt.event.ActionListener; +/* */ import java.awt.event.WindowEvent; +/* */ import java.awt.event.WindowListener; +/* */ import java.util.Iterator; +/* */ import java.util.List; +/* */ import javax.swing.DefaultCellEditor; +/* */ import javax.swing.JButton; +/* */ import javax.swing.JCheckBox; +/* */ import javax.swing.JComboBox; +/* */ import javax.swing.JFrame; +/* */ import javax.swing.JLabel; +/* */ import javax.swing.JOptionPane; +/* */ import javax.swing.JPanel; +/* */ import javax.swing.JScrollPane; +/* */ import javax.swing.JTable; +/* */ import javax.swing.table.TableCellEditor; +/* */ import javax.swing.table.TableColumn; +import javax.swing.table.TableColumnModel; + +import mtutr.common.IPAddress; +import mtutr.objects.Network; +import mtutr.objects.Router; +import mtutr.objects.RoutingTable; +import mtutr.windows.buttonhandlers.ButtonEditor; +import mtutr.windows.buttonhandlers.ButtonRenderer; +/* */ +/* */ public class RouterProperties extends JFrame +/* */ implements ActionListener, WindowListener +/* */ { +/* */ private static final long serialVersionUID = 1L; +/* */ private Router router; +/* */ private JComboBox intefaces; +/* */ private JComboBox gateways; +/* */ private JTable routing_table; +/* */ private RoutingTable tableModel; +/* 41 */ private JLabel errMsg = null; +/* */ +/* */ public RouterProperties(Router theRouter) +/* */ { +/* 46 */ init(theRouter); +/* */ } +/* */ +/* */ private void init(Router theRouter) { +/* 50 */ this.router = theRouter; +/* */ +/* 52 */ setTitle("Router Properties"); +/* 53 */ Container c = getContentPane(); +/* 54 */ c.setLayout(new GridLayout(0, 1)); +/* 55 */ setSize(new Dimension(480, 310)); +/* 56 */ setResizable(false); +/* */ +/* 58 */ JPanel routing_table_panel = new JPanel(); +/* 59 */ routing_table_panel.setSize(new Dimension(480, 270)); +/* 60 */ c.add(routing_table_panel); +/* */ +/* 62 */ this.errMsg = new JLabel(""); +/* 63 */ Font font = new Font("Tahoma", 1, 12); +/* 64 */ this.errMsg.setFont(font); +/* 65 */ this.errMsg.setForeground(Color.red); +/* 66 */ this.errMsg.setSize(this.errMsg.getPreferredSize()); +/* 67 */ this.errMsg.setLocation(1, 1); +/* 68 */ routing_table_panel.add(this.errMsg); +/* */ +/* 70 */ this.tableModel = this.router.routingTable; +/* 71 */ this.tableModel.openedInEditor(this.errMsg); +/* 72 */ this.routing_table = new JExtendedTable(this.tableModel); +/* 73 */ JScrollPane scrollpane = new JScrollPane(this.routing_table); +/* 74 */ scrollpane.setPreferredSize(new Dimension(450, 180)); +/* 75 */ scrollpane.setMaximumSize(new Dimension(450, 180)); +/* 76 */ routing_table_panel.add(scrollpane); +/* 77 */ TableColumn column = null; +/* 78 */ column = this.routing_table.getColumnModel().getColumn(0); +/* */ +/* 80 */ column.setHeaderValue("Network Destination"); +/* */ +/* 82 */ column = this.routing_table.getColumnModel().getColumn(1); +/* */ +/* 84 */ column.setHeaderValue("Netmask"); +/* */ +/* 88 */ this.gateways = new JComboBox(); +/* 89 */ this.intefaces = new JComboBox(); +/* */ +/* 91 */ Iterator it = this.router.networks.iterator(); +/* */ +/* 94 */ while (it.hasNext()) +/* */ { +/* 96 */ Network net = (Network)it.next(); +/* 97 */ this.intefaces.addItem(net.getIP().getIPStr()); +/* 98 */ Iterator rIt = net.routers.iterator(); +/* 99 */ while (rIt.hasNext()) { +/* 100 */ Router tmpRouter = (Router)rIt.next(); +/* 101 */ if (this.router != tmpRouter) { +/* 102 */ this.gateways.addItem(net.allocateIP(tmpRouter).getIPStr()); +/* */ } +/* */ else +/* */ { +/* 106 */ this.gateways.addItem(net.allocateIP(tmpRouter).getIPStr()); +/* */ } +/* */ } +/* */ } +/* */ +/* 111 */ column = this.routing_table.getColumnModel().getColumn(2); +/* 112 */ column.setHeaderValue("Next Hop"); +/* 113 */ column.setCellEditor(new DefaultCellEditor(this.gateways)); +/* */ +/* 115 */ column = this.routing_table.getColumnModel().getColumn(3); +/* 116 */ column.setHeaderValue("Interface"); +/* 117 */ column.setCellEditor(new DefaultCellEditor(this.intefaces)); +/* */ +/* 119 */ column = this.routing_table.getColumnModel().getColumn(4); +/* 120 */ column.setHeaderValue("Remove line"); +/* 121 */ column.setCellEditor(new ButtonEditor(new JCheckBox(), this.routing_table, this.tableModel)); +/* 122 */ column.setCellRenderer(new ButtonRenderer()); +/* */ +/* 124 */ JButton saveBtn = new JButton("Save"); +/* 125 */ saveBtn.addActionListener(this); +/* 126 */ routing_table_panel.add(saveBtn); +/* */ +/* 128 */ JButton cancelBtn = new JButton("Cancel"); +/* 129 */ cancelBtn.addActionListener(this); +/* 130 */ routing_table_panel.add(cancelBtn); +/* */ +/* 132 */ JButton clearBtn = new JButton("Clear"); +/* 133 */ clearBtn.addActionListener(this); +/* 134 */ routing_table_panel.add(clearBtn); +/* */ +/* 136 */ JButton newLineBtn = new JButton("Add new Line"); +/* 137 */ newLineBtn.addActionListener(this); +/* 138 */ routing_table_panel.add(newLineBtn); +/* */ +/* 140 */ if (this.router.networks.size() != 0) { +/* 141 */ JButton basicConfigBtn = new JButton("Add entries for each interface"); +/* 142 */ basicConfigBtn.addActionListener(this); +/* 143 */ routing_table_panel.add(basicConfigBtn); +/* */ +/* 145 */ JButton defEntryBtn = new JButton("Add default entry"); +/* 146 */ defEntryBtn.addActionListener(this); +/* 147 */ routing_table_panel.add(defEntryBtn); +/* */ } +/* */ +/* 150 */ addWindowListener(this); +/* 151 */ setDefaultCloseOperation(0); +/* */ } +/* */ +/* */ public void actionPerformed(ActionEvent e) +/* */ { +/* 156 */ String command = e.getActionCommand(); +/* 157 */ if (command.equalsIgnoreCase("Add new Line")) { +/* 158 */ this.tableModel.addRow(); +/* */ } +/* 160 */ else if (command.equalsIgnoreCase("Cancel")) { +/* 161 */ this.tableModel.rollbackAfterChange(); +/* 162 */ dispose(); +/* */ } +/* 164 */ else if (command.equalsIgnoreCase("Save")) +/* */ { +/* 166 */ if (this.routing_table.isEditing()) { +/* 167 */ int row = this.routing_table.getSelectedRow(); +/* 168 */ int column = this.routing_table.getSelectedColumn(); +/* 169 */ TableCellEditor tce = this.routing_table.getCellEditor(row, column); +/* 170 */ tce.stopCellEditing(); +/* */ } +/* */ +/* 173 */ String msg = this.tableModel.validateData(); +/* 174 */ if (msg != null) { +/* 175 */ JOptionPane.showMessageDialog(this, msg, "Error", 0); +/* */ } +/* */ else { +/* 178 */ this.tableModel.commitData(); +/* 179 */ dispose(); +/* */ } +/* */ } +/* 182 */ else if (command.equalsIgnoreCase("Clear")) { +/* 183 */ this.router.routingTable.clear(); +/* */ } +/* 185 */ else if (command.equalsIgnoreCase("Add entries for each interface")) { +/* 186 */ this.router.routingTable.addEntriesForInterface(); +/* */ } +/* 188 */ else if (command.equalsIgnoreCase("Add default entry")) { +/* 189 */ this.router.routingTable.addDefaultEntry(); +/* */ } +/* */ } +/* */ +/* */ public void windowOpened(WindowEvent arg0) +/* */ { +/* */ } +/* */ +/* */ public void windowClosing(WindowEvent event) +/* */ { +/* 203 */ if (JOptionPane.showConfirmDialog(this, +/* 204 */ "All changes are going to be discarted. Are you sure?", +/* 205 */ "Close window", +/* 206 */ 0) == 0) { +/* 207 */ this.tableModel.rollbackAfterChange(); +/* 208 */ dispose(); +/* */ } +/* */ else { +/* 211 */ event.setSource(null); +/* */ } +/* */ } +/* */ +/* */ public void windowClosed(WindowEvent arg0) +/* */ { +/* */ } +/* */ +/* */ public void windowIconified(WindowEvent arg0) +/* */ { +/* */ } +/* */ +/* */ public void windowDeiconified(WindowEvent arg0) +/* */ { +/* */ } +/* */ +/* */ public void windowActivated(WindowEvent arg0) +/* */ { +/* */ } +/* */ +/* */ public void windowDeactivated(WindowEvent arg0) +/* */ { +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.windows.RouterProperties + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/windows/buttonhandlers/.p4ignore b/mtutr/windows/buttonhandlers/.p4ignore new file mode 100644 index 0000000..c9179a5 --- /dev/null +++ b/mtutr/windows/buttonhandlers/.p4ignore @@ -0,0 +1,2 @@ +ButtonEditor.java +ButtonRenderer.java diff --git a/mtutr/windows/buttonhandlers/ButtonEditor.java b/mtutr/windows/buttonhandlers/ButtonEditor.java new file mode 100644 index 0000000..f447960 --- /dev/null +++ b/mtutr/windows/buttonhandlers/ButtonEditor.java @@ -0,0 +1,74 @@ +/* */ package mtutr.windows.buttonhandlers; +/* */ +/* */ /* */ import java.awt.Component; +/* */ import java.awt.event.ActionEvent; +/* */ import java.awt.event.ActionListener; +/* */ import javax.swing.DefaultCellEditor; +/* */ import javax.swing.JButton; +/* */ import javax.swing.JCheckBox; +import javax.swing.JTable; + +import mtutr.objects.RoutingTable; +/* */ +/* */ public class ButtonEditor extends DefaultCellEditor +/* */ { +/* */ private static final long serialVersionUID = 1L; +/* */ protected JButton button; +/* */ private String label; +/* */ private boolean isPushed; +/* */ private JTable uiTable; +/* */ private RoutingTable routingTable; +/* */ +/* */ public ButtonEditor(JCheckBox checkBox, JTable jt, RoutingTable rt) +/* */ { +/* 22 */ super(checkBox); +/* 23 */ this.uiTable = jt; +/* 24 */ this.routingTable = rt; +/* 25 */ this.button = new JButton(); +/* 26 */ this.button.setOpaque(true); +/* 27 */ this.button.addActionListener(new ActionListener() { +/* */ public void actionPerformed(ActionEvent e) { +/* 29 */ ButtonEditor.this.fireEditingStopped(); +/* */ } +/* */ }); +/* */ } +/* */ +/* */ public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) +/* */ { +/* 36 */ if (isSelected) { +/* 37 */ this.button.setForeground(table.getSelectionForeground()); +/* 38 */ this.button.setBackground(table.getSelectionBackground()); +/* */ } else { +/* 40 */ this.button.setForeground(table.getForeground()); +/* 41 */ this.button.setBackground(table.getBackground()); +/* */ } +/* 43 */ this.label = ((value == null) ? "" : value.toString()); +/* 44 */ this.button.setText(this.label); +/* 45 */ this.isPushed = true; +/* 46 */ return this.button; +/* */ } +/* */ +/* */ public Object getCellEditorValue() { +/* 50 */ if (this.isPushed) { +/* 51 */ int selected = this.uiTable.getSelectedRow(); +/* 52 */ this.routingTable.deleteRow(this.uiTable.getSelectedRow()); +/* 53 */ this.routingTable.fireTableRowsDeleted(selected, selected); +/* */ } +/* 55 */ this.isPushed = false; +/* 56 */ return new String(this.label); +/* */ } +/* */ +/* */ public boolean stopCellEditing() { +/* 60 */ this.isPushed = false; +/* 61 */ return super.stopCellEditing(); +/* */ } +/* */ +/* */ protected void fireEditingStopped() { +/* 65 */ super.fireEditingStopped(); +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.windows.buttonhandlers.ButtonEditor + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/mtutr/windows/buttonhandlers/ButtonRenderer.java b/mtutr/windows/buttonhandlers/ButtonRenderer.java new file mode 100644 index 0000000..3e88400 --- /dev/null +++ b/mtutr/windows/buttonhandlers/ButtonRenderer.java @@ -0,0 +1,36 @@ +/* */ package mtutr.windows.buttonhandlers; +/* */ +/* */ import java.awt.Component; +/* */ import javax.swing.JButton; +/* */ import javax.swing.JTable; +/* */ import javax.swing.UIManager; +/* */ import javax.swing.table.TableCellRenderer; +/* */ +/* */ public class ButtonRenderer extends JButton +/* */ implements TableCellRenderer +/* */ { +/* */ private static final long serialVersionUID = 1L; +/* */ +/* */ public ButtonRenderer() +/* */ { +/* 14 */ setOpaque(true); +/* */ } +/* */ +/* */ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) +/* */ { +/* 19 */ if (isSelected) { +/* 20 */ setForeground(table.getSelectionForeground()); +/* 21 */ setBackground(table.getSelectionBackground()); +/* */ } else { +/* 23 */ setForeground(table.getForeground()); +/* 24 */ setBackground(UIManager.getColor("Button.background")); +/* */ } +/* 26 */ setText((value == null) ? "" : value.toString()); +/* 27 */ return this; +/* */ } +/* */ } + +/* Location: C:\Users\MT\Desktop\mtutr.jar + * Qualified Name: mtutr.windows.buttonhandlers.ButtonRenderer + * JD-Core Version: 0.5.4 + */ \ No newline at end of file diff --git a/network2.gif b/network2.gif new file mode 100644 index 0000000000000000000000000000000000000000..925de9e9d76acf43f4c17225c0c415ccb97d5e8e GIT binary patch literal 3866 zcwPY-59RPjNk%w1VR!&D0QUd@|NsB_|Nis-{rLF#xVpo&xWH_6j96cAWp9RRbc$(n ziEDF&UuJc2d5d&=imqpZ21s<*7Pz`4N6ueH8%dxw#msg<9tq^-H2skN!HzNfIfrmwrDuDYwUzO%c= zzQf9;uDP$c!>zW#sIa=WzR0z`$E2&Yo};PK*4wVP!K<{svb)8wxx>B1&b-9UyTi=E z$)!NF`+1KIb;N<4@_xSSk_0rwq(A(hH;pNfW-_+jX)7|0S za-{=4Y+u-T!=k4#}=<4|U{O9WH+U4lk=Sr=Hlw?_4)eM;^p4w>E!M2 z;_L0<>g?d@>)q(;+~?`r=IG(Y2 z^YrBI@8j+6;_U6|_V(xW^yTvM?fLoY_V(!X^yTsK?)mxc`1tJi_v`ld>h<;J@$vKf z`|8--I3=CqO&c>_W#8Ye2yNPn3d%BjbHj zN?GMT@~BgdG|I3diy|)6@C#IeAhJp_*A!z6o7h|vsWt4pIgfo%at37poOUWL4^btMBwZ*DxC3H!)rV1{K{gdQ@+?yvBtKGZldI=~9h?vxNS>+ZzuA{(*9_UuECJn-1d zPBpq>BeJxgL}CRTF$vbJ0P3_OuDI0ny3RW3%(IWi^t70>J;G94WzO^foAW;Q(CaPG zKxce&&~OTn&dk0-6EijK#Ip`G(iF3Z8jWN$4lN7~c3e6ik38}#x$3CX^gNeN z%yiREx2>JRR5*8a>Ds7%f90KGTPRpO^w2C|1JBuvjG53GU5P55jlIrGgvsyrqhlz z#vG%}F}Ey}JTkc865r*;tl4HYugCs2+;FOMZ^&$B9X+JHz8+8CO^YgQ(80=Cl{oxJ zRuDI9)N)_r9(hL(JnS@j3@)p*;(se;Y6U4su?iC{zG^UZj z3G$0gw;~ta>_f3Rt)(RZaGyXFVFg%NtsdZT351H4GkB;YUs+QIF8o&tQ`k@wIMf6x zNRLBm&nD;LPHLA+@w;}*AY-Yt%|rfYaEb{zDX2RCDo8wf!X zzQ9i2o^>xX=8lpuxT3 z&0;|d8sd?pVZ}G4qh~&oQ?jbkh*$jM2?A;X59V+RQVio5mYW7Lkim>k?4lK>$V4Vm zVTo2kq7auz1Rz>TOE^NJm6^C>DLAnpBDU#u><}HPws(!JQSgw6#KkR+v8G-zY;cj} z)D}4tj#fB=9AcOO6WV|WL|8%-okWEuD4_~M6ao>3z=JyTz|K6hft`A|L@iwjiB#xt zhoty~iHd0d#n;gcPETux%Zh1?b0koPxxj@oj^rkEKoU=Lx>K<%cCjeQs2X28 zhkx{d0!!e670e(9MI^!yh8Tn!!XO7ZfZ+>Y5JNljfQUj^0u#5K=Oj{rM^lud6(yPm z1{3x-?JaRl<}e2Zop+34T!R|G>Q1KsU?-|9i(RuqTFx#7w0hK|Xyu?rF<3E-UX&;%qXp$j7Qf*8_3h;L@%6ul_ZE>^({I}WfEKqOK&vayVF zObT?eV_B)H(K?Yuqq2oMhi)=R~?{vx@=pY+3qA|*4Aj7@~>;)<&p@~#T zA`ykagA|02gbC=uAWPUm4J06e1xR26z{PFO3tzrka4pv4o#HuggOal#d*(1auip@=ykLJ@z6gBZYIg()Bb2NzgC z3Mk?PA^1QCJ#c{;^dJdr6m3q83&%Y00S{co%o+j}=*Rv^w{CSJL0i0 zzeT7@E*>44H)|{w&LbV_h@3RCaSK+ILKBxTgd4yxg(M`w2rW3l1TqkT2rys~06 zC}E6l(61*_Et9`fK5_CO6S${}MGop8k_648b;yx<2d zAi)G8uz(tjzy>q9L@e$>7^#k`T)A3Xr8I52WZz3tk)nn*)T)0wLvvn22S$smDpXfy^YUoB+biz!z@P#nGw%Vil`Uq=;E3E_^4Wc+1cQDQsv% zS!iMsaJ&R0G~rWI5KwssJ>CILvuCm7pHgxBqSk6MVJ&1deDRaNel4^O)LTy z|I_CzY+XJ7_j00v?J2NH<}$0!6#-~mIxi~kP6Hx5&;1KJ6Jnvu>b%7 literal 0 HcwPel00001 diff --git a/router.gif b/router.gif new file mode 100644 index 0000000000000000000000000000000000000000..699b583c90e61a54313c34bf07e6ded2ff45fc5b GIT binary patch literal 825 zcwTe&bhEHbv|x~Bc*elM@E-^nzJLGz{{8#s&!6AFfB(*%J2!6JxP1BY#fulupFe-* z%$eiIj~_X5>k&%&$dGXc5YWwUEegBll{=)BS()NKXFWG{ys?)jtdtrUA}Vl z+BNHS>x~t;@7;g!@X_NZPt-NnGrJ1%zJ2%p!^cmbKa07nmo^pt{pat${|wAra~3c& zt&mpH(}+2-Vd3F+0p+-egG!eel%4Mm z)d~hqb}oL4;#YT0ZeD(VzGdtl2^R*=j>R66wPH_gS$TPhQXhxF6-D;$)e)Ps?w;DZ zI()5Nh8|;4OZ&~u8JAbZp5B&wOWAfBi-m;K!^XS2D?Y!vdwTo&dot2)TRwR2*pRqa zmxtHx%nrk(qkZqSX8uXoH0jh7-Q<01b{aoD(xiMlRH(t2;oMT~`C+}gN}pa?AnyL{ zjOFIHw|1D@cj)fgo_KFj=4&y(KgLfUtoGa;Hp!+k>*;!Z=J~bN6<;4+axdw4xV!rP i5tf!M68`)4{QUgl@@n`0j{_UsK0H3%{$E3Y!5RQ>%|X-v literal 0 HcwPel00001 diff --git a/site/1.jpg b/site/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5d67b09c087077b44d4c2ed27e6201bd74f56877 GIT binary patch literal 6759 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 literal 0 HcwPel00001 diff --git a/site/14.jpg b/site/14.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5e0a0fe6d762bc6b0c42416e05c369676698d747 GIT binary patch literal 9179 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 literal 0 HcwPel00001 diff --git a/site/15.jpg b/site/15.jpg new file mode 100644 index 0000000000000000000000000000000000000000..66de452a084e151f87d02c335b49c6699ba09509 GIT binary patch literal 6357 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 U*H7peLG%AzTkXG@Ae6Cx1FyV9d;kCd literal 0 HcwPel00001 diff --git a/site/16.jpg b/site/16.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b91211f3c777716e3e2fed0c8e915ffa2b83932f GIT binary patch literal 5216 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

k zl)qaTCzTL;be-XYB64lNI}rJf{QlccrH%VkVr*;-2j{7HAnVVs(TQS^tI^gIdy-NE zDOUxvbf;khS8wMaI)Okv*6(ZTiuSk;tsm)HH!bnfj~8T#3OrGz_r*oC#dtUZm}G4D zrMcMp1V2Cb(nwvd@J`Pdt?3cZ=~zXG4W&LhGm|tGcHYc#3(Zmm_(WAMQlj0cKyx3h zd()al?#q^qDm@4hidtOoBdrdC_Iq=WjWZnM&UW`6c_lKHSd zEDxuP^E3y<6njq$HZ8{b*aRVKLuTA4}E;N)A4v6hCMdPNgP7dz6Id@63 z2CNiRvY`2sCR6-#^f>wM-d%=oW=6%{#NQ;bm@xZ9{n^`UYA z2%dyZG$Yz?DSv+VjW|t2xl;jWd+F7jkOc|1u19n}uUhBr3$>jest#dMhc?59{_A^^ zl~Gu=KNbYx8sjH5oZMPezNSZKPuEBo zYcqS!of^UfL_X#I#kJS$ubhI_4;!Y(s_d?YT)KFTTq+wzB%hiwBUsdHE@rcBdVo0y z>-K*1Z4gDMWfL(%`=B{=G7JrWlR4Fz& zoH41==2Hhf>Ahw?ATgKt#dt}jl@Ihhw74DP8FKt;svuA%Wvg_|4ZUJa(004tE-d8; zP6?AwO>h}xZ16r_71>oMpoubsXS1T|RU?_9h|;$yy;77V!}f!xDj*fEcW)Ex-5fc} zaCSP)S??Xl$+wytDqT!oDW8)|X;YB1^tg~@#v(MYpREp(cEkX|c;N4sk`K5JNgl0s zdk~fWp$PiQ8H4gFNl*CzR{p^)62qwz=x}>RPVS8-nkHYKExTORRG_7oq9)NF^~bv8 z#DpK2UJ<^r{mb{zW^Ti=)zimJcBtw3Uydf5bfFIQmnzi=t$nBa6v7B<>9i*mKxNRZ zQQ&IZ3>i~MGfM^|6e^%ZGd+vraqT2~Q<@KoDwba$Q#b*l_86XlK9WpFE+qGK`rUIwk)1lW75MA`^MB9# T{l6^p5AAwDzU=lF>iE9_e`pn+ literal 0 HcwPel00001 diff --git a/site/17.jpg b/site/17.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6638b9d104d9fb58bb2d8b12d48610a7ac83c950 GIT binary patch literal 3889 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 Y4S(b$vG4|haA6KT7p83rNYKdN0qJEZ_W%F@ literal 0 HcwPel00001 diff --git a/site/18.jpg b/site/18.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b3fdf1cd5b4583e561e234680de6dda77bbd832 GIT binary patch literal 2798 zcwVKIdo+~m9><@#nHgr>g$9FhDa#?==!P$4fVGg0*DKK062^YRs@5? zieT|L9G)OcB#4O-6r`lZWtA0GRFo8zNU9q8+N$ch>Leu{QypCcLt_(TvKG~XYGk2r zWNe7Q;qe4ff;^EZZ>XlEX82zR)P(p600ai{TY!HC0*OMyWH`L27y_UWzsJ8VN&+MT zg+iiH7z`Q>uSCFW04;@)Rx_lD$haQEst3v%U5U@ZQFc{4lXL5w(J(%KE)p-gL0&;| zqo$U&&Zf;K+f2=<=G$#{+uGSXIPN*%{PA;^ zvb*AQDxTpf#%?om$Io?&ZqP6p(wzO3`Zwsm#vJ)SLI1)02Qu_Ckir2cuos1Z>7@`T zDFieC2q*-cprn8mSa|B;*6Y)BF*ZM?fbY4b?r8~+vd%-#*S0k$}R8cn>Do&3iOe7lCx@hIl9nStbs8rv5sw++rJ%Hc77(WO0aq9=RrhnlhuL> z1YT0dz?yv&du%5J5&}CA{F{;x=m>{^#&9-jQbi2{*-Jvl7HjN)g$)E~(}Kjf%jQ|+ z%B-2B_bqx|P9qwOQl39amjCHQ!Ub?54UFG!;IVoeCa())va#(14@pN%(@8zIBKz1L zqnh|g+)kP-;!eRn{j3WEehYD(we0MDlnq9zE_+XpmPXqIkK96~sI`LLY~*E8pabBC zxmA?aoY^3oYqh?i648Bx-8xvt=1Q!~Tg$j$j<_l4>t&KSX`bnY0|iWx_om6_7ze6q zBu-V5CYOAwILSP%zRlSzplXVK^kI&8$lbTP2Brxg+d_g?SuvCJ%Prv=OBj;Wo0M;a zqANf8ilBnAEUY3a=y4!_(Q34(Va`YB&^WP;J^H$SnLTIs=5DD?k#+YWnnhGu#Y5z+ zv*KGFcH(lmJrKxpgVkiOsILCQXJy`?o-BxGwkHZBv;^G{i2m~(x5DPw?RkS~>{<8l zi&^tueO3%$;mLpRp@05kFB@)Ay2_zeegP zEwRbadVH$=WhKAngGAZBIOoq2g4m@&emewg%fR_QpES4m;%<-J_e z0nb4$WB#kW2cDcLZgl)xZa^(-5Cc; zsILlkmES0TOx*MFf^YXCv7EHIynjTo6#^lghjnS5CyRPMFl#K6J)Sj6Q0=@byE^#` zo5p8ueCyd4s$uDV_Vm7DJ7Tf;@I7VDQh7sT^UPrR*d@QPbM5rPnN0SO(u4QsF6AU1 zHI-Rr3E(>Gy8XK#l!G;K-HFRrAwY>(T7LwAPNuc;wmw1ZYTx<;I6IHn258~JeD*{s zdsX57UZ0u1N(@P$Db!()2U-XlUwnTwi}_su!S#hGCHb_Os0g;8PY~A>S7chH zE&MnGfe15a?YB9*oQI=pbHxv>T<1?;Zy1v=U=Kz?;CW2;NY-BhQ*7B; zZ~&h17#^+z=h%{L9;+S#RqWL*4Ai|E2*fvd!6|uF|FTv#AuL!db#}Lxdv9Qj;u+1` z4m@Lrv5q*|v$A2F(FEEjAhvsGWBf>3&AfU()%~VM7xPh1jE6MQt$lB|`h!UCsP8z& zhrPp!H<-qTd?VB)>X^5aE-LYY)}7#zvm9Qcq^?=v;Tf#e56`AxJwLeOSRr@3Yo%)PtZgYe zB9)Ni+Mn1E;>|o}JYv??v+2*iW|q4<7HL-;y&a=~tWm>t-_(;!jeom8eUp6xUh^Ge zd+DS9P$zC_jjwwrgUM!O|LQae1J=j+jaqMlnl0|%o}O&QFxQP%nYG~)PFx1-OfMrj zuj(Yl(BW18X65}uBiSEn$>AfsGa$B-SfgAYk9pG;PMy3~ViBHkbOWK3C#fKP;}$ZL zlxf$2Unn#E^5R~KccCArmNP$f$5$sdDrKuwsC2rzwBzZaniFTh)m>eSJ4oES8BQ*h zPnnsAh95EVJ_%wttv{r%&loz$FLe^U~g`|EHU|kE{v=m zT!w9X*c!{9g1Z{cds={F&t{|6LOo&sE?W|!t(H3w>$Roqj)Q9uK#~OvWJc5c;n&@V U+cdhWKZYqhQhA?fO@`k60w0wt1poj5 literal 0 HcwPel00001 diff --git a/site/19.gif b/site/19.gif new file mode 100644 index 0000000000000000000000000000000000000000..94bac9a066510e97e36f7eeed8d581037189398b GIT binary patch literal 1368 zcwPZm1*iH)Nk%w1VI%+?0QUd@|4n88PGtW@c34RtL>U5jISap+vt=NRF*O0vFi?!imfS!Dz$AqfTfTP8IoxNpsgF{j`%$Lt`*>mkGHBF^p{%>tzc8PM+=)$kbe`v>v*2=Dm` z?Dz}({sQ{_1Ni&|_520@{s8~~09aT^|L_I>@df|w2LJ8`|LO<-><9nm2><8^|LF+- z;2K=+?&P)y3)9$nD+E?cB}(g(&}qDF1{h zYiDHtf+_!iD*u5hS5;L1Ycc<9G5=^X|7kM+XEXm_LH}Pu|6W7?UPS*^Q~y>}|5a80 z|Ns5{{rmg-`T6g43)-rnBT)z#9{($3D#%F4>d#>Th`_2iw)xKU!gawt=xbOo|yLsurn$($*(-Yi-;bLz}VGGRS$@jwQp zMZl#)Ts;xi%f_@R(|WY(xuB6liJxdN%>NRL#g7mWAz<=XK!GJ2jKpHa$CWs(jfG8qKC#JBn%P+(n6To>3WViqY2axs*J0O7=RU(ym zQc5ej1XBz$00?lN128%ufe55YW8;lBLbZrd4e^puJrM*MfdwIuM$M5(9tjmJu{7!A zld;HBPc-#BVC4fS(8$p>Ty}{K6|e9J(koBY!@!vgR8RnE+qBtcH&P7I!<=;1X=e{e z*q{Ied?sK3Y2O6;O*l~q;lrVbCaNf+Kh(g&2`8jL0%_z_TFw+f6rt&+oOar&5jVWx z!3Q#sW{x@NH~|C^thVavtFW>)$^;hHI71pb?KGjp61?{6>#xB2y2BL&)nf$|NgSc< avdlK?tg|{~F%UgsR$DDNC1s0HKma=d^Q-;< literal 0 HcwPel00001 diff --git a/site/2.jpg b/site/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3d15afb18eb5c3949a52d78a25e47264d1fb741 GIT binary patch literal 6325 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 UYU?XXB5Wa2tX4<#$iQa)7x=*sF#rGn literal 0 HcwPel00001 diff --git a/site/21.gif b/site/21.gif new file mode 100644 index 0000000000000000000000000000000000000000..925de9e9d76acf43f4c17225c0c415ccb97d5e8e GIT binary patch literal 3866 zcwPY-59RPjNk%w1VR!&D0QUd@|NsB_|Nis-{rLF#xVpo&xWH_6j96cAWp9RRbc$(n ziEDF&UuJc2d5d&=imqpZ21s<*7Pz`4N6ueH8%dxw#msg<9tq^-H2skN!HzNfIfrmwrDuDYwUzO%c= zzQf9;uDP$c!>zW#sIa=WzR0z`$E2&Yo};PK*4wVP!K<{svb)8wxx>B1&b-9UyTi=E z$)!NF`+1KIb;N<4@_xSSk_0rwq(A(hH;pNfW-_+jX)7|0S za-{=4Y+u-T!=k4#}=<4|U{O9WH+U4lk=Sr=Hlw?_4)eM;^p4w>E!M2 z;_L0<>g?d@>)q(;+~?`r=IG(Y2 z^YrBI@8j+6;_U6|_V(xW^yTvM?fLoY_V(!X^yTsK?)mxc`1tJi_v`ld>h<;J@$vKf z`|8--I3=CqO&c>_W#8Ye2yNPn3d%BjbHj zN?GMT@~BgdG|I3diy|)6@C#IeAhJp_*A!z6o7h|vsWt4pIgfo%at37poOUWL4^btMBwZ*DxC3H!)rV1{K{gdQ@+?yvBtKGZldI=~9h?vxNS>+ZzuA{(*9_UuECJn-1d zPBpq>BeJxgL}CRTF$vbJ0P3_OuDI0ny3RW3%(IWi^t70>J;G94WzO^foAW;Q(CaPG zKxce&&~OTn&dk0-6EijK#Ip`G(iF3Z8jWN$4lN7~c3e6ik38}#x$3CX^gNeN z%yiREx2>JRR5*8a>Ds7%f90KGTPRpO^w2C|1JBuvjG53GU5P55jlIrGgvsyrqhlz z#vG%}F}Ey}JTkc865r*;tl4HYugCs2+;FOMZ^&$B9X+JHz8+8CO^YgQ(80=Cl{oxJ zRuDI9)N)_r9(hL(JnS@j3@)p*;(se;Y6U4su?iC{zG^UZj z3G$0gw;~ta>_f3Rt)(RZaGyXFVFg%NtsdZT351H4GkB;YUs+QIF8o&tQ`k@wIMf6x zNRLBm&nD;LPHLA+@w;}*AY-Yt%|rfYaEb{zDX2RCDo8wf!X zzQ9i2o^>xX=8lpuxT3 z&0;|d8sd?pVZ}G4qh~&oQ?jbkh*$jM2?A;X59V+RQVio5mYW7Lkim>k?4lK>$V4Vm zVTo2kq7auz1Rz>TOE^NJm6^C>DLAnpBDU#u><}HPws(!JQSgw6#KkR+v8G-zY;cj} z)D}4tj#fB=9AcOO6WV|WL|8%-okWEuD4_~M6ao>3z=JyTz|K6hft`A|L@iwjiB#xt zhoty~iHd0d#n;gcPETux%Zh1?b0koPxxj@oj^rkEKoU=Lx>K<%cCjeQs2X28 zhkx{d0!!e670e(9MI^!yh8Tn!!XO7ZfZ+>Y5JNljfQUj^0u#5K=Oj{rM^lud6(yPm z1{3x-?JaRl<}e2Zop+34T!R|G>Q1KsU?-|9i(RuqTFx#7w0hK|Xyu?rF<3E-UX&;%qXp$j7Qf*8_3h;L@%6ul_ZE>^({I}WfEKqOK&vayVF zObT?eV_B)H(K?Yuqq2oMhi)=R~?{vx@=pY+3qA|*4Aj7@~>;)<&p@~#T zA`ykagA|02gbC=uAWPUm4J06e1xR26z{PFO3tzrka4pv4o#HuggOal#d*(1auip@=ykLJ@z6gBZYIg()Bb2NzgC z3Mk?PA^1QCJ#c{;^dJdr6m3q83&%Y00S{co%o+j}=*Rv^w{CSJL0i0 zzeT7@E*>44H)|{w&LbV_h@3RCaSK+ILKBxTgd4yxg(M`w2rW3l1TqkT2rys~06 zC}E6l(61*_Et9`fK5_CO6S${}MGop8k_648b;yx<2d zAi)G8uz(tjzy>q9L@e$>7^#k`T)A3Xr8I52WZz3tk)nn*)T)0wLvvn22S$smDpXfy^YUoB+biz!z@P#nGw%Vil`Uq=;E3E_^4Wc+1cQDQsv% zS!iMsaJ&R0G~rWI5KwssJ>CILvuCm7pHgxBqSk6MVJ&1deDRaNel4^O)LTy z|I_CzY+XJ7_j00v?J2NH<}$0!6#-~mIxi~kP6Hx5&;1KJ6Jnvu>b%7 literal 0 HcwPel00001 diff --git a/site/22.jpg b/site/22.jpg new file mode 100644 index 0000000000000000000000000000000000000000..94fd93033a2f17154452a1d32c71954d1f2455df GIT binary patch literal 18218 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 G^Zy475k`0b literal 0 HcwPel00001 diff --git a/site/23.jpg b/site/23.jpg new file mode 100644 index 0000000000000000000000000000000000000000..74cb3b33ec18efa920aa260668b1ee3eaca091ec GIT binary patch literal 8849 zcwXgsWmH_twr(}qPgm~CE_&J!Ec_n%Ig+*_Q--L2Y%S(&N3yIwng%A-F zlaY|ok(1MjvNN-b{$CGF8zdV52tMT30Dm7499%rCW<eX8Q(LxZ)#&}XYb(X^vKKG$Jft4;BnZ~XWae{gtod~$krPK{L=2M-SykMO6;5FEds&qIxe&n`-EMfos8`rc2ie<}U%=^Xn1r1XF2{2wY~J_BkZkOVq$Az1CH zA-L2K3=)vxLa;w@sR0Ze278%|=8PXP1-j@Kx@^6nxn*XQl&~%W+O-6N&xf_DZSkOP zdpwtTm6WI})fhl+)QM_3q@%1pO+<&9Mxcq!FyMJk{8{jt(0`WG;M~6$Fjt&i&_5@B z1U$sWHd)>?pfmz+b@Dt{1@PlABK>WuU1uq4UQW za0Nb~V}JoI{P4YNo-pA?{MIcr7Y1adyu*M{V+>f}T?(;$Od2tX(!u~`K~)UEE5v}d z+y8wEwm0Q35PcR~ACJFbRi8UV!pnsa)1I@9<6VLeD|>bz<*_;{@1PQ6vT(Op*|Cpu zg4XI#BK*gF1Z9PP1UhW?jE4n49rq|N37hxzWP#$~0`!~`zLe$-f^*tnhpZUTCA|iD z^9fmu;y_lU)_qE)*Bmr@sEHt(lk|;Bi;-Q#JIW$>WVtW%2zqpuj{$31_sG%u`vm3% zI1Fxr*0rHX=T|m0wbM&&eYiapc2zO?xQQ`I;K7XPcQb|Fqi>Q`dyC%X(zndh$Pzy< zJvkkK1O_-;|9&DhE`prwh#vYjPwnY0rjMIIxTu6bx?GrR^dlZKcLiv|r8q zh=&={3!uMOUbua48m2^|nx#5t z<)%)vhwqLQZJ~-wFu)E;%)nW5hd7m2+MS5UW34+!;W?q@UP`;5q0WH#MYvDoj(PQy zZYp|y{`c)(edNIEet(haX^&xbvXGg{5K35{s_)^H>jd|=I|bLPY4M5sLV{bF4e%|5 zR(9^}&XjPCqK6*^-CUVcW_{=3y)cKPT3`0;d76l0m{*MQHOO79V&%LavKrySuJ*BQ zrndy$_#cs@qrF_~^I|wN!K%jIajDz&OQhpRk3Y=TrJP00(gN_*`-PbdYFKS-S=A}I3<%2&AXtN6gXrJG zfY`ejQ2ZQr_~@5;5Ve0>0>38JB6#P!kMK$8B|R?=iw;^tP!-)Qjscg%eDlp+Xr-Ry zKPCTZ!dI|FD;T1i*f3!5{jcD_S^kRvgrXJ$IKr_B<#+g@RThzt@ELO@OVq&~F%l$9KbzIcPT6X-*EjpM>&Th*;@8W!_K9f~| z{~RR7XcT0TfA}*b^FLxh#|QX$8}wY_Z)P(u0RM{*%h-JF9J+nwfeR zip|HWH|qQ}BDx5d4L&G$k$7r$aI&o7=Ir%H*zIvK-Xaow!>_By^zr$&n6YM(h+R8{ z7Wu%Q62ox@;RRk3ciAwy%Q<(WYKbjIUd!c%x;lNww+P=kDUi>`+lAHWw_VA6p4XS} z74oX&WyPh@eOr>-wMpA|JKRz;3$`Jq9iP$c!rpF6Lxb>nCfVyH;rHpcKeyKMO7nOu zX0cfyF_6YZB!Jf8FwriR5uJ>T&*MkTM43+$my0 zWiH`&|3v_Y#S5)QZifDj1+5k(s`Y<`VYppQZ2skjC3~}(c7c8rsq;JKmrXO$uT$U> zWm5>lZ5rHfc1tV`2TE6i^!C*2TpIN4a&^d~n_eD^3Uv2XQ?8^>#*ZLsE^RlJ%M2|9rX{o4>*vc2e&sq&_(^o} zf4uYk7FQn7J=^H=tsp3mN3QgMO6Du@EcYM3*F1a_h+k861p~e)o+n9F9sAL?5Ovxq za}u~KqJP3f@sY+$kT$S_`Pxnxq=*_7qd|zl}*5BXcbH8gsAmsXXjratIPw z1ffQEar=L>#mS72cV1w*FE7m{Ywof@Q%9X#nMm6US=V@b5Dub(YPguwtPnmKc;k6{ zQcpJ}0-xU@cBKi+zH-mA{syN4gg?zIYLTZ9xDG&+t{uTokMz$^!!STS&s^#Z)=B!; zjEyI|ii%{czAVM&=uiavNb{2C2yEj(9|Hywet8aAtpS0pBJ0q6*~q7b%1O5mT>{lk zD^feA$`LYs>KcEDA`v%*o1p#=(9(;wLnmAwU#X00l5vSfKG}tqOc`lGV)UeYfo{<$ zPix)Lw^YVIGFP>P`b9nssdMoX-D#mGU=sxy?jA!3af!w&t>&RbKD-aqs$aWu+~9BP z;t0hhP$A;vX#`@etw@WfelN(2Ut?+E>ACX@M!z%{ByPpi6yOo+(RCya$+Vf%C;zT6 zJZU2BT(4>;8u;40f(w7*K=kvM0{SH&s)RrLL|!Vu!Oh9bYKNu)=AeK0S~b8djA$av zE=dHBfJ;dFD{wf?pTBIXbivR2h`c}9Vk?j%h}X}T#a1v?&TB>To@5@usj!CYr@cG# zHm~2w!|iJ2XkMsOmt3uY^&KKSG9k~KY4!-d@BY}Q^)04&ZoYxrbQbX^d7f;i*$KE!***r81puqdSmPOvV!+}kY-54)lJW0ZTIlXyAed?+bD#Io>~ROy z@Fd{fLV$ca+%(ZCIPt#ZXk5Du9g&KT~7Pjl;g%%GaoDS|3f+G1bKnd$SVLF+6IX|~4 zyQ2p!&+%hXjMxko&DwHe=}8*#m%|;8DeErc%wZMx&`)eIfFKpNs8JF;J{3BDncaLy z3OyCavI0hhuHvz1@k3K!mQH3%x!!t=yMb8q*Mbja4c(xh{f#@7@KOI|FP)<;TE z*oS`2BtMN*c(j84&c$l?lKY2X{=s~l>=I27S$rr_2Yo(CT5nN{GxG?m!02LPoBK57 z)R&VN*4|V>3Agf|+CpOM4{)Y^Ga5^c>~?rot-sexMNjGvA0B2%bJrzm>zqAUm{a1C zhVohKt@8NwAYgfcu6G-S_^B;Vs|_PeonP{+)ebk8rW%;pC#hfPkk!iR(c`F3#Xm_~ zjnw;;RFslZW0Ky)eqYBYz&T%yWoqyYYI9q$zw$LnD1`qRpNTE2zk-OzgJ}yaouZ%> zgnzL{XO?fm*5Js@i4eE+i+(9+p#79fKf`pISIo#|QN2?je$*EHYu)RCqn>ERK^Ho` z8fUw@D=#RHQY4m17Ric&J;Jtb%a$!C>R6SAthT?TeZgH$6Q-CkPKw{~wUeTjZ>WYu zn~m*B%R`UPogaM)S)CneB@Y#pkK`yT8bmt|%EHJt#65vWt;OT8Z3rPJP44w?MVwdL zGq`Jaw~Mns8AyyaE^0BCsMq?+=;pzY4D#MG9q$-M3x0Hwa}G90VG|5CG&lCJ^!%<- z?~Bv%cbbKZX3-CZztlZNvqbcbEXImtS#%UkshqHTDy?!s!Up!EmX`Kti^;1hj%9O) z>BVh)Q|cP4CyE7^@yph;Y3?aO`e&F%$Piviw3h8B=l7n8zr9o+Yu9oW@2~6sb71rwSx@IU+5VW-Q&%NYw`oqzFYEq;N9C4N0Wrf95>fHnU+8;m z4_D`L?yBPAoKa)Q3h$0(N(b?+JKq19m@Ql@7Kj>X#QW=@ljB=_m!q^SVdmT$?=( z$2{TcSGY=T(-h}S(lTmSnNNC-o!|VlyIx0&tZw2Dp-?R*?F0FgL~G%ilr!`L-vsSN zdijwLqQ?8A30R`VV~qvpihyy&dz0`A#opSWW*Gf!n(ImXrbCr<{$}#ds(X$8yc}^w zy1uSc(Jk5ZVT<2dQax+!eix?4<&zCl&Hc1EC8XWN94cHDoUng9yme1y^GxhXndJf} z+mfV=@l+GS@Yw0WHzA?q`4-yzJg3LOmtPy|VsgZX%}Xe3<0ijhfNT^_ty*_<0|gOG zq`i1M$Nz+Jq}e0?>FB7BnM8!q@MzKvxlk-ZFgrwdPx}9k+j;}3$~$x=T0g+`S?SQJ z8(P^51I8DzY`EZK>eansmAEGM!9scE?5Q87k+oH|28E?nWpT=QPy;2!G*6<1T6Now zxwo*xj>ZuQri+(_(mygCYvRe`KYPWI6yPOz)rK+0GFBD=n5Co)|E4QQGok$|ISj|0us41@ zzw#HS`&WL=HFmA}r4QGAMoH&-z~Yg7mKYzW9+EYj-#mLpoO%Ge#IJO_xTM2kYu>l! z9m9e(Z*U(6lb6RnoqC7`L+P7uID-^)F`hWCJfkE?EkG4S-^NK1j{_-)ld zzni8CpPn0@=w+DEUipJ-|J4oNCun1X9$wNnHhN>@l>6sV+&+?RVTVDZrS!Yw|1gE3ryxaG5Z?fIS( zUNg10$tL4zhws?SeD17aF6%+n+USQ|qHWJw=zr{|Wl#W#Ll~9W`grOw2XdwFM9lKmZ`e$@;a+(@tro0qG@fM?N{5y!mn(x84U-E(x63mIMBnP}c#J(UdJ zJjk5SB7)7!j9|d(vwT#v<@aWf<`H<{PA~?9V2jPQUvHeotztvxq|$lPI}Q1p5c_PW z7GRT9P_l_SlvYp@holynSbQq)`s1^mb6f)Vn9+s8lx=_^bNo|VVdgx~E!MBMqXr1R zW==I=t<#RJp+rV|9M3~OQRpmcpb~X0f7RGa1&|EIJ++1=;?c=3b-k7C@5tD()YC!B zHb!BcWj8ktC-J~{BYq4a)2m}LGCwHqj|D~7?N5S=J;zK*=|#S-Mi=T`S`Xc2U{YNp zHih8ky^*7<*{4Vt#rnN*V*_2QH^1*%Xvqb{*j&l=Tqvq&k zO-efXcA7-8%9+7Fc?I%@x%1srN~fG>E-LqsA&UZuAOXFwecf%?#>_a@!A$EinU3&u z-@`kX3*h4`nb;h2o$Ajvkj(1_24^4mf>Uw+K_N<+S+s(Kjf~ZlhK#tAhf73y?#UQ} zZ#{%4)v#hf?;YGFFffNd|8;=9efaWy-$X9EeY0i5^l4@3B`cgj7y+qsKe;*S5|4@* zqC4fqmA+viVv<*P!O|S=wpW4@-x@0f-H8EDZP45yeke{1c!U8dOhFg`gKe?Yd+lUC z0`dxT(9OVUmPx~dEpb@IWh6U67c3~?0O~=G&^$8=SVbb(!{*bI6dA@2)f!(v9LfDA zgbOWeE3%DbV~A0yeW;IL%^L9rOzl=js6RbPpe-f$?hLAD!mEg;QOELX(Jq@5n{k9p zCjk`2?`*jl6#M~tsu?ng#ksBGGRm8M2U4r{n>Nh9_e~u{4dBi0A~0Y?A8jwZ)qey% zBi(^7&gKDM?>}Rk{GU99_*avT#B?mtuE;6T37N|poI4rRc~Z7YM(>%+n&p>8TJdu? zLq1xovEwojiFGKQdxnc4Suc*HXY^^ES#>^nY6#|jxbH`nWz4|9?6ILOoIHiMelXf>cp~h#D*|*Xej15e(J5+t zl-t&uT4?W8XMW#Hllb&ST{xN=PBy&(wZFJGQ5CZKZKB@m!%<7eOuydft6p-$+Z99J zXFEqsPpc}cErv8N0XjDWFefNogS_U6^5(6$*qA70C8}6atGn;Ati>)I{WgaWO6cCw zPN^7%ff;d+cTTD|zB=~Ru9zc^E@2x|uUTP<(Ws|K z@FiYN^jre>ix-@DvN4{8hhKs7zx0xqsh0av8Nc?k`{?A5`B;4}=-OPjm zw_5KB=KMG>5e;Em^Hb#7eRdpg!zDUpeiq31P=&mVpE-_rEx%IfT7yx}M$?VmzMP!t z$sb5KlGE^7sRh=%W$Q|e3AjGXxodL8swy$a&OSMcw$b0S>AD`>xZN-oDs6nvf5F6e z-_nXJja725gGU~)3hoAvj<8B(=seY|%qy2f-xbqaA9xbi8L3AK#Oh0kr5CS3oaaYm zD`vR&^h!TWTqX-IRhwwWXpV+*l0i5=rr~6j8W8s>AmrWvUR*2}?~ZWT7KH6yZ$6!-jqp2xw}1l);j_b^ z(U^jbMsHJ=*=Y>G!~HhWygD?D0XSwD5IyMV2lqo!{d)&Os@)~35yFK_Yz?=~a%g_U z&3S0+?f*_jyH`}ds>5~fcI!&h@!e2)hkTDj1XxN$@F~IOCHE*V@nHL8aFi~9?!NVp zK!-xl2w-S#1m&r2!_N<-l&CN$23%DlL~+mj{CFCHR*uDh7g@OIt8P?S$im97bznf- z00aYwtDnQyutIS*7_i_7uxWa-4R(l?>J-I*J#hg4;<5leCxS20V8e#~?4TR-+wRl91hz4xm1u9q}LS^{UT!wum8 zLT(P^21rC8_%}V>YeKhOoZP&9JbmuFyZ8$kdOOJqnJdW3D*)0gcm`;xsA;IFXlbZv z=xAx_7&(|285kJ3S=pF5_+bJ9d@w#+DUOov`2`M=RC1oW+F?CIKMNL^n zB?SmA9UUV*BNr1Bm%=%|a|-|AAbo-40RW+b{1xCI0il3Wl9AEU(KA2*6!Jgg-%OqX z6c8wsf)YwaMM+7Xc}kuGl&n;2=M;3Q*-ag3gnc;_!{T#kMXpq|oi!WY7gf6F7fwgd z$;A!hIWHzIaY0g9MO97xqQ=#0dT@OM!|S(h-!Zqaw6b<`c5%J$=I-JD@KHcuQ1Ii3 zXOU6QUqru5NK8sjNqw94E-(Lm!H2@4;*XV8)it#!bX|RW$Cu8o?w;Phk>Xys&fj|Y`Ug2j=t=| ziea=ISK@Ok+UP`-%=XXT^Bbn;6jfe6fAA;jzd--rVGjRKf&M4ve?lg;0#;fO0K%XU zGI~}Blodjn0gO-xxdUYd+Ta({<-RZO0fGmz7566IRJhi}M2o42CRm8BO^jwFW#t*9 z?*wT7Vj3lZeP%hLSpJMj1AoN77>aYhydy2>R6znc-q|F8^hF#fKQa96=s@6)JB2`#mZMxIVtUhZ}x0iAhm5&$bCu;PYG+-+~eT@pN| z-XZ}!4HpTp>sMz7aI#cPk-(6e2??~Sx8UDty(g5HKaK4shSej8kWLc#GK>+QkNp1v zO*5s*UumL5dyR{{d@@7u_`-vp;)9l3*L(%J9?8Hj8O!Mn%gK6{)m+ScHYED`ns4d4 zV1xM^w(C#FH<=A!MHIX&ydL$jamx}9lWR4iP>h6Kxi>p(y0Cd{E;r+9ktWNs7NABv z3o$LtrpLqE2Q0lGX*pru&wEH?!`4#I-JtajHOc`NEr6 z`1T=*rTC7!Ba7{i7xFHTp6zeyAFdunbyeop#v~aOr0-r*km;dUbGpa@*?K36QrhCI zvNv(}^_6yysQVak8r((#c`1!A zvw07duL(}8+Rq|p1@w;*)5Ndqdp?IYD6cNx$&6JM;A)E(??9P;OLRZ_S$e)c!0Nq) z;`IjSqX-HpGkrw$@l8Oa+yAk}S#LFZ;C_ESn7+!OG~9T>VSzV**SBYYB{UoyCA(Pm~(}s{msY`0B_}UH4!*wJ~E~5H^=i#M` z((|8dteS@dS<$JU3EuN)ro{_Au-Vs3%*dNmQ@^xSFZEyFu@*7W zxN3qr-|rlH^DO3}&qC-ZDK!^#HGw_N`+V{0^VEBz%)KDg2MtqVE28psrvGH)Ebn75TE>#-_Aqe9fJ{%rQlD=^@{~JPid> z<|agk3UEMH4>7Q;8b=ZkYSJb)E|I{nk)57N%<((n(xy`PW`WUuTtz@iZCkjvgQ4_e z07SD2!-m+0c#yJf$`)tzwHl+P&59nzb1PQHztQE_<$ze|jhEE)EAs0bWe--T2d0X3 z*)G4#;)ae1j6s;PUp#DBWT|cNderha%eADz@8#_u0{P#2uexJqkdia_4!yc3@`-a_ zP~VEZq;a=8_`bC!)9;2E3i%FdRq60ngPT+`a^{uep_4eelf8;Ltr8Ltk?p<3oBBrS zb*w%IB;ZeOf&T-=^kJ)~JU=@_g+{7Xo_nYH@TH>6=5#Pn)LhI}5h*U16UuMje?Z|T zjr;^p`j#DU)qy~K(KaWKbn1k~P>1I?6z@GL?}Hpr-rZN};INjUlmKDQ&Rfu1mZR?e z>{cH$k@kSh4gv=%Akm*rv!v^?L+~Y=n1ZmL0XJy=erftsn%1rAqmt5lO{!ckWU|EA zI9*fSW?!$ZIZX;9C8yjTzn58x98WiG8F7l`dg4S;TwZU`^3diUjRc)k)UpB9+g~~K zh^gc36VX``s469anwDirg2}8V`SiXC9msa;nokeH{zg>AjzK7KJQ+Oo?)~pQr1w^} zF-nRyN>^$(y!m=A+XX&8sNUdjJ%?af(EZ?1i?h}o62=$1W?pW^@YSAsVKR@@-0bkL z@DCe=^@F>K9g`-@r(&}^7J=q*EAP?rMul&kUe4_@)v|pvU_$w`wMS)Xtb{2wwojcAQ_g_HvB@Hr=#034{w!Iu(D@%G};A6`!T zn2oIa@<`GChTF=)1}>XsJ#~W|3)GbMHS^bx+1$t)wR!F05V@Q%|4qzgt>HO0oMty; z>G&mRc(gKWqjf{ds7c#29JZ(T%p#$k^MaVv8xHoya5yw_HVeOwRMNb-YBWpmva^}z z#AJ=$c|d!vI{NOEGZ5U6EO=a%P~6j|3<)H%XDShtFm`&2nWy=usW`1y>!*bQnvJ{D zqnWd{tIa_<^yMLXqlF`@O~z`snZ!OQ=XxH%6Y2UkD7gUhTox0s9t(N!;KS_G(%**T zOI5MzqG)u&oUqN&dr$(4P_T_@gE|%3NkHC}#VKQ?ZjNC}J@;N)8|k1@4JzI)vpYF< zo$g%R@JMW1K`Q^!K4Y^znTivhSs(a)!`bH56J&al#_rW5S2Nndt63MJFTuoLEI2sE zy&kkKC)3rAY!U4KKx`J22^V&q8neDC2{N0sJ~;oO;1jox^bTf0-P0ARC|wHQq8seT zB30k$bm^-Ar>pz8ClWh|%9^su-h#Qi%~{rC1}XakXoaO(+v1Ci-P^P|6obn<$D#2# zZG}JVjET>2@l2!E&*AL5b0JOha5(dd`WiW}73Smh32Ms(yai^#n-IK2FiA!UIQnO% zH~4I2`OYAjcsn#A)7^#_J@)6U-6}AsCF#an+ zhrXZ0#>OU1g>4i>ci`XjHoPg}s&770QwI-F0TVgo`6pU8#%pdX*lm-*%qL#!gh-Tg zr{v!0jx*Kj_qF?3Nsuf}sBeCdx0Frr`dFFp#H~BgpS>KTSzDn@yaunT!sScedvkMh zfS?DhGw8gDcX65M>?Dt2`D6UuZ z>>pBJ)8mvz56E`VS_~_zy(z*)1ldF_)1UwZ;so+M-j@V)xm)%r zN#I~xj(Kp8d?RGd7BK{uJAr7QJbu+tMIf6*5X>d`iy3A^Ufckc^(sC~1XQ+FQN9dciaaJgd4!93>7C zeD<1$amEX`j_g9`7cA0a(hp89Rb^=$=&;!YWy9+x>Y4suI^Rz~#?I-f`F zdClvcNFLaJa;Ae#-=SYcUO(MA6cK?5L5>4sJPT^ac2zhCY?j+)1ziyLtmQFe!yOA> zne2LqCJ%_PIv{2`dVQF)(o@0Oc?h@bR2Y1cg6k?SLsqP`kXv^>6239LhVZzT% z>-^`OA0Cp=GRp2%hXz$wnJ>fO*(x~y8RV?Bo*DcJa=IJVrKmAP)h}mSJzkBM`!)Lv zU6UE8FZ@vC_)L%xmR4wpCTX(T_3`-glki_8aQriZ1oUKr&t6vBc8f)H3UCn@4%D9S zc?(yg%SW3>ac^b00@K!o7$Sut!j%Rjfu_+iqITBJd`8(k#r)Xy6Vs1tTwje}SeD<+ zhn=sQdbEy|uR&1b6K@`9eO{}Nsp(8^E=}EbsY|mGzT0rmQU}{+tKC0dNhgwl^a^s) zolus!e~Uro)t1HN&&8@U>wY7Y?U42&GhUgLK|VPL#yBcG^PXaU-(bJpN;_dMmW{uc;_E&% z-&Q93S=8P=GroPzp>H`YP9r8gd%>+1Ilh%ZzD6(hAfKZs>3?P~#EBcsoI zLX=FaPCL$hjLvKCz{I{w%3&Pl?Xpl`E^7s~6k0bhwn8G)4_am&!-IMrJ1F1G;%0 zLXQ)IMX`pW|6q+?Y*ECG%3DwJbB)|mA1ul{J~QoM%@DW>j^nlKlfWP`ngqhgve)%rU}Mq8jf(Ixfr4BOc`7TPscX2BSczy=9iBMbj;5?HaLNzEFUIbOdCTPH1iw|cJerC;TinJP~ejl>&`;lrPuyvo$mu3uOU zpKjHR`*z14K8cR%E_GKtvNJDsCi)-wV$fHc@JITZ*=a$)1*+>-=jgmuq!=C)VZ7zM za?z;*wu;w3?j?prii?ZC^ftVt3OOwx=O69b#UI2$Vhv(~{E08OJUPv(_Lp7aJWh`6 zA4{p7tR1!0%U0z6ZvL>XtuG=zqLbdRL5zxpEhyV~e{mX7{Z1EGDA{c7JwvUgfP?WX z1~2iXjm2EDb!Q$6x$5p%WINr@hdEypVPB_5$vyT)XJgOz*YDgh(*P{mvZe5DH==OX z?h4GQF4{$>gOVD&Cj7jeIsV1+Bgmn9SjJ%ZU`dW;`&g7o)XzO&#Lntko#@-7>I#YN z`DvPk@2ML-iT(LDiTV{@XO~kh<{3IZO1Q|OsKFOSlS_jx)AP_dcJNJtOjwfhbCTd; zKOz}8;^W}iw+>_@G`hv7WkQEHdO6m`jC&}SikW)(TLh$FZGEOsRd^IiL*$CpB2RP+ zUWEMU-LQzlx}&t_Jo;N-w~=KapQJ?@m{w z>xZap9}o@k#ds8wt4SaV<;7s-gR^ z;aTrzuKD7=mRpl7j2G{Keshu=`CZySwgkqKaS7 ze)EM7eI3!ez*A&CpSenCi(ad^94S%MJ^z@kpJz%Rro-=&g<9V9#H_qyGA=Mkw*Az_ zQ4UpK{owzylVG#u^W`xc3HacBh)-+m2}go>v(w+HD?Btf5+E1e8?$#vpoOeGk%G>K^jr?&e|v-}VNdRhG7E+Tn8-)2_7e#pM94L&_S5h9sIb$P<(4DdIAU)Nv8=z> z*m7n_8+D>a0+(mXPEX=aB>tb_(fX+PFx|D$6ytXl?)aW?(a9p_x#YHQ#|02Eg>=8J z;#`8kM@4uZHgT(TcIEQ#q*~lk9yv`=4hLUA0Nf~fKuy*1`*eCUW&2r&lF#_KE8YJZ Rj6E4PtDEmQI*v5`KL8ONylnsg literal 0 HcwPel00001 diff --git a/site/25.jpg b/site/25.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c2d18d85dc6c4fd322aa4c0391bd8867277364e0 GIT binary patch literal 9228 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 literal 0 HcwPel00001 diff --git a/site/27.jpg b/site/27.jpg new file mode 100644 index 0000000000000000000000000000000000000000..be0110c90c977446667f91e37688900856aecf53 GIT binary patch literal 6586 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 literal 0 HcwPel00001 diff --git a/site/28.jpg b/site/28.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2990eb4ce823921c7afaf57288a1055c30e8cdc GIT binary patch literal 5419 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 R+B-SdYToqr03x0>_%Bl2nOy(? literal 0 HcwPel00001 diff --git a/site/29.gif b/site/29.gif new file mode 100644 index 0000000000000000000000000000000000000000..699b583c90e61a54313c34bf07e6ded2ff45fc5b GIT binary patch literal 825 zcwTe&bhEHbv|x~Bc*elM@E-^nzJLGz{{8#s&!6AFfB(*%J2!6JxP1BY#fulupFe-* z%$eiIj~_X5>k&%&$dGXc5YWwUEegBll{=)BS()NKXFWG{ys?)jtdtrUA}Vl z+BNHS>x~t;@7;g!@X_NZPt-NnGrJ1%zJ2%p!^cmbKa07nmo^pt{pat${|wAra~3c& zt&mpH(}+2-Vd3F+0p+-egG!eel%4Mm z)d~hqb}oL4;#YT0ZeD(VzGdtl2^R*=j>R66wPH_gS$TPhQXhxF6-D;$)e)Ps?w;DZ zI()5Nh8|;4OZ&~u8JAbZp5B&wOWAfBi-m;K!^XS2D?Y!vdwTo&dot2)TRwR2*pRqa zmxtHx%nrk(qkZqSX8uXoH0jh7-Q<01b{aoD(xiMlRH(t2;oMT~`C+}gN}pa?AnyL{ zjOFIHw|1D@cj)fgo_KFj=4&y(KgLfUtoGa;Hp!+k>*;!Z=J~bN6<;4+axdw4xV!rP i5tf!M68`)4{QUgl@@n`0j{_UsK0H3%{$E3Y!5RQ>%|X-v literal 0 HcwPel00001 diff --git a/site/3.jpg b/site/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4b2c505da19419dab9a878d26b16e9aff93531f6 GIT binary patch literal 6573 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 JWe|)w^)H}ozzhHY literal 0 HcwPel00001 diff --git a/site/30.jpg b/site/30.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1dac636f91693ca5fda24376560e452ce40e1d01 GIT binary patch literal 4257 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 QS&t%@q+2gSRiKf-0NDT=`2YX_ literal 0 HcwPel00001 diff --git a/site/31.jpg b/site/31.jpg new file mode 100644 index 0000000000000000000000000000000000000000..742e8084c757a98dd93602e4ed94ea4d50cdeef9 GIT binary patch literal 8912 zcwXgrXINCtmhNtHPNL+TB}tGBO^_raK@mwJIp>`0CW|C#6eKnxQ3O#kG(pKAAQ`&J z86<<)r0(f&&fJ+f&z*DcJ@?-{Q}ts%yK3*X-&$+c+V5M~8SD~3b6-nW3jpEzb6f|o z7=Yt}rrJHu#}0PRo?h-=PA(39oVuQNVw_JT#O_D{SQHQgkPs3P6A_XS6A_b=kdRW) zQ&NzVQ!vufQPHz8v9q%>v9fUTiV1LX3v;uu3d#ryi%UpJOL6eaDalDHiAhRHfJjJ5 zDaa@oC@C2vxLCO){^^G80u=%Ph!FIz4fwYP!ow%PAtNCrBL@Nap#RnWw@DfR4}_18 zM}SXANI-y_iNMVP1hj;7ToP(TH;inExqav*Bh%iK@Thre?VYRa7bu$Ol(~I z%Y;|3^fzxaGT&uo7k(%zE-5W5|M<10wywURv8nlcXIFPmZ(skw*!aZc)bz|Oa(QKS zZGB^NYkTMD_~i8W*&p=z1uYIT9svP90r6juL3lxbt%sI?kV}GyPR)qe#^(mNWF!f_ zdfNLh-$;3+j1OdM!yNVh1^VAH|2t%C2S7^#Bmz13ARKyH z5I!vkiv%d}LAV=yS^x|zd};Qv^Ssrm&3P|cytG2%T$?w&UwJ4rRw;Vy47>mdwp96#k;6(x! zh?>9x%*v^M;0p}Yb^TaC_4)=DAS}m7hjAQ$5n>!}>6pk10Sx)0E9d`KsG0_TRau*4 zC3$N-T+ASeaaJ)J)xJL^{PwBV@6@XhH7sB`eQpAZUd0a&U}IL4b$RY$f3mxbxHbMz z=CIGVD0b~N$q3VL#);O+_CDvq#4afpb1s?b8}qvSU)|N`yT+8?@xo$+Z%7zYk+|n| zj^BjW`lRITZDVX~L&Ehx@#nY>xv;f%T{Lh1;yoMV?q_jwFO=bm_as%OUVb+A#5|z- zDR^0={gP;eAGHTZSma(h|N0oN!0Ke`K>ngxy3o;4i-SBpHI`e zrfYfc_PrxNF4YCUb#*!`G8Cg?XgS65}Hr z@Z3TksSO-D2hKL%p9Y5_mxuLd29u5CdO*5J0X|tiYsI20Yi`~A>gMleHF8T1)x}9 ziyNv?Df?i8cYH5jktIVb;r`d}U9^#XDh(r?EI%ZG4x*4%6LojKBi5o+$CGjZGD&tUnEqy4=;2H|+s#RuRi( z;*q1AakPc=yHQ)ugoK6cWONsXCR4#(2HV>Em2Op+aRm#+T2amq69ehOJ_L7(ypNeB z4y|4{;P|fn>))OzY8Hq_sn@w#32V1B#Lo4Z+9zjlQmlUs1w9nYy;(TD!2H&|jib}y z%!Vi#vW{%eqA->|)@C_5A+UYSt~;!dJ5j9bjs<8Y?s~;fT_6r*-oLl%JN8(ty&pLc zMPF?U;-mv9Ev+QnHlF{CxXaggs9-q~A$=h_mt4l(>&xVT;xxp&Y6USea@q$$#gwJN(k4F!AIn!a}`1!hhoSVdT!p6EqQ}4@7_0SG{wai84 zvB~o*t|_UKB2wH}@jS2}=OVhi4Rlpx7b%HB!UV^Iw+ET*`#dTe zSmIPUS(i>s#T{@C@BT=Qb2tXt06AK}hW~NE0!G&(n0D(>aKOBWN2jrc0dZa4gscow z8L3bBakdA=t7t>az;(+IFrnMQ~U#q?LuZG0ACa*H@)QpP?`RvNV)5+3gA&qlsg zrjnqxu9b(6(esneATw5NIbI#-b`voGx=bFUct>5 z*1qKbLx-5Mi!K6_tI(boOLYjN9XcY%Y!|;AJt)19;~jOxmo?nx@BeYF|F2sX9jH^%JHuC8fhCDuMB+0m3K=@1)~c(5zUM ziP@KaV8B}nC9vaqzL+@|)e8@9q65>+i@2I-{lMGZ+!qhz#nf$$21Rl0hw{Z=MV(@S zi<4+9peY(MsUo{$EOESLg3z0fVtBX~Dhs zb}NMAVm{uyDPF3n)f=(|Y-kFJ4*4O#pIxqf%Kfvn!#M2Rf3_r`y>WamBV>i;#RH)y z=YFs*A+TUCFCGZ)u<|R1l9D$+IG`di&we|@DJRHk=s5AUA>+KNI}|>@n){QWfA!$h zEigjLqtmVPULL`@&Z2;%u*V>UT@?Lsgrq7HICcFgugrz9(uXc$4b8B^k3%WEyj&e4 z?i}R>1NGhyPT0d2A}13wQvelL7k77l8isN|n`;Ha3GtfI5_bgh>)sp^mncE?niNJ5oK zg)P&x`KZ3V#1b8Kp=ZTaY0f8MfiIXwUhT`xYHzpxt@p(#NG4}B&2J@4pKfOu$>hbn zOv}}-mr&r`)V1}2LU*T^)9Y1$6axQ!S(0S!!KSsrPI8c?p5z*J?zHA_ciDjtc!P+bipqZXo0>xwI=)v1k!eW0eRb}| z8l@v(iQm|D*_XO*x)>)17!pkaA?-lKpD5c@sydBgaG#*sHDv6~cvyvIOE7 zkv`IL(q0RxQ<-fIU##69$x3cf@M-Xz3mlOKE)R$;7G2KjrxmKodFvZi4fRU1*bSte zSS8<(Nqzqq*|A!sDuPbzeA2u=3=jNc8fcpBp3K+UT@+~*L?QXQqnsF@Gi7E=hm#%) zEEA1`YgGC-=g$|BU?kjqq0I{!JHyl=9h|2mb@?fM)9WvVaDsFYShkj21C0` zQ%&o57II-_u4J96#nNW-O_aohQwqrjl;^NCt}m^?^fG?F5UzK@! zfvTZxe9xmQz{*(H!>gwt(?C)w-+5ThL6F`l)&xJY*AnXQ4;T{XpnEY|dhKXp476_h zCx#hU5pVu|Mg09&MdX6wzi1UIUqJGk?S8Lbq|?NK z$EQNa8Q#XXcE&RTOuT+j$nAe@5YH751Pbt=T&;+@>iV#pU++9TR(rM`y|DD^5S6LLs>4RRZQeuRQz#33>tWZwD^c9m1EqDU)EL!te$KZ=7uP_-o@B|C4ZeE)B~GK2u% zR1ULQx6evcW<$n!KLtY?L+3-jK}I`Avf{Td30T>ERBr}2x?F(^=XRPKkfJo6UR00(3bP3v8zP^lb3@GcAz;6+|ro6)rv_ULO~gD>suhn{_hj zw0b6|x$me^R78&_g&7jZOKBAgqP1#N+#TSeU5ikcEGLloG-lu>)))LNKW-USvD6 zSU@b%$w#6k?fjLH8D7V}qD_BiTC70X5a4Tmy*|_yzq;q8)|9>Yps}%5##Cn5PWz2y z(E+=}WTTjzJNrXHP`+&b3LC@9t+ca>tWTdT9=iEAW^FkCh$X+;*Q3!PCRhsW(FZ(; zr-{3I4pElYY~VdRbBnZ)c$!_#?^+=*hw9Xy(|~^Eb>NRV|67*e4_(<|0Uo}^D}0`RCsWZD4ewf}4y{djos*c#%{NnUjC#73VOSu} z`-aT3K(LQ$vQi-6er93Kbz z>Hd(iL{hwN?$#D3>ZZV3RB~PRMD9nbw-7!n!UyCoQafL^>!&lG?8NC$d(h`(eP0sK z=txl;US3R*2WrF+(tS$?G`unmLB^66s9EWTR6&zD9g`$k*3I>f)qH0>mUfolz_Edz zV||T)w)d;r&{#U4?_KfQ zGY}hdv);X&u4A`tJi$Bl$})9PT37hYv?GWwg}HHn&VYDf0Y^yp-Lq7Iy#>fYpy%vn zh@xN3k8_`v7xE}1^zLVb-TSAm3^KAosr2>9%ySYAZ+b!LEV6wJw$W+*oQ8xBN0o1$ z@lW`NonDI1dWw2H&lJG|&Kdq970`AunKYQsX#r)P_>-@bFQ(5(uMWP0xrd|1@1`O2)jR3nH8(OjDrQ4*+4o)#?} z=jeBgW4OP1%ZSyEh&7sy1Y*Q%6PdVDRyGG`#_4E0(w?qC4K$U@K>5;R0j&?r*yw(9 zJ!RIoTQjHUSwk1YC8>F`Y?1c?)RGpd%J_`wP^PpP@}2E0VUOjKe6QVQW;f`37FBaw zD(NKmg)}HW=!5I8m9Q{!@}TCgUi1(*Jz;apdwp^vKel*~jW0A{=a!(KP)~C-)jlJ7<#+bhSPK8K=Dd@up*OPgj)L>77*i^R1IDan^IcFkSFSZaeLpL#{cTXwllPuih z_p5K;Q8oIRyLRCVip2sXGB~%Aj9hUoM3kNpBV{8#hecHMEpF`2HaK2ic@4{))F>H( zR=n_CLqA{fgPrn6!3{6E&ph@!ozjz0howxtj3djc6h}cZ`@FSBLu;2CiKcP0mA19o zFgsr1h{W2X~en{L#mVG@uvii1tRINz|qG< zjh4&yr6iffP@E)1(~4sO=E9%*m;*E?i&v{O7PunG!~)4i&Owl%D;mm%g=`3hKo1M_ zl+`M>w_r$!PzU;8EP%&{1y&!Mvn|eJ0RsI0Y+sb>U>^%af$A^EarCq!0fL^q6(95m z@(n;mY~y^obg%u&^=}}c9&M-NSm2P`8gp0k{rvUfq3VAhSRspv(Wx}^q~WbtfIqxm zq}?Z!4sE!%Q6_V9*|(Xh-4@-eKOd_cqfhktzAxX= zzvNU2(4kY+8lVt!I0QuNmK?4+=q7=?cDOh zn|D1~P~-A<$dKh>?4+X}?BfhzM+4sv^V2`iq7^j{*N5Y!=`0p{?{-f#(46Ze_-tOa zSY;(3=_w2Be|Hp+wbLQME6GnH98tRC#uip;9#MB|EV?(`dB5c4h9q^wlF`SKg&wK_ zEfvlRzg!n&VS{@0jm)29D((Ngc>KEM9`uf&?)g_;tHB20{$4{0QPa-mH6%w$)!l$g z>a)yQ%39>x$>uBq{n2bCZWta^j_J8%h%4}^Ubao71|5Us&v+R?`YDFCTlxV^Qf5=d z7B2FILlNjDtkzXlRe--#;BQjyTJ3DM7xfA#)%P576xM+Yr9)t7(s@T}ZsC7J(te|oT?{_uwkUHiLI z_noCT9r8+4A5uesedm9c$Ls$W{Omtp{)yE2w6KlgKb((ky`Im*tpwRN=DznN#KKm{ z>Z8%fqhVt82uV(gYsH=h83l%y0oz4QQ_{j(iI*}vIvGr2W>C{du|{?FoSw7S2dznl z1mod)uhX;15G4CDJmNYv>=U<3end(9nOFUQ)2zTjD!aJ{S2YP( zN?a-Iuj3;5#iyCNRsym=cgpRLB8q(Qd&Vkz0$1N?DN5x_!t%D6oy1? z?oC|bc*|f5oj$``n9|l+s<>~I7E^mAU^d}(SFt@o_&rWi%iPk?xwN@;^!;i7CjHLV zoLxg5VBq!HdL~#?+)J}=Z-T+sY{*BX--(JYFmc$oYmY#XSI{mUstm|q>-9Fj#lVX# zosCfHysExI=I!nVPdSn~c1h5EuLK{B!e4(99XtZWUj8Jy zm09>yz)T1D)I!Xe(TAD{I0e#;(2;()z`I?yXvaWo`hm7%FY>E&kC{A`|Iz4LY-gKAsIF zsyiS!ac89hrI;e`M4kHRj-3gExQLfTu9&2*I>|xb8jj_nBTDotijNm|?i9L$k+!3J z*1U7!O}=Cq@~B@u4<)jJ{+2_^-y;co`%7;{{LyugJ?#W9bCWdmV2C4Mr-aEb9>T%r zeyVKvXo36bnp6Je*&BKuj{AE3$4inr>jr(Qj6fMD>**%XE1*~ahb2tebK$^vQY^>P zIeW*&A*oTKejOD9P|frJ0EHo8rF93=vEsVrEMb5AGH4eIxXkRxgvjCOuuraEE`}a7 z{;$>Ozc?3MwL4Pz!fMo&`A#Rz&S+hLtN>651?i7Q2RV!NLcTx3sf&?KjJm;L@vhJr zc{LV@DK*0a@R6$+__B6&>5Nz>hAz(u0|6h?L1Njz!=JZMqwfd6&vCoEPZvWUMivpZ x3tkqQf^42(0WJZw(f=efKTw0^pFN+gtp6E6&&}Y=F>a~6{bXDCDF%X_{TF0LUfTcw literal 0 HcwPel00001 diff --git a/site/32.jpg b/site/32.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a2bdbce290f207a5a94874b329146169442eaf5 GIT binary patch literal 6128 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 literal 0 HcwPel00001 diff --git a/site/33.jpg b/site/33.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c35d2d0c673a1f60cdee5b175721e1160f73fe3d GIT binary patch literal 9324 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 D<(+3f literal 0 HcwPel00001 diff --git a/site/35.jpg b/site/35.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15aab1fc0d170d5461b79ab5a7b9982d4c6fe513 GIT binary patch literal 9229 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 literal 0 HcwPel00001 diff --git a/site/39.jpg b/site/39.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83df2f475f4cc3931c9ad6d4ad8dea9c825545fc GIT binary patch literal 6157 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 literal 0 HcwPel00001 diff --git a/site/4.jpg b/site/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fdb37177eaea0a016fac6e8914ac40ca4caf547f GIT binary patch literal 6819 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 literal 0 HcwPel00001 diff --git a/site/40.jpg b/site/40.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd880a93b429ef11a2a48b19d85ac89552257b21 GIT binary patch literal 7901 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 BgP8yT literal 0 HcwPel00001 diff --git a/site/41.jpg b/site/41.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0980d57a964c747d414aed800fbc8037a9de8e95 GIT binary patch literal 4541 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 E07+#l!2kdN literal 0 HcwPel00001 diff --git a/site/43.jpg b/site/43.jpg new file mode 100644 index 0000000000000000000000000000000000000000..265d7ea17eeabe2755999097ff71a232a63db863 GIT binary patch literal 30318 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�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 QHw}3HzM;rJcPMD&pR5I~U;qFB literal 0 HcwPel00001 diff --git a/site/46.jpg b/site/46.jpg new file mode 100644 index 0000000000000000000000000000000000000000..30be49e9693920e39847965247a13b96f412557e GIT binary patch literal 5910 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 NQv-h%g%)YzUjTt10ek=e literal 0 HcwPel00001 diff --git a/site/5.jpg b/site/5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1ad8f5dbecadaefba0f37d890b85c850c28eb43e GIT binary patch literal 23110 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

lleIpp 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

t9T@*Q>ZZ_0p@!7wNg8ocqKocw;Ro%+bhKi)> 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 literal 0 HcwPel00001 diff --git a/site/7.jpg b/site/7.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d127f7bb1d93b0d90590e3541494f07c9dde3b30 GIT binary patch literal 7835 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 literal 0 HcwPel00001 diff --git a/site/8.jpg b/site/8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9b9d0fbb4ff8a85362f75bdca9a25d3ad72bccd7 GIT binary patch literal 8773 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 RF7ba4r*Xw^Gb5KY{Wp3NDntMP literal 0 HcwPel00001 diff --git a/site/main.htm b/site/main.htm new file mode 100644 index 0000000..45cfd96 --- /dev/null +++ b/site/main.htm @@ -0,0 +1,565 @@ + + + + +IP Routing Simulation + + + +

IP Routing Simulation

+ +Back to Rad University    +How to Use This Applet

+ + + + + +

+Written by: +
    +
  • Gil Messerman
  • +
  • Gilad Karni
  • +
  • Uri Braun
  • +
+ +Written for "Protocols and Computer Networks" course at Tel Aviv University. + +

+------------------------------------------------------------------------------- +

+

Questions: How do I...

+ + +
Network + + + + +
Router + + +
Host + + +
Datagram + +FAQ + + + + +
---------------------------------------------------------------------------
+ +

Answers: How do you...

+ + + +
Network
    +
  • Add a network +
    Back to: Top | Questions | Network
  • +
    +
      Right clicking on the main panel will cause a menu to pop up. +
      Choose "Add Network" and a new network will show up on the main panel.
    +
    +
  • Add a host to a network +
    Back to: Top | Questions | Network
  • +
      +
      Right clicking on the network will cause a menu to pop up. +
      Choose "Add Host" and a host will be added to the network. +

      +
      FAQ - "Add Host" is disabled. Why can't I add a host to a network? +
      FAQ - How does a host gets its IP address?
    +
    +
  • Edit a network +
    Back to: Top | Questions | Network
  • +
      +
      + +
    • Define network's address pool +
      Back to: Top | Questions | Network
    • +
        +
        Right click on the network you want to edit. +
        A menu will pop up. Choose "Edit Network" and a window with the network properties will be opened. +
        +
        You can also double-click on the network in order to open the same window. +
        +
        In that window you can define the network's address pool (Class based or CIDR based). +
        +
        +
        After defining a network's address pool the network's address +
        pool will appear on the network's icon: +
        +
        +
      +
    • Define network's MTU +
      Back to: Top | Questions | Network
    • +
        +
        Right click on the network you want to edit. +
        A menu will pop up. Choose "Edit Network" and a window with the network properties will be opened. +
        +
        You can also double-click on the network in order to open the same window. +
        +
        In that window you can define the network's MTU. +
        +
      +
    +
    +
  • Set network's default gateway +
    Back to: Top | Questions | Network
  • +
      +
      When connecting a network to a router for the first time, +
      the router is automatically set to be the network's default gateway. +
      +
      The default gateway of a network is denoted with a "d" on the line +
      connecting the network and the default gateway. +

      +
      +
      However, if your network is connected to more than one router and you +
      want to change the default gateway of network, you need to perform +
      a right click on the selected network and choose "Set Default Gateway" +
      on the menu that will pop up. +
      +
      +
      A bar indicating you are now choosing the default gateway will appear at the head of the main panel. +
      +
      +
      Then, all possible default gateways will be marked with a blue rectangle. +
      You can choose any of them to be the default gateway of the network. +
      The Chosen default gateway will be marked with a green rectangle. +
      +
      +
      When you're done choosing the default gateway, click the button "Done" at the bar at the head of the panel. +
      The default gateway will be set. +
      +
      Read more about removing default gateways here. +
    +
    +
  • Connect a network to a router \ Disconnect a network from a router +
    Back to: Top | Questions | Network
  • + +
    +
  • Remove a network +
    Back to: Top | Questions | Network
  • +
      +
      Right clicking on a network will cause a menu to pop up. +
      Choose "Remove Network". +
      +
      +
      The network will be removed from the main panel along with its hosts. +
      +
    +
+ +

---------------------------------------------------------------------------

+ + +
+Router
    +
  • Add a router +
    Back to: Top | Questions | Router
  • +

      Right clicking on the main panel will cause a menu to pop up. +
      Choose "Add Router" and a new router will show up on the main panel. +
      +
      +
    + +
  • Edit a router +
    Back to: Top | Questions | Router
  • +
    +
    Right clicking on the router will cause a menu to pop up. +
    Choose "Edit Routing Table". +

    +
    +
    This will cause an opening of a new window: +
    +
    +
    This window allows the user to define a routing table for the selected router. +
    The structure of a routing table is a list of lines where each line contains 4 elements: +
    + + + + + + + + + + + + + + + + + +
    Network destinationUsed to define destination network. This value is compared with part of datagram's target +
    IP address according to Netmask value. The network destination value might be either +
    IP address of one of the defined networks or an address that aggregates several networks +
    (supernet). +
    For example in order to route a datagram to either network 192.168.10.0 or +
    192.168.11.0 using same Interface of selected router, the user may define network +
    destination to be 192.168.0.0 with appropriate Netmask (255.255.0.0).
    NetmaskUsed to differ the prefix of datagram's target IP, which should be compared with the current +
    entry's Network destination value.
    Next hopUsed to define a router to which a datagram will be forwarded from current router in case +
    Network Destination matches to defined prefix of datagram's target IP address. +
    Two different cases of selection are available for this field: +
      +
    1. In case the datagram's destination network is not one of the networks that selected router +
      is connected to, the user should select the next hop to be a router's IP address that will +
      handle this datagram further.
    2. +
    3. In case the router is connected directly to datagram's destination network, +
      then the user should select the IP address of the selected router (on this network). +
      In other words, in case the value of this field is an address of the selected router +
      itself, the system will attempt to send the datagram directly to the target host.
    4. +
    InterfaceUsed to select router's network connection to which datagram will be forwarded if this routing table entry +
    will match the datagram's target IP address.
    +
    In addition, to the right of each line, there is a "Remove" button that, when pressed, deletes the appropriate line from the table. +
    +
    To add a new empty line to routing table the user should click "Add new line" button. The empty line will appear +
    and it must be properly configured, before saving the table or moving to another line in routing table. +
    +
    In order to create basic routing table, which will be based on current configuration, the user may click, "Add entries for +
    each interface
    " button. This will add a line for each connected network, which configures the ability to +
    forward datagrams directly to hosts that are connected to selected router's network. +
    +
    In order to create a default routing entry in routing table (to indicate where to forward a datagram that does not +
    match any of other entries) the user may click "Add default entry" button. This will add a line where +
    network destination and netmask will match to any datagram and all user has to do is to configure where the datagram +
    should be forwarded. +
    +
    +
  • Connect a router to networks \ Disconnect a router from networks +
    Back to: Top | Questions | Router
  • +
      +
      Right clicking on the router will cause a menu to pop up. +
      Choose "Connect to Networks". +

      +
      A bar will show up in the head of the applet indicating you are now connecting the router to a network. +
      +
      +
      A click on a network will mark it with a green rectangle. +
      Another click will unmark the green rectangle. +
      The green rectangle indicates that the router is connected to the +
      network. +
      +
      +
      When you finish connecting \ disconnecting, click the button "Done" at the bar at the head of the panel. +
      The connections you chose to make will be performed. +
      +
      +
    +
  • Remove a router +
    Back to: Top | Questions | Router
  • +
      +
      Right clicking on a router will cause a menu to pop up. +
      Choose "Remove Router". +
      +
      +
      The router will be removed from the main panel. +
      +
      If you'll choose to remove a router that is happen to be a default gateway +
      of a certain network, three cases are possible: +
        +
      1. The network is not connected to other routers besides the default gateway: +
        In this case, a message notifying that the default gateway has been removed +
        will be presented on the screen.
      2. +
      3. There's exactly one more router connected to the network besides the default gateway: +
        In this case, the other router will be automatically set to be the default gateway.
      4. +
      5. The network is connected to more than one router besides the default gateway: +
        In this case, the user will have the option to choose the default gateway of the network.
      6. +
      +
    +
+ +

---------------------------------------------------------------------------

+ +
+Host
    +
  • Add a host to a network +
    Back to: Top | Questions | Host
  • +
      +
      Right clicking on a network will cause a menu to pop up. +
      Choose "Add Host" and a host will be added to the network. +
      +
      +
      FAQ - "Add Host" is disabled. Why can't I add a host to a network? +
      FAQ - How does a host gets its IP address? +
      +
    +
  • Remove a host +
    Back to: Top | Questions | Host
  • +
      +
      Right clicking on a host will cause a menu to pop up. +
      Choose "Remove Host". The host will be removed from the main panel. +

    +
+ +

---------------------------------------------------------------------------

+ +
+Datagram
    +
  • Add a datagram +
    Back to: Top | Questions | Datagram
  • +
      +
      Right clicking on the main panel will cause a menu to pop up. +
      Choose "Add Datagram" and a new datagram will show up on the main panel. +
      +
      +
    +
  • Edit a datagram +
    Back to: Top | Questions | Datagram
  • +

      +
    • Set a datagram's source & target hosts
    • +
        +
        Right clicking on a datagram will cause a menu to pop up. +
        Choose "Set Source & Target". +
        +
        +
        A bar saying you now have to select the source host will appear +
        at the head of the panel. +
        +
        +
        You can, obviously, select only one source. +
        Select the source host by clicking it. +
        A successful selection will result in marking the host with a green rectangle. +
        +
        +
        When finishing selecting the source host, click "Done" at the bar at the head of the panel. +
        The bar will then instruct you to select the target host. +
        +
        +
        Repeat the process above for the target host. +
        +
      +
    • Set a datagram's source host +
      Back to: Top | Questions | Datagram
    • +
        +
        Right clicking on a datagram will cause a menu to pop up. +
        Choose "Set Source Only". +
        +
        +
        A bar saying you now have to select the source host will appear +
        at the head of the panel. +
        +
        +
        You can, obviously, select only one source. +
        Select the source host by clicking it. +
        A successful selection will result in marking the host with a green rectangle. +
        +
        +
        When finishing selecting the source host, click "Done" at the bar at the head of the panel. +
        +
      +
    • Set a datagram's target host +
      Back to: Top | Questions | Datagram
    • +
        +
        Right clicking on a datagram will cause a menu to pop up. +
        Choose "Set Target Only". +
        +
        +
        A bar saying you now have to select the target host will appear +
        at the head of the panel. +
        +
        +
        You can, obviously, select only one target. +
        Select the target host by clicking it. +
        A successful selection will result in marking the host with a green rectangle. +
        +
        +
        When finishing selecting the target host, click "Done" at the bar at the head of the panel. +
        +
      +
    • Set a datagram's length +
      Back to: Top | Questions | Datagram
    • +
        +
        Right clicking on a datagram will cause a menu to pop up. +
        Choose "Edit Datagram". A window with the datagram properties will be opened. +
        +
        +
        Double-clicking on a datagram will also open the same window. +
        +
        In that window you can select the datagram's length at the appropriate field. +
        +
        +
      +
    • Set a datagram's TTL +
      Back to: Top | Questions | Datagram
    • +
        +
        Right clicking on a datagram will cause a menu to pop up. +
        Choose "Edit Datagram". A window with the datagram properties will be opened. +
        +
        +
        Double-clicking on a datagram will also open the same window. +
        +
        In that window you can select the datagram's TTL at the appropriate field. +
        +
        +
      +
    +
  • Send a datagram +
    Back to: Top | Questions | Datagram
  • +
      +
      Right clicking on a datagram will cause a menu to pop up. +
      Choose "Send Datagram" and the datagram will be sent. +
      +
      +
      While sending a datagram a bar appears at the head of the main panel. +
      This bar gives information concerning the datagram traveling through the network. +
      +
      +
      The "Stop Simulation" button will stop the simulation a short time after pressing it. +
      +
      When arriving a network, the bar will show the network's MTU: +
      +
      +
      When arriving a router, the bar will show the entry in the router routing table that was chosen: +
      +
      +
      The bar is also used for error reporting in the sending process. +
      For example: +
      +
      +
      And more... +
      +
      Datagram Fragmentation +
      In case the datagram has to be fragmented, the datagram icon will be changed from     to  . +
      Also, the number of fragments will be shown in the brackets, next to the fragmented datagram icon: +
      +
      +
      More information concerning the number of fragments, and the length of each fragment can be found +
      in the bar at the head of the main panel: +
      +
      +
      FAQ - "Send Datagram" is disabled. Why can't I send my datagram? +
      +
    +
  • Remove a datagram +
    Back to: Top | Questions | Datagram
  • +
      +
      Right clicking on a datagram will cause a menu to pop up. +
      Choose "Remove Datagram". The datagram will be removed from the main panel. +
      +
      +
    +
+ +

---------------------------------------------------------------------------

+ + +FAQ
    +
  • What is the purpose of "Place Networks"? +
    Back to: Top | Questions | FAQ
  • +
      +
      "Place Networks" menu item allows you to use predefined networks. +
      These networks are built-in in the applet. +
      After placing them on the panel, you may edit them as you like. +
      +
      +
      Three networks are available in the "Place Networks" menu: +
      +
      +
        +
      1. Star - This network is constructed of three main networks connected using +
        a router to each other. Each of these main networks is connected to another two +
        "sub-networks". +
        Hosts are allocated only in the "sub-networks". +
        All routers are already configured to transfer datagrams between the hosts. +
        Determine datagram's source and target, and send it. +
        +
        +
      2. +
      3. Loop - This network simulates an error in the configuration of the routers. +
        The source and the target of the datagram are already determined. +
        Simply send the datagram and watch what happens. +
        +
        +
      4. +
      5. Long - This network is constructed of a list of routers and networks. +
        Routers are not configured. +
        You may add networks, hosts, routers, datagrams and configure them as you like. +
        +
        +
      6. +
      +
    +
  • Why can't I add a host to a network? +
    Back to: Top | Questions | FAQ
  • + +
  • How can I remove all objects from main panel? +
    Back to: Top | Questions | FAQ
  • +
      +
      A right click on the main panel will open a pop-up menu. +
      Select "Remove All" and the main panel will be cleaned of objects. +
      +
      +
    +
  • Why can't I send a datagram? +
    Back to: Top | Questions | FAQ
  • + +
  • How does a host get its IP address? +
    Back to: Top | Questions | FAQ
  • +
      +
      After the user has defined an IP address for a network, the network is responsible for allocating IP +
      addresses for any peripherals (hosts and routers) that are connected to it. The pool of addresses +
      is defined by network address. When creating a new host or connecting a router to the network, a free +
      address from the pool is allocated. When a host is being removed or a router is being disconnected +
      from a network, its IP address is deallocated and returned to pool. +
      +
      Please note that allocation of addresses is not necessarily successive (e.g. for class C network +
      192.168.2.0 allocation of addresses for 2 hosts might return 192.168.2.1 and 192.168.2.3). +
    +
+ +
+ + + \ No newline at end of file -- 2.11.4.GIT