1
2
3 """Cisco Skinny Client Control Protocol."""
4 from __future__ import absolute_import
5
6 from . import dpkt
7
8 KEYPAD_BUTTON = 0x00000003
9 OFF_HOOK = 0x00000006
10 ON_HOOK = 0x00000007
11 OPEN_RECEIVE_CHANNEL_ACK = 0x00000022
12 START_TONE = 0x00000082
13 STOP_TONE = 0x00000083
14 SET_LAMP = 0x00000086
15 SET_SPEAKER_MODE = 0x00000088
16 START_MEDIA_TRANSMIT = 0x0000008A
17 STOP_MEDIA_TRANSMIT = 0x0000008B
18 CALL_INFO = 0x0000008F
19 DEFINE_TIME_DATE = 0x00000094
20 DISPLAY_TEXT = 0x00000099
21 OPEN_RECEIVE_CHANNEL = 0x00000105
22 CLOSE_RECEIVE_CHANNEL = 0x00000106
23 SELECT_SOFTKEYS = 0x00000110
24 CALL_STATE = 0x00000111
25 DISPLAY_PROMPT_STATUS = 0x00000112
26 CLEAR_PROMPT_STATUS = 0x00000113
27 ACTIVATE_CALL_PLANE = 0x00000116
28
29
35
36
38 __byte_order__ = '<'
39 __hdr__ = (
40 ('calling_party_name', '40s', ''),
41 ('calling_party', '24s', ''),
42 ('called_party_name', '40s', ''),
43 ('called_party', '24s', ''),
44 ('line_instance', 'I', 0),
45 ('call_id', 'I', 0),
46 ('call_type', 'I', 0),
47 ('orig_called_party_name', '40s', ''),
48 ('orig_called_party', '24s', '')
49 )
50
51
53 __byte_order__ = '<'
54 __hdr__ = (
55 ('call_state', 'I', 12),
56 ('line_instance', 'I', 1),
57 ('call_id', 'I', 0)
58 )
59
60
67
68
70 __byte_order__ = '<'
71 __hdr__ = (
72 ('conference_id', 'I', 0),
73 ('passthruparty_id', 'I', 0),
74 )
75
76
78 __byte_order__ = '<'
79 __hdr__ = (
80 ('msg_timeout', 'I', 0),
81 ('display_msg', '32s', ''),
82 ('line_instance', 'I', 1),
83 ('call_id', 'I', 0)
84 )
85
86
87 -class DisplayText(dpkt.Packet):
88 __byte_order__ = '<'
89 __hdr__ = (
90 ('display_msg', '36s', ''),
91 )
92
93
99
100
102 __byte_order__ = '<'
103 __hdr__ = (
104 ('conference_id', 'I', 0),
105 ('passthruparty_id', 'I', 0),
106 ('ms_packet', 'I', 0),
107 ('payload_capability', 'I', 4),
108 ('echo_cancel_type', 'I', 4),
109 ('g723_bitrate', 'I', 0),
110 )
111
112
114 __byte_order__ = '<'
115 __hdr__ = (
116 ('channel_status', 'I', 0),
117 ('ip', '4s', ''),
118 ('port', 'I', 0),
119 ('passthruparty_id', 'I', 0),
120 )
121
122
124 __byte_order__ = '<'
125 __hdr__ = (
126 ('line_id', 'I', 1),
127 ('call_id', 'I', 0),
128 ('softkey_set', 'I', 8),
129 ('softkey_map', 'I', 0xffffffff)
130 )
131
132
134 __byte_order__ = '<'
135 __hdr__ = (
136 ('stimulus', 'I', 9),
137 ('stimulus_instance', 'I', 1),
138 ('lamp_mode', 'I', 1),
139 )
140
141
147
148
163
164
170
171
178
179
180 -class SCCP(dpkt.Packet):
181 """Cisco Skinny Client Control Protocol.
182
183 TODO: Longer class information....
184
185 Attributes:
186 __hdr__: Header fields of SCCP.
187 TODO.
188 """
189
190 __byte_order__ = '<'
191 __hdr__ = (
192 ('len', 'I', 0),
193 ('rsvd', 'I', 0),
194 ('msgid', 'I', 0),
195 ('msg', '0s', ''),
196 )
197 _msgsw = {
198 KEYPAD_BUTTON: KeypadButton,
199 OPEN_RECEIVE_CHANNEL_ACK: OpenReceiveChannelAck,
200 START_TONE: StartTone,
201 SET_LAMP: SetLamp,
202 START_MEDIA_TRANSMIT: StartMediaTransmission,
203 STOP_MEDIA_TRANSMIT: StopMediaTransmission,
204 CALL_INFO: CallInfo,
205 DISPLAY_TEXT: DisplayText,
206 OPEN_RECEIVE_CHANNEL: OpenReceiveChannel,
207 CLOSE_RECEIVE_CHANNEL: CloseReceiveChannel,
208 CALL_STATE: CallState,
209 DISPLAY_PROMPT_STATUS: DisplayPromptStatus,
210 CLEAR_PROMPT_STATUS: ClearPromptStatus,
211 ACTIVATE_CALL_PLANE: ActivateCallPlane,
212 }
213
225