aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2021-03-02 23:08:43 +0100
committerHarald Welte <laforge@osmocom.org>2021-03-04 13:35:14 +0100
commit7d0daac1ce16c4f9e1d77496cbcd729dece119c7 (patch)
tree41dec3f4841c8554878c965a1c710eb61e590b97
parenta39b2592a0aeb80c5ff7d4d895c1632892c31c9b (diff)
gprs_ns2: Pass peer/remote sockaddr argument to ns2_create_vc()
This is a preparation towards auto-creating SNS NS-VCs in SGSN role Related: OS#3373 Change-Id: Idf92712079cd9b7e4ff2cf8df314b372d63e6e52
-rw-r--r--src/gb/gprs_ns2.c2
-rw-r--r--src/gb/gprs_ns2_frgre.c2
-rw-r--r--src/gb/gprs_ns2_internal.h1
-rw-r--r--src/gb/gprs_ns2_udp.c2
4 files changed, 5 insertions, 2 deletions
diff --git a/src/gb/gprs_ns2.c b/src/gb/gprs_ns2.c
index c56b0b51..e19ae780 100644
--- a/src/gb/gprs_ns2.c
+++ b/src/gb/gprs_ns2.c
@@ -868,12 +868,14 @@ static inline int ns2_tlv_parse(struct tlv_parsed *dec,
/*! Create a new NS-VC based on a [received] message. Depending on the bind it might create a NSE.
* \param[in] bind the bind through which msg was received
* \param[in] msg the actual received message
+ * \param[in] remote address of remote peer sending message
* \param[in] logname A name to describe the VC. E.g. ip address pair
* \param[out] reject A message filled to be sent back. Only used in failure cases.
* \param[out] success A pointer which will be set to the new VC on success
* \return enum value indicating the status, e.g. GPRS_NS2_CS_CREATED */
enum ns2_cs ns2_create_vc(struct gprs_ns2_vc_bind *bind,
struct msgb *msg,
+ const struct osmo_sockaddr *remote,
const char *logname,
struct msgb **reject,
struct gprs_ns2_vc **success)
diff --git a/src/gb/gprs_ns2_frgre.c b/src/gb/gprs_ns2_frgre.c
index 62d87a41..76c0b926 100644
--- a/src/gb/gprs_ns2_frgre.c
+++ b/src/gb/gprs_ns2_frgre.c
@@ -447,7 +447,7 @@ static int handle_nsfrgre_read(struct osmo_fd *bfd)
rc = ns2_find_vc_by_dlci(bind, dlci, &nsvc);
if (rc) {
/* VC not found */
- rc = ns2_create_vc(bind, msg, "newconnection", &reject, &nsvc);
+ rc = ns2_create_vc(bind, msg, &saddr, "newconnection", &reject, &nsvc);
switch (rc) {
case NS2_CS_FOUND:
break;
diff --git a/src/gb/gprs_ns2_internal.h b/src/gb/gprs_ns2_internal.h
index 7e235be9..80e664c3 100644
--- a/src/gb/gprs_ns2_internal.h
+++ b/src/gb/gprs_ns2_internal.h
@@ -279,6 +279,7 @@ struct gprs_ns2_vc_driver {
enum ns2_cs ns2_create_vc(struct gprs_ns2_vc_bind *bind,
struct msgb *msg,
+ const struct osmo_sockaddr *remote,
const char *logname,
struct msgb **reject,
struct gprs_ns2_vc **success);
diff --git a/src/gb/gprs_ns2_udp.c b/src/gb/gprs_ns2_udp.c
index 30816802..5765c773 100644
--- a/src/gb/gprs_ns2_udp.c
+++ b/src/gb/gprs_ns2_udp.c
@@ -231,7 +231,7 @@ static int handle_nsip_read(struct osmo_fd *bfd)
nsvc = gprs_ns2_nsvc_by_sockaddr_bind(bind, &saddr);
if (!nsvc) {
/* VC not found */
- rc = ns2_create_vc(bind, msg, "newconnection", &reject, &nsvc);
+ rc = ns2_create_vc(bind, msg, &saddr, "newconnection", &reject, &nsvc);
switch (rc) {
case NS2_CS_FOUND:
break;