private void OnFrameRecibidoEnAlgunPuerto(object sender, FrameRecibidoEventArgs e)
        {

            PuertoEthernetLogicoBase puertoQueRecibioElFrame = (PuertoEthernetLogicoBase)sender;
            Frame frameRecibido = e.FrameRecibido;

            ///Le aviso a la tabla del switch del nuevo Frame, para que lo guarde
            RegistrarFrame(puertoQueRecibioElFrame, frameRecibido);

            /// Si es Broadcast
            if (frameRecibido.MACAddressDestino == MACAddressFactory.BroadCast)
            {
                TransmitirFrameATodosLosPuertos(puertoQueRecibioElFrame, frameRecibido);
                return;
            }

            /// Le pregunto a la tabla del switch si conoce el puerto destino de este frame,
            /// si es asi solo envio el frame a ese puerto.
            string direccionMACDestino = frameRecibido.MACAddressDestino;
            if (_switchTable.YaEstaRegistradoDireccionMAC(direccionMACDestino))
            {
                PuertoEthernetLogicoBase puertoDestinoDelFrame = _switchTable.BuscarPuertoByDireccionMac(direccionMACDestino);
                ((IEnvioReciboDatos)puertoDestinoDelFrame).TransmitirFrame(frameRecibido);
                return;
            }
            /// Si la tabla del switch no contiene informacion de esta direccion MAC, envio este frame
            /// por todos los puertos, menos por el puerto en donde se recibio el frame

            TransmitirFrameATodosLosPuertos(puertoQueRecibioElFrame, frameRecibido);


        }
        private void OnFrameRecibido(object sender, FrameRecibidoEventArgs e)
        {
            foreach (IVisualizacion vist in Vistas)
            {
                vist.EnviarInformacionConexion(new MensajeCableSOA(_cable.Id, Frame.ConvertirFrame(e.FrameRecibido), e.HoraDeRecepcion));

            }
        }
 void Puerto1_FrameRecibido(object sender, FrameRecibidoEventArgs e)
 {
     if (!Puerto1.Habilitado)
         return;
     if (FrameRecibidoPuerto1 != null)
     {
         FrameRecibidoPuerto1(this, new FrameRecibidoEventArgs(e.FrameRecibido, BusinessLogic.Threads.ThreadManager.HoraActual));
     }
 }
示例#4
0
        private void OnFrameRecibido(object sender, FrameRecibidoEventArgs e)
        {
            if (e.FrameRecibido.MACAddressDestino != MACAddressFactory.BroadCast && e.FrameRecibido.MACAddressDestino != _puerto.MACAddress)
                return;
            DatosFrameArpIPEncontrada datosFrameEncontrada = e.FrameRecibido.Informacion as DatosFrameArpIPEncontrada;
            DatosFrameArpBuscando datosFrameBuscando = e.FrameRecibido.Informacion as DatosFrameArpBuscando;
            Packet paquete = e.FrameRecibido.Informacion as Packet;
            if (datosFrameEncontrada != null)
            {
                ProcesarIPEncontrada(datosFrameEncontrada);
            }
            if (datosFrameBuscando != null)
            {
                ProcesarBusquedaDeDireccionIP(datosFrameBuscando, e.FrameRecibido.MACAddressOrigen);
            }
            if (paquete != null)
            {
                EventPaqueteDesencapsulador(e.FrameRecibido);
                ProcesarPaquete(paquete);
            }

        }