public unsafe PacketCommunicatorReceiveResult ReceivePacket(out Packet packet) { this.AssertMode(PacketCommunicatorMode.Capture); pcap_pkthdr *pcapPkthdrPtr1; byte * numPtr; PacketCommunicatorReceiveResult communicatorReceiveResult = this.RunPcapNextEx(&pcapPkthdrPtr1, &numPtr); if (communicatorReceiveResult != PacketCommunicatorReceiveResult.Ok) { packet = (Packet)null; return(communicatorReceiveResult); } IDataLink dataLink = (IDataLink) new PcapDataLink(\u003CModule\u003E.pcap_datalink(this._pcapDescriptor)); byte * unmanagedByteArray = numPtr; pcap_pkthdr *pcapPkthdrPtr2 = pcapPkthdrPtr1; DateTime dateTime = new DateTime(); PacketTimestamp.PcapTimestampToDateTime((timeval *)pcapPkthdrPtr1, out dateTime); int offset = 0; int count = *(int *)((IntPtr)pcapPkthdrPtr2 + 8L); byte[] data = MarshalingServices.UnamangedToManagedByteArray(unmanagedByteArray, offset, count); packet = new Packet(data, dateTime, dataLink); return(PacketCommunicatorReceiveResult.Ok); }
public Packet Next() { pcap_pkthdr *header = null; byte * data = null; int result = LibPcap.pcap_next_ex(handle, ref header, ref data); if (result == 1) { return(new Packet(ref *header, data)); } else if (result == 0) { return(null); } else if (result == -2) { throw new EndOfStreamException(); } else { throw new LibPcapException("error"); } }
public unsafe void Handle(byte *user, pcap_pkthdr *packetHeader, byte *packetData) { this._callback(new PacketSampleStatistics(packetHeader, packetData)); }
public unsafe void Handle(byte *user, pcap_pkthdr *packetHeader, byte *packetData) { ++this._packetCounter; this._callback(PacketCommunicator.CreatePacket(packetHeader, packetData, (IDataLink)this._dataLink)); }
public static unsafe void GetPcapHeader(pcap_pkthdr *header, Packet packet) { PacketTimestamp.DateTimeToPcapTimestamp(packet.Timestamp, (timeval *)header); *(int *)((IntPtr)header + 12L) = packet.Length; *(int *)((IntPtr)header + 8L) = packet.Length; }
public static extern int pcap_next_ex(pcap_t *handle, ref pcap_pkthdr *header, ref byte *data);
internal unsafe PacketSampleStatistics(pcap_pkthdr *packetHeader, byte *packetData) { PacketTimestamp.PcapTimestampToDateTime((timeval *)packetHeader, out this._timestamp); this._acceptedPackets = (uint)*(int *)packetData; this._acceptedBytes = (uint)*(int *)(packetData + 8L); }