aboutsummaryrefslogtreecommitdiffstats
path: root/src/tests/hnb-test.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/hnb-test.h')
-rw-r--r--src/tests/hnb-test.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/tests/hnb-test.h b/src/tests/hnb-test.h
new file mode 100644
index 0000000..6a8491e
--- /dev/null
+++ b/src/tests/hnb-test.h
@@ -0,0 +1,64 @@
+#pragma once
+
+#include <osmocom/core/select.h>
+#include <osmocom/core/linuxlist.h>
+#include <osmocom/core/write_queue.h>
+
+#define DEBUG
+#include <osmocom/core/logging.h>
+
+#define msgb_ppid(msg) (msg)->cb[0]
+
+enum {
+ DMAIN,
+};
+
+
+/* 25.467 Section 7.1 */
+#define IUH_DEFAULT_SCTP_PORT 29169
+#define RNA_DEFAULT_SCTP_PORT 25471
+
+#define IUH_PPI_RUA 19
+#define IUH_PPI_HNBAP 20
+#define IUH_PPI_SABP 31
+#define IUH_PPI_RNA 42
+#define IUH_PPI_PUA 55
+
+#define IUH_MSGB_SIZE 2048
+
+struct umts_cell_id {
+ uint16_t mcc; /*!< Mobile Country Code */
+ uint16_t mnc; /*!< Mobile Network Code */
+ uint16_t lac; /*!< Locaton Area Code */
+ uint16_t rac; /*!< Routing Area Code */
+ uint16_t sac; /*!< Service Area Code */
+ uint32_t cid; /*!< Cell ID */
+};
+
+struct ue_context {
+ /*! Entry in the HNB-global list of UE */
+ struct llist_head list;
+ /*! Unique Context ID for this UE */
+ uint32_t context_id;
+ char imsi[16+1];
+};
+
+struct hnb_test {
+ uint16_t gw_port;
+ /*! SCTP listen socket for incoming connections */
+ struct osmo_fd conn_fd;
+
+ /*! SCTP socket + write queue for Iuh to this specific HNB */
+ struct osmo_wqueue wqueue;
+ /*! copied from HNB-Identity-Info IE */
+ char identity_info[256];
+ /*! copied from Cell Identity IE */
+ struct umts_cell_id id;
+
+ /*! SCTP stream ID for HNBAP */
+ uint16_t hnbap_stream;
+ /*! SCTP stream ID for RUA */
+ uint16_t rua_stream;
+};
+
+extern struct hnb_test g_hnb_test;