aboutsummaryrefslogtreecommitdiffstats
path: root/include/osmocom/bsc
diff options
context:
space:
mode:
Diffstat (limited to 'include/osmocom/bsc')
-rw-r--r--include/osmocom/bsc/handover.h18
-rw-r--r--include/osmocom/bsc/handover_fsm.h12
-rw-r--r--include/osmocom/bsc/neighbor_ident.h2
3 files changed, 18 insertions, 14 deletions
diff --git a/include/osmocom/bsc/handover.h b/include/osmocom/bsc/handover.h
index 322913da4..b00ee60f8 100644
--- a/include/osmocom/bsc/handover.h
+++ b/include/osmocom/bsc/handover.h
@@ -10,6 +10,15 @@
#include <osmocom/bsc/neighbor_ident.h>
#include <osmocom/bsc/gsm_data.h>
+#define LOG_HO(conn, level, fmt, args...) do { \
+ if (conn->ho.fi) \
+ LOGPFSML(conn->ho.fi, level, "%s: " fmt, \
+ handover_status(conn), ## args); \
+ else \
+ LOGP(DHODEC, level, "%s: " fmt, \
+ handover_status(conn), ## args); \
+ } while(0)
+
struct gsm_network;
struct gsm_lchan;
struct gsm_bts;
@@ -25,6 +34,8 @@ enum handover_result {
HO_RESULT_ERROR,
};
+const char *handover_status(struct gsm_subscriber_connection *conn);
+
extern const struct value_string handover_result_names[];
inline static const char *handover_result_name(enum handover_result val)
{ return get_value_string(handover_result_names, val); }
@@ -70,8 +81,11 @@ enum handover_result bsc_tx_bssmap_ho_complete(struct gsm_subscriber_connection
struct gsm_lchan *lchan);
void bsc_tx_bssmap_ho_failure(struct gsm_subscriber_connection *conn);
-struct gsm_bts *bts_by_neighbor_ident(const struct gsm_network *net,
- const struct neighbor_ident_key *search_for);
+int find_handover_target_cell(struct gsm_bts **local_target_cell_p,
+ const struct gsm0808_cell_id_list2 **remote_target_cell_p,
+ struct gsm_subscriber_connection *conn, const struct neighbor_ident_key *search_for,
+ bool log_errors);
+
struct neighbor_ident_key *bts_ident_key(const struct gsm_bts *bts);
void handover_parse_inter_bsc_mt(struct gsm_subscriber_connection *conn,
diff --git a/include/osmocom/bsc/handover_fsm.h b/include/osmocom/bsc/handover_fsm.h
index 7c2145e84..1628d8fd9 100644
--- a/include/osmocom/bsc/handover_fsm.h
+++ b/include/osmocom/bsc/handover_fsm.h
@@ -4,18 +4,6 @@
#include <osmocom/bsc/debug.h>
#include <osmocom/bsc/handover.h>
-const char *handover_status(struct gsm_subscriber_connection *conn);
-
-/* This macro automatically includes a final \n, if omitted. */
-#define LOG_HO(conn, level, fmt, args...) do { \
- if (conn->ho.fi) \
- LOGPFSML(conn->ho.fi, level, "%s: " fmt, \
- handover_status(conn), ## args); \
- else \
- LOGP(DHODEC, level, "%s: " fmt, \
- handover_status(conn), ## args); \
- } while(0)
-
/* Terminology:
* Intra-Cell: stays within one BTS, this should actually be an Assignment.
* Intra-BSC: stays within one BSC, but moves between BTSes.
diff --git a/include/osmocom/bsc/neighbor_ident.h b/include/osmocom/bsc/neighbor_ident.h
index 17bffbc14..aa3827635 100644
--- a/include/osmocom/bsc/neighbor_ident.h
+++ b/include/osmocom/bsc/neighbor_ident.h
@@ -47,6 +47,8 @@ void neighbor_ident_iter(const struct neighbor_ident_list *nil,
void neighbor_ident_vty_init(struct gsm_network *net, struct neighbor_ident_list *nil);
void neighbor_ident_vty_write(struct vty *vty, const char *indent, struct gsm_bts *bts);
+bool neighbor_ident_bts_entry_exists(uint8_t from_bts);
+
#define NEIGHBOR_IDENT_VTY_KEY_PARAMS "arfcn <0-1023> bsic (<0-63>|any)"
#define NEIGHBOR_IDENT_VTY_KEY_DOC \
"ARFCN of neighbor cell\n" "ARFCN value\n" \