public IPAddress GetIPv6FromNeighbor(Neighbor neighbor) { for (int i = 0; i < neighbor.GetIPs().Count; i++) { if (neighbor.GetIPs()[i].GetAddressBytes().Length == 16) { return(neighbor.GetIPs()[i]); } } return(null); }
public Neighbor GetNeighbor(IPAddress ip) { for (int n = neighbors.Count - 1; n >= 0; n--) { Neighbor neighbor = neighbors[n]; for (int i = 0; i < neighbor.GetIPs().Count; i++) { if (neighbor.GetIPs()[i].Equals(ip)) { return(neighbor); } } } return(null); }
public void AddNeighbor(Neighbor neighbor) { NeighborEventArgs ea; if (neighbor.physicalAddress == null) { throw new Exception("Neighbor without physical address"); } if (neighbor.physicalAddress.Equals(device.Interface.MacAddress)) { return; } lock (neighborLock) { if (ExistsNeighbor(neighbor)) { Neighbor newNeighbor = GetNeighbor(neighbor.physicalAddress); newNeighbor.Combine(neighbor); ea = new NeighborEventArgs(newNeighbor); ea.Tipo = NeighborOperacionTreeView.Actualizar; NewNeighbor(newNeighbor, ea); return; } if (neighbor.GetIPs().Count == 0) { throw new Exception("Neighbor without ips"); } neighbors.Add(neighbor); ea = new NeighborEventArgs(neighbor); ea.Tipo = NeighborOperacionTreeView.Añadir; NewNeighbor(neighbor, ea); } ReverseResolutionAsync(neighbor); // Resolucion de nombre a partir de IP _CheckIfNeighborRoutesPackets(neighbor); }
private void ReverseResolution(object oNeighbor) { Neighbor neighbor = (Neighbor)oNeighbor; if (neighbor == null) { return; } if (string.IsNullOrEmpty(neighbor.computerName)) { IList <IPAddress> ips = new List <IPAddress>(neighbor.GetIPs()); foreach (IPAddress ip in ips) { try { Dns.GetHostEntry(ip); } catch { } } } }
public void AddNeighbor(Neighbor neighbor) { NeighborEventArgs ea; if (neighbor.physicalAddress == null) throw new Exception("Neighbor without physical address"); if (neighbor.physicalAddress.Equals(device.Interface.MacAddress)) return; lock (neighborLock) { if (ExistsNeighbor(neighbor)) { Neighbor newNeighbor = GetNeighbor(neighbor.physicalAddress); newNeighbor.Combine(neighbor); ea = new NeighborEventArgs(newNeighbor); ea.Tipo = NeighborOperacionTreeView.Actualizar; NewNeighbor(newNeighbor, ea); return; } if (neighbor.GetIPs().Count == 0) throw new Exception("Neighbor without ips"); neighbors.Add(neighbor); ea = new NeighborEventArgs(neighbor); ea.Tipo = NeighborOperacionTreeView.Añadir; NewNeighbor(neighbor, ea); } ReverseResolutionAsync(neighbor); // Resolucion de nombre a partir de IP _CheckIfNeighborRoutesPackets(neighbor); }
public IPAddress GetIPv6FromNeighbor(Neighbor neighbor) { for (int i = 0; i < neighbor.GetIPs().Count; i++) { if (neighbor.GetIPs()[i].GetAddressBytes().Length == 16) return neighbor.GetIPs()[i]; } return null; }
private bool IsNeighborFiltered(Neighbor neighbor) { // true -> El vecino NO se pinta // false -> El vecino SI se pinta // Se comprueba el nombre if (!string.IsNullOrEmpty(neighbor.computerName)) { if (neighbor.computerName.ToLower().Contains(strFilter.ToLower())) return false; } // Se comprueba la MAC if (neighbor.physicalAddress.ToString().ToLower().Contains(strFilter.ToLower())) return false; // Se comprueban las IPs for (int ip = 0; ip < neighbor.GetIPs().Count; ip++) { if (neighbor.GetIPs()[ip].ToString().ToLower().Contains(strFilter.ToLower())) return false; } return true; }
private void Update_Routers(Neighbor neighbor) { treeView.Invoke(new MethodInvoker(delegate { treeView.BeginUpdate(); })); if (!treeView.Nodes[mainNode].Nodes[routersNode].Nodes.ContainsKey(neighbor.physicalAddress.ToString())) { // Si el vecino puede enrutar y no se ha agregado, se agrega if (neighbor.canRoutePackets == RouteStatus.CanRoute) { treeView.Invoke(new MethodInvoker(delegate { TreeNode tn = treeView.Nodes[mainNode].Nodes[routersNode].Nodes.Add(neighbor.physicalAddress.ToString(), neighbor.physicalAddress.ToString()); tn.Tag = neighbor; tn.ImageIndex = tn.SelectedImageIndex = 11; if (treeView.Nodes[mainNode].Nodes[routersNode].Nodes.Count == 1) treeView.Nodes[mainNode].Nodes[routersNode].Expand(); })); } } // Como se puede haber insertado el nodo en el IF anterior, se vuelve a comprobar a ver si podemos insertarle la IP if (treeView.Nodes[mainNode].Nodes[routersNode].Nodes.ContainsKey(neighbor.physicalAddress.ToString())) { // El router existe. Se insertan nodos desplegables por cada IP que tenga el router TreeNode tnRouter = treeView.Nodes[mainNode].Nodes[routersNode].Nodes[neighbor.physicalAddress.ToString()]; foreach (IPAddress ipAddress in neighbor.GetIPs()) { // Se agrega la IP en caso de que no exista if (!tnRouter.Nodes.ContainsKey(ipAddress.ToString())) { lbRoutersBruteForce.Items.Add(ipAddress.ToString()); treeView.Invoke(new MethodInvoker(delegate { TreeNode tnRouterIP = tnRouter.Nodes.Add(ipAddress.ToString(), ipAddress.ToString()); tnRouterIP.ImageIndex = tnRouterIP.SelectedImageIndex = 0; tnRouterIP.Tag = ipAddress; tnRouter.Expand(); Thread tColorChanger = new Thread(new ParameterizedThreadStart(ChangeColor)); tColorChanger.IsBackground = true; tColorChanger.Start(tnRouterIP); })); } else { // Si ya existia, se agregan los puertos en caso de que no existan. TreeNode tnIP = tnRouter.Nodes[ipAddress.ToString()]; UpdatePortsOfIPNode(tnIP); } } // Si el router tiene nombre, se le establece en el nodo if (!tnRouter.Text.StartsWith(neighbor.ToString())) { treeView.Invoke(new MethodInvoker(delegate { tnRouter.Text = neighbor.ToString(); Thread tColorChanger = new Thread(new ParameterizedThreadStart(ChangeColorUpdate)); tColorChanger.IsBackground = true; tColorChanger.Start(tnRouter); })); } // Se le pone el iconcillo de OS if ((neighbor.osPlatform != Platform.Unknow) && (tnRouter.ImageIndex == 11)) { treeView.Invoke(new MethodInvoker(delegate { int imageOS = Program.CurrentProject.data.GetImageNumberOS(neighbor.osPlatform); tnRouter.ImageIndex = tnRouter.SelectedImageIndex = imageOS; })); } } treeView.Invoke(new MethodInvoker(delegate { treeView.EndUpdate(); })); }