GPRS/BSSGP: introduce bssgp_bvc_ctx_free()
So far we had a function to allocate a new bssgp_bvc_ctx, but not
the opposite one. Let's finally introduce it, so it will be used
at least in OsmoPCU.
Please note that the new symbol has 'bssgp_' prefix, not 'btsctx_'.
Change-Id: Ia78979379dbdccd6e4628c16f00d0c06d9212172
diff --git a/TODO-RELEASE b/TODO-RELEASE
index 9af92c1..692bdc1 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -10,3 +10,4 @@
core osmo_tdef_get() change val_if_not_present arg from unsigned long to long to allow passing -1
core struct osmo_tdef fields min_val,max_val added, ABI break (arrays of structs used in programs)
gsm API added osmo_gsm48_rfpowercap2powerclass()
+gb API added bssgp_bvc_ctx_free()
diff --git a/include/osmocom/gprs/gprs_bssgp.h b/include/osmocom/gprs/gprs_bssgp.h
index 400c3e0..0f87333 100644
--- a/include/osmocom/gprs/gprs_bssgp.h
+++ b/include/osmocom/gprs/gprs_bssgp.h
@@ -112,6 +112,8 @@
struct bssgp_bvc_ctx *btsctx_by_raid_cid(const struct gprs_ra_id *raid, uint16_t cid);
/* Find a BTS context based on BVCI+NSEI tuple */
struct bssgp_bvc_ctx *btsctx_by_bvci_nsei(uint16_t bvci, uint16_t nsei);
+/* Free a given BTS context */
+void bssgp_bvc_ctx_free(struct bssgp_bvc_ctx *ctx);
#define BVC_F_BLOCKED 0x0001
diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c
index b695c28..896f1c5 100644
--- a/src/gb/gprs_bssgp.c
+++ b/src/gb/gprs_bssgp.c
@@ -141,6 +141,15 @@
return ctx;
}
+void bssgp_bvc_ctx_free(struct bssgp_bvc_ctx *ctx)
+{
+ if (!ctx)
+ return;
+ rate_ctr_group_free(ctx->ctrg);
+ llist_del(&ctx->list);
+ talloc_free(ctx);
+}
+
/* Chapter 10.4.5: Flow Control BVC ACK */
static int bssgp_tx_fc_bvc_ack(uint16_t nsei, uint8_t tag, uint16_t ns_bvci)
{
diff --git a/src/gb/libosmogb.map b/src/gb/libosmogb.map
index 5e675a6..ad139c1 100644
--- a/src/gb/libosmogb.map
+++ b/src/gb/libosmogb.map
@@ -80,6 +80,7 @@
gprs_log_filter_fn;
btsctx_alloc;
+bssgp_bvc_ctx_free;
btsctx_by_bvci_nsei;
btsctx_by_raid_cid;