aboutsummaryrefslogtreecommitdiffstats
path: root/include/osmocom/iuh/context_map.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/osmocom/iuh/context_map.h')
-rw-r--r--include/osmocom/iuh/context_map.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/include/osmocom/iuh/context_map.h b/include/osmocom/iuh/context_map.h
new file mode 100644
index 0000000..c1a4495
--- /dev/null
+++ b/include/osmocom/iuh/context_map.h
@@ -0,0 +1,43 @@
+#pragma once
+
+#include <stdint.h>
+#include <osmocom/core/linuxlist.h>
+
+enum hnbgw_context_map_state {
+ MAP_S_NULL,
+ MAP_S_ACTIVE, /* currently active map */
+ MAP_S_RESERVED1, /* just disconnected, still resrved */
+ MAP_S_RESERVED2, /* still reserved */
+};
+
+struct hnb_context;
+struct hnbgw_cnlink;
+
+struct hnbgw_context_map {
+ /* entry in the per-CN list of mappings */
+ struct llist_head cn_list;
+ /* entry in the per-HNB list of mappings */
+ struct llist_head hnb_list;
+ /* pointer to HNB */
+ struct hnb_context *hnb_ctx;
+ /* pointer to CN */
+ struct hnbgw_cnlink *cn_link;
+ /* RUA contxt ID */
+ uint32_t rua_ctx_id;
+ /* SCCP User SAP connection ID */
+ uint32_t scu_conn_id;
+
+ enum hnbgw_context_map_state state;
+};
+
+
+struct hnbgw_context_map *
+context_map_alloc_by_hnb(struct hnb_context *hnb, uint32_t rua_ctx_id,
+ struct hnbgw_cnlink *cn_if_new);
+
+struct hnbgw_context_map *
+context_map_by_cn(struct hnbgw_cnlink *cn, uint32_t scu_conn_id);
+
+void context_map_deactivate(struct hnbgw_context_map *map);
+
+int context_map_init(struct hnb_gw *gw);