1
2
3 """Cisco Skinny Client Control Protocol."""
4
5 import dpkt
6
7 KEYPAD_BUTTON = 0x00000003
8 OFF_HOOK = 0x00000006
9 ON_HOOK = 0x00000007
10 OPEN_RECEIVE_CHANNEL_ACK= 0x00000022
11 START_TONE = 0x00000082
12 STOP_TONE = 0x00000083
13 SET_LAMP = 0x00000086
14 SET_SPEAKER_MODE = 0x00000088
15 START_MEDIA_TRANSMIT = 0x0000008A
16 STOP_MEDIA_TRANSMIT = 0x0000008B
17 CALL_INFO = 0x0000008F
18 DEFINE_TIME_DATE = 0x00000094
19 DISPLAY_TEXT = 0x00000099
20 OPEN_RECEIVE_CHANNEL = 0x00000105
21 CLOSE_RECEIVE_CHANNEL = 0x00000106
22 SELECT_SOFTKEYS = 0x00000110
23 CALL_STATE = 0x00000111
24 DISPLAY_PROMPT_STATUS = 0x00000112
25 CLEAR_PROMPT_STATUS = 0x00000113
26 ACTIVATE_CALL_PLANE = 0x00000116
27
33
35 __byte_order__ = '<'
36 __hdr__ = (
37 ('calling_party_name', '40s', ''),
38 ('calling_party', '24s', ''),
39 ('called_party_name', '40s', ''),
40 ('called_party', '24s', ''),
41 ('line_instance', 'I', 0),
42 ('call_id', 'I', 0),
43 ('call_type', 'I', 0),
44 ('orig_called_party_name', '40s', ''),
45 ('orig_called_party', '24s', '')
46 )
47
49 __byte_order__ = '<'
50 __hdr__ = (
51 ('call_state', 'I', 12),
52 ('line_instance', 'I', 1),
53 ('call_id', 'I', 0)
54 )
55
62
64 __byte_order__ = '<'
65 __hdr__ = (
66 ('conference_id', 'I', 0),
67 ('passthruparty_id', 'I', 0),
68 )
69
71 __byte_order__ = '<'
72 __hdr__ = (
73 ('msg_timeout', 'I', 0),
74 ('display_msg', '32s', ''),
75 ('line_instance', 'I', 1),
76 ('call_id', 'I', 0)
77 )
78
79 -class DisplayText(dpkt.Packet):
80 __byte_order__ = '<'
81 __hdr__ = (
82 ('display_msg', '36s', ''),
83 )
84
90
92 __byte_order__ = '<'
93 __hdr__ = (
94 ('conference_id', 'I', 0),
95 ('passthruparty_id', 'I', 0),
96 ('ms_packet', 'I', 0),
97 ('payload_capability', 'I', 4),
98 ('echo_cancel_type', 'I', 4),
99 ('g723_bitrate', 'I', 0),
100 )
101
103 __byte_order__ = '<'
104 __hdr__ = (
105 ('channel_status', 'I', 0),
106 ('ip', '4s', ''),
107 ('port', 'I', 0),
108 ('passthruparty_id', 'I', 0),
109 )
110
112 __byte_order__ = '<'
113 __hdr__ = (
114 ('line_id', 'I', 1),
115 ('call_id', 'I', 0),
116 ('softkey_set', 'I', 8),
117 ('softkey_map', 'I', 0xffffffffL)
118 )
119
121 __byte_order__ = '<'
122 __hdr__ = (
123 ('stimulus', 'I', 9),
124 ('stimulus_instance', 'I', 1),
125 ('lamp_mode', 'I', 1),
126 )
127
133
148
154
161
162 -class SCCP(dpkt.Packet):
163 __byte_order__ = '<'
164 __hdr__ = (
165 ('len', 'I', 0),
166 ('rsvd', 'I', 0),
167 ('msgid', 'I', 0),
168 ('msg', '0s', ''),
169 )
170 _msgsw = {
171 KEYPAD_BUTTON:KeypadButton,
172 OPEN_RECEIVE_CHANNEL_ACK:OpenReceiveChannelAck,
173 START_TONE:StartTone,
174 SET_LAMP:SetLamp,
175 START_MEDIA_TRANSMIT:StartMediaTransmission,
176 STOP_MEDIA_TRANSMIT:StopMediaTransmission,
177 CALL_INFO:CallInfo,
178 DISPLAY_TEXT:DisplayText,
179 OPEN_RECEIVE_CHANNEL:OpenReceiveChannel,
180 CLOSE_RECEIVE_CHANNEL:CloseReceiveChannel,
181 CALL_STATE:CallState,
182 DISPLAY_PROMPT_STATUS:DisplayPromptStatus,
183 CLEAR_PROMPT_STATUS:ClearPromptStatus,
184 ACTIVATE_CALL_PLANE:ActivateCallPlane,
185 }
197