2 * Routines for DPNSS/DASS2 dissection
3 * Copyright 2007, Anders Broman <anders.broman[at]ericsson.com>
5 * Supplementary string parameter table and testing by Tomas Muehlhoff.
9 * Wireshark - Network traffic analyzer
10 * By Gerald Combs <gerald@wireshark.org>
11 * Copyright 1998 Gerald Combs
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License
15 * as published by the Free Software Foundation; either version 2
16 * of the License, or (at your option) any later version.
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
28 * ND1301:2001/03 http://www.nicc.org.uk/nicc-public/Public/interconnectstandards/dpnss/nd1301_2004_11.pdf
29 * http://acacia-net.com/wwwcla/protocol/dass2_l3.htm
38 #include <epan/packet.h>
40 void proto_register_dpnss(void);
42 /* Initialize the protocol and registered fields */
43 static int proto_dpnss
= -1;
44 static int hf_dpnss_msg_grp_id
= -1;
45 static int hf_dpnss_cc_msg_type
= -1;
46 static int hf_dpnss_e2e_msg_type
= -1;
47 static int hf_dpnss_LbL_msg_type
= -1;
48 static int hf_dpnss_ext_bit
= -1;
49 static int hf_dpnss_ext_bit_notall
= -1;
50 static int hf_dpnss_sic_type
= -1;
51 static int hf_dpnss_sic_details_for_speech
= -1;
52 static int hf_dpnss_sic_details_for_data1
= -1;
53 static int hf_dpnss_sic_details_for_data2
= -1;
54 static int hf_dpnss_dest_addr
= -1;
55 static int hf_dpnss_sic_oct2_data_type
= -1;
56 static int hf_dpnss_sic_oct2_duplex
= -1;
57 static int hf_dpnss_sic_oct2_sync_data_format
= -1;
58 static int hf_dpnss_sic_oct2_sync_byte_timing
= -1;
59 static int hf_dpnss_sic_oct2_net_ind_clk
= -1;
60 static int hf_dpnss_sic_oct2_async_data
= -1;
61 static int hf_dpnss_sic_oct2_async_flow_ctrl
= -1;
62 static int hf_dpnss_clearing_cause
= -1;
63 static int hf_dpnss_rejection_cause
= -1;
64 static int hf_dpnss_man_code
= -1;
65 static int hf_dpnss_subcode
= -1;
66 static int hf_dpnss_maintenance_action
= -1;
69 static int hf_dpnss_a_b_party_addr
= -1;
70 static int hf_dpnss_call_idx
= -1;
72 #define DPNNS_MESSAGE_GROUP_CC 0
73 #define DPNNS_MESSAGE_GROUP_E2E 2
74 #define DPNNS_MESSAGE_GROUP_LbL 4
76 #define DPNSS_CC_MSG_ISRM_C 0
77 #define DPNSS_CC_MSG_ISRM_I 1
78 #define DPNSS_CC_MSG_RM_C 2
79 #define DPNSS_CC_MSG_RM_I 3
80 #define DPNSS_CC_MSG_CS 4
81 #define DPNSS_CC_MSG_CCM 5
82 #define DPNSS_CC_MSG_NIM 6
83 #define DPNSS_CC_MSG_CA 7
84 #define DPNSS_CC_MSG_CRM 8
85 #define DPNSS_CC_MSG_NAM 9
86 #define DPNSS_CC_MSG_RRM 10
87 #define DPNSS_CC_MSG_SSRM_I 11
88 #define DPNSS_CC_MSG_SSRM_C 12
90 /* Initialize the subtree pointers */
91 static int ett_dpnss
= -1;
92 static int ett_dpnss_sel_field
= -1;
93 static int ett_dpnss_sic_field
= -1;
94 static int ett_dpnss_ind_field
= -1;
95 static int ett_dpnss_sup_str
= -1;
97 static const value_string dpnss_msg_grp_id_vals
[] = {
98 {0, "Call Control Message Group"},
99 {2, "End-to-End Message Group"},
100 {4, "Link-by-Link Message Group"},
104 static const value_string dpnss_cc_msg_type_vals
[] = {
105 {DPNSS_CC_MSG_ISRM_C
, "INITIAL SERVICE REQUEST Message (COMPLETE) - ISRM(C)"},
106 {DPNSS_CC_MSG_ISRM_I
, "INITIAL SERVICE REQUEST Message (INCOMPLETE) - ISRM(I)"},
107 {DPNSS_CC_MSG_RM_C
, "RECALL Message (COMPLETE) - RM(C)"},
108 {DPNSS_CC_MSG_RM_I
, "RECALL Message (INCOMPLETE) - RM(I)"},
109 {DPNSS_CC_MSG_CS
, "CHANNEL SEIZED - CS"},
110 {DPNSS_CC_MSG_CCM
, "CALL CONNECTED Message - CCM"},
111 {DPNSS_CC_MSG_NIM
, "NETWORK INDICATION Message - NIM"},
112 {DPNSS_CC_MSG_CA
, "CALL ARRIVAL Message - CA"},
113 {DPNSS_CC_MSG_CRM
, "CLEAR REQUEST Message - CRM/CLEAR INDICATION Message - CIM"}, /* Humm chek 2.1.7/2.1.8 - depends on dir? */
114 {DPNSS_CC_MSG_NAM
, "NUMBER ACKNOWLEDGE Message - NAM"},
115 {DPNSS_CC_MSG_RRM
, "RECALL REJECTION Message - RRM"},
116 {DPNSS_CC_MSG_SSRM_I
, "SUBSEQUENT SERVICE REQUEST Message (INCOMPLETE) - SSRM(I)"},
117 {DPNSS_CC_MSG_SSRM_C
, "SUBSEQUENT SERVICE REQUEST Message (COMPLETE) - SSRM(C)"},
122 static const value_string dpnss_cc_msg_short_type_vals
[] = {
123 {DPNSS_CC_MSG_ISRM_C
, "ISRM(C)"},
124 {DPNSS_CC_MSG_ISRM_I
, "ISRM(I)"},
125 {DPNSS_CC_MSG_RM_C
, "RM(C)"},
126 {DPNSS_CC_MSG_RM_I
, "RM(I)"},
127 {DPNSS_CC_MSG_CS
, "CS"},
128 {DPNSS_CC_MSG_CCM
, "CCM"},
129 {DPNSS_CC_MSG_CA
, "CA"},
130 {DPNSS_CC_MSG_NIM
, "NIM"},
131 {DPNSS_CC_MSG_CRM
, "CRM/CIM"}, /* Humm chek 2.1.7/2.1.8 - depends on dir? */
132 {DPNSS_CC_MSG_NAM
, "NAM"},
133 {DPNSS_CC_MSG_RRM
, "RRM"},
134 {DPNSS_CC_MSG_SSRM_I
, "SSRM(I)"},
135 {DPNSS_CC_MSG_SSRM_C
, "SSRM(C)"},
139 #define DPNSS_E2E_MSG_EEM_C 2
140 #define DPNSS_E2E_MSG_EEM_I 3
141 #define DPNSS_E2E_MSG_SCRM 4
142 #define DPNSS_E2E_MSG_SCIM 5
143 #define DPNSS_E2E_MSG_ERM_C 6
144 #define DPNSS_E2E_MSG_ERM_I 7
145 #define DPNSS_E2E_MSG_NSIM 8
148 /* 2.2 END-TO-END MESSAGE GROUP */
149 static const value_string dpnss_e2e_msg_type_vals
[] = {
150 {2, "END-to-END Message (COMPLETE) - EEM(C)"},
151 {3, "END-to-END Message (INCOMPLETE) - EEM(I)"},
152 {4, "SINGLE-CHANNEL CLEAR REQUEST Message - SCRM"},
153 {5, "SINGLE-CHANNEL CLEAR INDICATION Message - SCIM"},
154 {6, "END-to-END RECALL Message (COMPLETE) - ERM(C)"},
155 {7, "END-to-END RECALL Message (INCOMPLETE) - ERM(I)"},
156 {8, "NON SPECIFIED INFORMATION Message - NSIM"},
160 static const value_string dpnss_e2e_msg_short_type_vals
[] = {
171 #define DPNSS_LbL_MSG_LLM_C 0
172 #define DPNSS_LbL_MSG_LLM_I 1
173 #define DPNSS_LbL_MSG_LLRM 2
174 #define DPNSS_LbL_MSG_SM 4
175 #define DPNSS_LbL_MSG_LMM 5
176 #define DPNSS_LbL_MSG_LMRM 6
178 /* 2.3 LINK-BY-LINK MESSAGE GROUP */
179 static const value_string dpnss_LbL_msg_type_vals
[] = {
180 {0, "LINK-by-LINK Message (COMPLETE) - LLM(C)"},
181 {1, "LINK-by-LINK Message (INCOMPLETE) - LLM(I)"},
182 {2, "LINK-by-LINK REJECT Message - LLRM"},
183 {4, "SWAP Message - SM"},
184 {5, "LINK MAINTENANCE Message - LMM"},
185 {6, "LINK MAINTENANCE REJECT Message - LMRM"},
189 static const value_string dpnss_LbL_msg_short_type_vals
[] = {
199 static const true_false_string dpnss_ext_bit_vals
= {
200 "further octet(s) follow",
204 static const true_false_string dpnss_ext_bit_no_ext_vals
= {
208 /* SECTION 4 ANNEX 1 */
209 static const value_string dpnss_sic_type_type_vals
[] = {
214 {4, "interworking with DASS 2 - treat as data"},
215 {5, "interworking with DASS 2 - treat as data"},
216 {6, "interworking with DASS 2 - treat as data"},
217 {7, "interworking with DASS 2 - treat as data"},
221 static const value_string dpnss_sic_details_for_speech_vals
[] = {
222 {0, "64 kbit/s PCM G.711 A-Law or analogue"},
223 {1, "32 kbit/s ADPCM G.721"},
224 {2, "64 kbit/s PCM G.711 u-Law or analogue"},
241 static const value_string dpnss_sic_details_for_data_rates1_vals
[] = {
261 static const value_string dpnss_sic_details_for_data_rates2_vals
[] = {
270 {8, "75/1200 bit/s"},
271 {9, "1200/75 bit/s"},
282 static const value_string dpnss_sic_oct2_data_type_vals
[] = {
294 static const true_false_string dpnss_duplex_vals
= {
299 static const true_false_string dpnss_sic_oct2_sync_data_format_vals
= {
301 "Anonymous or Unformatted"
304 static const true_false_string dpnss_sic_oct2_net_ind_clk_vals
= {
305 "Bits E4/E5/E6 indicate phase",
306 "Clock Locked to Transmission"
309 static const true_false_string dpnss_provided_vals
= {
314 static const value_string dpnss_sic_oct2_async_data_type_vals
[] = {
321 static const true_false_string dpnss_flow_control_vals
= {
322 "TA has ESRA capability",
323 "TA does not have ESRA capability"
326 /* SECTION 4 Global Issue 7
327 * ANNEX 3 CLEARING/REJECTION CAUSE CODES
329 static const value_string dpnss_clearing_cause_code_vals
[] = {
330 {0x29, "Access Barred"},
331 {0x14, "Acknowledgement"},
332 {0x01, "Address Incomplete"},
334 {0x23, "Channel Out of Service"},
335 {0x2d, "DTE Controlled Not Ready"},
336 {0x07, "Congestion"},
337 {0x30, "Call Termination"},
338 {0x18, "Facility Not Registered"},
339 {0x0a, "Incoming Calls Barred"},
340 {0x13, "Service Incompatible"},
341 {0x1a, "Message Not Understood"},
342 {0x1e, "Network Address Extension-Error"},
343 {0x02, "Network Termination"},
344 {0x00, "Number Unobtainable"},
345 {0x24, "Priority Forced Release"},
347 {0x1c, "Route Out of Service"},
348 {0x04, "Subscriber Incompatible"},
349 {0x15, "Signal Not Understood"},
350 {0x16, "Signal Not Valid"},
351 {0x09, "Subscriber Out of Service"},
352 {0x1b, "Signalling System Incompatible"},
353 {0x17, "Service Temporarily Unavailable"},
354 {0x03, "Service Unavailable"},
355 {0x1d, "Transferred"},
356 {0x2e, "DTE Uncontrolled Not Ready"},
359 /* ANNEX 6 : MAINTENANCE ACTIONS (p235) */
360 static const value_string dpnss_maintenance_actions_vals
[] = {
361 {0x1, "BBC - Back-Busy Control"},
362 {0x2, "LBC - Loop-Back Control"},
363 {0x3, "LBA - Loop-Back Abort"},
364 {0x4, "TCS-R - Traffic Channel Status Request"},
365 {0x5, "ACK - Acknowledge"},
366 {0x6, "NTC - Non-Looped-Back Test Control"},
370 /* ANNEX 7 : CODING OF USAGE IDENTIFIERS */
371 static const value_string dpnss_man_code_vals
[] = {
386 #define DPNSS_SERV_MAR 1
387 #define DPNSS_STATUS 2
388 #define DPNSS_ROUTE_RES_CLASS 3
389 #define DPNSS_CBR_GRP 4
390 #define DPNSS_FAC_LST_CODE 5
391 #define DPNSS_NO_OF_FUR_TRANS 6
392 #define DPNSS_NO_OF_FUR_ALT_R 7
393 #define DPNSS_INT_CAP_LEV 8
394 #define DPNSS_NESTING_LEVEL 9
395 #define DPNSS_C_PARTY_ADDR 10
396 #define DPNSS_B_PARTY_ADDR 11
398 #define DPNSS_A_B_PARTY_ADDR 13
399 #define DPNSS_DIVERSION_TYPE 14
400 #define DPNSS_NSI_IDENTIFIER 15
401 #define DPNSS_USER_DEFINED 16
402 #define DPNSS_TEXT 17
403 #define DPNSS_CALL_INDEX 18
404 #define DPNSS_PASSWORD 19
405 #define DPNSS_CALL_DIR 20
406 #define DPNSS_DPNSS_ISDN_TYPE 21
407 #define DPNSS_HC_CLC 22
408 #define DPNSS_ENHANCED_STR_ID 23
409 #define DPNSS_STRING_ID 24
410 #define DPNSS_STRING_ID_LIST 25
411 #define DPNSS_TEXT_TYPE 26
412 #define DPNSS_CHANNEL_STATUS 27
413 #define DPNSS_CHANNEL_NUMBER 28
416 #define DPNSS_DEVICE_INDEX 31
417 #define DPNSS_CR_NO 32
418 #define DPNSS_CALL_ID_LENGTH 33
419 #define DPNSS_STATE_OF_DEST 34
420 #define DPNSS_STATE_OF_DEST_QUAL 35
421 #define DPNSS_REASON_FOR_REDIR 36
422 #define DPNSS_CLEARING_CAUSE 37
423 #define DPNSS_RECONT_ADDR 38
424 #define DPNSS_STATE_OF_OPERATOR 39
425 #define DPNSS_NIGHT_SERVICE 40
426 #define DPNSS_PBX_FLAG 41
427 #define DPNSS_NUMBER_OF_CALLS 42
428 #define DPNSS_NUMBER_OF_SERVERS 43
429 #define DPNSS_PRIORITY_LEVEL 44
430 #define DPNSS_LOCATION 45
431 #define DPNSS_SUBADDRESS 46
432 #define DPNSS_ALARM_LEVEL 47
433 #define DPNSS_STAFF_PRESENT 48
434 #define DPNSS_TIME_AND_DATE 49
435 #define DPNSS_SERVICES 50
436 #define DPNSS_PBX_REFERENCE 51
437 #define DPNSS_TRUNK_GROUP_REF_NUMBER 52
438 #define DPNSS_TRUNK_MEMBER_REF_NUMBER 53
439 #define DPNSS_CONF_PARTY_INDEX 54
440 #define DPNSS_CONF_PARTY_DET 55
441 #define DPNSS_ACCOUNT_CODE 56
442 #define DPNSS_CONF_BRIDGE_ADDR 57
443 #define DPNSS_COST_QUALIFIER 58
444 #define DPNSS_CURRENCY_INDICATION 59
445 #define DPNSS_CURRENCY_UNITS 60
446 #define DPNSS_TIME_INTERVAL 61
447 #define DPNSS_UNITS 62
448 #define DPNSS_REMOTE_ADDRESS 63
449 #define DPNSS_TEST_INDEX 64
450 #define DPNSS_TEST_RESULT 65
451 #define DPNSS_TYPE_OF_ASSISTANCE 66
452 #define DPNSS_REST_DOMAIN 67
453 #define DPNSS_GRP_PICK_UP_CODE 68
454 #define DPNSS_PICK_UP_CALL_TYPE 69
455 #define DPNSS_MALICIOUS_CALL_REF 70
456 #define DPNSS_TIMER_VALUE 71
457 #define DPNSS_BEARER_CAP 72
458 #define DPNSS_ISDN_NUM_ATTR 73
459 #define DPNSS_ISDN_DPNSS_SUBADDRESS 74
460 #define DPNSS_ISDN_NUMBER_DIGITS 75
461 #define DPNSS_HIGH_LAYER_COMP 76
462 #define DPNSS_LOW_LAYER_COMP 77
463 #define DPNSS_PROGRESS_INDICATOR 78
464 #define DPNSS_VPN_ACCESS_REF_NUM 79
465 #define DPNSS_INDEX_NUMBER 80
466 #define DPNSS_RESTRICTION_INDICATOR 81
467 #define DPNSS_CAUSE 82
472 const char *compact_name
;
478 } dpnns_sup_serv_set_t
;
480 static const dpnns_sup_serv_set_t dpnns_sup_serv_set
[] = {
481 {0, "NOT USED", "NOT USED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
482 {1, "CLC-ORD", "CALLING/CALLED LINE CATEGORY ORDINARY", DPNSS_SERV_MAR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
483 {2, "CLC-DEC", "CALLING/CALLED LINE CATEGORY DECADIC", DPNSS_STATUS
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
484 {3, "CLC-ISDN", "CALLING/CALLED LINE CATEGORY-PUBLIC ISDN", DPNSS_STATUS
, DPNSS_DPNSS_ISDN_TYPE
, DPNSS_NONE
, DPNSS_NONE
},
485 {4, "CLC-PSTN", "CALLING/CALLED LINE CATEGORY-PSTN", DPNSS_STATUS
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
486 {5, "CLC-MF5", "CALLING/CALLED LINE CATEGORY-SSMF5", DPNSS_STATUS
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
487 {6, "CLC-OP", "CALLING/CALLED LINE CATEGORY-OPERATOR", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
488 {7, "CLC-NET", "CALLING/CALLED LINE CATEGORY-NETWORK", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
489 {8, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
490 {9, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
491 {10, "CBWF-R", "CALL BACK WHEN FREE-REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
492 {11, "CBWF-FN", "CALL BACK WHEN FREE-FREE NOTIFICATION", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
493 {12, "CBWF-CSUI", "CALL BACK WHEN FREE-CALL SET-UP(IMMEDIATE)", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
494 {13, "CBWF-C", "CALL BACK WHEN FREE-CANCEL", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
495 {14, "RO", "RING OUT", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
496 {15, "CBC", "CALL BACK COMPLETE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
497 {16, "CBWF-CSUD", "CALL BACK WHEN FREE -CALL SET-UP(DELAYED)", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
498 {17, "CBWNU-R", "CALL BACK WHEN NEXT USEDREQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
499 {18, "COS", "CLASS OF SERVICE", DPNSS_ROUTE_RES_CLASS
, DPNSS_CBR_GRP
, DPNSS_FAC_LST_CODE
, DPNSS_NONE
},
500 {19, "LA", "LOOP AVOIDANCE", DPNSS_NO_OF_FUR_TRANS
, DPNSS_NO_OF_FUR_ALT_R
, DPNSS_NONE
, DPNSS_NONE
},
501 {20, "EI-PVR", "EXECUTIVE INTRUSION-PRIOR VALIDATION", DPNSS_INT_CAP_LEV
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
502 {21, "EI-R", "EXECUTIVE INTRUSION-REQUEST", DPNSS_INT_CAP_LEV
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
503 {22, "IPL-R", "INTRUSION PROTECTION LEVEL-REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
504 {23, "IPL", "INTRUSION PROTECTION LEVEL", DPNSS_INT_CAP_LEV
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
505 {24, "EI-C", "EXECUTIVE INTRUSION-CONVERT", DPNSS_INT_CAP_LEV
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
506 {25, "EI-I", "EXECUTIVE INTRUSION-INTRUDED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
507 {26, "CW", "CALL WAITING", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
508 {27, "CO", "CALL OFFER", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
509 {28, "SN-REQ", "SEND NEXT-REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
510 {29, "HGF", "HUNT GROUP FORWARDED", DPNSS_NESTING_LEVEL
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
511 {30, "DIV-V", "DIVERSION-VALIDATION", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
512 {31, "DIV-FM", "DIVERSION-FOLLOW ME", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
513 {32, "DIV-BY", "DIVERSION-BY PASS", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
514 {33, "DIV-CI", "DIVERSION CANCEL-IMMEDIATE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
515 {34, "DIV-CR", "DIVERSION CANCEL-ON NO REPLY", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
516 {35, "DIV-CB", "DIVERSION CANCEL-ON BUSY", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
517 {36, "DIV-CA", "DIVERSION CANCEL-ALL", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
518 {37, "DVG-I", "DIVERTING IMMEDIATE", DPNSS_B_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
519 {38, "DVG-B", "DIVERTING ON BUSY", DPNSS_B_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
520 {39, "DVG-R", "DIVERTING ON NO REPLY", DPNSS_B_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
521 {40, "DVT-I", "DIVERT IMMEDIATE", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
522 {41, "DVT-B", "DIVERT ON BUSY", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
523 {42, "DVD-I", "DIVERTED IMMEDIATE", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
524 {43, "DVD-B", "DIVERTED ON BUSY", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
525 {44, "DVD-R", "DIVERTED ON NO REPLY", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
526 {45, "DVT-R", "DIVERT ON NO REPLY", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
527 {46, "SIC", "SERVICE INDICATOR CODE", DPNSS_SIC
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
528 {47, "BSS-M", "BEARER SERVICE SELECTION-MANDATORY", DPNSS_SIC
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
529 {48, "BSS-P", "BEARER SERVICE SELECTION-PREFERRED", DPNSS_SIC
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
530 {49, "BSS-N", "BEARER SERVICE SELECTION-NOTIFICATION", DPNSS_SIC
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
531 {50, "OLI/CLI", "ORIGINATING LINE IDENTITY/CALLED LINE IDENTITY", DPNSS_A_B_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
532 {51, "RTI", "ROUTING INFORMATION, ROUTING INFORMATION", DPNSS_DPNSS_ISDN_TYPE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
533 {52, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
534 {53, "DVD-E", "DIVERTED-EXTERNALLY", DPNSS_DIVERSION_TYPE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
535 {54, "REJ", "REJECT", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
536 {55, "ACK", "ACKNOWLEDGE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
537 {56, "SN", "SEND NEXT", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
538 {57, "D-SIC", "DASS 2-SERVICE INDICATOR CODE", DPNSS_SIC
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
539 {58, "NSI", "NON-SPECIFIED INFORMATION", DPNSS_NSI_IDENTIFIER
, DPNSS_USER_DEFINED
, DPNSS_USER_DEFINED
, DPNSS_NONE
},
540 {59, "OCP", "ORIGINALLY CALLED PARTY", DPNSS_B_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
541 {60, "HOLD-REQ", "HOLD REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
542 {61, "RECON", "RECONNECTED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
543 {62, "HDG", "HOLDING", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
544 {63, "CD-Q", "CALL DISTRIBUTION-QUEUE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
545 {64, "TEXT-M", "TEXT MESSAGE", DPNSS_TEXT
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
546 {65, "SOD-B", "STATE OF DESTINATION-BUSY", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
547 {66, "SOD-F", "STATE OF DESTINATION-FREE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
548 {67, "CD-DNQ", "CALL DISTRIBUTION-DO NOT QUEUE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
549 {68, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
550 {69, "CD-LINK", "CALL DISTRIBUTION-LINKED", DPNSS_CALL_INDEX
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
551 {70, "DIV-RSI", "DIVERSION-REMOTE SET IMMEDIATE", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
552 {71, "DIV-RSB", "DIVERSION-REMOTE SET ON BUSY", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
553 {72, "DIV-RSR", "DIVERSION-REMOTE SET ON NO REPLY", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
554 {73, "DIV-RCI", "DIVERSION-REMOTE CANCEL IMMEDIATE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
555 {74, "DIV-RCB", "DIVERSION-REMOTE CANCEL ON BUSY", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
556 {75, "DIV-RCR", "DIVERSION-REMOTE CANCEL ON NO REPLY", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
557 {76, "DIV-RCA", "DIVERSION-REMOTE CANCEL ALL", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
558 {77, "PASSW", "PASSWORD", DPNSS_PASSWORD
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
559 {78, "SPL", "SPLIT", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
560 {79, "TWP", "TWO PARTY", DPNSS_CALL_DIR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
561 {80, "ENQ", "ENQUIRY CALL", DPNSS_HC_CLC
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
562 {81, "SCE", "SINGLE CHANNEL ENQUIRY", DPNSS_HC_CLC
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
563 {82, "TRFD", "TRANSFERRED", DPNSS_CALL_DIR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
564 {83, "SHTL", "SHUTTLE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
565 {84, "COC", "CONNECTED CALL", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
566 {85, "TRFR", "TRANSFER", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
567 {86, "CD-FN", "CALL DISTRIBUTION-FREE NOTIFY", DPNSS_CALL_INDEX
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
568 {87, "ICC", "INTERCOM CALL", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
569 {88, "AD-RQ", "ADD-ON REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
570 {89, "AD-V", "ADD-ON VALIDATION", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
571 {90, "AD-O", "ADDED-ON", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
572 {91, "ENH", "ENHANCED SSMF5", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
573 {92, "BAS", "BASIC SSMF5", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
574 {93, "CD-UNLINK", "CALL DISTRIBUTION-UNLINKED", DPNSS_CALL_INDEX
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
575 {94, "SNU", "SIGNAL NOT UNDERSTOOD", DPNSS_ENHANCED_STR_ID
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
576 {95, "SU", "SERVICE UNAVAILABLE", DPNSS_STRING_ID
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
577 {96, "RR-SNU", "RECALL REJECTED SIGNAL NOT UNDERSTOOD", DPNSS_ENHANCED_STR_ID
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
578 {97, "CD-CSU", "CALL DISTRIBUTION-CALL SET UP", DPNSS_CALL_INDEX
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
579 {98, "IG-SNU", "IGNORED-SIGNAL NOT UNDERSTOOD", DPNSS_STRING_ID_LIST
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
580 {99, "IG-SU", "IGNORED-SERVICE UNAVAILABLE", DPNSS_STRING_ID_LIST
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
581 {100, "TEXT", "TEXTUAL DISPLAY", DPNSS_TEXT
, DPNSS_TEXT_TYPE
, DPNSS_NONE
, DPNSS_NONE
},
582 {101, "SIM-A", "SIMULATED ANSWER", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
583 {102, "ACT", "ACTIVATE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
584 {103, "DEACT", "DEACTIVATE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
585 {104, "TCS", "TRAFFIC-CHANNEL STATUS", DPNSS_CHANNEL_STATUS
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
586 {105, "CHID", "CHANNEL IDENTITY", DPNSS_CHANNEL_NUMBER
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
587 {106, "FR-R", "FORCED RELEASE-REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
588 {107, "PB-P", "PRIORITY BREAKDOWN-PROTECTION", DPNSS_BPL
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
589 {108, "PB-R", "PRIORITY BREAKDOWN-REQUEST", DPNSS_BCL
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
590 {109, "DI", "DEVICE IDENTITY", DPNSS_DEVICE_INDEX
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
591 {110, "ROP-R", "ROUTE OPTIMISATION-REQUEST", DPNSS_CR_NO
, DPNSS_CALL_ID_LENGTH
, DPNSS_NONE
, DPNSS_NONE
},
592 {111, "ROP-CSU", "ROUTE OPTIMISATION-CALL SET UP", DPNSS_CALL_ID_LENGTH
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
593 {112, "ROP-CON", "ROUTE OPTIMISATION-CONNECTED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
594 {113, "DND", "DO NOT DISTURB", DPNSS_STATE_OF_DEST
, DPNSS_STATE_OF_DEST_QUAL
, DPNSS_NONE
, DPNSS_NONE
},
595 {114, "DND-O", "DO NOT DISTURB-OVERRIDE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
596 {115, "DND-S", "DO NOT DISTURB-SET", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
597 {116, "DND-C", "DO NOT DISTURB-CLEAR", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
598 {117, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
599 {118, "EST", "EXTENSION STATUS CALL", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
600 {119, "CDIV", "CONTROLLED DIVERSION", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
601 {120, "RDG", "REDIRECTING", DPNSS_REASON_FOR_REDIR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
602 {121, "RCF", "REDIRECTING ON CALL FAILURE", DPNSS_CLEARING_CAUSE
, DPNSS_B_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
},
603 {122, "TOV-R", "TAKEOVER REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
604 {123, "TOV-V", "TAKEOVER VALIDATION", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
605 {124, "SER-R", "SERIES CALL REQUEST", DPNSS_RECONT_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
606 {125, "SER-C", "SERIES CALL-CANCEL", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
607 {126, "SER-E", "SERIES CALL-ESTABLISHMENT", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
608 {127, "NS-N, NIGHT","SERVICE-NOTIFICATION", DPNSS_STATE_OF_OPERATOR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
609 {128, "NS-DVT", "NIGHT SERVICE-DIVERT", DPNSS_NIGHT_SERVICE
, DPNSS_PBX_FLAG
, DPNSS_NONE
, DPNSS_NONE
},
610 {129, "NS-DVG", "DPNSS_NIGHT_SERVICE-DIVERTING", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
611 {130, "NS-DVD", "DPNSS_NIGHT_SERVICE-DIVERTED", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
612 {131, "NS-RDVT", "DPNSS_NIGHT_SERVICE-REDIVERT", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
613 {132, "NS-RDVG", "DPNSS_NIGHT_SERVICE-REDIVERTING", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
614 {133, "NS-RDVD", "DPNSS_NIGHT_SERVICE-REDIVERTED", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
615 {134, "NS-DA", "DPNSS_NIGHT_SERVICE-DEACTIVATED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
616 {135, "Q-INFO", "QUEUE INFORMATION", DPNSS_NUMBER_OF_CALLS
, DPNSS_NUMBER_OF_SERVERS
, DPNSS_NONE
, DPNSS_NONE
},
617 {136, "Q-PRIO", "QUEUE PRIORITY", DPNSS_PRIORITY_LEVEL
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
618 {137, "SW-V", "SWAP - VALIDATION", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
619 {138, "SW-R", "SWAP - REJECTED", DPNSS_LOCATION
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
620 {139, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
621 {140, "A2", "SSMF5 SIGNAL 'A-2'", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
622 {141, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
623 {142, "A5", "SSMF5 SIGNAL 'A-5'", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
624 {143, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
625 {144, "A8", "SSMF5 SIGNAL 'A-8'", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
626 {145, "A10", "SSMF5 SIGNAL 'A-10'", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
627 {146, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
628 {147, "A13", "SSMF5 SIGNAL 'A-13'", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
629 {148, "A14", "SSMF5 SIGNAL 'A-14'", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
630 {149, "A12", "SSMF5 SIGNAL 'A-12'", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
631 {150, "A7", "SSMF5 SIGNAL 'A-7'", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
632 {151, "CBWF-CLB", "CALL BACK WHEN FREE-CALL BACK", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
633 {152, "DVT", "DIVERT", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
634 {153, "SOD-I", "DPNSS_STATE_OF_DEST-INDETERMINABLE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
635 {154, "DVG", "DIVERTING", DPNSS_B_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
636 {155, "SOD-REQ", "REQUEST DPNSS_STATE_OF_DEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
637 {156, "CBWF-CB", "CALL BACK WHEN FREE-CALL BACK REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
638 {157, "NAE-DC", "NETWORK ADDRESS EXTENSION", DPNSS_SUBADDRESS
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
639 {158, "SFI", "SUPPLEMENTARY FACILITIES INHIBITED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
640 {159, "NAE-DI", "NETWORK ADDRESS EXTENSION-DESTINATION INCOMPLETE", DPNSS_SUBADDRESS
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
641 {160, "DRS", "DIRECT ROUTE SELECT", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
642 {161, "AS", "ALARM STATUS", DPNSS_ALARM_LEVEL
, DPNSS_STAFF_PRESENT
, DPNSS_NONE
, DPNSS_NONE
},
643 {162, "AS-R", "ALARM STATUS-REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
644 {163, "TAD-R", "TIME AND DATE-REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
645 {164, "TAD", "TIME AND DATE", DPNSS_TIME_AND_DATE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
646 {165, "SATB", "SATELLITE BARRED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
647 {166, "SERV", "SERVICE INFORMATION", DPNSS_SERVICES
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
648 {167, "TID", "TRUNK IDENTITY", DPNSS_PBX_REFERENCE
, DPNSS_TRUNK_GROUP_REF_NUMBER
, DPNSS_TRUNK_MEMBER_REF_NUMBER
, DPNSS_NONE
},
649 {168, "PARK", "PARK REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
650 {169, "PKD", "PARKED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
651 {170, "AC-NAO", "ADD-ON CONFERENCE-NO ADD ON CURRENTLY AVAILABLE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
652 {171, "CBM-R", "CALL BACK MESSAGING-REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
653 {172, "CBM-C", "CALL BACK MESSAGING-CANCEL", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
654 {173, "NAE-CC", "NETWORK ADDRESS EXTENSION-CALLING/CALLED IDENTITY COMPLETE", DPNSS_SUBADDRESS
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
655 {174, "NAE-CI", "NETWORK ADDRESS EXTENSION-CALLING/CALLED IDENTITY INCOMPLETE", DPNSS_SUBADDRESS
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
656 {175, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
657 {176, "AC-CDC", "ADD-ON CONFERENCE-CLEARDOWN CONFERENCE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
658 {177, "AC-PI", "ADD-ON CONFERENCE-PARTY INDEX", DPNSS_CONF_PARTY_INDEX
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
659 {178, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
660 {179, "AC-DR", "ADD-ON CONFERENCE - DETAILS REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
661 {180, "AC-PD", "ADD-ON CONFERENCE - PARTY", DPNSS_CONF_PARTY_DET
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
662 {181, "AC-CBI", "ADD-ON CONFERENCE - CONFERENCE BRIDGE IDENTITY", DPNSS_CONF_BRIDGE_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
663 {182, "CH-AC", "CHARGE REPORTING ACCOUNT CODE", DPNSS_ACCOUNT_CODE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
664 {183, "CH-ACR", "CHARGE REPORTING ACCOUNT CODE REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
665 {184, "CH-ACT", "CHARGE REPORTING - ACTIVE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
666 {185, "CH-CLR", "CHARGE REPORTING - CLEAR", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
667 {186, "CH-CR", "CHARGE REPORTING - COST REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
668 {187, "CH-CST", "CHARGE REPORTING - COST, CURRENCY UNITS", DPNSS_COST_QUALIFIER
, DPNSS_CURRENCY_INDICATION
, DPNSS_NONE
, DPNSS_NONE
},
669 {188, "CH-TR", "CHARGE REPORTING - TIME RATE", DPNSS_CURRENCY_UNITS
, DPNSS_TIME_INTERVAL
, DPNSS_COST_QUALIFIER
, DPNSS_CURRENCY_INDICATION
},
670 {189, "CH-UR", "CHARGE REPORTING - UNIT", DPNSS_CURRENCY_UNITS
, DPNSS_COST_QUALIFIER
, DPNSS_CURRENCY_INDICATION
, DPNSS_NONE
},
671 {190, "CH-UU", "CHARGE REPORTING - UNITS USED", DPNSS_UNITS
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
672 {191, "OPD", "OUTPUT DIGITS", DPNSS_REMOTE_ADDRESS
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
673 {192, "OPD-R", "OUTPUT DIGITS - REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
674 {193, "IRD", "INTERNAL REROUTING DISABLED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
675 {194, "ERD", "EXTERNAL REROUTING DISABLED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
676 {195, "NLT-PT", "NON-LOOPED BACK TEST-PERFORM TEST", DPNSS_TEST_INDEX
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
677 {196, "NLT-RQ", "NON-LOOPED BACK TEST-TEST REQUEST", DPNSS_TEST_INDEX
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
678 {197, "NLT-SC", "NON-LOOPED BACK TEST-SEQUENCE COMPLETE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
679 {198, "NLT-RES", "NON-LOOPED BACK TEST-RESULT", DPNSS_TEST_RESULT
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
680 {199, "AUTO-A", "AUTOANSWER", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
681 {200, "HF-A", "HANDS-FREE - ACTIVATED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
682 {201, "HF-D", "HANDS-FREE - DEACTIVATED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
683 {202, "EI-W", "EXECUTIVE INTRUSION-WITHDRAW", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
684 {203, "DVT-RD", "DIVERT-REDIRECTION", DPNSS_REASON_FOR_REDIR
, DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
},
685 {204, "DVT-CF", "DIVERT-CALL FAILURE", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
686 {205, "ASST-INFO", "ASSISTANCE-INFORMATION", DPNSS_TYPE_OF_ASSISTANCE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
687 {206, "RED-BY", "REDIRECTION-BYPASS", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
688 {207, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
689 {208, "VIC", "VPN INITIATED CLEAR", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
690 {209, "NPR-A", "NUMBER PRESENTATION RESTRICTION-A PARTY", DPNSS_REST_DOMAIN
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
691 {210, "NPR-B", "NUMBER PRESENTATION RESTRICTION-B PARTY", DPNSS_REST_DOMAIN
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
692 {211, "ARC", "AUXILIARY DPNSS_ROUTE_RES_CLASS", DPNSS_ROUTE_RES_CLASS
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
693 {212, "WOB", "WAIT ON BUSY", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
694 {213, "GPU-R", "GROUP PICK-UP REQUEST", DPNSS_GRP_PICK_UP_CODE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
695 {214, "PU-DVT", "PICK-UP DIVERT", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
696 {215, "PU-DVG", "PICK-UP DIVERTING", DPNSS_TIME_INTERVAL
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
697 {216, "DPU-R", "DIRECTED PICK-UP REQUEST", DPNSS_PICK_UP_CALL_TYPE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
698 {217, "RCC-CA", "ROUTE CAPACITY CONTROL-CAPACITY AVAILABLE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
699 {218, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
700 {219, "RCC-OI", "ROUTE CAPACITY CONTROL-OVERRIDE INVOKED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
701 {220, "PU-DVD", "PICK-UP DIVERTED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
702 {221, "NPR-O", "NUMBER PRESENTATION RESTRICTION - OTHER PARTY", DPNSS_REST_DOMAIN
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
703 {222, "MCI", "MALICIOUS CALL INDICATION", DPNSS_MALICIOUS_CALL_REF
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
704 {223, "NSL", "NETWORK SIGNALLING LIMIT", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
705 {224, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
706 {225, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
707 {226, "TCOS", "TRAVELLING CLASS OF SERVICE", DPNSS_ROUTE_RES_CLASS
, DPNSS_CBR_GRP
, DPNSS_FAC_LST_CODE
, DPNSS_NONE
},
708 {227, "TCOS-R", "TRAVELLING CLASS OF SERVICE-REQUEST", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
709 {228, "DIV-RSC", "DIVERSION-REMOTE SET COMBINED", DPNSS_C_PARTY_ADDR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
710 {229, "DIV-RCC", "DIVERSION-REMOTE CANCEL COMBINED", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
711 {230, "RDC", "REDIRECTION CONTROL", DPNSS_TIMER_VALUE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
712 {231, "CAUSE", "DPNSS_CLEARING_CAUSE", DPNSS_CLEARING_CAUSE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
713 {232, "CP", "CALL PROCEEDING", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
714 {233, "I-BC", "ISDN-BEARER CAPABILITY", DPNSS_BEARER_CAP
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
715 {234, "I-CC", "ISDN-DPNSS_CLEARING_CAUSE", DPNSS_CAUSE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
716 {235, "I-CPN", "ISDN-CALLING PARTY/CONNECTED NUMBER", DPNSS_ISDN_NUM_ATTR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
717 {236, "I-CSA", "ISDN-CALLING PARTY/CONNECTED DPNSS_SUBADDRESS", DPNSS_ISDN_DPNSS_SUBADDRESS
, DPNSS_ISDN_NUMBER_DIGITS
, DPNSS_NONE
, DPNSS_NONE
},
718 {237, "I-DSA", "ISDN-DESTINATION (CALLED PARTY) DPNSS_SUBADDRESS", DPNSS_ISDN_DPNSS_SUBADDRESS
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
719 {238, "I-HLC", "ISDN-HIGH LAYER COMPATIBILITY", DPNSS_HIGH_LAYER_COMP
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
720 {239, "I-LLC", "ISDN-LOW LAYER COMPATIBILITY", DPNSS_LOW_LAYER_COMP
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
721 {240, "I-PROG", "ISDN-PROGRESS", DPNSS_PROGRESS_INDICATOR
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
722 {241, "IPN", "INTERWORKING VIA A PRIVATE ISDN", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
723 {242, "SAVE", "SAVE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
724 {243, "V-NID", "VPN-NODAL IDENTITY", DPNSS_VPN_ACCESS_REF_NUM
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
725 {244, "M-INDEX", "MESSAGE INDEX", DPNSS_INDEX_NUMBER
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
726 {245, "CBM-CSU", "CALL BACK MESSAGING CALL SET-UP", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
727 {246, "INT-A", "INTERIM ANSWER", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
728 {247, "undefined", "undefined", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
729 {248, "DVL", "DIVERSION - LAST CONTROLLING EXTENSION IDENTITY", DPNSS_B_PARTY_ADDR
, DPNSS_DIVERSION_TYPE
, DPNSS_RESTRICTION_INDICATOR
, DPNSS_NONE
},
730 {249, "ROP-INV", "ROUTE OPTIMISATION INVITE", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
731 {250, "ROP-INVA", "ROUTE OPTIMISATION INVITE WITH ACKNOWLEDGEMENT", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
732 {251, "PCLG-P", "PUBLIC CALLING PARTY NUMBER-PROVIDED", DPNSS_ISDN_NUM_ATTR
, DPNSS_ISDN_NUMBER_DIGITS
, DPNSS_NONE
, DPNSS_NONE
},
733 {252, "PCLG-D", "PUBLIC CALLING PARTY NUMBER-DEFAULT", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
734 {253, "PCON-P", "PUBLIC CONNECTED NUMBER-PROVIDED", DPNSS_ISDN_NUM_ATTR
, DPNSS_ISDN_NUMBER_DIGITS
, DPNSS_NONE
, DPNSS_NONE
},
735 {254, "PCON-D", "PUBLIC CONNECTED NUMBER-DEFAULT", DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
, DPNSS_NONE
},
739 dissect_dpnss_sic(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, int offset
)
741 guint8 octet
, type_of_data
;
743 octet
= tvb_get_guint8(tvb
,offset
);
744 type_of_data
= (octet
& 0x70)>>4;
745 proto_tree_add_item(tree
, hf_dpnss_ext_bit
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
746 proto_tree_add_item(tree
, hf_dpnss_sic_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
747 switch (type_of_data
) {
749 /* Type of Data (001) : Details for Speech */
750 proto_tree_add_item(tree
, hf_dpnss_sic_details_for_speech
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
753 /* Type of Data (010) : Data Rates */
754 proto_tree_add_item(tree
, hf_dpnss_sic_details_for_data1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
757 /* Type of Data (011) : Data Rates */
758 proto_tree_add_item(tree
, hf_dpnss_sic_details_for_data2
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
765 if ((octet
&0x80)==0x80) {
767 * Synch/Asynchronous Information
769 octet
= tvb_get_guint8(tvb
,offset
);
770 type_of_data
= octet
&0x3;
771 proto_tree_add_item(tree
, hf_dpnss_ext_bit_notall
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
772 switch (type_of_data
) {
777 proto_tree_add_item(tree
, hf_dpnss_sic_oct2_net_ind_clk
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
778 proto_tree_add_item(tree
, hf_dpnss_sic_oct2_sync_data_format
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
779 proto_tree_add_item(tree
, hf_dpnss_sic_oct2_sync_byte_timing
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
787 proto_tree_add_item(tree
, hf_dpnss_sic_oct2_async_flow_ctrl
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
788 proto_tree_add_item(tree
, hf_dpnss_sic_oct2_async_data
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
793 proto_tree_add_item(tree
, hf_dpnss_sic_oct2_duplex
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
794 proto_tree_add_item(tree
, hf_dpnss_sic_oct2_data_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
800 static const value_string dpnss_serv_mark_vals[] = {
802 { 2, "EMERGENCY TELEPHONE"},
804 { 4, "DISTRIBUTED GROUP"},
805 { 5, "UNABLE TO INITIATE CLEARING AFTER ANSWER"},
810 /* Supplementary Information parameters
811 * TODO Add decoding of parameters where needed.
814 static const value_string dpnss_sup_serv_par_str_vals
[] = {
815 { DPNSS_NONE
, "None"},
816 { DPNSS_SERV_MAR
, "Servive Marking"},
817 { DPNSS_STATUS
, "Status"},
818 { DPNSS_ROUTE_RES_CLASS
, "Route Restriction Class"},
819 { DPNSS_CBR_GRP
, "Call Barring Group"},
820 { DPNSS_FAC_LST_CODE
, "Facility list code"},
821 { DPNSS_NO_OF_FUR_TRANS
, "Number of Further Transits"},
822 { DPNSS_NO_OF_FUR_ALT_R
, "Number of Further Alternative routes"},
823 { DPNSS_INT_CAP_LEV
, "Intrusion Capability level"},
824 { DPNSS_NESTING_LEVEL
, "Nesting level"},
825 { DPNSS_C_PARTY_ADDR
, "C Party Address"},
826 { DPNSS_B_PARTY_ADDR
, "B Party Address"},
828 { DPNSS_A_B_PARTY_ADDR
, "A/B Party Address"},
829 { DPNSS_DIVERSION_TYPE
, "Diversion Type"},
830 { DPNSS_NSI_IDENTIFIER
, "NSI Identifier"},
831 { DPNSS_USER_DEFINED
, "User Defined"},
832 { DPNSS_TEXT
, "Text"},
833 { DPNSS_CALL_INDEX
, "Call Index"},
834 { DPNSS_PASSWORD
, "Password"},
835 { DPNSS_CALL_DIR
, "Call Direction"},
836 { DPNSS_DPNSS_ISDN_TYPE
, "DPNNS ISDN Type"},
837 { DPNSS_HC_CLC
, "HC CLC"},
838 { DPNSS_ENHANCED_STR_ID
, "Enhanced String Identity"},
839 { DPNSS_STRING_ID
, "String Identity"},
840 { DPNSS_STRING_ID_LIST
, "String Identity List"},
841 { DPNSS_TEXT_TYPE
, "Text Type"},
842 { DPNSS_CHANNEL_STATUS
, "Channel Status"},
843 { DPNSS_CHANNEL_NUMBER
, "Channel Number"},
846 { DPNSS_DEVICE_INDEX
, "Device Index"},
847 { DPNSS_CR_NO
, "Call Reference Number"},
848 { DPNSS_CALL_ID_LENGTH
, "Call Identity Length"},
849 { DPNSS_STATE_OF_DEST
, "State of Destination"},
850 { DPNSS_STATE_OF_DEST_QUAL
, "State of Destination Qualifier"},
851 { DPNSS_REASON_FOR_REDIR
, "Reason For Redirection"},
852 { DPNSS_CLEARING_CAUSE
, "Clearing Cause"},
853 { DPNSS_RECONT_ADDR
, "Reconnect Address"},
854 { DPNSS_STATE_OF_OPERATOR
, "State of Operator"},
855 { DPNSS_NIGHT_SERVICE
, "Night Service"},
856 { DPNSS_PBX_FLAG
, "PBX flag"},
857 { DPNSS_NUMBER_OF_CALLS
, "Number of Calls"},
858 { DPNSS_NUMBER_OF_SERVERS
, "Number of Servers"},
859 { DPNSS_PRIORITY_LEVEL
, "Priority Level"},
860 { DPNSS_LOCATION
, "Location"},
861 { DPNSS_SUBADDRESS
, "Subaddress"},
862 { DPNSS_ALARM_LEVEL
, "Alarm Level"},
863 { DPNSS_STAFF_PRESENT
, "Staff Present"},
864 { DPNSS_TIME_AND_DATE
, "Time and Date"},
865 { DPNSS_SERVICES
, "Services"},
866 { DPNSS_PBX_REFERENCE
, "PBX Reference"},
867 { DPNSS_TRUNK_GROUP_REF_NUMBER
, "Trunk Group reference Number"},
868 { DPNSS_TRUNK_MEMBER_REF_NUMBER
,"Trunk Member Reference Number"},
869 { DPNSS_CONF_PARTY_INDEX
, "Conference Party Index"},
870 { DPNSS_CONF_PARTY_DET
, "Conference Party Details"},
871 { DPNSS_ACCOUNT_CODE
, "Account code"},
872 { DPNSS_CONF_BRIDGE_ADDR
, "Conference Bridge Address"},
873 { DPNSS_COST_QUALIFIER
, "Cost Qualifier"},
874 { DPNSS_CURRENCY_INDICATION
, "Currency Indication"},
875 { DPNSS_CURRENCY_UNITS
, "Currency Units"},
876 { DPNSS_TIME_INTERVAL
, "Time Interval"},
877 { DPNSS_UNITS
, "Units"},
878 { DPNSS_REMOTE_ADDRESS
, "Remote Address"},
879 { DPNSS_TEST_INDEX
, "Test Index"},
880 { DPNSS_TEST_RESULT
, "Test Result"},
881 { DPNSS_TYPE_OF_ASSISTANCE
, "Type of assistance"},
882 { DPNSS_REST_DOMAIN
, "Restriction Domain"},
883 { DPNSS_GRP_PICK_UP_CODE
, "Group Pick-Up Code"},
884 { DPNSS_PICK_UP_CALL_TYPE
, "Pick-Up call type"},
885 { DPNSS_MALICIOUS_CALL_REF
, "Malicious call reference"},
886 { DPNSS_TIMER_VALUE
, "Timer Value"},
887 { DPNSS_BEARER_CAP
, "Bearer capability"},
888 { DPNSS_ISDN_NUM_ATTR
, "ISDM number attribute"},
889 { DPNSS_ISDN_DPNSS_SUBADDRESS
, "ISDN DPNNS Subaddress"},
890 { DPNSS_ISDN_NUMBER_DIGITS
, "ISDN Number Digits"},
891 { DPNSS_HIGH_LAYER_COMP
, "High Layer Compatibility"},
892 { DPNSS_LOW_LAYER_COMP
, "Low layer Compatibility"},
893 { DPNSS_PROGRESS_INDICATOR
, "Progress Indicator"},
894 { DPNSS_VPN_ACCESS_REF_NUM
, "VPN Access reference Number"},
895 { DPNSS_INDEX_NUMBER
, "Index Number"},
896 { DPNSS_RESTRICTION_INDICATOR
, "Restriction Indicator"},
897 { DPNSS_CAUSE
, "Cause"},
902 dissect_dpnns_sup_str_par(tvbuff_t
*tvb
, proto_tree
* tree
, int par_type_num
, int par_start_offset
, int par_end_offset
)
907 par_len
= par_end_offset
- par_start_offset
;
909 par_type_num
= DPNSS_NONE
;
911 switch (par_type_num
) {
913 proto_tree_add_text(tree
, tvb
, par_start_offset
, par_len
,"Par: None");
916 /* TODO: Use individual dissection of parameters if hf fields needed or in the case where
917 special handling is needed for greater detail
921 * More than one Service Marking character can be
922 * included in the Parameter, each being separated
923 * by the IA5 character space (2/0).
924 * If decoded use: dpnss_serv_mark_vals
927 case DPNSS_ROUTE_RES_CLASS:
929 case DPNSS_FAC_LST_CODE:
930 case DPNSS_NO_OF_FUR_TRANS:
931 case DPNSS_NO_OF_FUR_ALT_R:
932 case DPNSS_INT_CAP_LEV:
933 case DPNSS_NESTING_LEVEL:
934 case DPNSS_C_PARTY_ADDR:
935 case DPNSS_B_PARTY_ADDR:
938 case DPNSS_A_B_PARTY_ADDR
:
939 proto_tree_add_item(tree
, hf_dpnss_a_b_party_addr
, tvb
, par_start_offset
, par_len
, ENC_ASCII
|ENC_NA
);
943 case DPNSS_DIVERSION_TYPE:
944 case DPNSS_NSI_IDENTIFIER:
945 case DPNSS_USER_DEFINED:
948 case DPNSS_CALL_INDEX
:
949 proto_tree_add_item(tree
, hf_dpnss_call_idx
, tvb
, par_start_offset
, par_len
, ENC_ASCII
|ENC_NA
);
955 case DPNSS_DPNSS_ISDN_TYPE:
957 case DPNSS_ENHANCED_STR_ID:
958 case DPNSS_STRING_ID:
959 case DPNSS_STRING_ID_LIST:
960 case DPNSS_TEXT_TYPE:
961 case DPNSS_CHANNEL_STATUS:
962 case DPNSS_CHANNEL_NUMBER:
965 case DPNSS_DEVICE_INDEX:
967 case DPNSS_CALL_ID_LENGTH:
968 case DPNSS_STATE_OF_DEST:
969 case DPNSS_STATE_OF_DEST_QUAL:
970 case DPNSS_REASON_FOR_REDIR:
971 case DPNSS_CLEARING_CAUSE:
972 case DPNSS_RECONT_ADDR:
973 case DPNSS_STATE_OF_OPERATOR:
974 case DPNSS_NIGHT_SERVICE:
976 case DPNSS_NUMBER_OF_CALLS:
977 case DPNSS_NUMBER_OF_SERVERS:
978 case DPNSS_PRIORITY_LEVEL:
980 case DPNSS_SUBADDRESS:
981 case DPNSS_ALARM_LEVEL:
982 case DPNSS_STAFF_PRESENT:
983 case DPNSS_TIME_AND_DATE:
985 * More than one Service Marking character can be
986 * included in the Parameter, each being separated
987 * by the IA5 character space (2/0).
988 * 1 = Call Offer not possible
989 * 2 = Executive Intrusion not possible
990 * 3 = Call Back When Free not possible
991 * 4 = Call Back Messaging not possible (see Note)
992 * 5 = Hold not possible
993 * 6 = Call Back When Next Used not possible
994 case DPNSS_PBX_REFERENCE:
995 case DPNSS_TRUNK_GROUP_REF_NUMBER:
996 case DPNSS_TRUNK_MEMBER_REF_NUMBER:
997 case DPNSS_CONF_PARTY_INDEX:
998 case DPNSS_CONF_PARTY_DET:
999 case DPNSS_ACCOUNT_CODE:
1000 case DPNSS_CONF_BRIDGE_ADDR:
1001 case DPNSS_COST_QUALIFIER:
1002 case DPNSS_CURRENCY_INDICATION:
1003 case DPNSS_CURRENCY_UNITS:
1004 case DPNSS_TIME_INTERVAL:
1006 case DPNSS_REMOTE_ADDRESS:
1007 case DPNSS_TEST_INDEX:
1008 case DPNSS_TEST_RESULT:
1009 case DPNSS_TYPE_OF_ASSISTANCE:
1010 case DPNSS_REST_DOMAIN:
1011 case DPNSS_GRP_PICK_UP_CODE:
1012 case DPNSS_PICK_UP_CALL_TYPE:
1013 case DPNSS_MALICIOUS_CALL_REF:
1014 case DPNSS_TIMER_VALUE:
1015 case DPNSS_BEARER_CAP:
1016 case DPNSS_ISDN_NUM_ATTR:
1017 case DPNSS_ISDN_DPNSS_SUBADDRESS:
1018 case DPNSS_ISDN_NUMBER_DIGITS:
1019 case DPNSS_HIGH_LAYER_COMP:
1020 case DPNSS_LOW_LAYER_COMP:
1021 case DPNSS_PROGRESS_INDICATOR:
1022 case DPNSS_VPN_ACCESS_REF_NUM:
1023 case DPNSS_INDEX_NUMBER:
1024 case DPNSS_RESTRICTION_INDICATOR:
1028 /* Used to print all pars without any special handling */
1029 proto_tree_add_text(tree
, tvb
, par_start_offset
, par_len
,"Parameter %s: %s",
1030 val_to_str(par_type_num
, dpnss_sup_serv_par_str_vals
, "Unknown (%d)" ),
1031 tvb_format_text(tvb
,par_start_offset
, par_len
)
1038 /* 3.1 Supplementary Information Strings
1039 * A Supplementary Information String comprises a Supplementary
1040 * Information Identifier which may be followed by one or more
1041 * Parameters. A Supplementary Information String starts with the
1042 * IA5 character * and ends with the IA5 character #.
1044 * When the Supplementary Information String includes Parameters
1045 * these are separated from the identifier and each other by a *.
1046 * eg * Supplementary Information Identifier code #
1047 * or * Supplementary Information Identifier code * Parameter #
1048 * or * Supplementary Information Identifier code * Parameter * Parameter #
1049 * A Supplementary Information String shall be wholly contained
1050 * within one Selection or Indication Field (ie it shall not be
1051 * split between messages).
1053 * 3.2 Supplementary Information String Identifier
1054 * The identifier comprises one or more IA5 numerals 0-9 which may
1055 * be followed by a single IA5 alpha-character suffix in the range A-Z.
1056 * The numerals of the identifier indicate the main function of the
1057 * Supplementary Information String, eg "39F" indicates "Diverting
1058 * on No Reply". "F" is the suffix.
1060 * 3.5 Destination Address
1061 * The Destination Address comprises one or more IA5 numerals 0 to
1062 * 9, has no identifier code and is not prefixed by a * or
1063 * terminated by a #. The digits are always the last characters in
1064 * the Selection Block. The first Destination Address digit
1065 * immediately follows the # of the last Supplementary Information
1070 dissect_dpnss_sup_info_str(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, gint offset
)
1072 proto_item
*sup_str_item
;
1073 proto_tree
*sup_str_tree
;
1074 gint start_offset
, hash_offset
, tvb_end_offset
, sup_inf_str_end_offset
, str_no
;
1075 gint par_start_offset
, par_end_offset
, number_of_found_par
;
1076 gint sup_inf_str_len
, par_type_num
;
1079 gboolean last_string
= FALSE
;
1082 tvb_end_offset
= tvb_length(tvb
);
1085 while ((offset
<tvb_end_offset
)&&(last_string
== FALSE
)) {
1086 octet
= tvb_get_guint8(tvb
,offset
);
1088 /* Supplementary Information String */
1089 start_offset
= offset
;
1091 number_of_found_par
= 0;
1092 /* offset points to start of supplementary information string */
1094 hash_offset
= tvb_find_guint8(tvb
, offset
, -1, '#');
1095 sup_str_item
= proto_tree_add_text(tree
, tvb
, start_offset
, hash_offset
-start_offset
+1,
1096 "Supplementary Information %u: %s",str_no
,
1097 tvb_format_text(tvb
,start_offset
,hash_offset
-start_offset
+1));
1098 sup_str_tree
= proto_item_add_subtree(sup_str_item
, ett_dpnss_sup_str
);
1099 /* SUPPLEMENTARY INFORMATION STRING IDENTIFIER
1100 * Get the parameter number string and translate it to an index into the dpnns_sup_serv_set.
1101 * The number may have a trailing alpha character at the end.
1103 sup_inf_str_end_offset
= tvb_find_guint8(tvb
, offset
, hash_offset
-offset
, '*');
1104 if (sup_inf_str_end_offset
==-1) {
1107 sup_inf_str_end_offset
= hash_offset
;
1109 sup_inf_str_len
= sup_inf_str_end_offset
- offset
;
1110 sup_str_num
= atoi(tvb_format_text(tvb
, offset
, sup_inf_str_len
));
1111 if ((sup_str_num
!= 0) && (sup_str_num
< array_length(dpnns_sup_serv_set
))) {
1112 proto_tree_add_text(sup_str_tree
, tvb
,offset
,sup_inf_str_len
,
1113 "Sup str:%s ", dpnns_sup_serv_set
[sup_str_num
].compact_name
);
1114 offset
= sup_inf_str_end_offset
+1;
1115 /* Find parameter(s) */
1117 number_of_found_par
++;
1118 /* 1:st Parameter */
1119 par_start_offset
= offset
;
1120 par_end_offset
= tvb_find_guint8(tvb
, offset
, -1, '*');
1121 if (par_end_offset
== -1) {
1122 /* last parameter */
1123 par_end_offset
= hash_offset
;
1126 switch (number_of_found_par
) {
1128 par_type_num
= dpnns_sup_serv_set
[sup_str_num
].par1_num
;
1129 dissect_dpnns_sup_str_par(tvb
,sup_str_tree
, par_type_num
, par_start_offset
, par_end_offset
);
1132 par_type_num
= dpnns_sup_serv_set
[sup_str_num
].par2_num
;
1133 dissect_dpnns_sup_str_par(tvb
,sup_str_tree
, par_type_num
, par_start_offset
, par_end_offset
);
1136 par_type_num
= dpnns_sup_serv_set
[sup_str_num
].par3_num
;
1137 dissect_dpnns_sup_str_par(tvb
,sup_str_tree
, par_type_num
, par_start_offset
, par_end_offset
);
1140 par_type_num
= dpnns_sup_serv_set
[sup_str_num
].par4_num
;
1141 dissect_dpnns_sup_str_par(tvb
,sup_str_tree
, par_type_num
, par_start_offset
, par_end_offset
);
1146 /* More parameters ? */
1147 offset
= par_end_offset
+1;
1151 offset
= hash_offset
+1;
1155 proto_tree_add_item(tree
, hf_dpnss_dest_addr
, tvb
, offset
, -1, ENC_ASCII
|ENC_NA
);
1163 dissect_dpnss_LbL_msg(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
)
1165 proto_item
*sic_field_item
, *ind_field_item
;
1166 proto_tree
*sic_field_tree
, *ind_field_tree
;
1171 tvb_end_offset
= tvb_length(tvb
);
1173 proto_tree_add_item(tree
, hf_dpnss_LbL_msg_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1174 octet
= tvb_get_guint8(tvb
,offset
)&0x0f;
1176 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "%s ",
1177 val_to_str(octet
, dpnss_LbL_msg_short_type_vals
, "Unknown (%d)" ));
1180 case DPNSS_LbL_MSG_LLM_C
:
1181 /* 2.3.1 LINK-by-LINK Message (COMPLETE) - LLM(C)*/
1182 case DPNSS_LbL_MSG_LLM_I
:
1183 /* 2.3.2 LINK-by-LINK Message (INCOMPLETE) - LLM(I) */
1184 /* Indication Field */
1185 ind_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1186 "Indication Field: %s",
1187 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1188 ind_field_tree
= proto_item_add_subtree(ind_field_item
, ett_dpnss_ind_field
);
1189 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, ind_field_tree
, offset
);
1191 case DPNSS_LbL_MSG_LLRM
:
1192 /* 2.3.3 LINK-by-LINK REJECT Message - LLRM */
1193 /* Rejection Cause */
1194 proto_tree_add_item(tree
, hf_dpnss_rejection_cause
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1195 /* Indication Field (Optional) */
1196 if (tvb_end_offset
>offset
) {
1197 ind_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1198 "Indication Field: %s",
1199 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1200 ind_field_tree
= proto_item_add_subtree(ind_field_item
, ett_dpnss_ind_field
);
1201 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, ind_field_tree
, offset
);
1204 case DPNSS_LbL_MSG_SM
:
1205 /* 2.3.4 SWAP Message - SM */
1206 /* Service Indicator Code
1207 * Note: On data calls the SIC may comprise more than one octet.
1208 * The Service Indicator Code is coded in accordance with ANNEX 1.
1210 sic_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1, "Service Indicator Code");
1211 sic_field_tree
= proto_item_add_subtree(sic_field_item
, ett_dpnss_sic_field
);
1212 offset
=dissect_dpnss_sic(tvb
, pinfo
, sic_field_tree
, offset
);
1213 /* Indication Field */
1214 ind_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1215 "Indication Field: %s",
1216 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1217 ind_field_tree
= proto_item_add_subtree(ind_field_item
, ett_dpnss_ind_field
);
1218 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, ind_field_tree
, offset
);
1220 case DPNSS_LbL_MSG_LMM
:
1221 /* 2.3.5 LINK MAINTENANCE Message - LMM */
1222 /* Maintenance Action
1223 * respond to a request for,maintenance actions to be performed.
1224 * The Maintenance Action field identifies the action required or
1225 * the response being made. The Maintenance Action field is coded
1226 * as shown in ANNEX 6.
1228 proto_tree_add_item(tree
, hf_dpnss_maintenance_action
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1230 /* Indication Field */
1231 ind_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1232 "Indication Field: %s",
1233 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1234 ind_field_tree
= proto_item_add_subtree(ind_field_item
, ett_dpnss_ind_field
);
1235 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, ind_field_tree
, offset
);
1237 case DPNSS_LbL_MSG_LMRM
:
1238 /* 2.3.6 LINK MAINTENANCE REJECT Message - LMRM */
1239 proto_tree_add_item(tree
, hf_dpnss_clearing_cause
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1241 /* Indication Field */
1242 ind_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1243 "Indication Field: %s",
1244 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1245 ind_field_tree
= proto_item_add_subtree(ind_field_item
, ett_dpnss_ind_field
);
1246 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, ind_field_tree
, offset
);
1249 proto_tree_add_text(tree
, tvb
, offset
, 1, "Dissection of this message not supported yet");
1258 dissect_dpnss_e2e_msg(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
)
1260 proto_item
*sel_field_item
, *sic_field_item
, *ind_field_item
;
1261 proto_tree
*sel_field_tree
, *sic_field_tree
, *ind_field_tree
;
1266 tvb_end_offset
= tvb_length(tvb
);
1268 proto_tree_add_item(tree
, hf_dpnss_e2e_msg_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1269 octet
= tvb_get_guint8(tvb
,offset
)&0x0f;
1271 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "%s ",
1272 val_to_str(octet
, dpnss_e2e_msg_short_type_vals
, "Unknown (%d)" ));
1275 case DPNSS_E2E_MSG_EEM_C
:
1276 /* 2.2.1 END-to-END Message (COMPLETE) - EEM(C) */
1277 case DPNSS_E2E_MSG_EEM_I
:
1279 /* Indication Field */
1280 ind_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1281 "Indication Field: %s",
1282 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1283 ind_field_tree
= proto_item_add_subtree(ind_field_item
, ett_dpnss_ind_field
);
1284 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, ind_field_tree
, offset
);
1286 case DPNSS_E2E_MSG_SCRM
:
1287 /* 2.2.3 SINGLE-CHANNEL CLEAR REQUEST Message - SCRM */
1288 case DPNSS_E2E_MSG_SCIM
:
1289 /* 2.2.4 SINGLE-CHANNEL CLEAR INDICATION Message - SCIM */
1290 /* Clearing Cause */
1291 proto_tree_add_item(tree
, hf_dpnss_clearing_cause
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1293 /* Indication Field (Optional) */
1294 if (tvb_end_offset
>offset
) {
1295 ind_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1296 "Indication Field: %s",
1297 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1298 ind_field_tree
= proto_item_add_subtree(ind_field_item
, ett_dpnss_ind_field
);
1299 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, ind_field_tree
, offset
);
1302 case DPNSS_E2E_MSG_ERM_C
:
1303 /* 2.2.5 END-to-END RECALL Message (COMPLETE) - ERM(C) */
1304 case DPNSS_E2E_MSG_ERM_I
:
1305 /* 2.2.6 END-to-END RECALL Message (INCOMPLETE) - ERM(I) */
1306 /* Service Indicator Code
1307 * Note: On data calls the SIC may comprise more than one octet.
1308 * The Service Indicator Code is coded in accordance with ANNEX 1.
1310 sic_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1, "Service Indicator Code");
1311 sic_field_tree
= proto_item_add_subtree(sic_field_item
, ett_dpnss_sic_field
);
1312 offset
=dissect_dpnss_sic(tvb
, pinfo
, sic_field_tree
, offset
);
1315 * The Selection Field contains the selection information relating
1316 * to a call set-up or Supplementary Service Request, and is
1317 * structured as shown in Subsection 3.
1319 sel_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1320 "Selection Field: %s",
1321 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1322 sel_field_tree
= proto_item_add_subtree(sel_field_item
, ett_dpnss_sel_field
);
1323 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, sel_field_tree
, offset
);
1325 case DPNSS_E2E_MSG_NSIM
:
1326 /* 2.2.7 NON SPECIFIED INFORMATION Message - NSIM */
1327 /* Usage Identifier Oct 1 -
1328 * coding of the Usage Identifier, as described in section 49.
1329 * The use of NSIMs is described in greater detail in SECTION 49.
1330 * BIT 8 7 6 5 4 3 2 1
1331 * ext | Manufacturer code | subcode
1333 octet
= tvb_get_guint8(tvb
,offset
);
1334 proto_tree_add_item(tree
, hf_dpnss_ext_bit
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1335 proto_tree_add_item(tree
, hf_dpnss_man_code
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1336 proto_tree_add_item(tree
, hf_dpnss_subcode
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1338 if ((octet
&0x80)==0x80) {
1339 /* Extension bit set */
1342 /* User Information oct 2 + n
1344 proto_tree_add_text(tree
, tvb
, offset
, -1, "User Information");
1347 proto_tree_add_text(tree
, tvb
, offset
, 1, "Dissection of this message not supported yet");
1355 dissect_dpnss_cc_msg(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
)
1357 proto_item
*sel_field_item
, *sic_field_item
, *ind_field_item
;
1358 proto_tree
*sel_field_tree
, *sic_field_tree
, *ind_field_tree
;
1363 tvb_end_offset
= tvb_length(tvb
);
1364 proto_tree_add_item(tree
, hf_dpnss_cc_msg_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1365 octet
= tvb_get_guint8(tvb
,offset
)&0x0f;
1367 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "%s ",
1368 val_to_str(octet
, dpnss_cc_msg_short_type_vals
, "Unknown (%d)" ));
1372 case DPNSS_CC_MSG_ISRM_C
:
1373 /* 2.1.1 INITIAL SERVICE REQUEST Message (COMPLETE) - ISRM (C) */
1375 case DPNSS_CC_MSG_ISRM_I
:
1376 /* 2.1.2 INITIAL SERVICE REQUEST Message (INCOMPLETE) - ISRM(I) */
1377 case DPNSS_CC_MSG_RM_C
:
1378 /* 2.1.3 RECALL Message (COMPLETE) - RM(C) */
1380 case DPNSS_CC_MSG_RM_I
:
1381 /* 2.1.4 RECALL Message (INCOMPLETE) - RM(I)*/
1383 /* Service Indicator Code
1384 * Note: On data calls the SIC may comprise more than one octet.
1385 * The Service Indicator Code is coded in accordance with ANNEX 1.
1387 sic_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1, "Service Indicator Code");
1388 sic_field_tree
= proto_item_add_subtree(sic_field_item
, ett_dpnss_sic_field
);
1389 offset
=dissect_dpnss_sic(tvb
, pinfo
, sic_field_tree
, offset
);
1392 * The Selection Field contains the selection information relating
1393 * to a call set-up or Supplementary Service Request, and is
1394 * structured as shown in Subsection 3.
1396 sel_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1397 "Selection Field: %s",
1398 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1399 sel_field_tree
= proto_item_add_subtree(sel_field_item
, ett_dpnss_sel_field
);
1400 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, sel_field_tree
, offset
);
1402 case DPNSS_CC_MSG_CCM
:
1403 /* 2.1.5 CALL CONNECTED Message - CCM */
1404 if (tvb_end_offset
>offset
) {
1405 /* Indication Field (Optional) */
1406 ind_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1407 "Indication Field: %s",
1408 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1409 ind_field_tree
= proto_item_add_subtree(ind_field_item
, ett_dpnss_ind_field
);
1410 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, ind_field_tree
, offset
);
1413 case DPNSS_CC_MSG_NIM
:
1414 /* 2.1.6 NETWORK INDICATION Message - NIM */
1416 case DPNSS_CC_MSG_NAM
:
1417 /* 2.1.9 NUMBER ACKNOWLEDGE Message - NAM */
1418 /* Indication Field */
1419 ind_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1420 "Indication Field: %s",
1421 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1422 ind_field_tree
= proto_item_add_subtree(ind_field_item
, ett_dpnss_ind_field
);
1423 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, ind_field_tree
, offset
);
1425 case DPNSS_CC_MSG_CRM
:
1426 /* 2.1.7 CLEAR REQUEST Message - CRM */
1427 /* 2.1.8 CLEAR INDICATION Message - CIM */
1428 /* Clearing Cause */
1429 proto_tree_add_item(tree
, hf_dpnss_clearing_cause
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1431 /* Indication Field (Optional) */
1432 if (tvb_end_offset
>offset
) {
1433 ind_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1434 "Indication Field: %s",
1435 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1436 ind_field_tree
= proto_item_add_subtree(ind_field_item
, ett_dpnss_ind_field
);
1437 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, ind_field_tree
, offset
);
1440 case DPNSS_CC_MSG_RRM
:
1441 /* 2.1.10 RECALL REJECTION Message - RRM */
1442 /* Rejection Cause */
1443 proto_tree_add_item(tree
, hf_dpnss_rejection_cause
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1444 /* Indication Field (Optional) */
1445 if (tvb_end_offset
>offset
) {
1446 ind_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1447 "Indication Field: %s",
1448 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1449 ind_field_tree
= proto_item_add_subtree(ind_field_item
, ett_dpnss_ind_field
);
1450 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, ind_field_tree
, offset
);
1453 case DPNSS_CC_MSG_SSRM_I
:
1454 /* 2.1.11 SUBSEQUENT SERVICE REQUEST Message (INCOMPLETE) - SSRM(I) */
1455 /* Selection Field */
1456 sel_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1457 "Selection Field: %s",
1458 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1459 sel_field_tree
= proto_item_add_subtree(sel_field_item
, ett_dpnss_sel_field
);
1460 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, sel_field_tree
, offset
);
1462 case DPNSS_CC_MSG_SSRM_C
:
1463 /* 2.1.12 SUBSEQUENT SERVICE REQUEST Message (COMPLETE) - SSRM(C) */
1464 /* Selection Field (Optional) */
1465 if (tvb_end_offset
>offset
) {
1466 sel_field_item
= proto_tree_add_text(tree
, tvb
, offset
, -1,
1467 "Selection Field: %s",
1468 tvb_format_text(tvb
,offset
,tvb_length_remaining(tvb
, offset
)));
1469 sel_field_tree
= proto_item_add_subtree(sel_field_item
, ett_dpnss_sel_field
);
1470 offset
= dissect_dpnss_sup_info_str(tvb
, pinfo
, sel_field_tree
, offset
);
1473 case DPNSS_CC_MSG_CS
:
1474 case DPNSS_CC_MSG_CA
:
1477 proto_tree_add_text(tree
, tvb
, offset
, 1, "Unknown or Dissection of this message not supported yet");
1483 /* Code to actually dissect the packets */
1485 dissect_dpnss(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
)
1489 proto_tree
*dpnss_tree
;
1492 /* Make entries in Protocol column and Info column on summary display */
1493 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "DPNSS");
1495 item
= proto_tree_add_item(tree
, proto_dpnss
, tvb
, 0, -1, ENC_NA
);
1496 dpnss_tree
= proto_item_add_subtree(item
, ett_dpnss
);
1497 proto_tree_add_item(dpnss_tree
, hf_dpnss_msg_grp_id
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1498 octet
= tvb_get_guint8(tvb
,offset
)>>4;
1500 case DPNNS_MESSAGE_GROUP_CC
:
1501 /* Call Control Message Group */
1502 dissect_dpnss_cc_msg(tvb
, pinfo
, dpnss_tree
);
1504 case DPNNS_MESSAGE_GROUP_E2E
:
1505 /* End-to-End Message Group */
1506 dissect_dpnss_e2e_msg(tvb
, pinfo
, dpnss_tree
);
1508 case DPNNS_MESSAGE_GROUP_LbL
:
1509 /* Link-by-Link Message Group */
1510 dissect_dpnss_LbL_msg(tvb
, pinfo
, dpnss_tree
);
1513 proto_tree_add_text(tree
, tvb
, offset
, 1, "Unknown Message Group");
1519 proto_register_dpnss(void)
1521 /* Setup list of header fields See Section 1.6.1 for details*/
1522 static hf_register_info hf
[] = {
1523 { &hf_dpnss_msg_grp_id
,
1524 { "Message Group Identifier", "dpnss.msg_grp_id",
1525 FT_UINT8
, BASE_DEC
, VALS(dpnss_msg_grp_id_vals
), 0xf0,
1528 { &hf_dpnss_cc_msg_type
,
1529 { "Call Control Message Type", "dpnss.cc_msg_type",
1530 FT_UINT8
, BASE_DEC
, VALS(dpnss_cc_msg_type_vals
), 0x0f,
1533 { &hf_dpnss_e2e_msg_type
,
1534 { "END-TO-END Message Type", "dpnss.e2e_msg_type",
1535 FT_UINT8
, BASE_DEC
, VALS(dpnss_e2e_msg_type_vals
), 0x0f,
1538 { &hf_dpnss_LbL_msg_type
,
1539 { "LINK-BY-LINK Message Type", "dpnss.lbl_msg_type",
1540 FT_UINT8
, BASE_DEC
, VALS(dpnss_LbL_msg_type_vals
), 0x0f,
1543 { &hf_dpnss_ext_bit
,
1544 { "Extension bit", "dpnss.ext_bit",
1545 FT_BOOLEAN
, 8, TFS(&dpnss_ext_bit_vals
), 0x80,
1548 { &hf_dpnss_ext_bit_notall
,
1549 { "Extension bit", "dpnss.ext_bit_notall",
1550 FT_BOOLEAN
, 8, TFS(&dpnss_ext_bit_no_ext_vals
), 0x80,
1553 { &hf_dpnss_sic_type
,
1554 { "Type of data", "dpnss.sic_type",
1555 FT_UINT8
, BASE_DEC
, VALS(dpnss_sic_type_type_vals
), 0x70,
1558 { &hf_dpnss_sic_details_for_speech
,
1559 { "Details for Speech", "dpnss.sic_details_for_speech",
1560 FT_UINT8
, BASE_DEC
, VALS(dpnss_sic_details_for_speech_vals
), 0x0f,
1563 { &hf_dpnss_sic_details_for_data1
,
1564 { "Data Rates", "dpnss.sic_details_for_data1",
1565 FT_UINT8
, BASE_DEC
, VALS(dpnss_sic_details_for_data_rates1_vals
), 0x0f,
1566 "Type of Data (010) : Data Rates", HFILL
}
1568 { &hf_dpnss_sic_details_for_data2
,
1569 { "Data Rates", "dpnss.sic_details_data2",
1570 FT_UINT8
, BASE_DEC
, VALS(dpnss_sic_details_for_data_rates2_vals
), 0x0f,
1571 "Type of Data (011) : Data Rates", HFILL
}
1573 { &hf_dpnss_dest_addr
,
1574 { "Destination Address", "dpnss.dest_addr",
1575 FT_STRING
, BASE_NONE
, NULL
, 0x0,
1578 { &hf_dpnss_sic_oct2_data_type
,
1579 { "Data Type", "dpnss.sic_oct2_data_type",
1580 FT_UINT8
, BASE_DEC
, VALS(dpnss_sic_oct2_data_type_vals
), 0x03,
1583 { &hf_dpnss_sic_oct2_duplex
,
1584 { "Data Type", "dpnss.sic_oct2_duplex",
1585 FT_BOOLEAN
, 8, TFS(&dpnss_duplex_vals
), 0x08,
1588 { &hf_dpnss_sic_oct2_net_ind_clk
,
1589 { "Network Independent Clock", "dpnss.sic_oct2_net_ind_clk",
1590 FT_BOOLEAN
, 8, TFS(&dpnss_sic_oct2_net_ind_clk_vals
), 0x40,
1593 { &hf_dpnss_sic_oct2_sync_data_format
,
1594 { "Data Format", "dpnss.sic_oct2_sync_data_format",
1595 FT_BOOLEAN
, 8, TFS(&dpnss_sic_oct2_sync_data_format_vals
), 0x20,
1598 { &hf_dpnss_sic_oct2_sync_byte_timing
,
1599 { "Byte Timing", "dpnss.sic_oct2_sync_byte_timing",
1600 FT_BOOLEAN
, 8, TFS(&dpnss_provided_vals
), 0x10,
1603 { &hf_dpnss_sic_oct2_async_data
,
1604 { "Data Format", "dpnss.sic_oct2_async_data",
1605 FT_UINT8
, BASE_DEC
, VALS(dpnss_sic_oct2_async_data_type_vals
), 0x30,
1608 { &hf_dpnss_sic_oct2_async_flow_ctrl
,
1609 { "Flow Control", "dpnss.sic_oct2_async_flow_ctrl",
1610 FT_BOOLEAN
, 8, TFS(&dpnss_flow_control_vals
), 0x40,
1613 { &hf_dpnss_clearing_cause
,
1614 { "Clearing Cause", "dpnss.clearing_cause",
1615 FT_UINT8
, BASE_DEC
, VALS(dpnss_clearing_cause_code_vals
), 0x0,
1618 { &hf_dpnss_rejection_cause
,
1619 { "Rejection Cause", "dpnss.rejection_cause",
1620 FT_UINT8
, BASE_DEC
, VALS(dpnss_clearing_cause_code_vals
), 0x0,
1623 { &hf_dpnss_man_code
,
1624 { "Manufacturer Code", "dpnss.man_code",
1625 FT_UINT8
, BASE_DEC
, VALS(dpnss_man_code_vals
), 0x3c,
1628 { &hf_dpnss_subcode
,
1629 { "Subcode", "dpnss.subcode",
1630 FT_UINT8
, BASE_DEC
, NULL
, 0x03,
1633 { &hf_dpnss_maintenance_action
,
1634 { "Maintenance action", "dpnss.maint_act",
1635 FT_UINT8
, BASE_DEC
, VALS(dpnss_maintenance_actions_vals
), 0x0,
1638 { &hf_dpnss_a_b_party_addr
,
1639 { "A/B party Address", "dpnss.a_b_party_addr",
1640 FT_STRING
, BASE_NONE
, NULL
, 0x0,
1643 { &hf_dpnss_call_idx
,
1644 { "Call Index", "dpnss.call_idx",
1645 FT_STRING
, BASE_NONE
, NULL
, 0x0,
1650 /* Setup protocol subtree array */
1651 static gint
*ett
[] = {
1653 &ett_dpnss_sel_field
,
1654 &ett_dpnss_sic_field
,
1655 &ett_dpnss_ind_field
,
1659 /* Register the protocol name and description */
1660 proto_dpnss
= proto_register_protocol("Digital Private Signalling System No 1","DPNSS", "dpnss");
1661 register_dissector("dpnss", dissect_dpnss
, proto_dpnss
);
1663 /* Required function calls to register the header fields and subtrees used */
1664 proto_register_field_array(proto_dpnss
, hf
, array_length(hf
));
1665 proto_register_subtree_array(ett
, array_length(ett
));