in Source/Tx.Network/Pcap/PcapNg.cs [31:67]
public static IEnumerable<Block> ReadForward(Stream stream)
{
var interfaces = new List<InterfaceDescriptionBlock>();
using (var reader = new BinaryReader(stream))
{
while (true)
{
if (stream.Position == stream.Length)
yield break;
BlockType type = (BlockType)reader.ReadUInt32();
UInt32 length = reader.ReadUInt32();
switch (type)
{
case BlockType.SectionHeaderBlock:
yield return new SectionHeaderBlock(type, length, reader);
break;
case BlockType.InterfaceDescriptionBlock:
var interfacceDesc = new InterfaceDescriptionBlock(type, length, reader);
interfaces.Add(interfacceDesc);
yield return interfacceDesc;
break;
case BlockType.EnhancedPacketBlock:
yield return new EnhancedPacketBlock(type, length, reader, interfaces);
break;
default:
yield return new GenericBlock(type, length, reader);
break;
}
}
}
}