public void IngresarEntradaEstatica(Guid id, string red, int? mask, string nextHopIP, PuertoEthernetCompleto puerto) { EntradaTablaRouter entrada = new EntradaTablaRouter(id); entrada.Puerto = puerto; entrada.Red = red; entrada.Mask = mask; entrada.NextHopIP = nextHopIP; _tablaRouterEstatico.Add(entrada); }
internal void NotificarEntrada(EntradaTablaRouter entrada) { foreach (EntradaTablaRouter entradaTabla in _tablaDinamica) { if (entradaTabla.EsIgual(entrada)) { if (entrada.HopCount >= entradaTabla.HopCount) { _timers[entradaTabla].Stop(); _timers[entradaTabla].Start(); return; } } } _tablaDinamica.Add(entrada); Timer timer = new Timer(ThreadManager.GetIntervalo(30000)); _timers.Add(entrada, timer); _entradas.Add(timer, entrada); timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); timer.Start(); }
private void IngresarEntradasDinamicas(List<RutaSOA> entradas, string nextHopIp, Guid idPuertoDondeSeRecibio) { PuertoEthernetCompleto puertoDondeSeRecibio = BuscarPuertoConId(idPuertoDondeSeRecibio); foreach (RutaSOA ruta in entradas) { EntradaTablaRouter entrada = new EntradaTablaRouter(ruta.Id); entrada.Mask = ruta.Mask; entrada.NextHopIP = nextHopIp; entrada.Puerto = puertoDondeSeRecibio; entrada.Red = ruta.Red; entrada.HopCount = ruta.HopCount; if (ExisteLaRuta(entrada, _routeTable.TablaRouterInternas)) continue; if (ExisteLaRuta(entrada, _routeTable.TablaRouterEstatico)) continue; _controladorRutas.NotificarEntrada(entrada); } }
private bool ExisteLaRuta(EntradaTablaRouter entrada, List<EntradaTablaRouter> tabla) { foreach (EntradaTablaRouter entradaDinamica in tabla) { if (entradaDinamica.EsIgual(entrada)) return true; } return false; }
internal void IngresarEntradaDinamica(EntradaTablaRouter entrada) { _tablaRouterDinamico.Add(entrada); }
private List<EntradaTablaRouter> CalcularRutasInternas() { List<EntradaTablaRouter> rutasInternas = new List<EntradaTablaRouter>(); foreach (PuertoEthernetCompleto puerto in _puertos) { if (!puerto.Habilitado) continue; if ((puerto.IPAddress == null) || (puerto.Mascara == null)) continue; EntradaTablaRouter ruta = new EntradaTablaRouter(Guid.Empty); ruta.Mask = puerto.Mascara; ruta.Puerto = puerto; ruta.Red = IPAddressFactory.GetRedRep(ruta.Puerto.IPAddress, ruta.Puerto.Mascara.Value); ruta.HopCount = 0; rutasInternas.Add(ruta); } return rutasInternas; }
public bool EsIgual(EntradaTablaRouter entrada) { return ((_mask == entrada.Mask) && (entrada.Red == _red)); }