72 lines
2.5 KiB
C
72 lines
2.5 KiB
C
/* Manage identity of neighboring BSS cells for inter-BSC handover */
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
|
|
#include <osmocom/core/linuxlist.h>
|
|
#include <osmocom/ctrl/control_cmd.h>
|
|
|
|
struct vty;
|
|
struct gsm_network;
|
|
struct gsm_bts;
|
|
struct neighbor_ident_list;
|
|
struct gsm0808_cell_id_list2;
|
|
|
|
#define NEIGHBOR_IDENT_KEY_ANY_BTS -1
|
|
|
|
#define BSIC_ANY 0xff
|
|
|
|
struct neighbor_ident_key {
|
|
int from_bts; /*< BTS nr 0..255 or NEIGHBOR_IDENT_KEY_ANY_BTS */
|
|
uint16_t arfcn;
|
|
uint8_t bsic;
|
|
};
|
|
|
|
const char *neighbor_ident_key_name(const struct neighbor_ident_key *ni_key);
|
|
|
|
struct neighbor_ident_list *neighbor_ident_init(void *talloc_ctx);
|
|
void neighbor_ident_free(struct neighbor_ident_list *nil);
|
|
|
|
bool neighbor_ident_key_match(const struct neighbor_ident_key *entry,
|
|
const struct neighbor_ident_key *search_for,
|
|
bool exact_match);
|
|
|
|
int neighbor_ident_add(struct neighbor_ident_list *nil, const struct neighbor_ident_key *key,
|
|
const struct gsm0808_cell_id_list2 *val);
|
|
const struct gsm0808_cell_id_list2 *neighbor_ident_get(const struct neighbor_ident_list *nil,
|
|
const struct neighbor_ident_key *key);
|
|
bool neighbor_ident_del(struct neighbor_ident_list *nil, const struct neighbor_ident_key *key);
|
|
void neighbor_ident_clear(struct neighbor_ident_list *nil);
|
|
|
|
void neighbor_ident_iter(const struct neighbor_ident_list *nil,
|
|
bool (* iter_cb )(const struct neighbor_ident_key *key,
|
|
const struct gsm0808_cell_id_list2 *val,
|
|
void *cb_data),
|
|
void *cb_data);
|
|
|
|
void neighbor_ident_vty_init(struct gsm_network *net, struct neighbor_ident_list *nil);
|
|
void neighbor_ident_vty_write_bts(struct vty *vty, const char *indent, struct gsm_bts *bts);
|
|
void neighbor_ident_vty_write_network(struct vty *vty, const char *indent);
|
|
|
|
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" \
|
|
"BSIC of neighbor cell\n" "BSIC value\n" \
|
|
"for all BSICs / use any BSIC in this ARFCN\n"
|
|
bool neighbor_ident_vty_parse_key_params(struct vty *vty, const char **argv,
|
|
struct neighbor_ident_key *key);
|
|
bool neighbor_ident_bts_parse_key_params(struct vty *vty, struct gsm_bts *bts, const char **argv,
|
|
struct neighbor_ident_key *key);
|
|
|
|
|
|
struct ctrl_handle *neighbor_controlif_setup(struct gsm_network *net);
|
|
int neighbor_ctrl_cmds_install(struct gsm_network *net);
|
|
|
|
enum neighbor_ctrl_node {
|
|
CTRL_NODE_NEIGH = _LAST_CTRL_NODE,
|
|
_LAST_CTRL_NODE_NEIGHBOR
|
|
};
|