blob: 3f1f527c0772b64159710af33ecf983dce562bd0 [file] [log] [blame]
Holger Hans Peter Freytherb63a9f82010-06-15 18:48:36 +08001/* test data */
2
3/* BSC -> MSC, CR */
Holger Hans Peter Freyther0b776352010-07-23 19:08:55 +08004static const uint8_t bsc_cr[] = {
Holger Hans Peter Freytherb63a9f82010-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 Freyther0b776352010-07-23 19:08:55 +080013static const uint8_t bsc_cr_patched[] = {
Holger Hans Peter Freytherb63a9f82010-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 Freyther0b776352010-07-23 19:08:55 +080023static const uint8_t msc_cc[] = {
Holger Hans Peter Freytherb63a9f82010-06-15 18:48:36 +0800240x00, 0x0a, 0xfd,
250x02, 0x00, 0x00, 0x05, 0x01, 0x1f, 0xe4, 0x02,
260x01, 0x00 };
Holger Hans Peter Freyther0b776352010-07-23 19:08:55 +080027static const uint8_t msc_cc_patched[] = {
Holger Hans Peter Freytherb63a9f82010-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 Freyther0b776352010-07-23 19:08:55 +080033static const uint8_t bsc_dtap[] = {
Holger Hans Peter Freytherb63a9f82010-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 Freyther0b776352010-07-23 19:08:55 +080039static const uint8_t bsc_dtap_patched[] = {
Holger Hans Peter Freytherb63a9f82010-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 Freyther0b776352010-07-23 19:08:55 +080046static const uint8_t msc_dtap[] = {
Holger Hans Peter Freytherb63a9f82010-06-15 18:48:36 +0800470x00, 0x0d, 0xfd,
480x06, 0x00, 0x00, 0x05, 0x00, 0x01, 0x06, 0x00,
490x04, 0x20, 0x04, 0x01, 0x09 };
Holger Hans Peter Freyther0b776352010-07-23 19:08:55 +080050static const uint8_t msc_dtap_patched[] = {
Holger Hans Peter Freytherb63a9f82010-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 Freyther0b776352010-07-23 19:08:55 +080056static const uint8_t msc_rlsd[] = {
Holger Hans Peter Freytherb63a9f82010-06-15 18:48:36 +0800570x00, 0x0a, 0xfd,
580x04, 0x00, 0x00, 0x05, 0x01, 0x1f, 0xe4, 0x00,
590x01, 0x00 };
Holger Hans Peter Freyther0b776352010-07-23 19:08:55 +080060static const uint8_t msc_rlsd_patched[] = {
Holger Hans Peter Freytherb63a9f82010-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 Freyther0b776352010-07-23 19:08:55 +080066static const uint8_t bsc_rlc[] = {
Holger Hans Peter Freytherb63a9f82010-06-15 18:48:36 +0800670x00, 0x07, 0xfd,
680x05, 0x01, 0x1f, 0xe4, 0x00, 0x00, 0x15 };
69
Holger Hans Peter Freyther0b776352010-07-23 19:08:55 +080070static const uint8_t bsc_rlc_patched[] = {
Holger Hans Peter Freytherb63a9f82010-06-15 18:48:36 +0800710x00, 0x07, 0xfd,
720x05, 0x01, 0x1f, 0xe4, 0x00, 0x00, 0x05 };
Holger Hans Peter Freytherd5deb332010-03-30 06:51:53 +020073
74
75/* a paging command */
Holger Hans Peter Freyther0b776352010-07-23 19:08:55 +080076static const uint8_t paging_by_lac_cmd[] = {
Holger Hans Peter Freytherd5deb332010-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 Freytherdccb9152010-06-15 18:49:53 +080083
84/* an assignment command */
Holger Hans Peter Freyther0b776352010-07-23 19:08:55 +080085static const uint8_t ass_cmd[] = {
Holger Hans Peter Freytherdccb9152010-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 Freyther4bcb7702010-09-20 01:21:51 +0800890x01 };
Holger Hans Peter Freytheracd64202010-04-01 06:48:52 +020090
Holger Hans Peter Freythera15e2572010-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 Freytherd2404072011-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 Freyther4c2822e2012-01-10 22:39:07 +01001040x00, 0x10, 0x50, 0x17, 0x21, 0x0c, 0x0f, 0x81,
Holger Hans Peter Freytherd2404072011-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 Freythere24452f2012-01-10 22:29:35 +01001120x01, 0x2a, 0x01, 0x03, 0x27, 0x09, 0x01, 0x24,
Holger Hans Peter Freytherd2404072011-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 Freyther4c2822e2012-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 Freyther21e5c612012-01-18 20:00:28 +0100130static const uint8_t smsc_rewrite_num_patched[] = {
Holger Hans Peter Freytherf8c05a12012-01-18 20:15:29 +01001310x00, 0x2f, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00,
1320x01, 0x28, 0x01, 0x03, 0x25, 0x09, 0x01, 0x22,
Holger Hans Peter Freyther21e5c612012-01-18 20:00:28 +01001330x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08,
Holger Hans Peter Freytherf8c05a12012-01-18 20:15:29 +01001340x00, 0x10, 0x50, 0x16, 0x21, 0x0c, 0x0d, 0x91,
135 0x23, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5,
Holger Hans Peter Freyther21e5c612012-01-18 20:00:28 +01001360x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca,
1370xbf, 0xeb, 0x20
138};
Holger Hans Peter Freytherd2404072011-05-27 17:14:15 +0200139
Holger Hans Peter Freytherd99e4632012-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 Freytheracd64202010-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 Freyther4e6129a2010-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 Freytheracd64202010-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";
Holger Hans Peter Freythera3d65192012-11-06 13:16:26 +0100161static 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\na=fmtp:98 mode-set=2\r\n";
Holger Hans Peter Freytheracd64202010-04-01 06:48:52 +0200162
163/* patch the ip and port */
Holger Hans Peter Freyther4e6129a2010-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 Freytheracd64202010-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";
Holger Hans Peter Freythera3d65192012-11-06 13:16:26 +0100169static 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\na=fmtp:98 mode-set=2\r\n";
Holger Hans Peter Freytheracd64202010-04-01 06:48:52 +0200170
Holger Hans Peter Freyther32370652010-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";
Holger Hans Peter Freythera3d65192012-11-06 13:16:26 +0100173static 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\na=fmtp:98 mode-set=2\n";
Holger Hans Peter Freytherf85852b2015-04-23 20:25:17 -0400174static const char mdcx_resp_patched2_noamr[] = "200 33330829\n\nv=0\nc=IN IP4 10.0.0.23\nm=audio 5555 RTP/AVP 98\na=rtpmap:98 AMR/8000\n";
Holger Hans Peter Freyther32370652010-04-04 19:34:44 +0200175
Holger Hans Peter Freytheracd64202010-04-01 06:48:52 +0200176struct mgcp_patch_test {
177 const char *orig;
178 const char *patch;
179 const char *ip;
180 const int port;
Jacob Erlbeckfe9896f2013-11-29 13:43:45 +0100181 const int payload_type;
Holger Hans Peter Freytherf85852b2015-04-23 20:25:17 -0400182 const int ensure_mode_set;
Holger Hans Peter Freytheracd64202010-04-01 06:48:52 +0200183};
184
185static const struct mgcp_patch_test mgcp_messages[] = {
186 {
187 .orig = crcx,
188 .patch = crcx_patched,
189 .ip = "0.0.0.0",
190 .port = 2323,
Holger Hans Peter Freytherf85852b2015-04-23 20:25:17 -0400191 .ensure_mode_set = 1,
Holger Hans Peter Freytheracd64202010-04-01 06:48:52 +0200192 },
193 {
194 .orig = crcx_resp,
195 .patch = crcx_resp_patched,
196 .ip = "10.0.0.1",
197 .port = 999,
Jacob Erlbeckfe9896f2013-11-29 13:43:45 +0100198 .payload_type = 98,
Holger Hans Peter Freytherf85852b2015-04-23 20:25:17 -0400199 .ensure_mode_set = 1,
Holger Hans Peter Freytheracd64202010-04-01 06:48:52 +0200200 },
201 {
202 .orig = mdcx,
203 .patch = mdcx_patched,
204 .ip = "10.0.0.23",
205 .port = 6666,
Jacob Erlbeckfe9896f2013-11-29 13:43:45 +0100206 .payload_type = 126,
Holger Hans Peter Freytherf85852b2015-04-23 20:25:17 -0400207 .ensure_mode_set = 1,
Holger Hans Peter Freytheracd64202010-04-01 06:48:52 +0200208 },
209 {
210 .orig = mdcx_resp,
211 .patch = mdcx_resp_patched,
212 .ip = "10.0.0.23",
213 .port = 5555,
Jacob Erlbeckfe9896f2013-11-29 13:43:45 +0100214 .payload_type = 98,
Holger Hans Peter Freytherf85852b2015-04-23 20:25:17 -0400215 .ensure_mode_set = 1,
Holger Hans Peter Freytheracd64202010-04-01 06:48:52 +0200216 },
Holger Hans Peter Freyther32370652010-04-04 19:34:44 +0200217 {
218 .orig = mdcx_resp2,
219 .patch = mdcx_resp_patched2,
220 .ip = "10.0.0.23",
221 .port = 5555,
Jacob Erlbeckfe9896f2013-11-29 13:43:45 +0100222 .payload_type = 98,
Holger Hans Peter Freytherf85852b2015-04-23 20:25:17 -0400223 .ensure_mode_set = 1,
224 },
225 {
226 .orig = mdcx_resp2,
227 .patch = mdcx_resp_patched2_noamr,
228 .ip = "10.0.0.23",
229 .port = 5555,
230 .payload_type = 98,
231 .ensure_mode_set = 0,
Holger Hans Peter Freyther32370652010-04-04 19:34:44 +0200232 },
Holger Hans Peter Freytheracd64202010-04-01 06:48:52 +0200233};
Holger Hans Peter Freyther0d5fdbb2010-10-21 14:46:57 +0200234
235/* CC Setup messages */
236static const uint8_t cc_setup_national[] = {
237 0x00, 0x20, 0xfd, 0x06, 0x01, 0x12,
238 0x6d, 0x00, 0x01, 0x19, 0x01, 0x00, 0x16, 0x03,
239 0x05, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05,
240 0x81, 0x5e, 0x06, 0x81, 0x10, 0x27, 0x33, 0x63,
241 0x66, 0x15, 0x02, 0x11, 0x01
242};
243
244static const uint8_t cc_setup_national_patched[] = {
Holger Hans Peter Freyther55971c32011-02-25 12:43:58 +0100245 0x00, 0x21, 0xfd, 0x06, 0x01, 0x12,
246 0x6d, 0x00, 0x01, 0x1a, 0x01, 0x00, 0x17, 0x03,
Holger Hans Peter Freyther0d5fdbb2010-10-21 14:46:57 +0200247 0x05, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05,
Holger Hans Peter Freyther55971c32011-02-25 12:43:58 +0100248 0x81, 0x5e, 0x07, 0x91, 0x94, 0x71, 0x32, 0x33,
249 0x66, 0xf6, 0x15, 0x02, 0x11, 0x01
Holger Hans Peter Freyther0d5fdbb2010-10-21 14:46:57 +0200250};
251
Holger Hans Peter Freyther93a09132013-04-02 12:34:11 +0200252/* patch the phone number of cc_setup_national_patched */
253static const uint8_t cc_setup_national_patched_patched[] = {
254 0x00, 0x21, 0xfd, 0x06, 0x01, 0x12,
255 0x6d, 0x00, 0x01, 0x1a, 0x01, 0x00, 0x17, 0x03,
256 0x05, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05,
257 0x81, 0x5e, 0x07, 0x91, 0x63, 0x71, 0x32, 0x33,
258 0x66, 0xf6, 0x15, 0x02, 0x11, 0x01
259};
260
Holger Hans Peter Freyther0d5fdbb2010-10-21 14:46:57 +0200261static const uint8_t cc_setup_international[] = {
262 0x00, 0x22, 0xfd, 0x06, 0x01, 0x13,
263 0xe7, 0x00, 0x01, 0x1b, 0x01, 0x00, 0x18, 0x03,
264 0x45, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05,
265 0x81, 0x5e, 0x08, 0x81, 0x00, 0x94, 0x71, 0x33,
266 0x63, 0x66, 0x03, 0x15, 0x02, 0x11, 0x01
267};
Holger Hans Peter Freyther93a09132013-04-02 12:34:11 +0200268
269static const uint8_t cc_setup_national_again[] = {
270 0x00, 0x22, 0xfd, 0x06, 0x01, 0x12, 0x6d, 0x00,
271 0x01, 0x1b, 0x01, 0x00, 0x18, 0x03, 0x05, 0x04,
272 0x06, 0x60, 0x04, 0x02, 0x00, 0x05, 0x81, 0x5e,
273 0x08, 0x81, 0x63, 0x94, 0x71, 0x32, 0x33, 0x66,
274 0xf6, 0x15, 0x02, 0x11, 0x01
275};