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)); } }
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); } }