/// <summary> /// Returns true if the filter expression was able to be compiled into a /// program without errors /// </summary> public static bool CheckFilter(string filterExpression, out string errorString) { IntPtr bpfProgram; IntPtr fakePcap = LibPcapSafeNativeMethods.pcap_open_dead((int)GodLesZ.Library.Network.Packet.LinkLayers.Ethernet, Pcap.MAX_PACKET_SIZE); uint mask = 0; if (!CompileFilter(fakePcap, filterExpression, mask, out bpfProgram, out errorString)) { LibPcapSafeNativeMethods.pcap_close(fakePcap); return(false); } FreeBpfProgram(bpfProgram); LibPcapSafeNativeMethods.pcap_close(fakePcap); return(true); }
/// <summary> /// Closes this adapter /// </summary> public virtual void Close() { if (PcapHandle == IntPtr.Zero) { return; } if (Started) { StopCapture(); } LibPcapSafeNativeMethods.pcap_close(PcapHandle); PcapHandle = IntPtr.Zero; //Remove event handlers if (OnPacketArrival != null) { foreach (PacketArrivalEventHandler pa in OnPacketArrival.GetInvocationList()) { OnPacketArrival -= pa; } } }