aboutsummaryrefslogtreecommitdiffstats
path: root/src/gb
diff options
context:
space:
mode:
authorAlexander Couzens <lynxis@fe80.eu>2020-12-06 03:16:11 +0100
committerlynxis lazus <lynxis@fe80.eu>2020-12-15 11:46:45 +0000
commit4755879fbee0a0af989d1b45d0eed685b664fcdb (patch)
tree3d2e79b40e7e8bd29dc4c613235a03b17e720afb /src/gb
parentebcbd726ee562e186fdd8d95abb7cfe706678fe0 (diff)
gprs_ns2: add gprs_ns2_free_nsvcs() to free all NS-VC of a NSE
Diffstat (limited to 'src/gb')
-rw-r--r--src/gb/gprs_ns2.c22
-rw-r--r--src/gb/libosmogb.map1
2 files changed, 17 insertions, 6 deletions
diff --git a/src/gb/gprs_ns2.c b/src/gb/gprs_ns2.c
index bd69acf6..21c69cbd 100644
--- a/src/gb/gprs_ns2.c
+++ b/src/gb/gprs_ns2.c
@@ -562,6 +562,21 @@ void gprs_ns2_free_nsvc(struct gprs_ns2_vc *nsvc)
talloc_free(nsvc);
}
+/*! Destroy/release all NS-VC of given NSE
+ * \param[in] nse NSE
+ */
+void gprs_ns2_free_nsvcs(struct gprs_ns2_nse *nse)
+{
+ struct gprs_ns2_vc *nsvc, *tmp;
+
+ if (!nse)
+ return;
+
+ llist_for_each_entry_safe(nsvc, tmp, &nse->nsvc, list) {
+ gprs_ns2_free_nsvc(nsvc);
+ }
+}
+
/*! Allocate a message buffer for use with the NS2 stack. */
struct msgb *gprs_ns2_msgb_alloc(void)
{
@@ -722,15 +737,10 @@ uint16_t gprs_ns2_nse_nsei(struct gprs_ns2_nse *nse)
* \param[in] nse NS Entity to destroy */
void gprs_ns2_free_nse(struct gprs_ns2_nse *nse)
{
- struct gprs_ns2_vc *nsvc, *tmp;
-
if (!nse)
return;
- llist_for_each_entry_safe(nsvc, tmp, &nse->nsvc, list) {
- gprs_ns2_free_nsvc(nsvc);
- }
-
+ gprs_ns2_free_nsvcs(nse);
ns2_prim_status_ind(nse, NULL, 0, NS_AFF_CAUSE_FAILURE);
llist_del(&nse->list);
diff --git a/src/gb/libosmogb.map b/src/gb/libosmogb.map
index 7cc1cc80..d4114dfa 100644
--- a/src/gb/libosmogb.map
+++ b/src/gb/libosmogb.map
@@ -120,6 +120,7 @@ gprs_ns2_free_binds;
gprs_ns2_free_nse;
gprs_ns2_free_nses;
gprs_ns2_free_nsvc;
+gprs_ns2_free_nsvcs;
gprs_ns2_frgre_bind;
gprs_ns2_fr_bind;
gprs_ns2_fr_bind_netif;