예제 #1
0
        /// <summary>
        /// Creates a new instance of this class
        /// </summary>
        public NetMap()
        {
            ndiuUtility = new NetDiscoveryUtility();
            ndiuUtility.OnResolveFinished += new NetDiscoveryUtility.ResolveCompletedEventHandler(ndiuUtility_OnResolveFinished);
            lHosts                = new List <Host>();
            dictIPHost            = new Dictionary <IPAddress, Host>();
            dictMACHost           = new Dictionary <MACAddress, Host>();
            lDataLinkNeighbours   = new List <Host>();
            lUpperLayerNeighbours = new List <Host>();
            lDataLinkDistributors = new List <Host>();
            ResolveHostnames      = true;

            hLocalhost = CreateHost(System.Environment.MachineName);
            Host hNetwork;

            IPAddress[]  ipa;
            Subnetmask[] smMasks;
            MACAddress   mcMac;

            string[] strInterfaces = InterfaceConfiguration.GetAllInterfaceNames();

            for (int iC2 = 0; iC2 < strInterfaces.Length; iC2++)
            {
                if (strInterfaces[iC2] != null)
                {
                    ipa     = InterfaceConfiguration.GetIPAddressesForInterface(strInterfaces[iC2]);
                    smMasks = InterfaceConfiguration.GetIPSubnetsForInterface(strInterfaces[iC2]);
                    mcMac   = InterfaceConfiguration.GetMacAddressForInterface(strInterfaces[iC2]);
                    if (ipa != null)
                    {
                        for (int iC1 = 0; iC1 < ipa.Length; iC1++)
                        {
                            if (ipa[iC1].AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                            {
                                if (smMasks != null && smMasks.Length > iC1)
                                {
                                    AddIPToHost(hLocalhost, ipa[iC1]);
                                    hNetwork = CreateHost("Network");
                                    SetAsDistributionDevice(hNetwork);
                                    hNetwork.Properties.Add("subnetmask", smMasks[iC1]);
                                    hNetwork.Properties.Add("network", IPAddressAnalysis.GetClasslessNetworkAddress(ipa[iC1], smMasks[iC1]));
                                    AddIPToHost(hNetwork, IPAddressAnalysis.GetClasslessNetworkAddress(ipa[iC1], smMasks[iC1]));
                                    lDataLinkDistributors.Add(hNetwork);
                                    Connect(hNetwork, hLocalhost);
                                }
                            }
                        }
                    }
                    if (mcMac != null)
                    {
                        AddMACToHost(hLocalhost, mcMac);
                    }
                }
            }
        }
예제 #2
0
        public TCPStreamModifier()
        {
            lStacks = new List <TCPStreamModifierStack>();
            AutoExcludeLocalConnections = true;
            lLocalAddresses             = new List <IPAddress>();

            foreach (string strInterface in InterfaceConfiguration.GetAllInterfaceNames())
            {
                lLocalAddresses.AddRange(InterfaceConfiguration.GetIPAddressesForInterface(strInterface));
            }
        }