Data produced by the Open DIS module
The payload is opaque
Every PDU this module accepts is published as a PDU
message with a single payload field: the DIS-7 packet’s raw bytes, unmodified. This module does
not parse entity state, fire events, radio traffic or anything else DIS defines - it only reads
enough of the header to validate and route the packet (below). Recovering entity positions,
detonations, or any other DIS concept from a session requires a DIS-7 decoder downstream; HEAT
Capture and HEAT ProtoLib do not provide one.
The capture timestamp on the wrapping envelope is HEAT Capture’s own wall-clock time at the moment the module publishes the packet, not any timestamp carried inside the DIS PDU itself.
What is validated before publishing
A received datagram is published only if all of the following hold; otherwise it is dropped and counted, with a warning logged (except where noted):
| Check | Rule |
|---|---|
| Minimum size | At least 12 bytes (the DIS PDU header) |
| Protocol version (header byte 0) | Between 5 and 50 - deliberately wider than the official DIS protocol version range, to tolerate vendor deviations |
| Exercise identifier (header byte 1) | Non-zero |
| Protocol family (header byte 3) | Not validated by this release |
| PDU size field (header bytes 8–9, big-endian) | At least 12, and no greater than the datagram’s actual length |
| PDU type (header byte 2) | Not checked. A range check existed in source but is deliberately disabled, per its own comment, because some vendor sources use custom PDU type values outside the standard range. |
| Sender address | If LocalCaptureOnly is enabled, the sender must be one of the workstation’s own local IP addresses, or the packet is dropped silently (no warning logged) |
A dropped packet is still counted in the module’s debug view (droppedPackets); the packet count
does not distinguish which check failed.
PDU type and session control
The PduType enumeration (Configure) only affects whether a PDU
starts or stops a capture session - it does not filter which PDUs get published. Every PDU that
passes header validation is published regardless of its type, including a StopFreeze PDU: that
one is published before the module acts on it to end the session.
Notable behavior
DIS broadcast networks routinely generate a Windows-specific socket error (WSAECONNRESET, from
an ICMP “port unreachable” response) that is common enough in broadcast environments that the
native receiver silently discards it rather than treating it as a receive failure. It never
appears in HEAT Capture’s own logs or debug view.