blob: 96dda7f7df6127fd5a1ccb07213799a1bc773423 [file] [log] [blame]
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +08001/* test data */
2
3/* BSC -> MSC, CR */
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +08004static const uint8_t bsc_cr[] = {
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +080050x00, 0x2e, 0xfd,
60x01, 0x00, 0x00, 0x15, 0x02, 0x02, 0x04, 0x02,
70x42, 0xfe, 0x0f, 0x21, 0x00, 0x1f, 0x57, 0x05,
80x08, 0x00, 0x72, 0xf4, 0x80, 0x20, 0x1c, 0xc3,
90x51, 0x17, 0x12, 0x05, 0x08, 0x20, 0x72, 0xf4,
100x90, 0x20, 0x1d, 0x50, 0x08, 0x29, 0x47, 0x80,
110x00, 0x00, 0x00, 0x00, 0x80, 0x00 };
12
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080013static const uint8_t bsc_cr_patched[] = {
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +0800140x00, 0x2e, 0xfd,
150x01, 0x00, 0x00, 0x05, 0x02, 0x02, 0x04, 0x02,
160x42, 0xfe, 0x0f, 0x21, 0x00, 0x1f, 0x57, 0x05,
170x08, 0x00, 0x72, 0xf4, 0x80, 0x20, 0x1c, 0xc3,
180x51, 0x17, 0x12, 0x05, 0x08, 0x20, 0x72, 0xf4,
190x90, 0x20, 0x1d, 0x50, 0x08, 0x29, 0x47, 0x80,
200x00, 0x00, 0x00, 0x00, 0x80, 0x00 };
21
22/* CC, MSC -> BSC */
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080023static const uint8_t msc_cc[] = {
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +0800240x00, 0x0a, 0xfd,
250x02, 0x00, 0x00, 0x05, 0x01, 0x1f, 0xe4, 0x02,
260x01, 0x00 };
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080027static const uint8_t msc_cc_patched[] = {
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +0800280x00, 0x0a, 0xfd,
290x02, 0x00, 0x00, 0x15, 0x01, 0x1f, 0xe4, 0x02,
300x01, 0x00 };
31
32/* Classmark, BSC -> MSC */
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080033static const uint8_t bsc_dtap[] = {
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +0800340x00, 0x17, 0xfd,
350x06, 0x01, 0x1f, 0xe4, 0x00, 0x01, 0x10, 0x00,
360x0e, 0x54, 0x12, 0x03, 0x50, 0x18, 0x93, 0x13,
370x06, 0x60, 0x14, 0x45, 0x00, 0x81, 0x00 };
38
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080039static const uint8_t bsc_dtap_patched[] = {
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +0800400x00, 0x17, 0xfd,
410x06, 0x01, 0x1f, 0xe4, 0x00, 0x01, 0x10, 0x00,
420x0e, 0x54, 0x12, 0x03, 0x50, 0x18, 0x93, 0x13,
430x06, 0x60, 0x14, 0x45, 0x00, 0x81, 0x00 };
44
45/* Clear command, MSC -> BSC */
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080046static const uint8_t msc_dtap[] = {
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +0800470x00, 0x0d, 0xfd,
480x06, 0x00, 0x00, 0x05, 0x00, 0x01, 0x06, 0x00,
490x04, 0x20, 0x04, 0x01, 0x09 };
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080050static const uint8_t msc_dtap_patched[] = {
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +0800510x00, 0x0d, 0xfd,
520x06, 0x00, 0x00, 0x15, 0x00, 0x01, 0x06, 0x00,
530x04, 0x20, 0x04, 0x01, 0x09 };
54
55/*RLSD, MSC -> BSC */
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080056static const uint8_t msc_rlsd[] = {
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +0800570x00, 0x0a, 0xfd,
580x04, 0x00, 0x00, 0x05, 0x01, 0x1f, 0xe4, 0x00,
590x01, 0x00 };
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080060static const uint8_t msc_rlsd_patched[] = {
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +0800610x00, 0x0a, 0xfd,
620x04, 0x00, 0x00, 0x15, 0x01, 0x1f, 0xe4, 0x00,
630x01, 0x00 };
64
65/* RLC, BSC -> MSC */
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080066static const uint8_t bsc_rlc[] = {
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +0800670x00, 0x07, 0xfd,
680x05, 0x01, 0x1f, 0xe4, 0x00, 0x00, 0x15 };
69
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080070static const uint8_t bsc_rlc_patched[] = {
Holger Hans Peter Freyther38f7c752010-06-15 18:48:36 +0800710x00, 0x07, 0xfd,
720x05, 0x01, 0x1f, 0xe4, 0x00, 0x00, 0x05 };
Holger Hans Peter Freyther04fd9922010-03-30 06:51:53 +020073
74
75/* a paging command */
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080076static const uint8_t paging_by_lac_cmd[] = {
Holger Hans Peter Freyther04fd9922010-03-30 06:51:53 +0200770x00, 0x22, 0xfd, 0x09,
780x00, 0x03, 0x07, 0x0b, 0x04, 0x43, 0x02, 0x00,
790xfe, 0x04, 0x43, 0x5c, 0x00, 0xfe, 0x12, 0x00,
800x10, 0x52, 0x08, 0x08, 0x29, 0x47, 0x10, 0x02,
810x01, 0x50, 0x02, 0x30, 0x1a, 0x03, 0x05, 0x20,
820x15 };
Holger Hans Peter Freyther465313e2010-06-15 18:49:53 +080083
84/* an assignment command */
Holger Hans Peter Freytherdbd16fe2010-07-23 19:08:55 +080085static const uint8_t ass_cmd[] = {
Holger Hans Peter Freyther465313e2010-06-15 18:49:53 +0800860x00, 0x12, 0xfd, 0x06,
870x00, 0x00, 0x49, 0x00, 0x01, 0x0b, 0x00, 0x09,
880x01, 0x0b, 0x03, 0x01, 0x0a, 0x11, 0x01, 0x00,
Holger Hans Peter Freythercd702372010-09-20 01:21:51 +0800890x01 };
Holger Hans Peter Freyther76c83542010-04-01 06:48:52 +020090
Holger Hans Peter Freyther32685402010-09-15 05:20:40 +080091/* identity response */
92static const uint8_t id_resp[] = {
930x00, 0x15, 0xfd, 0x06, 0x01, 0x1c, 0xdc,
940x00, 0x01, 0x0e, 0x01, 0x00, 0x0b, 0x05, 0x59,
950x08, 0x29, 0x40, 0x21, 0x03, 0x07, 0x48, 0x66,
960x31
97};
98
Holger Hans Peter Freyther9c205712011-05-27 17:14:15 +020099/* sms code msg */
100static const uint8_t smsc_rewrite[] = {
1010x00, 0x30, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00,
1020x01, 0x29, 0x01, 0x03, 0x26, 0x09, 0x01, 0x23,
1030x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08,
Holger Hans Peter Freyther68368dd2012-01-10 22:39:07 +01001040x00, 0x10, 0x50, 0x17, 0x21, 0x0c, 0x0f, 0x81,
Holger Hans Peter Freyther9c205712011-05-27 17:14:15 +02001050x00, 0x94, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5,
1060x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca,
1070xbf, 0xeb, 0x20
108};
109
110static const uint8_t smsc_rewrite_patched[] = {
1110x00, 0x31, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00,
Holger Hans Peter Freyther951f34b2012-01-10 22:29:35 +01001120x01, 0x2a, 0x01, 0x03, 0x27, 0x09, 0x01, 0x24,
Holger Hans Peter Freyther9c205712011-05-27 17:14:15 +02001130x00, 0x0c, 0x00, 0x08, 0x91, 0x66, 0x66, 0x66,
1140x66, 0x66, 0x66, 0xf7, 0x17, 0x01, 0x0c, 0x0f,
1150x81, 0x00, 0x94, 0x51, 0x87, 0x86, 0x78, 0x46,
1160xf5, 0x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c,
1170xca, 0xbf, 0xeb, 0x20
118};
119
Holger Hans Peter Freyther68368dd2012-01-10 22:39:07 +0100120static const uint8_t smsc_rewrite_patched_hdr[] = {
1210x00, 0x30, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00,
1220x01, 0x29, 0x01, 0x03, 0x26, 0x09, 0x01, 0x23,
1230x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08,
1240x00, 0x10, 0x50, 0x17, 0x01, 0x0c, 0x0f, 0x81,
1250x00, 0x94, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5,
1260x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca,
1270xbf, 0xeb, 0x20
128};
129
Holger Hans Peter Freyther8e60f622012-01-18 20:00:28 +0100130static const uint8_t smsc_rewrite_num_patched[] = {
Holger Hans Peter Freyther47b144b2012-01-18 20:15:29 +01001310x00, 0x2f, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00,
1320x01, 0x28, 0x01, 0x03, 0x25, 0x09, 0x01, 0x22,
Holger Hans Peter Freyther8e60f622012-01-18 20:00:28 +01001330x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08,
Holger Hans Peter Freyther47b144b2012-01-18 20:15:29 +01001340x00, 0x10, 0x50, 0x16, 0x21, 0x0c, 0x0d, 0x91,
135 0x23, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5,
Holger Hans Peter Freyther8e60f622012-01-18 20:00:28 +01001360x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca,
1370xbf, 0xeb, 0x20
138};
Holger Hans Peter Freyther9c205712011-05-27 17:14:15 +0200139
Holger Hans Peter Freyther09db1a42012-03-26 16:21:42 +0200140static const uint8_t smsc_rewrite_num_patched_tp_srr[] = {
1410x00, 0x2f, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00,
1420x01, 0x28, 0x01, 0x03, 0x25, 0x09, 0x01, 0x22,
1430x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08,
1440x00, 0x10, 0x50, 0x16, 0x01, 0x0c, 0x0d, 0x91,
145 0x23, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5,
1460x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca,
1470xbf, 0xeb, 0x20
148};
149
Holger Hans Peter Freyther76c83542010-04-01 06:48:52 +0200150/*
151 * MGCP messages
152 */
153
154/* nothing to patch */
155static const char crcx[] = "CRCX 23265295 8@mgw MGCP 1.0\r\nC: 394b0439fb\r\nL: p:20, a:AMR, nt:IN\r\nM: recvonly\r\n";
Holger Hans Peter Freytherf7c86c52010-08-30 13:44:32 +0800156static const char crcx_patched[] = "CRCX 23265295 1e@mgw MGCP 1.0\r\nC: 394b0439fb\r\nL: p:20, a:AMR, nt:IN\r\nM: recvonly\r\n";
Holger Hans Peter Freyther76c83542010-04-01 06:48:52 +0200157
158
159/* patch the ip and port */
160static const char crcx_resp[] = "200 23265295\r\nI: 1\r\n\r\nv=0\r\nc=IN IP4 172.16.18.2\r\nm=audio 4002 RTP/AVP 98\r\na=rtpmap:98 AMR/8000\r\n";
161static const char crcx_resp_patched[] = "200 23265295\r\nI: 1\r\n\r\nv=0\r\nc=IN IP4 10.0.0.1\r\nm=audio 999 RTP/AVP 98\r\na=rtpmap:98 AMR/8000\r\n";
162
163/* patch the ip and port */
Holger Hans Peter Freytherf7c86c52010-08-30 13:44:32 +0800164static const char mdcx[] = "MDCX 23330829 8@mgw MGCP 1.0\r\nC: 394b0439fb\r\nI: 1\r\nL: p:20, a:AMR, nt:IN\r\nM: recvonly\r\n\r\nv=0\r\no=- 1049380491 0 IN IP4 172.16.18.2\r\ns=-\r\nc=IN IP4 172.16.18.2\r\nt=0 0\r\nm=audio 4410 RTP/AVP 126\r\na=rtpmap:126 AMR/8000/1\r\na=fmtp:126 mode-set=2;start-mode=0\r\na=ptime:20\r\na=recvonly\r\nm=image 4412 udptl t38\r\na=T38FaxVersion:0\r\na=T38MaxBitRate:14400\r\n";
165static const char mdcx_patched[] = "MDCX 23330829 1e@mgw MGCP 1.0\r\nC: 394b0439fb\r\nI: 1\r\nL: p:20, a:AMR, nt:IN\r\nM: recvonly\r\n\r\nv=0\r\no=- 1049380491 0 IN IP4 172.16.18.2\r\ns=-\r\nc=IN IP4 10.0.0.23\r\nt=0 0\r\nm=audio 6666 RTP/AVP 126\r\na=rtpmap:126 AMR/8000/1\r\na=fmtp:126 mode-set=2;start-mode=0\r\na=ptime:20\r\na=recvonly\r\nm=image 4412 udptl t38\r\na=T38FaxVersion:0\r\na=T38MaxBitRate:14400\r\n";
Holger Hans Peter Freyther76c83542010-04-01 06:48:52 +0200166
167
168static const char mdcx_resp[] = "200 23330829\r\n\r\nv=0\r\nc=IN IP4 172.16.18.2\r\nm=audio 4002 RTP/AVP 98\r\na=rtpmap:98 AMR/8000\r\n";
169static const char mdcx_resp_patched[] = "200 23330829\r\n\r\nv=0\r\nc=IN IP4 10.0.0.23\r\nm=audio 5555 RTP/AVP 98\r\na=rtpmap:98 AMR/8000\r\n";
170
Holger Hans Peter Freyther9e5300a2010-04-04 19:34:44 +0200171/* different line ending */
172static const char mdcx_resp2[] = "200 33330829\n\nv=0\nc=IN IP4 172.16.18.2\nm=audio 4002 RTP/AVP 98\na=rtpmap:98 AMR/8000\n";
173static const char mdcx_resp_patched2[] = "200 33330829\n\nv=0\nc=IN IP4 10.0.0.23\nm=audio 5555 RTP/AVP 98\na=rtpmap:98 AMR/8000\n";
174
Holger Hans Peter Freyther76c83542010-04-01 06:48:52 +0200175struct mgcp_patch_test {
176 const char *orig;
177 const char *patch;
178 const char *ip;
179 const int port;
180};
181
182static const struct mgcp_patch_test mgcp_messages[] = {
183 {
184 .orig = crcx,
185 .patch = crcx_patched,
186 .ip = "0.0.0.0",
187 .port = 2323,
188 },
189 {
190 .orig = crcx_resp,
191 .patch = crcx_resp_patched,
192 .ip = "10.0.0.1",
193 .port = 999,
194 },
195 {
196 .orig = mdcx,
197 .patch = mdcx_patched,
198 .ip = "10.0.0.23",
199 .port = 6666,
200 },
201 {
202 .orig = mdcx_resp,
203 .patch = mdcx_resp_patched,
204 .ip = "10.0.0.23",
205 .port = 5555,
206 },
Holger Hans Peter Freyther9e5300a2010-04-04 19:34:44 +0200207 {
208 .orig = mdcx_resp2,
209 .patch = mdcx_resp_patched2,
210 .ip = "10.0.0.23",
211 .port = 5555,
212 },
Holger Hans Peter Freyther76c83542010-04-01 06:48:52 +0200213};
Holger Hans Peter Freyther73bbf892010-10-21 14:46:57 +0200214
215/* CC Setup messages */
216static const uint8_t cc_setup_national[] = {
217 0x00, 0x20, 0xfd, 0x06, 0x01, 0x12,
218 0x6d, 0x00, 0x01, 0x19, 0x01, 0x00, 0x16, 0x03,
219 0x05, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05,
220 0x81, 0x5e, 0x06, 0x81, 0x10, 0x27, 0x33, 0x63,
221 0x66, 0x15, 0x02, 0x11, 0x01
222};
223
224static const uint8_t cc_setup_national_patched[] = {
Holger Hans Peter Freyther7e0cc502011-02-25 12:43:58 +0100225 0x00, 0x21, 0xfd, 0x06, 0x01, 0x12,
226 0x6d, 0x00, 0x01, 0x1a, 0x01, 0x00, 0x17, 0x03,
Holger Hans Peter Freyther73bbf892010-10-21 14:46:57 +0200227 0x05, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05,
Holger Hans Peter Freyther7e0cc502011-02-25 12:43:58 +0100228 0x81, 0x5e, 0x07, 0x91, 0x94, 0x71, 0x32, 0x33,
229 0x66, 0xf6, 0x15, 0x02, 0x11, 0x01
Holger Hans Peter Freyther73bbf892010-10-21 14:46:57 +0200230};
231
232static const uint8_t cc_setup_international[] = {
233 0x00, 0x22, 0xfd, 0x06, 0x01, 0x13,
234 0xe7, 0x00, 0x01, 0x1b, 0x01, 0x00, 0x18, 0x03,
235 0x45, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05,
236 0x81, 0x5e, 0x08, 0x81, 0x00, 0x94, 0x71, 0x33,
237 0x63, 0x66, 0x03, 0x15, 0x02, 0x11, 0x01
238};