From fccbef0a28d1b529efe0668402b4b19515152405 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Tue, 19 Jan 2021 17:59:19 +0100 Subject: [PATCH] gb_proxy_peer: Add Function to get gbproxy cell by cell id Change-Id: I3403736eed9d6819634c26db0b90393ac6f4416a Related: SYS#5103 --- include/osmocom/sgsn/gb_proxy.h | 1 + src/gb_proxy_peer.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/osmocom/sgsn/gb_proxy.h b/include/osmocom/sgsn/gb_proxy.h index 269b8514..96b2bcc0 100644 --- a/include/osmocom/sgsn/gb_proxy.h +++ b/include/osmocom/sgsn/gb_proxy.h @@ -270,6 +270,7 @@ int gbproxy_cleanup_bvcs(struct gbproxy_nse *nse, uint16_t bvci); struct gbproxy_cell *gbproxy_cell_alloc(struct gbproxy_config *cfg, uint16_t bvci); struct gbproxy_cell *gbproxy_cell_by_bvci(struct gbproxy_config *cfg, uint16_t bvci); +struct gbproxy_cell *gbproxy_cell_by_cellid(struct gbproxy_config *cfg, const struct gprs_ra_id *raid, uint16_t cid); void gbproxy_cell_free(struct gbproxy_cell *cell); bool gbproxy_cell_add_sgsn_bvc(struct gbproxy_cell *cell, struct gbproxy_bvc *bvc); diff --git a/src/gb_proxy_peer.c b/src/gb_proxy_peer.c index e276c85d..8855a447 100644 --- a/src/gb_proxy_peer.c +++ b/src/gb_proxy_peer.c @@ -206,6 +206,19 @@ struct gbproxy_cell *gbproxy_cell_by_bvci_or_new(struct gbproxy_config *cfg, uin return cell; } +struct gbproxy_cell *gbproxy_cell_by_cellid(struct gbproxy_config *cfg, const struct gprs_ra_id *raid, uint16_t cid) +{ + int i; + struct gbproxy_cell *cell; + + hash_for_each(cfg->cells, i, cell, list) { + if (cell->id.cid == cid && gsm48_ra_equal(&cell->id.raid, raid)) { + return cell; + } + } + return NULL; +} + void gbproxy_cell_free(struct gbproxy_cell *cell) { unsigned int i;