aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorDr. Lars Völker <lars.voelker@technica-engineering.de>2021-07-15 19:30:00 +0200
committerWireshark GitLab Utility <gerald+gitlab-utility@wireshark.org>2021-07-16 09:12:18 +0000
commite0055d0698e797905aff08697559508ff86cff91 (patch)
tree8fe40879004a21290be8e401dbe120a11bcb18a1 /epan/dissectors
parent6cb4f178280bc7c7bc2b309da353b7f10bbfa227 (diff)
Signal-PDU: Add support for the new CAN API
This patch directly registers configured CAN IDs.
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-signal-pdu.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/epan/dissectors/packet-signal-pdu.c b/epan/dissectors/packet-signal-pdu.c
index 2c942c9376..b8e6343c43 100644
--- a/epan/dissectors/packet-signal-pdu.c
+++ b/epan/dissectors/packet-signal-pdu.c
@@ -262,6 +262,32 @@ void proto_register_signal_pdu(void);
void proto_reg_handoff_signal_pdu(void);
void
+proto_reg_handoff_signal_pdu_can(void) {
+ if (signal_pdu_handle_can == NULL) {
+ return;
+ }
+
+ dissector_delete_all("can.id", signal_pdu_handle_can);
+ dissector_delete_all("can.extended_id", signal_pdu_handle_can);
+
+ /* CAN: loop over all frame IDs in HT */
+ if (data_spdu_can_mappings != NULL) {
+ GList *keys = g_hash_table_get_keys(data_spdu_can_mappings);
+
+ GList *tmp;
+ for (tmp = keys; tmp != NULL; tmp = tmp->next) {
+ gint32 *id = ((gint32*)tmp->data);
+
+ *id &= CAN_EFF_MASK;
+ dissector_add_uint("can.extended_id", *id, signal_pdu_handle_can);
+ if (*id <= CAN_SFF_MASK) {
+ dissector_add_uint("can.id", *id, signal_pdu_handle_can);
+ }
+ }
+ }
+}
+
+void
proto_reg_handoff_signal_pdu_lin(void) {
if (signal_pdu_handle_lin == NULL) {
return;
@@ -1041,6 +1067,9 @@ post_update_spdu_can_mapping_cb(void) {
g_hash_table_insert(data_spdu_can_mappings, key, &spdu_can_mapping[i]);
}
}
+
+ /* we need to make sure we register again */
+ proto_reg_handoff_signal_pdu_can();
}
static spdu_can_mapping_t*