Configuration
Configure the HDDS dissector via Wireshark preferences.
Preferences
Access preferences at: Edit → Preferences → Protocols → HDDS
| Preference | Default | Description |
|---|---|---|
| Types JSON | (empty) | Path to types JSON file for CDR decoding |
| Decode CDR | true | Enable/disable CDR payload decoding |
| Show Raw Hex | false | Display raw hex alongside decoded data |
| Verbose | false | Show additional debug info in info column |
CDR Type Decoding
To enable full payload decoding, provide a types JSON file describing your data types.
Generate Types File
# Future: hdds_gen will generate this
hdds_gen --wireshark your_types.idl -o types.ws.json
Manual Types File
Create a JSON file with your types:
{
"types": {
"Temperature": {
"kind": "struct",
"fields": [
{ "name": "sensor_id", "type": "string" },
{ "name": "value", "type": "float64" },
{ "name": "unit", "type": "string" }
]
},
"SensorReading": {
"kind": "struct",
"fields": [
{ "name": "timestamp", "type": "uint64" },
{ "name": "sensor_type", "type": "uint8" },
{ "name": "readings", "type": "float32[]" }
]
}
},
"topics": {
"sensors/temperature": {
"type": "Temperature"
},
"sensors/readings": {
"type": "SensorReading"
}
}
}
Supported Types
| Type | CDR Size | Description |
|---|---|---|
uint8 | 1 byte | Unsigned 8-bit integer |
int8 | 1 byte | Signed 8-bit integer |
uint16 | 2 bytes | Unsigned 16-bit integer |
int16 | 2 bytes | Signed 16-bit integer |
uint32 | 4 bytes | Unsigned 32-bit integer |
int32 | 4 bytes | Signed 32-bit integer |
uint64 | 8 bytes | Unsigned 64-bit integer |
int64 | 8 bytes | Signed 64-bit integer |
float32 | 4 bytes | IEEE 754 single precision |
float64 | 8 bytes | IEEE 754 double precision |
string | 4 + len + padding | CDR string (length-prefixed) |
bytes | 4 + len + padding | Raw byte sequence |
Set Types Path
- Edit → Preferences → Protocols → HDDS
- Set Types JSON to your file path (e.g.,
/home/user/dds_types.json) - Click OK
- Reload dissector: Analyze → Reload Lua Plugins (or restart Wireshark)
Vendor IDs
The dissector recognizes these vendor IDs:
| ID | Vendor Name |
|---|---|
| 0x0000 | UNKNOWN |
| 0x0101 | RTI Connext |
| 0x0102 | OpenSplice (ADLink) |
| 0x0103 | OpenDDS (OCI) |
| 0x010F | FastDDS (eProsima) |
| 0x0110 | Cyclone DDS |
| 0x0112 | RustDDS |
| 0x01AA | HDDS |
HDDS packets (0x01AA) are automatically highlighted with [HDDS] prefix.
Entity IDs
Well-known entity IDs are decoded by name:
| ID | Name | Purpose |
|---|---|---|
| 0x000001C1 | PARTICIPANT | Participant entity |
| 0x000100C2 | SPDP_WRITER | Participant discovery writer |
| 0x000100C7 | SPDP_READER | Participant discovery reader |
| 0x000003C2 | SEDP_PUB_WRITER | Publication discovery writer |
| 0x000003C7 | SEDP_PUB_READER | Publication discovery reader |
| 0x000004C2 | SEDP_SUB_WRITER | Subscription discovery writer |
| 0x000004C7 | SEDP_SUB_READER | Subscription discovery reader |
| 0x000300C3 | TYPELOOKUP_REQ | Type lookup request |
| 0x000300C4 | TYPELOOKUP_REP | Type lookup reply |
Troubleshooting
Dissector Not Loading
Check the Lua console for errors:
- Tools → Lua → Console
- Look for
[HDDS]messages - Should show:
[HDDS] RTPS Dissector loaded - Version 1.0.0
No HDDS Tree in Packets
- Verify packets are on ports 7400-7500
- Check packets have valid RTPS magic (
RTPS) - Enable the protocol: Analyze → Enabled Protocols → hdds
CDR Decoding Not Working
- Verify types JSON file path is correct and readable
- Check Lua console for JSON parsing errors
- Ensure JSON format matches expected schema
- Reload Lua plugins after changing preferences
Reload Without Restart
To apply changes without restarting Wireshark:
Analyze → Reload Lua Plugins
Or use the keyboard shortcut (Ctrl+Shift+L) to open Lua evaluation.
Debug Output
Enable Verbose preference to add debug info to the info column.
For more detailed debugging, add print statements to the Lua file:
print("[HDDS] Debug: " .. message)
Output appears in Tools → Lua → Console.