Пример #1
0
 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();


        }
Пример #3
0
 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);
     }
 }
Пример #4
0
 private bool ExisteLaRuta(EntradaTablaRouter entrada, List<EntradaTablaRouter> tabla)
 {
     foreach (EntradaTablaRouter entradaDinamica in tabla)
     {
         if (entradaDinamica.EsIgual(entrada))
             return true;
     }
     return false;
 }
Пример #5
0
 internal void IngresarEntradaDinamica(EntradaTablaRouter entrada)
 {
     _tablaRouterDinamico.Add(entrada);
 }
Пример #6
0
 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));
    
 }