diff options
author | Anders Broman <anders.broman@ericsson.com> | 2008-01-09 20:49:33 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2008-01-09 20:49:33 +0000 |
commit | 555355cef3807b76c008a81735281407db1575e5 (patch) | |
tree | 8f94d2c423884181ee6d6f457ef3cb65a0934d8d /epan/dissectors/packet-3g-a11.c | |
parent | db8bae4fb2a117c3dbdbdea38f3520d86c644b2e (diff) |
In case of QoS Information, Length field is missing.
svn path=/trunk/; revision=24047
Diffstat (limited to 'epan/dissectors/packet-3g-a11.c')
-rw-r--r-- | epan/dissectors/packet-3g-a11.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/epan/dissectors/packet-3g-a11.c b/epan/dissectors/packet-3g-a11.c index 38c9159c90..b38b8cb205 100644 --- a/epan/dissectors/packet-3g-a11.c +++ b/epan/dissectors/packet-3g-a11.c @@ -30,6 +30,9 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + *Ref: + * http://www.3gpp2.org/Public_html/specs/A.S0009-C_v1.0_070801.pdf */ #ifdef HAVE_CONFIG_H @@ -103,6 +106,7 @@ static int hf_a11_ase_gre_key = -1; static int hf_a11_ase_pcf_addr_key = -1; /* Foward QoS Information */ +static int hf_a11_fqi_length = -1; static int hf_a11_fqi_srid = -1; static int hf_a11_fqi_flags = -1; static int hf_a11_fqi_flowcount = -1; @@ -116,6 +120,7 @@ static int hf_a11_fqi_granted_qoslen = -1; static int hf_a11_fqi_granted_qos = -1; /* Reverse QoS Information */ +static int hf_a11_rqi_length = -1; static int hf_a11_rqi_srid = -1; static int hf_a11_rqi_flowcount = -1; static int hf_a11_rqi_flowid = -1; @@ -874,6 +879,12 @@ static void dissect_fwd_qosinfo(tvbuff_t* tvb, int offset, proto_tree* ext_tree) guint8 flow_index = 0; guint8 dscp_enabled = 0; + /* + * Starts with a length field + * http://www.3gpp2.org/Public_html/specs/A.S0009-C_v1.0_070801.pdf + */ + proto_tree_add_item(ext_tree, hf_a11_fqi_length, tvb, offset+clen, 2, FALSE); + clen = clen + 2; /* SR Id */ srid = tvb_get_guint8(tvb, offset+clen); @@ -954,7 +965,14 @@ static void dissect_rev_qosinfo(tvbuff_t* tvb, int offset, proto_tree* ext_tree) guint8 flow_count = 0; guint8 flow_index = 0; - /* SR Id */ + /* + * Starts with a length field + * http://www.3gpp2.org/Public_html/specs/A.S0009-C_v1.0_070801.pdf + */ + proto_tree_add_item(ext_tree, hf_a11_fqi_length, tvb, offset+clen, 2, FALSE); + clen = clen + 2; + + /* SR Id */ srid = tvb_get_guint8(tvb, offset+clen); proto_tree_add_item(ext_tree, hf_a11_rqi_srid, tvb, offset+clen, 1, FALSE); clen++; @@ -1875,6 +1893,11 @@ void proto_register_a11(void) FT_IPv4, BASE_NONE, NULL, 0, "PCF IP Address.", HFILL } }, + { &hf_a11_fqi_length, + { "Length", "a11.ext.fqi.length", + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL } + }, { &hf_a11_fqi_srid, { "SRID", "a11.ext.fqi.srid", FT_UINT8, BASE_DEC, NULL, 0, @@ -1930,6 +1953,11 @@ void proto_register_a11(void) FT_BYTES, BASE_NONE, NULL, 0, "Forward Granted QoS.", HFILL } }, + { &hf_a11_rqi_length, + { "Length", "a11.ext.rqi.length", + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL } + }, { &hf_a11_rqi_srid, { "SRID", "a11.ext.rqi.srid", FT_UINT8, BASE_DEC, NULL, 0, |