public Func <byte[], bool> OptionalFilter; // verifies NPACK.NeighborHMAC, ignores invalid HMACs // returns false to ignore the processed response packet public bool Scan(DrpPeerEngine engine, byte[] udpData) // may throw parser exception { if (!MiscProcedures.EqualByteArrayHeader(ResponseFirstBytes, udpData, IgnoredByteAtOffset1)) { if (engine.WriteToLog_udp_deepDetail_enabled) { engine.WriteToLog_udp_deepDetail($"packet does not match to ResponseFirstBytes={MiscProcedures.ByteArrayToString(ResponseFirstBytes)} ({(PacketTypes)ResponseFirstBytes[0]}) udpData={MiscProcedures.ByteArrayToString(udpData)} ({(PacketTypes)udpData[0]})" ); } return(false); } if (OptionalFilter != null) { if (!OptionalFilter(udpData)) { //if (engine.WriteToLog_udp_deepDetail_enabled) engine.WriteToLog_udp_lightPain($"packet did not pass OptionalFilter"); return(false); } } return(true); }