Ethereal-dev: [Ethereal-dev] [PATCH] ACN plugin update
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Erwin Rol <mailinglists@xxxxxxxxxxxx>
Date: Wed, 05 Nov 2003 17:17:52 +0100
Attached an update for the ACN plugin. With this Patch the SDT part of the ACN protocol is "complete". The next step will be DMP. - Erwin -- Erwin Rol Software Engineering - http://www.erwinrol.com/
? acn.diff ? acn.dump ? acn.dump1 Index: packet-acn.c =================================================================== RCS file: /cvsroot/ethereal/plugins/acn/packet-acn.c,v retrieving revision 1.2 diff -u -r1.2 packet-acn.c --- packet-acn.c 31 Oct 2003 18:28:32 -0000 1.2 +++ packet-acn.c 5 Nov 2003 16:14:02 -0000 @@ -86,7 +86,7 @@ { ACN_SDT_TYPE_REPLOSTSEQON, "REPLOSTSEQON"}, { ACN_SDT_TYPE_REPLOSTSEQOFF, "REPLOSTSEQOFF"}, { ACN_SDT_TYPE_SESSEXPIRY, "SESEXPIRY"}, - { ACN_SDT_TYPE_MAK, "MAC"}, + { ACN_SDT_TYPE_MAK, "MAK"}, { ACN_SDT_TYPE_ACK, "ACK"}, { ACN_SDT_TYPE_NAK, "NAK"}, { ACN_SDT_TYPE_SEQLOST, "SEQLOST"}, @@ -107,6 +107,23 @@ { 0, NULL } }; +static const value_string acn_sdt_des_flag_vals[] = { + { 0, "Default"}, + { 1, "Protocol Specific"}, + { 2, "CID"}, + { 3, "All"}, + { 0, NULL } +}; + +static const value_string acn_sdt_src_flag_vals[] = { + { 0, "Default"}, + { 1, "Protocol Specific"}, + { 2, "CID"}, + { 3, "Unspecified"}, + { 0, NULL } +}; + + void proto_reg_handoff_acn(void); /* Define the acn proto */ @@ -140,6 +157,7 @@ static int hf_acn_pdu_type_sdt = -1; static int hf_acn_pdu_type_dmp = -1; static int hf_acn_pdu_data = -1; +static int hf_acn_pdu_unknown_data = -1; static int hf_acn_pdu_padding = -1; @@ -150,7 +168,9 @@ static int hf_acn_sdt_unavailable_wrappers = -1; static int hf_acn_sdt_refuse_code = -1; static int hf_acn_sdt_last_rel_seq = -1; +static int hf_acn_sdt_new_rel_seq = -1; static int hf_acn_sdt_last_rel_wrapper = -1; +static int hf_acn_sdt_nr_lost_wrappers = -1; static int hf_acn_sdt_session_exp_time = -1; static int hf_acn_sdt_upstream_address_type = -1; static int hf_acn_sdt_upstream_ipv4_address = -1; @@ -198,6 +218,7 @@ guint size = 0; guint flags; guint type; + guint count; hist = *parent_hist; @@ -368,6 +389,8 @@ offset, 2, FALSE); offset += 2; + size = offset - start_offset; + break; case ACN_SDT_TYPE_TRANSFER: @@ -492,7 +515,21 @@ offset += 2; /* CID+MID list */ + count = (max_size - (offset - start_offset)) / 18; + while( count > 0) { + proto_tree_add_item(tree, hf_acn_sdt_member_cid, tvb, + offset, 16, FALSE); + offset += 16; + + proto_tree_add_item(tree, hf_acn_sdt_mid, tvb, + offset, 2, FALSE); + offset += 2; + + count--; + } + size = offset - start_offset; + break; case ACN_SDT_TYPE_JOINREF: @@ -514,7 +551,6 @@ offset += 4; size = offset - start_offset; - break; case ACN_SDT_TYPE_LEAVING: @@ -535,13 +571,51 @@ break; case ACN_SDT_TYPE_MAK: + proto_tree_add_item(tree, hf_acn_sdt_ack_threshold, tvb, + offset, 2, FALSE); + offset += 2; + + count = (max_size - (offset - start_offset)) / 2; + while( count > 0) { + proto_tree_add_item(tree, hf_acn_sdt_mid, tvb, + offset, 2, FALSE); + offset += 2; + + count--; + } + + size = offset - start_offset; break; - case ACN_SDT_TYPE_NAK: - + case ACN_SDT_TYPE_NAK: + proto_tree_add_item(tree, hf_acn_sdt_session_nr, tvb, + offset, 2, FALSE); + offset += 2; + + proto_tree_add_item(tree, hf_acn_sdt_mid, tvb, + offset, 2, FALSE); + offset += 2; + + proto_tree_add_item(tree, hf_acn_sdt_last_rel_seq, tvb, + offset, 4, FALSE); + offset += 4; + + proto_tree_add_item(tree, hf_acn_sdt_nr_lost_wrappers, tvb, + offset, 2, FALSE); + offset += 2; + + size = offset - start_offset; break; case ACN_SDT_TYPE_SEQLOST: + proto_tree_add_item(tree, hf_acn_sdt_last_rel_seq, tvb, + offset, 4, FALSE); + offset += 4; + + proto_tree_add_item(tree, hf_acn_sdt_new_rel_seq, tvb, + offset, 4, FALSE); + offset += 4; + size = offset - start_offset; break; case ACN_SDT_TYPE_NAKPARAMS: @@ -556,6 +630,8 @@ proto_tree_add_item(tree, hf_acn_sdt_max_nak_wait_time, tvb, offset, 2, FALSE); offset += 2; + + size = offset - start_offset; break; case ACN_SDT_TYPE_LEAVEREQ: @@ -567,6 +643,7 @@ case ACN_SDT_TYPE_REPLOSTSEQON: case ACN_SDT_TYPE_REPLOSTSEQOFF: /* no data */ + size = offset - start_offset; break; default: @@ -590,7 +667,7 @@ guint src,des; proto_tree *ti, *si, *flags_tree, *flags_item, *data_tree, *data_item; guint start_offset = offset; - acn_pdu_history_t hist; + acn_pdu_history_t hist = *parent_hist; ti = proto_tree_add_item(tree, @@ -634,6 +711,9 @@ offset, 4, size); offset += 4; } + + if(size > max_size ) + size = max_size; switch( flags & ACN_PDU_DES ) { @@ -727,8 +807,6 @@ offset += 2; } - /*hist = *parent_hist;*/ - if( flags & ACN_PDU_FLAG_Z ) { data_size = size - (offset - start_offset); @@ -740,7 +818,6 @@ data_tree=proto_item_add_subtree(data_item, ett_acn); - switch( hist.protocol ) { case ACN_PDU_PROTO_SDT: dissect_sdt( tvb, offset, data_tree, &hist, data_size); @@ -751,8 +828,8 @@ break; default: - /*proto_tree_add_item(si, hf_acn_pdu_data, tvb,*/ - /* offset, data_size, FALSE );*/ + proto_tree_add_item(si, hf_acn_pdu_unknown_data, tvb, + offset, data_size, FALSE ); break; } @@ -824,12 +901,12 @@ { &hf_acn_pdu_des, { "des","acn.pdu.des", - FT_UINT8, BASE_HEX, NULL, 0xC0, + FT_UINT8, BASE_HEX, VALS( acn_sdt_des_flag_vals ), 0xC0, "des", HFILL }}, { &hf_acn_pdu_src, { "src","acn.pdu.src", - FT_UINT8, BASE_HEX, NULL, 0x30, + FT_UINT8, BASE_HEX, VALS( acn_sdt_src_flag_vals ), 0x30, "src", HFILL }}, { &hf_acn_pdu_flag_p, @@ -912,6 +989,11 @@ FT_NONE, BASE_HEX, NULL, 0x0, "Data", HFILL }}, + { &hf_acn_pdu_unknown_data, + { "Unknown Data","acn.pdu.unknown_data", + FT_BYTES, BASE_HEX, NULL, 0x0, + "Unknown Data", HFILL }}, + { &hf_acn_pdu_padding, { "Padding","acn.pdu.padding", FT_UINT8, BASE_DEC, NULL, 0x0, @@ -947,10 +1029,20 @@ FT_UINT32, BASE_DEC, NULL, 0x0, "SDT Last reliable seq nr", HFILL }}, + { &hf_acn_sdt_new_rel_seq, + { "SDT reliable seq nr to continue with","acn.sdt.new_rel_seq", + FT_UINT32, BASE_DEC, NULL, 0x0, + "SDT reliable seq nr to continue with", HFILL }}, + { &hf_acn_sdt_last_rel_wrapper, { "SDT Last reliable Wrapper","acn.sdt.last_rel_wrapper", FT_UINT32, BASE_DEC, NULL, 0x0, "SDT Last reliable Wrapper", HFILL }}, + + { &hf_acn_sdt_nr_lost_wrappers, + { "SDT Nr of lost Wrappers","acn.sdt.nr_lost_wrappers", + FT_UINT32, BASE_DEC, NULL, 0x0, + "SDT Nr of lost Wrappers", HFILL }}, { &hf_acn_sdt_session_exp_time, { "SDT Session expire time","acn.sdt.session_exp_time",
- Follow-Ups:
- Re: [Ethereal-dev] [PATCH] ACN plugin update
- From: Guy Harris
- Re: [Ethereal-dev] [PATCH] ACN plugin update
- Prev by Date: Re: [Ethereal-dev] RTP Analyse (rtp dump)
- Next by Date: Re: [Ethereal-dev] bug: ethereal 0.9.15 - win32 with mac name resolution hangs
- Previous by thread: Re: [Ethereal-dev] RTP Analyse (rtp dump)
- Next by thread: Re: [Ethereal-dev] [PATCH] ACN plugin update
- Index(es):