ISUP: Decode Bellcore GR-317/GR-394 as ANSI

Bellcore (now Telcordia) GR-317 and GR-394 are used in the U.S. and are
more similar to ANSI ISUP than ITU Standard ISUP.  This fixes decoding
the Jurisdiction (aka JIP) optional parameter.

"gr317" is listed in RFC 3204, Table 1 on Page 2.  Telcordia's name for
this standard is "LSSGR: Switching System Generic Requirements for Call
Control Using the Integrated Services Digital Network User Part
(ISDNUP)".

"gr394" is the value used by our Ribbon (formerly Genband) C15 switch.
Telcordia's name for GR-394 is "LSSGR: Switching System Generic
Requirements for Interexchange Carrier Interconnection (ICI) Using The
Integrated Services Digital Network User Part (ISDNUP)".  The difference
from GR-317 is "Call Control" vs "Interexchange Carrier Interconnection
(ICI)".  These calls are indeed interexchange calls.

Given that only "gr317" is listed in RFC 3204, arguably our Ribbon C15
should be sending this as "version=gr394; base=gr317" or just as
"version=gr317", but I have no control over that and would like to
decode the traffic as seen in the wild.

Bug: 16752
Change-Id: I24c7b2e175606e1c91bcb2e96a3372f62055e293
Reviewed-on: https://code.wireshark.org/review/38038
Reviewed-by: Jaap Keuter <jaap.keuter@xs4all.nl>
Petri-Dish: Jaap Keuter <jaap.keuter@xs4all.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Richard Laager 2020-08-03 15:43:21 -05:00 committed by Anders Broman
parent a381adfe12
commit 458623fd87
1 changed files with 5 additions and 2 deletions

View File

@ -10447,9 +10447,12 @@ dissect_application_isup(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo
version = ws_find_media_type_parameter(wmem_packet_scope(), message_info->media_str, "version");
base = ws_find_media_type_parameter(wmem_packet_scope(), message_info->media_str, "base");
if ((version && g_ascii_strncasecmp(version, "ansi", 4) == 0) ||
(base && g_ascii_strncasecmp(base, "ansi", 4) == 0)) {
(base && g_ascii_strncasecmp(base, "ansi", 4) == 0) ||
(version && g_ascii_strncasecmp(version, "gr", 2) == 0) ||
(base && g_ascii_strncasecmp(base, "gr", 2) == 0)) {
/*
* "version" or "base" parameter begins with "ansi", so it's ANSI.
* "version" or "base" parameter begins with "ansi" or "gr", so it's
* ANSI or Bellcore.
*/
isup_standard = ANSI_STANDARD;
col_append_str(pinfo->cinfo, COL_PROTOCOL, "/ISUP(ANSI)");