Change in osmo-sgsn[master]: Remove local libgsupclient; Use libosmo-gsup-client from osmo-hlr

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Tue Oct 30 18:06:08 UTC 2018


Harald Welte has submitted this change and it was merged. ( https://gerrit.osmocom.org/10284 )

Change subject: Remove local libgsupclient; Use libosmo-gsup-client from osmo-hlr
......................................................................

Remove local libgsupclient; Use libosmo-gsup-client from osmo-hlr

osmo-hlr has recently (as of Change-Id
Iad227bb477d64da30dd6bfbbe1bd0c0a55be9474) a working shared library
implementation of libosmo-gsup-client.

We can remove the local implementation in osmo-sgsn and use the
system-installed shared library instead.

Change-Id: I6f542945403cf2e3ddac419186b09ec0e2d43b69
---
M configure.ac
M contrib/jenkins.sh
M debian/control
M include/osmocom/sgsn/Makefile.am
D include/osmocom/sgsn/gsup_client.h
M include/osmocom/sgsn/sgsn.h
M src/gprs/Makefile.am
M src/gprs/gprs_subscriber.c
D src/gprs/gsup_client.c
M src/gprs/sgsn_vty.c
M tests/sgsn/Makefile.am
M tests/sgsn/sgsn_test.c
12 files changed, 30 insertions(+), 443 deletions(-)

Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved



diff --git a/configure.ac b/configure.ac
index 73b6dce..0e4ff94 100644
--- a/configure.ac
+++ b/configure.ac
@@ -46,6 +46,7 @@
 PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 0.5.0)
 PKG_CHECK_MODULES(LIBOSMOGB, libosmogb >= 0.11.0)
 PKG_CHECK_MODULES(LIBOSMONETIF, libosmo-netif >= 0.2.0)
+PKG_CHECK_MODULES(LIBOSMOGSUPCLIENT, libosmo-gsup-client >= 0.2.1)
 
 # Enable/disable 3G aka IuPS + IuCS support?
 AC_ARG_ENABLE([iu], [AS_HELP_STRING([--enable-iu], [Build 3G support, aka IuPS and IuCS interfaces])],
diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh
index d873ee9..64663d6 100755
--- a/contrib/jenkins.sh
+++ b/contrib/jenkins.sh
@@ -28,6 +28,7 @@
 osmo-build-dep.sh libosmo-abis
 osmo-build-dep.sh libosmo-netif
 osmo-build-dep.sh osmo-ggsn
+osmo-build-dep.sh osmo-hlr
 
 enable_werror=""
 if [ "x$IU" = "x--enable-iu" ]; then
diff --git a/debian/control b/debian/control
index 8e34dbe..9594a08 100644
--- a/debian/control
+++ b/debian/control
@@ -19,7 +19,8 @@
                libosmo-ranap-dev,
                libosmo-sccp-dev,
                libosmo-sigtran-dev,
-               libosmo-netif-dev
+               libosmo-netif-dev,
+               libosmo-gsup-client-dev
 Standards-Version: 3.9.8
 Vcs-Git: git://git.osmocom.org/osmo-sgsn.git
 Vcs-Browser: https://git.osmocom.org/osmo-sgsn
diff --git a/include/osmocom/sgsn/Makefile.am b/include/osmocom/sgsn/Makefile.am
index 3b563c4..cbf7c51 100644
--- a/include/osmocom/sgsn/Makefile.am
+++ b/include/osmocom/sgsn/Makefile.am
@@ -16,7 +16,6 @@
 	gprs_sndcp_xid.h \
 	gprs_subscriber.h \
 	gprs_utils.h \
-	gsup_client.h \
 	gtphub.h \
 	sgsn.h \
 	signal.h \
diff --git a/include/osmocom/sgsn/gsup_client.h b/include/osmocom/sgsn/gsup_client.h
deleted file mode 100644
index 6ba0d15..0000000
--- a/include/osmocom/sgsn/gsup_client.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* GPRS Subscriber Update Protocol client */
-
-/* (C) 2014 by Sysmocom s.f.m.c. GmbH
- * All Rights Reserved
- *
- * Author: Jacob Erlbeck
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-#pragma once
-
-#include <osmocom/core/timer.h>
-
-#include <osmocom/gsm/oap_client.h>
-
-#define GSUP_CLIENT_RECONNECT_INTERVAL 10
-#define GSUP_CLIENT_PING_INTERVAL 20
-
-struct msgb;
-struct ipa_client_conn;
-struct gsup_client;
-
-/* Expects message in msg->l2h */
-typedef int (*gsup_client_read_cb_t)(struct gsup_client *gsupc,
-				     struct msgb *msg);
-
-struct gsup_client {
-	const char *unit_name;
-
-	struct ipa_client_conn *link;
-	gsup_client_read_cb_t read_cb;
-	void *data;
-
-	struct osmo_oap_client_state oap_state;
-
-	struct osmo_timer_list ping_timer;
-	struct osmo_timer_list connect_timer;
-	int is_connected;
-	int got_ipa_pong;
-};
-
-struct gsup_client *gsup_client_create(const char *unit_name,
-				       const char *ip_addr,
-				       unsigned int tcp_port,
-				       gsup_client_read_cb_t read_cb,
-				       struct osmo_oap_client_config *oapc_config);
-
-void gsup_client_destroy(struct gsup_client *gsupc);
-int gsup_client_send(struct gsup_client *gsupc, struct msgb *msg);
-struct msgb *gsup_client_msgb_alloc(void);
-
diff --git a/include/osmocom/sgsn/sgsn.h b/include/osmocom/sgsn/sgsn.h
index 59d0bd7..3a34ff9 100644
--- a/include/osmocom/sgsn/sgsn.h
+++ b/include/osmocom/sgsn/sgsn.h
@@ -7,6 +7,7 @@
 #include <osmocom/gprs/gprs_ns.h>
 #include <osmocom/sgsn/gprs_sgsn.h>
 #include <osmocom/gsm/oap_client.h>
+#include <osmocom/gsupclient/gsup_client.h>
 #include <osmocom/sgsn/common.h>
 
 #include "../../bscconfig.h"
@@ -18,7 +19,6 @@
 #include <ares.h>
 #include <gtp.h>
 
-struct gprs_gsup_client;
 struct hostent;
 
 enum sgsn_auth_policy {
@@ -138,7 +138,7 @@
 	/* GSN instance for libgtp */
 	struct gsn_t *gsn;
 	/* Subscriber */
-	struct gsup_client *gsup_client;
+	struct osmo_gsup_client *gsup_client;
 	/* LLME inactivity timer */
 	struct osmo_timer_list llme_timer;
 
diff --git a/src/gprs/Makefile.am b/src/gprs/Makefile.am
index 0f7c5fa..ba5dfd6 100644
--- a/src/gprs/Makefile.am
+++ b/src/gprs/Makefile.am
@@ -13,6 +13,7 @@
 	$(LIBOSMOCTRL_CFLAGS) \
 	$(LIBOSMOABIS_CFLAGS) \
 	$(LIBOSMOGB_CFLAGS) \
+	$(LIBOSMOGSUPCLIENT_CFLAGS) \
 	$(COVERAGE_CFLAGS) \
 	$(LIBCARES_CFLAGS) \
 	$(LIBGTP_CFLAGS) \
@@ -84,11 +85,11 @@
 	slhc.c \
 	gprs_llc_xid.c \
 	v42bis.c \
-	gsup_client.c \
 	$(NULL)
 osmo_sgsn_LDADD = \
 	$(OSMO_LIBS) \
 	$(LIBOSMOABIS_LIBS) \
+	$(LIBOSMOGSUPCLIENT_LIBS) \
 	$(LIBCARES_LIBS) \
 	$(LIBGTP_LIBS) \
 	-lrt \
diff --git a/src/gprs/gprs_subscriber.c b/src/gprs/gprs_subscriber.c
index 6c4f81f..4ab45c2 100644
--- a/src/gprs/gprs_subscriber.c
+++ b/src/gprs/gprs_subscriber.c
@@ -26,7 +26,7 @@
 #include <osmocom/core/utils.h>
 #include <osmocom/core/logging.h>
 #include <osmocom/sgsn/gprs_subscriber.h>
-#include <osmocom/sgsn/gsup_client.h>
+#include <osmocom/gsupclient/gsup_client.h>
 
 #include <osmocom/sgsn/sgsn.h>
 #include <osmocom/sgsn/gprs_sgsn.h>
@@ -52,7 +52,7 @@
 LLIST_HEAD(_gprs_subscribers);
 struct llist_head * const gprs_subscribers = &_gprs_subscribers;
 
-static int gsup_read_cb(struct gsup_client *gsupc, struct msgb *msg);
+static int gsup_read_cb(struct osmo_gsup_client *gsupc, struct msgb *msg);
 
 /* TODO: Some functions are specific to the SGSN, but this file is more general
  * (it has gprs_* name). Either move these functions elsewhere, split them and
@@ -69,7 +69,8 @@
 
 	addr_str = inet_ntoa(sgi->cfg.gsup_server_addr.sin_addr);
 
-	sgi->gsup_client = gsup_client_create(
+	sgi->gsup_client = osmo_gsup_client_create(
+		sgi,
 		"SGSN",
 		addr_str, sgi->cfg.gsup_server_port,
 		&gsup_read_cb,
@@ -81,7 +82,7 @@
 	return 1;
 }
 
-static int gsup_read_cb(struct gsup_client *gsupc, struct msgb *msg)
+static int gsup_read_cb(struct osmo_gsup_client *gsupc, struct msgb *msg)
 {
 	int rc;
 
@@ -194,7 +195,7 @@
 static int gprs_subscr_tx_gsup_message(struct gprs_subscr *subscr,
 				       struct osmo_gsup_message *gsup_msg)
 {
-	struct msgb *msg = gsup_client_msgb_alloc();
+	struct msgb *msg = osmo_gsup_client_msgb_alloc();
 
 	if (strlen(gsup_msg->imsi) == 0 && subscr)
 		osmo_strlcpy(gsup_msg->imsi, subscr->imsi,
@@ -210,7 +211,7 @@
 		return -ENOTSUP;
 	}
 
-	return gsup_client_send(sgsn->gsup_client, msg);
+	return osmo_gsup_client_send(sgsn->gsup_client, msg);
 }
 
 static int gprs_subscr_tx_gsup_error_reply(struct gprs_subscr *subscr,
diff --git a/src/gprs/gsup_client.c b/src/gprs/gsup_client.c
deleted file mode 100644
index 37bebd9..0000000
--- a/src/gprs/gsup_client.c
+++ /dev/null
@@ -1,355 +0,0 @@
-/* Generic Subscriber Update Protocol client */
-
-/* (C) 2014-2016 by Sysmocom s.f.m.c. GmbH
- * All Rights Reserved
- *
- * Author: Jacob Erlbeck
- * Author: Neels Hofmeyr
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <osmocom/sgsn/gsup_client.h>
-
-#include <osmocom/abis/ipa.h>
-#include <osmocom/gsm/protocol/ipaccess.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/logging.h>
-
-#include <osmocom/sgsn/debug.h>
-
-#include <errno.h>
-#include <string.h>
-
-extern void *tall_sgsn_ctx;
-
-static void start_test_procedure(struct gsup_client *gsupc);
-
-static void gsup_client_send_ping(struct gsup_client *gsupc)
-{
-	struct msgb *msg = gsup_client_msgb_alloc();
-
-	msg->l2h = msgb_put(msg, 1);
-	msg->l2h[0] = IPAC_MSGT_PING;
-	ipa_msg_push_header(msg, IPAC_PROTO_IPACCESS);
-	ipa_client_conn_send(gsupc->link, msg);
-}
-
-static int gsup_client_connect(struct gsup_client *gsupc)
-{
-	int rc;
-
-	if (gsupc->is_connected)
-		return 0;
-
-	if (osmo_timer_pending(&gsupc->connect_timer)) {
-		LOGP(DLGSUP, LOGL_DEBUG,
-		     "GSUP connect: connect timer already running\n");
-		osmo_timer_del(&gsupc->connect_timer);
-	}
-
-	if (osmo_timer_pending(&gsupc->ping_timer)) {
-		LOGP(DLGSUP, LOGL_DEBUG,
-		     "GSUP connect: ping timer already running\n");
-		osmo_timer_del(&gsupc->ping_timer);
-	}
-
-	if (ipa_client_conn_clear_queue(gsupc->link) > 0)
-		LOGP(DLGSUP, LOGL_DEBUG, "GSUP connect: discarded stored messages\n");
-
-	rc = ipa_client_conn_open(gsupc->link);
-
-	if (rc >= 0) {
-		LOGP(DLGSUP, LOGL_NOTICE, "GSUP connecting to %s:%d\n",
-		     gsupc->link->addr, gsupc->link->port);
-		return 0;
-	}
-
-	LOGP(DLGSUP, LOGL_ERROR, "GSUP failed to connect to %s:%d: %s\n",
-	     gsupc->link->addr, gsupc->link->port, strerror(-rc));
-
-	if (rc == -EBADF || rc == -ENOTSOCK || rc == -EAFNOSUPPORT ||
-	    rc == -EINVAL)
-		return rc;
-
-	osmo_timer_schedule(&gsupc->connect_timer,
-			    GSUP_CLIENT_RECONNECT_INTERVAL, 0);
-
-	LOGP(DLGSUP, LOGL_INFO, "Scheduled timer to retry GSUP connect to %s:%d\n",
-	     gsupc->link->addr, gsupc->link->port);
-
-	return 0;
-}
-
-static void connect_timer_cb(void *gsupc_)
-{
-	struct gsup_client *gsupc = gsupc_;
-
-	if (gsupc->is_connected)
-		return;
-
-	gsup_client_connect(gsupc);
-}
-
-static void client_send(struct gsup_client *gsupc, int proto_ext,
-			struct msgb *msg_tx)
-{
-	ipa_prepend_header_ext(msg_tx, proto_ext);
-	ipa_msg_push_header(msg_tx, IPAC_PROTO_OSMO);
-	ipa_client_conn_send(gsupc->link, msg_tx);
-	/* msg_tx is now queued and will be freed. */
-}
-
-static void gsup_client_oap_register(struct gsup_client *gsupc)
-{
-	struct msgb *msg_tx;
-	int rc;
-	rc = osmo_oap_client_register(&gsupc->oap_state, &msg_tx);
-
-	if ((rc < 0) || (!msg_tx)) {
-		LOGP(DLGSUP, LOGL_ERROR, "GSUP OAP set up, but cannot register.\n");
-		return;
-	}
-
-	client_send(gsupc, IPAC_PROTO_EXT_OAP, msg_tx);
-}
-
-static void gsup_client_updown_cb(struct ipa_client_conn *link, int up)
-{
-	struct gsup_client *gsupc = link->data;
-
-	LOGP(DLGSUP, LOGL_INFO, "GSUP link to %s:%d %s\n",
-		     link->addr, link->port, up ? "UP" : "DOWN");
-
-	gsupc->is_connected = up;
-
-	if (up) {
-		start_test_procedure(gsupc);
-
-		if (gsupc->oap_state.state == OSMO_OAP_INITIALIZED)
-			gsup_client_oap_register(gsupc);
-
-		osmo_timer_del(&gsupc->connect_timer);
-	} else {
-		osmo_timer_del(&gsupc->ping_timer);
-
-		osmo_timer_schedule(&gsupc->connect_timer,
-				    GSUP_CLIENT_RECONNECT_INTERVAL, 0);
-	}
-}
-
-static int gsup_client_oap_handle(struct gsup_client *gsupc, struct msgb *msg_rx)
-{
-	int rc;
-	struct msgb *msg_tx;
-
-	/* If the oap_state is disabled, this will reject the messages. */
-	rc = osmo_oap_client_handle(&gsupc->oap_state, msg_rx, &msg_tx);
-	msgb_free(msg_rx);
-	if (rc < 0)
-		return rc;
-
-	if (msg_tx)
-		client_send(gsupc, IPAC_PROTO_EXT_OAP, msg_tx);
-
-	return 0;
-}
-
-static int gsup_client_read_cb(struct ipa_client_conn *link, struct msgb *msg)
-{
-	struct ipaccess_head *hh = (struct ipaccess_head *) msg->data;
-	struct ipaccess_head_ext *he = (struct ipaccess_head_ext *) msgb_l2(msg);
-	struct gsup_client *gsupc = (struct gsup_client *)link->data;
-	int rc;
-	struct ipaccess_unit ipa_dev = {
-		/* see gsup_client_create() on const vs non-const */
-		.unit_name = (char*)gsupc->unit_name,
-	};
-
-	OSMO_ASSERT(ipa_dev.unit_name);
-
-	msg->l2h = &hh->data[0];
-
-	rc = ipaccess_bts_handle_ccm(link, &ipa_dev, msg);
-
-	if (rc < 0) {
-		LOGP(DLGSUP, LOGL_NOTICE,
-		     "GSUP received an invalid IPA/CCM message from %s:%d\n",
-		     link->addr, link->port);
-		/* Link has been closed */
-		gsupc->is_connected = 0;
-		msgb_free(msg);
-		return -1;
-	}
-
-	if (rc == 1) {
-		uint8_t msg_type = *(msg->l2h);
-		/* CCM message */
-		if (msg_type == IPAC_MSGT_PONG) {
-			LOGP(DLGSUP, LOGL_DEBUG, "GSUP receiving PONG\n");
-			gsupc->got_ipa_pong = 1;
-		}
-
-		msgb_free(msg);
-		return 0;
-	}
-
-	if (hh->proto != IPAC_PROTO_OSMO)
-		goto invalid;
-
-	if (!he || msgb_l2len(msg) < sizeof(*he))
-		goto invalid;
-
-	msg->l2h = &he->data[0];
-
-	if (he->proto == IPAC_PROTO_EXT_GSUP) {
-		OSMO_ASSERT(gsupc->read_cb != NULL);
-		gsupc->read_cb(gsupc, msg);
-		/* expecting read_cb() to free msg */
-	} else if (he->proto == IPAC_PROTO_EXT_OAP) {
-		return gsup_client_oap_handle(gsupc, msg);
-		/* gsup_client_oap_handle frees msg */
-	} else
-		goto invalid;
-
-	return 0;
-
-invalid:
-	LOGP(DLGSUP, LOGL_NOTICE,
-	     "GSUP received an invalid IPA message from %s:%d, size = %d\n",
-	     link->addr, link->port, msgb_length(msg));
-
-	msgb_free(msg);
-	return -1;
-}
-
-static void ping_timer_cb(void *gsupc_)
-{
-	struct gsup_client *gsupc = gsupc_;
-
-	LOGP(DLGSUP, LOGL_INFO, "GSUP ping callback (%s, %s PONG)\n",
-	     gsupc->is_connected ? "connected" : "not connected",
-	     gsupc->got_ipa_pong ? "got" : "didn't get");
-
-	if (gsupc->got_ipa_pong) {
-		start_test_procedure(gsupc);
-		return;
-	}
-
-	LOGP(DLGSUP, LOGL_NOTICE, "GSUP ping timed out, reconnecting\n");
-	ipa_client_conn_close(gsupc->link);
-	gsupc->is_connected = 0;
-
-	gsup_client_connect(gsupc);
-}
-
-static void start_test_procedure(struct gsup_client *gsupc)
-{
-	osmo_timer_setup(&gsupc->ping_timer, ping_timer_cb, gsupc);
-
-	gsupc->got_ipa_pong = 0;
-	osmo_timer_schedule(&gsupc->ping_timer, GSUP_CLIENT_PING_INTERVAL, 0);
-	LOGP(DLGSUP, LOGL_DEBUG, "GSUP sending PING\n");
-	gsup_client_send_ping(gsupc);
-}
-
-struct gsup_client *gsup_client_create(const char *unit_name,
-				       const char *ip_addr,
-				       unsigned int tcp_port,
-				       gsup_client_read_cb_t read_cb,
-				       struct osmo_oap_client_config *oapc_config)
-{
-	struct gsup_client *gsupc;
-	int rc;
-
-	gsupc = talloc_zero(tall_sgsn_ctx, struct gsup_client);
-	OSMO_ASSERT(gsupc);
-
-	/* struct ipaccess_unit has a non-const unit_name, so let's copy to be
-	 * able to have a non-const unit_name here as well. To not taint the
-	 * public gsup_client API, let's store it in a const char* anyway. */
-	gsupc->unit_name = talloc_strdup(gsupc, unit_name);
-	OSMO_ASSERT(gsupc->unit_name);
-
-	/* a NULL oapc_config will mark oap_state disabled. */
-	rc = osmo_oap_client_init(oapc_config, &gsupc->oap_state);
-	if (rc != 0)
-		goto failed;
-
-	gsupc->link = ipa_client_conn_create(gsupc,
-					     /* no e1inp */ NULL,
-					     0,
-					     ip_addr, tcp_port,
-					     gsup_client_updown_cb,
-					     gsup_client_read_cb,
-					     /* default write_cb */ NULL,
-					     gsupc);
-	if (!gsupc->link)
-		goto failed;
-
-	osmo_timer_setup(&gsupc->connect_timer, connect_timer_cb, gsupc);
-
-	rc = gsup_client_connect(gsupc);
-
-	if (rc < 0)
-		goto failed;
-
-	gsupc->read_cb = read_cb;
-
-	return gsupc;
-
-failed:
-	gsup_client_destroy(gsupc);
-	return NULL;
-}
-
-void gsup_client_destroy(struct gsup_client *gsupc)
-{
-	osmo_timer_del(&gsupc->connect_timer);
-	osmo_timer_del(&gsupc->ping_timer);
-
-	if (gsupc->link) {
-		ipa_client_conn_close(gsupc->link);
-		ipa_client_conn_destroy(gsupc->link);
-		gsupc->link = NULL;
-	}
-	talloc_free(gsupc);
-}
-
-int gsup_client_send(struct gsup_client *gsupc, struct msgb *msg)
-{
-	if (!gsupc) {
-		LOGP(DGPRS, LOGL_NOTICE, "No GSUP client, unable to "
-			"send %s\n", msgb_hexdump(msg));
-		msgb_free(msg);
-		return -ENOTCONN;
-	}
-
-	if (!gsupc->is_connected) {
-		LOGP(DGPRS, LOGL_NOTICE, "GSUP not connected, unable to "
-			"send %s\n", msgb_hexdump(msg));
-		msgb_free(msg);
-		return -EAGAIN;
-	}
-
-	client_send(gsupc, IPAC_PROTO_EXT_GSUP, msg);
-
-	return 0;
-}
-
-struct msgb *gsup_client_msgb_alloc(void)
-{
-	return msgb_alloc_headroom(4000, 64, __func__);
-}
diff --git a/src/gprs/sgsn_vty.c b/src/gprs/sgsn_vty.c
index 72a310b..f57a2b9 100644
--- a/src/gprs/sgsn_vty.c
+++ b/src/gprs/sgsn_vty.c
@@ -37,7 +37,7 @@
 #include <osmocom/sgsn/gprs_gmm.h>
 #include <osmocom/sgsn/gprs_sgsn.h>
 #include <osmocom/sgsn/vty.h>
-#include <osmocom/sgsn/gsup_client.h>
+#include <osmocom/gsupclient/gsup_client.h>
 
 #include <osmocom/vty/command.h>
 #include <osmocom/vty/vty.h>
diff --git a/tests/sgsn/Makefile.am b/tests/sgsn/Makefile.am
index 0eb2100..956ef8d 100644
--- a/tests/sgsn/Makefile.am
+++ b/tests/sgsn/Makefile.am
@@ -9,6 +9,7 @@
 	$(LIBOSMOCORE_CFLAGS) \
 	$(LIBOSMOABIS_CFLAGS) \
 	$(LIBOSMOGSM_CFLAGS) \
+	$(LIBOSMOGSUPCLIENT_CFLAGS) \
 	$(LIBCARES_CFLAGS) \
 	$(LIBGTP_CFLAGS) \
 	$(NULL)
@@ -37,7 +38,7 @@
 	-Wl,--wrap=sgsn_update_subscriber_data \
 	-Wl,--wrap=gprs_subscr_request_update_location \
 	-Wl,--wrap=gprs_subscr_request_auth_info \
-	-Wl,--wrap=gsup_client_send \
+	-Wl,--wrap=osmo_gsup_client_send \
 	$(NULL)
 
 sgsn_test_LDADD = \
@@ -62,11 +63,11 @@
         $(top_builddir)/src/gprs/gprs_sndcp_pcomp.o \
         $(top_builddir)/src/gprs/v42bis.o \
         $(top_builddir)/src/gprs/gprs_sndcp_dcomp.o \
-        $(top_builddir)/src/gprs/gsup_client.o \
 	$(LIBOSMOABIS_LIBS) \
 	$(LIBOSMOCORE_LIBS) \
 	$(LIBOSMOGSM_LIBS) \
 	$(LIBOSMOGB_LIBS) \
+	$(LIBOSMOGSUPCLIENT_LIBS) \
 	$(LIBCARES_LIBS) \
 	$(LIBGTP_LIBS) \
 	-lrt \
diff --git a/tests/sgsn/sgsn_test.c b/tests/sgsn/sgsn_test.c
index 214d07b..111515e 100644
--- a/tests/sgsn/sgsn_test.c
+++ b/tests/sgsn/sgsn_test.c
@@ -25,7 +25,7 @@
 #include <osmocom/sgsn/debug.h>
 #include <osmocom/sgsn/gprs_subscriber.h>
 #include <osmocom/gsm/gsup.h>
-#include <osmocom/sgsn/gsup_client.h>
+#include <osmocom/gsupclient/gsup_client.h>
 #include <osmocom/sgsn/gprs_utils.h>
 #include <osmocom/sgsn/gprs_gb_parse.h>
 
@@ -148,13 +148,13 @@
 };
 
 /* override, requires '-Wl,--wrap=gsup_client_send' */
-int __real_gsup_client_send(struct gsup_client *gsupc, struct msgb *msg);
-int (*gsup_client_send_cb)(struct gsup_client *gsupc, struct msgb *msg) =
-	&__real_gsup_client_send;
+int __real_osmo_gsup_client_send(struct osmo_gsup_client *gsupc, struct msgb *msg);
+int (*osmo_gsup_client_send_cb)(struct osmo_gsup_client *gsupc, struct msgb *msg) =
+	&__real_osmo_gsup_client_send;
 
-int __wrap_gsup_client_send(struct gsup_client *gsupc, struct msgb *msg)
+int __wrap_osmo_gsup_client_send(struct osmo_gsup_client *gsupc, struct msgb *msg)
 {
-	return (*gsup_client_send_cb)(gsupc, msg);
+	return (*osmo_gsup_client_send_cb)(gsupc, msg);
 };
 
 static int count(struct llist_head *head)
@@ -729,7 +729,7 @@
 	cleanup_test();
 }
 
-int my_gsup_client_send_dummy(struct gsup_client *gsupc, struct msgb *msg)
+int my_gsup_client_send_dummy(struct osmo_gsup_client *gsupc, struct msgb *msg)
 {
 	msgb_free(msg);
 	return 0;
@@ -1032,7 +1032,7 @@
 	return rx_gsup_message(update_location_res, sizeof(update_location_res));
 };
 
-int my_gsup_client_send(struct gsup_client *gsupc, struct msgb *msg)
+int my_gsup_client_send(struct osmo_gsup_client *gsupc, struct msgb *msg)
 {
 	struct osmo_gsup_message to_peer = {0};
 	struct osmo_gsup_message from_peer = {0};
@@ -1074,7 +1074,7 @@
 		return 0;
 	}
 
-	reply_msg = gsup_client_msgb_alloc();
+	reply_msg = osmo_gsup_client_msgb_alloc();
 	reply_msg->l2h = reply_msg->data;
 	osmo_gsup_encode(reply_msg, &from_peer);
 	gprs_subscr_rx_gsup_message(reply_msg);
@@ -1451,7 +1451,7 @@
 
 	printf("Testing GGSN selection\n");
 
-	gsup_client_send_cb = my_gsup_client_send_dummy;
+	osmo_gsup_client_send_cb = my_gsup_client_send_dummy;
 
 	/* Check for emptiness */
 	OSMO_ASSERT(gprs_subscr_get_by_imsi(imsi1) == NULL);
@@ -1570,7 +1570,7 @@
 	sgsn_ggsn_ctx_free(ggcs[1]);
 	sgsn_ggsn_ctx_free(ggcs[2]);
 
-	gsup_client_send_cb = __real_gsup_client_send;
+	osmo_gsup_client_send_cb = __real_osmo_gsup_client_send;
 
 	cleanup_test();
 }

-- 
To view, visit https://gerrit.osmocom.org/10284
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-sgsn
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I6f542945403cf2e3ddac419186b09ec0e2d43b69
Gerrit-Change-Number: 10284
Gerrit-PatchSet: 5
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder (1000002)
Gerrit-Reviewer: Max <msuraev at sysmocom.de>
Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de>
Gerrit-Reviewer: lynxis lazus <lynxis at fe80.eu>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181030/0e880240/attachment.htm>


More information about the gerrit-log mailing list