aboutsummaryrefslogtreecommitdiffstats
path: root/tests/emu/test_replay_gprs_attach.cpp
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-07-28 21:14:51 +0200
committerIvan Kluchnikov <kluchnikovi@gmail.com>2013-09-04 21:28:53 +0400
commit741481d3e007f6cc38b3e8d090a49be1caf99b12 (patch)
treeb57d66b322572085b217b405e9807ec7d2914e63 /tests/emu/test_replay_gprs_attach.cpp
parent4ea940787e5ce4085f248300eaa522fa7a26f909 (diff)
emu: Send a static GPRS ATTACH request and wait for the reply.
This will send a static message. It will trigger the GMM code on the SGSN and might ask us for the IMEI/IMSI or send us an accept. As we are not replying at all the SGSN needs to send new requests and we can observe if the sequence number is increasing like it should.
Diffstat (limited to 'tests/emu/test_replay_gprs_attach.cpp')
-rw-r--r--tests/emu/test_replay_gprs_attach.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/emu/test_replay_gprs_attach.cpp b/tests/emu/test_replay_gprs_attach.cpp
new file mode 100644
index 00000000..500b16e1
--- /dev/null
+++ b/tests/emu/test_replay_gprs_attach.cpp
@@ -0,0 +1,56 @@
+/* (C) 2013 by Holger Hans Peter Freyther
+ *
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+extern "C" {
+#include <osmocom/core/msgb.h>
+}
+
+#include <gprs_bssgp_pcu.h>
+
+#include <stdint.h>
+#include <string.h>
+
+static const uint8_t gprs_attach_llc[] = {
+ /* LLC-PDU IE */
+ 0x0e, 0x00, 0x2e,
+
+ 0x01, 0xc0, 0x01, 0x08, 0x01, 0x02, 0xf5, 0x40,
+ 0x71, 0x08, 0x00, 0x05, 0xf4, 0x2d, 0xf1, 0x18,
+ 0x20, 0x62, 0xf2, 0x10, 0x09, 0x67, 0x00, 0x13,
+ 0x16, 0x73, 0x43, 0x2a, 0x80, 0x42, 0x00, 0x42,
+ 0x88, 0x0b, 0x04, 0x20, 0x04, 0x2e, 0x82, 0x30,
+ 0x42, 0x00, 0x40, 0xaa, 0xf3, 0x18
+};
+
+struct msgb *create_msg(const uint8_t *data, size_t len)
+{
+ struct msgb *msg = msgb_alloc_headroom(4096, 128, "create msg");
+ msg->l3h = msgb_put(msg, len);
+ memcpy(msg->l3h, data, len);
+ return msg;
+}
+
+void test_replay_gprs_attach(struct gprs_bssgp_pcu *pcu)
+{
+ uint32_t tlli = 0xadf11820;
+ const uint8_t qos_profile[] = { 0x0, 0x0, 0x04 };
+
+ struct msgb *msg = create_msg(gprs_attach_llc, ARRAY_SIZE(gprs_attach_llc));
+ bssgp_tx_ul_ud(pcu->bctx, tlli, qos_profile, msg);
+}