diff options
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-websocket.c | 13 | ||||
-rw-r--r-- | epan/follow.h | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/epan/dissectors/packet-websocket.c b/epan/dissectors/packet-websocket.c index 22a56120f9..74ab98be67 100644 --- a/epan/dissectors/packet-websocket.c +++ b/epan/dissectors/packet-websocket.c @@ -13,7 +13,9 @@ #include "config.h" #include <wsutil/wslog.h> +#include <epan/addr_resolv.h> #include <epan/conversation.h> +#include <epan/follow.h> #include <epan/proto_data.h> #include <epan/packet.h> #include <epan/expert.h> @@ -75,6 +77,8 @@ typedef struct { } websocket_packet_t; #endif +static int websocket_follow_tap = -1; + /* Initialize the protocol and registered fields */ static int proto_websocket = -1; static int proto_http = -1; @@ -691,6 +695,10 @@ dissect_websocket_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi tvb_payload = tvb_new_subset_length_caplen(tvb, payload_offset, payload_length, payload_length); } dissect_websocket_payload(tvb_payload, pinfo, tree, ws_tree, fin, opcode, websocket_conv, pmc, tvb_raw_offset(tvb)); + + if (have_tap_listener(websocket_follow_tap)) { + tap_queue_packet(websocket_follow_tap, pinfo, tvb_payload); + } } return tvb_captured_length(tvb); @@ -978,6 +986,11 @@ proto_register_websocket(void) reassembly_table_register(&ws_reassembly_table, &addresses_reassembly_table_functions); + websocket_follow_tap = register_tap("websocket_follow"); /* websocket follow tap */ + register_follow_stream(proto_websocket, "websocket_follow", tcp_follow_conv_filter, tcp_follow_index_filter, + tcp_follow_address_filter, tcp_port_to_display, follow_tvb_tap_listener, + get_tcp_stream_count, NULL); + proto_register_field_array(proto_websocket, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_websocket = expert_register_protocol(proto_websocket); diff --git a/epan/follow.h b/epan/follow.h index f17b3f0c19..e23e387412 100644 --- a/epan/follow.h +++ b/epan/follow.h @@ -47,6 +47,7 @@ typedef enum { FOLLOW_HTTP2, FOLLOW_QUIC, FOLLOW_SIP, + FOLLOW_WEBSOCKET, } follow_type_t; /* Show Type */ |