RTPS: RTPS 2.3 Domain ID and Domain Tag support.

Added dissection of field PID_DOMAIN_TAG. PID_DOMAIN_ID moved to
PID_RTI_DOMAIN_ID and PID_IS_RELIABLE moved to PID_DOMAIN_ID.

Change-Id: Ie189b2d2e66b705df202e7ee3e752aea5ddee271
Reviewed-on: https://code.wireshark.org/review/30664
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
This commit is contained in:
ismaelrti 2018-11-16 10:01:39 +01:00 committed by Peter Wu
parent f8100ba30a
commit 1fcdd66dda
2 changed files with 37 additions and 3 deletions

View File

@ -77,6 +77,7 @@ static int hf_rtps_protocol_version_minor = -1;
static int hf_rtps_vendor_id = -1;
static int hf_rtps_domain_id = -1;
static int hf_rtps_domain_tag = -1;
static int hf_rtps_participant_idx = -1;
static int hf_rtps_nature_type = -1;
@ -933,6 +934,8 @@ static const value_string parameter_id_v2_vals[] = {
{ PID_DATA_TAGS, "PID_DATA_TAGS" },
{ PID_ENDPOINT_SECURITY_INFO, "PID_ENDPOINT_SECURITY_INFO" },
{ PID_PARTICIPANT_SECURITY_INFO, "PID_PARTICIPANT_SECURITY_INFO" },
{ PID_DOMAIN_ID, "PID_DOMAIN_ID" },
{ PID_DOMAIN_TAG, "PID_DOMAIN_TAG" },
/* The following PID are deprecated */
{ PID_DEADLINE_OFFERED, "PID_DEADLINE_OFFERED [deprecated]" },
@ -974,7 +977,7 @@ static const value_string parameter_id_rti_vals[] = {
{ PID_DIRECT_COMMUNICATION, "PID_DIRECT_COMMUNICATION" },
{ PID_TYPE_OBJECT, "PID_TYPE_OBJECT" },
{ PID_EXPECTS_VIRTUAL_HB, "PID_EXPECTS_VIRTUAL_HB" },
{ PID_DOMAIN_ID, "PID_DOMAIN_ID" },
{ PID_RTI_DOMAIN_ID, "PID_RTI_DOMAIN_ID" },
{ PID_TOPIC_QUERY_PUBLICATION, "PID_TOPIC_QUERY_PUBLICATION" },
{ PID_ENDPOINT_PROPERTY_CHANGE_EPOCH, "PID_ENDPOINT_PROPERTY_CHANGE_EPOCH" },
{ PID_REACHABILITY_LEASE_DURATION, "PID_REACHABILITY_LEASE_DURATION" },
@ -4672,11 +4675,13 @@ static gboolean dissect_parameter_sequence_rti_dds(proto_tree *rtps_parameter_tr
/* 0...2...........7...............15.............23...............31
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | PID_DOMAIN_ID | length |
* | PID_DOMAIN_ID|PID_RTI_DOMAIN_ID| length |
* +---------------+---------------+---------------+---------------+
* | long domain_id |
* +---------------+---------------+---------------+---------------+
*/
case PID_RTI_DOMAIN_ID:
case PID_DOMAIN_ID: {
if (is_inline_qos) { /* PID_RELATED_ORIGINAL_WRITER_INFO */
ENSURE_LENGTH(16);
@ -4695,6 +4700,22 @@ static gboolean dissect_parameter_sequence_rti_dds(proto_tree *rtps_parameter_tr
break;
}
/* 0...2...........7...............15.............23...............31
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | PID_DOMAIN_TAG | length |
* +---------------+---------------+---------------+---------------+
* | long domain_tag.Length |
* +---------------+---------------+---------------+---------------+
* | string domain_tag |
* | ... |
* +---------------+---------------+---------------+---------------+
*/
case PID_DOMAIN_TAG: {
ENSURE_LENGTH(4);
rtps_util_add_string(rtps_parameter_tree, tvb, offset, hf_rtps_domain_tag, encoding);
break;
}
case PID_EXTENDED: {
ENSURE_LENGTH(8);
proto_tree_add_item(rtps_parameter_tree, hf_rtps_param_extended_parameter, tvb, offset, 4, encoding);
@ -10063,6 +10084,17 @@ void proto_register_rtps(void) {
HFILL }
},
{ &hf_rtps_domain_tag, {
"domain_tag",
"rtps.domain_tag",
FT_STRINGZ,
BASE_NONE,
NULL,
0,
"Domain Tag ID",
HFILL }
},
{ &hf_rtps_participant_idx, {
"participant_idx",
"rtps.participant_idx",

View File

@ -245,6 +245,8 @@ typedef struct _rtps_dissector_data {
#define PID_BASE_TYPE_NAME (0x0076)
#define PID_ENABLE_ENCRYPTION (0x0077)
#define PID_ENABLE_AUTHENTICATION (0x0078)
#define PID_DOMAIN_ID (0x000f)
#define PID_DOMAIN_TAG (0x4014)
/* Vendor-specific: RTI */
#define PID_PRODUCT_VERSION (0x8000)
@ -259,7 +261,7 @@ typedef struct _rtps_dissector_data {
#define PID_ACK_KIND (0x800b)
#define PID_PEER_HOST_EPOCH (0x800e)
#define PID_RELATED_ORIGINAL_WRITER_INFO (0x800f)/* inline QoS */
#define PID_DOMAIN_ID (0x800f)
#define PID_RTI_DOMAIN_ID (0x800f)
#define PID_RELATED_READER_GUID (0x8010)/* inline QoS */
#define PID_TRANSPORT_INFO_LIST (0x8010)
#define PID_SOURCE_GUID (0x8011)/* inline QoS */