aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-twamp.c
diff options
context:
space:
mode:
authorVivek Mangala <vivekmangala@gmail.com>2021-09-16 20:56:54 +0530
committerWireshark GitLab Utility <gerald+gitlab-utility@wireshark.org>2021-09-18 07:47:12 +0000
commitf341e045c9faac39c94105ee0fb2302e28d23b8f (patch)
tree0b62ae3e4b09887fd946e5ba65a23d8ab1f3be27 /epan/dissectors/packet-twamp.c
parent13c33fa68ac03458739863e8da89a84e70c5b5b8 (diff)
twamp: fixed decoding of control-message sequence
Added check on Command-Number on control message following Accept-Session to detect the correct state. There are various states possible after Accept-Session.
Diffstat (limited to 'epan/dissectors/packet-twamp.c')
-rw-r--r--epan/dissectors/packet-twamp.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/epan/dissectors/packet-twamp.c b/epan/dissectors/packet-twamp.c
index 8095035f54..9f0041547f 100644
--- a/epan/dissectors/packet-twamp.c
+++ b/epan/dissectors/packet-twamp.c
@@ -215,6 +215,7 @@ dissect_twamp_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
proto_tree *item;
guint32 modes;
guint32 type_p;
+ guint8 command_number;
guint8 ipvn;
if (pinfo->destport == TWAMP_CONTROL_PORT) {
@@ -308,7 +309,19 @@ dissect_twamp_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
}
}
} else if (ct->last_state == CONTROL_STATE_ACCEPT_SESSION) {
- ct->last_state = CONTROL_STATE_START_SESSIONS;
+ /* We shall check the Command Number to determine current CONTROL_STATE_XXX */
+ command_number = tvb_get_guint8(tvb, 0);
+ switch(command_number){
+ case 2: /* Start-Sessions */
+ ct->last_state = CONTROL_STATE_START_SESSIONS;
+ break;
+ case 3: /* Stop-Sessions */
+ ct->last_state = CONTROL_STATE_STOP_SESSIONS;
+ break;
+ case 5: /* Request-Session */
+ ct->last_state = CONTROL_STATE_REQUEST_SESSION;
+ break;
+ }
} else if (ct->last_state == CONTROL_STATE_START_SESSIONS) {
ct->last_state = CONTROL_STATE_START_SESSIONS_ACK;
} else if (ct->last_state == CONTROL_STATE_START_SESSIONS_ACK) {