private void Start()
{
Debug.Assert(_devices == null);
_devices = WinPcapDeviceList.New();
var interestingDevices = _devices.Where(IsInteresting);
foreach (var device in interestingDevices)
{
device.OnPacketArrival += device_OnPacketArrival;
try
{
device.Open(DeviceMode.Normal, 1000);
}
catch (Exception e)
{
Logger.Warn($"Failed to open device {device.Name}. {e.Message}");
continue;
}
device.Filter = _filter;
if (BufferSize != null)
{
try
{
device.KernelBufferSize = (uint) BufferSize.Value;
}
catch (Exception e)
{
Logger.Warn(
$"Failed to set KernelBufferSize to {BufferSize.Value} on {device.Name}. {e.Message}");
}
}
device.StartCapture();
Console.WriteLine("winpcap capture");
}
}