aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/gprs/gprs_ns2.h1
-rw-r--r--src/gb/gprs_ns2_sns.c15
-rw-r--r--src/gb/libosmogb.map1
3 files changed, 17 insertions, 0 deletions
diff --git a/include/osmocom/gprs/gprs_ns2.h b/include/osmocom/gprs/gprs_ns2.h
index d332e484..0d08af52 100644
--- a/include/osmocom/gprs/gprs_ns2.h
+++ b/include/osmocom/gprs/gprs_ns2.h
@@ -138,6 +138,7 @@ void gprs_ns2_free_binds(struct gprs_ns2_inst *nsi);
int gprs_ns2_ip_connect_sns(struct gprs_ns2_vc_bind *bind,
const struct osmo_sockaddr *remote,
uint16_t nsei);
+const struct osmo_sockaddr *gprs_ns2_nse_sns_remote(struct gprs_ns2_nse *nse);
const struct osmo_sockaddr *gprs_ns2_ip_vc_remote(struct gprs_ns2_vc *nsvc);
const struct osmo_sockaddr *gprs_ns2_ip_vc_local(const struct gprs_ns2_vc *nsvc);
diff --git a/src/gb/gprs_ns2_sns.c b/src/gb/gprs_ns2_sns.c
index d4de8ae2..1afd4b7c 100644
--- a/src/gb/gprs_ns2_sns.c
+++ b/src/gb/gprs_ns2_sns.c
@@ -194,6 +194,21 @@ static struct gprs_ns2_vc *nsvc_by_ip6_elem(struct gprs_ns2_nse *nse,
return gprs_ns2_nsvc_by_sockaddr_nse(nse, &sa);
}
+/*! Return the initial SNS remote socket address
+ * \param nse NS Entity
+ * \return address of the initial SNS connection; NULL in case of error
+ */
+const struct osmo_sockaddr *gprs_ns2_nse_sns_remote(struct gprs_ns2_nse *nse)
+{
+ struct ns2_sns_state *gss;
+
+ if (!nse->bss_sns_fi)
+ return NULL;
+
+ gss = (struct ns2_sns_state *) nse->bss_sns_fi->priv;
+ return &gss->initial;
+}
+
/*! called when a nsvc is beeing freed */
void ns2_sns_free_nsvc(struct gprs_ns2_vc *nsvc)
{
diff --git a/src/gb/libosmogb.map b/src/gb/libosmogb.map
index f542496d..e6557b7e 100644
--- a/src/gb/libosmogb.map
+++ b/src/gb/libosmogb.map
@@ -102,6 +102,7 @@ gprs_ns2_ll_str_buf;
gprs_ns2_ll_str_c;
gprs_ns2_nse_by_nsei;
gprs_ns2_nse_nsei;
+gprs_ns2_nse_sns_remote;
gprs_ns2_nsvc_by_nsvci;
gprs_ns2_nsvc_by_sockaddr;
gprs_ns2_recv_prim;