diff options
author | Anders Broman <anders.broman@ericsson.com> | 2006-03-16 21:16:30 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2006-03-16 21:16:30 +0000 |
commit | 3c2c4a390ac76683f800e8696fef65745e23199b (patch) | |
tree | 2e8cc01741f88cb52ec6229297406f0850a65129 /epan/dissectors/packet-bssgp.c | |
parent | a784b121502575a8930de9a34accb85c29ce9b80 (diff) |
Fix dissection of QoS.
svn path=/trunk/; revision=17650
Diffstat (limited to 'epan/dissectors/packet-bssgp.c')
-rw-r--r-- | epan/dissectors/packet-bssgp.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/epan/dissectors/packet-bssgp.c b/epan/dissectors/packet-bssgp.c index f9ed800651..19933321c7 100644 --- a/epan/dissectors/packet-bssgp.c +++ b/epan/dissectors/packet-bssgp.c @@ -3047,7 +3047,7 @@ decode_iei_abqp(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) { proto_item *ti, *pi; proto_tree *tf; - if (bi->bssgp_tree) { + if (!bi->bssgp_tree) { bi->offset += ie->value_length; return; } @@ -3067,6 +3067,7 @@ decode_iei_abqp(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) { proto_item_append_text(pi, "Reliability Class: %s (%#x)", translate_abqp_reliability_class(value, bi), value); bi->offset++; + /* Octet 4 */ data = tvb_get_guint8(bi->tvb, bi->offset); value = get_masked_guint8(data, MASK_PEAK_THROUGHPUT); @@ -3081,6 +3082,7 @@ decode_iei_abqp(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) { proto_item_append_text(pi, "Precedence Class: %s (%#x)", translate_abqp_precedence_class(value, bi), value); bi->offset++; + /* Octet 5 */ data = tvb_get_guint8(bi->tvb, bi->offset); value = get_masked_guint8(data, MASK_MEAN_THROUGHPUT); @@ -3088,7 +3090,14 @@ decode_iei_abqp(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) { MASK_MEAN_THROUGHPUT); proto_item_append_text(pi, "Mean Throughput: %s (%#02x)", translate_abqp_mean_throughput(value, bi), value); + /* + * A QoS IE received without octets 6-16, without octets 14-16, or without octets 15-16 shall be accepted by the + * receiving entity. + */ bi->offset++; + if (ie->value_length == 3) + return; + /* Octet 6 */ data = tvb_get_guint8(bi->tvb, bi->offset); traffic_class = get_masked_guint8(data, MASK_TRAFFIC_CLASS); @@ -3113,23 +3122,27 @@ decode_iei_abqp(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) { translate_abqp_delivery_of_erroneous_sdu(value, bi), value); bi->offset++; + /* Octet 7 */ value = tvb_get_guint8(bi->tvb, bi->offset); proto_tree_add_text(tf, bi->tvb, bi->offset, 1, "Maximum SDU Size: %s", translate_abqp_max_sdu_size(value, bi)); + /* Octet 8 */ bi->offset++; value = tvb_get_guint8(bi->tvb, bi->offset); proto_tree_add_text(tf, bi->tvb, bi->offset, 1, "Maximum bit rate for uplink: %s", translate_abqp_max_bit_rate_for_ul(value, bi)); + /* Octet 9 */ bi->offset++; value = tvb_get_guint8(bi->tvb, bi->offset); proto_tree_add_text(tf, bi->tvb, bi->offset, 1, "Maximum bit rate for downlink: %s", translate_abqp_max_bit_rate_for_dl(value, bi)); + /* Octet 10 */ bi->offset++; data = tvb_get_guint8(bi->tvb, bi->offset); @@ -3143,6 +3156,7 @@ decode_iei_abqp(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) { MASK_SDU_ERROR_RATIO); proto_item_append_text(pi, "SDU Error Ratio: %s (%#x)", translate_abqp_sdu_error_ratio(value, bi), value); + /* Octet 11 */ bi->offset++; data = tvb_get_guint8(bi->tvb, bi->offset); @@ -3162,19 +3176,28 @@ decode_iei_abqp(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) { (traffic_class == TRAFFIC_CLASS_BACKGROUND)) { proto_item_append_text(pi, " (ignored)"); } + /* Octet 12 */ bi->offset++; value = tvb_get_guint8(bi->tvb, bi->offset); proto_tree_add_text(tf, bi->tvb, bi->offset, 1, "Guaranteed bit rate for uplink: %s", translate_abqp_guaranteed_bit_rate_for_ul(value, bi)); + /* Octet 13 */ bi->offset++; value = tvb_get_guint8(bi->tvb, bi->offset); proto_tree_add_text(tf, bi->tvb, bi->offset, 1, "Guaranteed bit rate for downlink: %s", translate_abqp_guaranteed_bit_rate_for_dl(value, bi)); + /* + * A QoS IE received without octets 6-16, without octets 14-16, or without octets 15-16 shall be accepted by the + * receiving entity. + */ + /* Octet 14 */ bi->offset++; + if (ie->value_length == 11) + return; data = tvb_get_guint8(bi->tvb, bi->offset); @@ -3199,12 +3222,20 @@ decode_iei_abqp(bssgp_ie_t *ie, build_info_t *bi, int ie_start_offset) { (traffic_class == TRAFFIC_CLASS_BACKGROUND)) { proto_item_append_text(pi, " (ignored)"); } + /* + * A QoS IE received without octets 6-16, without octets 14-16, or without octets 15-16 shall be accepted by the + * receiving entity. + */ + /* Octet 15 */ bi->offset++; + if (ie->value_length == 12) + return; value = tvb_get_guint8(bi->tvb, bi->offset); proto_tree_add_text(tf, bi->tvb, bi->offset, 1, "Maximum bit rate for downlink (extended): %s", translate_abqp_max_bit_rate_for_dl_extended(value, bi)); + /* Octet 16 */ bi->offset++; value = tvb_get_guint8(bi->tvb, bi->offset); @@ -5085,6 +5116,7 @@ decode_pdu_download_bss_pfc(build_info_t *bi) { decode_pdu_general(ies, 2, bi); } +/* 10.4.17 CREATE-BSS-PFC */ static void decode_pdu_create_bss_pfc(build_info_t *bi) { bssgp_ie_t ies[] = { @@ -5114,6 +5146,7 @@ decode_pdu_create_bss_pfc(build_info_t *bi) { { BSSGP_IEI_GPRS_TIMER, "T10", BSSGP_IE_PRESENCE_C, BSSGP_IE_FORMAT_TLV, BSSGP_UNKNOWN, 3 }, + /* Inter RAT Handover Info 11.3.94 3GPP TS 48.018 version 6.11.0 Release 6 */ }; bi->dl_data = TRUE; bi->ul_data = FALSE; |