Add codeset 5 ETSI party catagory IE.

svn path=/trunk/; revision=24690
This commit is contained in:
Jaap Keuter 2008-03-18 19:57:35 +00:00
parent a6c664155a
commit 7a942da919
1 changed files with 44 additions and 1 deletions

View File

@ -332,6 +332,11 @@ static const true_false_string q931_extension_ind_value = {
*/
#define Q931_IE_OPERATOR_SYSTEM_ACCESS 0x1D
/*
* Codeset 5 ETSI ETS 300 192
*/
#define Q931_IE_PARTY_CATEGORY 0x32
/*
* Codeset 6 (Network-specific) Belgium.
*/
@ -420,6 +425,7 @@ static const value_string q931_info_element_vals4[] = {
static const value_string q931_info_element_vals5[] = {
{ Q931_IE_CHARGING_ADVICE, "Charging advice" },
{ Q931_IE_OPERATOR_SYSTEM_ACCESS, "Operator system access" },
{ Q931_IE_PARTY_CATEGORY, "Party category"},
{ 0, NULL }
};
/* Codeset 6 */
@ -427,7 +433,7 @@ static const value_string q931_info_element_vals6[] = {
{ Q931_IE_REDIRECTING_NUMBER, "Redirecting number" },
{ Q931_IE_REDIRECTING_SUBADDR, "Redirecting subaddress" },
{ Q931_IE_CALL_APPEARANCE, "Call appearance" },
{ Q931_IE_DISPLAY, "Avaya Display" }, /* if Avaya codeset to send display = 6 */
{ Q931_IE_DISPLAY, "Avaya Display" }, /* if Avaya codeset to send display = 6 */
{ 0, NULL }
};
/* Codeset 7 */
@ -2364,6 +2370,35 @@ dissect_q931_user_user_ie(tvbuff_t *tvb, int offset, int len,
}
}
static const value_string q931_party_category_vals[] = {
{ 0x00, "Unknown" },
{ 0x01, "Extension" },
{ 0x02, "Operator" },
{ 0x03, "Emergency extension" },
{ 0, NULL }
};
static void
dissect_q931_party_category_ie(tvbuff_t *tvb, int offset, int len,
proto_tree *tree)
{
guint8 octet;
if (len == 0)
return;
octet = tvb_get_guint8(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 1,
"Party category: %s",
val_to_str(octet&0x07, q931_party_category_vals,
"Unknown (0x%02x)"));
offset += 1;
len -= 1;
if (len == 0)
return;
}
/*
* Dissect information elements consisting of ASCII^H^H^H^H^HIA5 text.
*/
@ -2991,6 +3026,14 @@ dissect_q931_IEs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *root_tree,
}
break;
case CS5 | Q931_IE_PARTY_CATEGORY:
if (q931_tree != NULL) {
dissect_q931_party_category_ie(tvb,
offset + 2, info_element_len,
ie_tree);
}
break;
case CS6 | Q931_IE_DISPLAY:
if (q931_tree != NULL) {
dissect_q931_ia5_ie(tvb, offset + 2,