forked from osmocom/wireshark
Some improvements to the bundle protocol:
1. Cleanly break out Convergence Layer Protocol (TCPCL) into its own (new-style) pure dissector. 2. Make Bundle dissection into a new style dissector and clean so that it can be called using call_disssector. 3. Use tcp_dissect_pdus for TCPCL protocol instead of "manual" while loop. This allows contact header to benefit from TCP fragmentation. 4. Make time fields use time field types so they can be filterable. 5. A few functions were move to remove need for static declaration at top of file. 6. Remove pri_hdr_procflags global variable. Next up - making more fields filterable. svn path=/trunk/; revision=51337
This commit is contained in:
parent
ab8f63d76c
commit
0776754488
File diff suppressed because it is too large
Load Diff
|
@ -151,6 +151,5 @@
|
|||
|
||||
int evaluate_sdnv(tvbuff_t *tvb, int offset, int *bytecount);
|
||||
gint64 evaluate_sdnv_64(tvbuff_t *tvb, int offset, int *bytecount);
|
||||
int dissect_complete_bundle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
|
||||
|
||||
|
||||
|
|
|
@ -106,6 +106,8 @@ static int hf_ltp_reassembled_length = -1;
|
|||
static expert_field ei_ltp_neg_reception_claim_count = EI_INIT;
|
||||
static expert_field ei_ltp_mal_reception_claim = EI_INIT;
|
||||
|
||||
static dissector_handle_t bundle_handle;
|
||||
|
||||
static const value_string ltp_type_codes[] = {
|
||||
{0x0, "Red data, NOT {Checkpoint, EORP or EOB}"},
|
||||
{0x1, "Red data, Checkpoint, NOT {EORP or EOB}"},
|
||||
|
@ -360,7 +362,7 @@ dissect_data_segment(proto_tree *ltp_tree, tvbuff_t *tvb,packet_info *pinfo,int
|
|||
ltp_data_data_tree = proto_item_add_subtree(ltp_data_data_item, ett_data_data_segm);
|
||||
|
||||
datatvb = tvb_new_subset(new_tvb, data_offset, (int)data_length - dissected_data_size, tvb_length(new_tvb));
|
||||
bundle_size = dissect_complete_bundle(datatvb, pinfo, ltp_data_data_tree);
|
||||
bundle_size = call_dissector(bundle_handle, datatvb, pinfo, ltp_data_data_tree);
|
||||
if(bundle_size == 0) { /*Couldn't parse bundle*/
|
||||
col_set_str(pinfo->cinfo, COL_INFO, "Dissection Failed");
|
||||
return 0; /*Give up*/
|
||||
|
@ -1001,6 +1003,7 @@ proto_reg_handoff_ltp(void)
|
|||
|
||||
if (!initialized) {
|
||||
ltp_handle = new_create_dissector_handle(dissect_ltp, proto_ltp);
|
||||
bundle_handle = find_dissector("bundle");
|
||||
initialized = TRUE;
|
||||
} else {
|
||||
dissector_delete_uint("udp.port", currentPort, ltp_handle);
|
||||
|
|
Loading…
Reference in New Issue