gprs_gsup_client*: remove the gprs_ prefix
Make sure everything is named gsup_client_ / GSUP_CLIENT_. Rename static gsup_client_send() to client_send() to avoid clash with public gprs_gsup_client_send() being renamed to gsup_client_send(). This is in preparation for moving gsup to libcommon, which is in turn preparation for libvlr. libvlr and osmo-sgsn will use the same GSUP client code. A number of patches will follow up on this, also for the the OAP client. Related: OS#1592 Change-Id: I57433973b1c4f6cc1e12e7b1c96b5f719f418b51
This commit is contained in:
parent
3df5d53a04
commit
814fef04b0
|
@ -25,35 +25,36 @@
|
|||
|
||||
#include <openbsc/oap.h>
|
||||
|
||||
#define GPRS_GSUP_RECONNECT_INTERVAL 10
|
||||
#define GPRS_GSUP_PING_INTERVAL 20
|
||||
#define GSUP_CLIENT_RECONNECT_INTERVAL 10
|
||||
#define GSUP_CLIENT_PING_INTERVAL 20
|
||||
|
||||
struct msgb;
|
||||
struct ipa_client_conn;
|
||||
struct gprs_gsup_client;
|
||||
struct gsup_client;
|
||||
|
||||
/* Expects message in msg->l2h */
|
||||
typedef int (*gprs_gsup_read_cb_t)(struct gprs_gsup_client *gsupc, struct msgb *msg);
|
||||
typedef int (*gsup_client_read_cb_t)(struct gsup_client *gsupc,
|
||||
struct msgb *msg);
|
||||
|
||||
struct gprs_gsup_client {
|
||||
struct ipa_client_conn *link;
|
||||
gprs_gsup_read_cb_t read_cb;
|
||||
void *data;
|
||||
struct gsup_client {
|
||||
struct ipa_client_conn *link;
|
||||
gsup_client_read_cb_t read_cb;
|
||||
void *data;
|
||||
|
||||
struct oap_state oap_state;
|
||||
struct oap_state oap_state;
|
||||
|
||||
struct osmo_timer_list ping_timer;
|
||||
struct osmo_timer_list connect_timer;
|
||||
int is_connected;
|
||||
int got_ipa_pong;
|
||||
struct osmo_timer_list ping_timer;
|
||||
struct osmo_timer_list connect_timer;
|
||||
int is_connected;
|
||||
int got_ipa_pong;
|
||||
};
|
||||
|
||||
struct gprs_gsup_client *gprs_gsup_client_create(const char *ip_addr,
|
||||
unsigned int tcp_port,
|
||||
gprs_gsup_read_cb_t read_cb,
|
||||
struct oap_config *oap_config);
|
||||
struct gsup_client *gsup_client_create(const char *ip_addr,
|
||||
unsigned int tcp_port,
|
||||
gsup_client_read_cb_t read_cb,
|
||||
struct oap_config *oap_config);
|
||||
|
||||
void gprs_gsup_client_destroy(struct gprs_gsup_client *gsupc);
|
||||
int gprs_gsup_client_send(struct gprs_gsup_client *gsupc, struct msgb *msg);
|
||||
struct msgb *gprs_gsup_msgb_alloc(void);
|
||||
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);
|
||||
|
||||
|
|
|
@ -123,7 +123,7 @@ struct sgsn_instance {
|
|||
/* GSN instance for libgtp */
|
||||
struct gsn_t *gsn;
|
||||
/* Subscriber */
|
||||
struct gprs_gsup_client *gsup_client;
|
||||
struct gsup_client *gsup_client;
|
||||
/* LLME inactivity timer */
|
||||
struct osmo_timer_list llme_timer;
|
||||
|
||||
|
|
|
@ -35,11 +35,11 @@
|
|||
|
||||
extern void *tall_bsc_ctx;
|
||||
|
||||
static void start_test_procedure(struct gprs_gsup_client *gsupc);
|
||||
static void start_test_procedure(struct gsup_client *gsupc);
|
||||
|
||||
static void gsup_client_send_ping(struct gprs_gsup_client *gsupc)
|
||||
static void gsup_client_send_ping(struct gsup_client *gsupc)
|
||||
{
|
||||
struct msgb *msg = gprs_gsup_msgb_alloc();
|
||||
struct msgb *msg = gsup_client_msgb_alloc();
|
||||
|
||||
msg->l2h = msgb_put(msg, 1);
|
||||
msg->l2h[0] = IPAC_MSGT_PING;
|
||||
|
@ -47,7 +47,7 @@ static void gsup_client_send_ping(struct gprs_gsup_client *gsupc)
|
|||
ipa_client_conn_send(gsupc->link, msg);
|
||||
}
|
||||
|
||||
static int gsup_client_connect(struct gprs_gsup_client *gsupc)
|
||||
static int gsup_client_connect(struct gsup_client *gsupc)
|
||||
{
|
||||
int rc;
|
||||
|
||||
|
@ -84,7 +84,8 @@ static int gsup_client_connect(struct gprs_gsup_client *gsupc)
|
|||
rc == -EINVAL)
|
||||
return rc;
|
||||
|
||||
osmo_timer_schedule(&gsupc->connect_timer, GPRS_GSUP_RECONNECT_INTERVAL, 0);
|
||||
osmo_timer_schedule(&gsupc->connect_timer,
|
||||
GSUP_CLIENT_RECONNECT_INTERVAL, 0);
|
||||
|
||||
LOGP(DGPRS, LOGL_INFO, "Scheduled timer to retry GSUP connect to %s:%d\n",
|
||||
gsupc->link->addr, gsupc->link->port);
|
||||
|
@ -94,7 +95,7 @@ static int gsup_client_connect(struct gprs_gsup_client *gsupc)
|
|||
|
||||
static void connect_timer_cb(void *gsupc_)
|
||||
{
|
||||
struct gprs_gsup_client *gsupc = gsupc_;
|
||||
struct gsup_client *gsupc = gsupc_;
|
||||
|
||||
if (gsupc->is_connected)
|
||||
return;
|
||||
|
@ -102,7 +103,8 @@ static void connect_timer_cb(void *gsupc_)
|
|||
gsup_client_connect(gsupc);
|
||||
}
|
||||
|
||||
static void gsup_client_send(struct gprs_gsup_client *gsupc, int proto_ext, struct msgb *msg_tx)
|
||||
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);
|
||||
|
@ -110,7 +112,7 @@ static void gsup_client_send(struct gprs_gsup_client *gsupc, int proto_ext, stru
|
|||
/* msg_tx is now queued and will be freed. */
|
||||
}
|
||||
|
||||
static void gsup_client_oap_register(struct gprs_gsup_client *gsupc)
|
||||
static void gsup_client_oap_register(struct gsup_client *gsupc)
|
||||
{
|
||||
struct msgb *msg_tx;
|
||||
int rc;
|
||||
|
@ -121,12 +123,12 @@ static void gsup_client_oap_register(struct gprs_gsup_client *gsupc)
|
|||
return;
|
||||
}
|
||||
|
||||
gsup_client_send(gsupc, IPAC_PROTO_EXT_OAP, msg_tx);
|
||||
client_send(gsupc, IPAC_PROTO_EXT_OAP, msg_tx);
|
||||
}
|
||||
|
||||
static void gsup_client_updown_cb(struct ipa_client_conn *link, int up)
|
||||
{
|
||||
struct gprs_gsup_client *gsupc = link->data;
|
||||
struct gsup_client *gsupc = link->data;
|
||||
|
||||
LOGP(DGPRS, LOGL_INFO, "GSUP link to %s:%d %s\n",
|
||||
link->addr, link->port, up ? "UP" : "DOWN");
|
||||
|
@ -144,11 +146,11 @@ static void gsup_client_updown_cb(struct ipa_client_conn *link, int up)
|
|||
osmo_timer_del(&gsupc->ping_timer);
|
||||
|
||||
osmo_timer_schedule(&gsupc->connect_timer,
|
||||
GPRS_GSUP_RECONNECT_INTERVAL, 0);
|
||||
GSUP_CLIENT_RECONNECT_INTERVAL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static int gsup_client_oap_handle(struct gprs_gsup_client *gsupc, struct msgb *msg_rx)
|
||||
static int gsup_client_oap_handle(struct gsup_client *gsupc, struct msgb *msg_rx)
|
||||
{
|
||||
int rc;
|
||||
struct msgb *msg_tx;
|
||||
|
@ -159,7 +161,7 @@ static int gsup_client_oap_handle(struct gprs_gsup_client *gsupc, struct msgb *m
|
|||
return rc;
|
||||
|
||||
if (msg_tx)
|
||||
gsup_client_send(gsupc, IPAC_PROTO_EXT_OAP, msg_tx);
|
||||
client_send(gsupc, IPAC_PROTO_EXT_OAP, msg_tx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -168,7 +170,7 @@ 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 gprs_gsup_client *gsupc = (struct gprs_gsup_client *)link->data;
|
||||
struct gsup_client *gsupc = (struct gsup_client *)link->data;
|
||||
int rc;
|
||||
static struct ipaccess_unit ipa_dev = {
|
||||
.unit_name = "SGSN"
|
||||
|
@ -231,7 +233,7 @@ invalid:
|
|||
|
||||
static void ping_timer_cb(void *gsupc_)
|
||||
{
|
||||
struct gprs_gsup_client *gsupc = gsupc_;
|
||||
struct gsup_client *gsupc = gsupc_;
|
||||
|
||||
LOGP(DGPRS, LOGL_INFO, "GSUP ping callback (%s, %s PONG)\n",
|
||||
gsupc->is_connected ? "connected" : "not connected",
|
||||
|
@ -249,26 +251,26 @@ static void ping_timer_cb(void *gsupc_)
|
|||
gsup_client_connect(gsupc);
|
||||
}
|
||||
|
||||
static void start_test_procedure(struct gprs_gsup_client *gsupc)
|
||||
static void start_test_procedure(struct gsup_client *gsupc)
|
||||
{
|
||||
gsupc->ping_timer.data = gsupc;
|
||||
gsupc->ping_timer.cb = &ping_timer_cb;
|
||||
|
||||
gsupc->got_ipa_pong = 0;
|
||||
osmo_timer_schedule(&gsupc->ping_timer, GPRS_GSUP_PING_INTERVAL, 0);
|
||||
osmo_timer_schedule(&gsupc->ping_timer, GSUP_CLIENT_PING_INTERVAL, 0);
|
||||
LOGP(DGPRS, LOGL_DEBUG, "GSUP sending PING\n");
|
||||
gsup_client_send_ping(gsupc);
|
||||
}
|
||||
|
||||
struct gprs_gsup_client *gprs_gsup_client_create(const char *ip_addr,
|
||||
unsigned int tcp_port,
|
||||
gprs_gsup_read_cb_t read_cb,
|
||||
struct oap_config *oap_config)
|
||||
struct gsup_client *gsup_client_create(const char *ip_addr,
|
||||
unsigned int tcp_port,
|
||||
gsup_client_read_cb_t read_cb,
|
||||
struct oap_config *oap_config)
|
||||
{
|
||||
struct gprs_gsup_client *gsupc;
|
||||
struct gsup_client *gsupc;
|
||||
int rc;
|
||||
|
||||
gsupc = talloc_zero(tall_bsc_ctx, struct gprs_gsup_client);
|
||||
gsupc = talloc_zero(tall_bsc_ctx, struct gsup_client);
|
||||
OSMO_ASSERT(gsupc);
|
||||
|
||||
rc = oap_init(oap_config, &gsupc->oap_state);
|
||||
|
@ -299,11 +301,11 @@ struct gprs_gsup_client *gprs_gsup_client_create(const char *ip_addr,
|
|||
return gsupc;
|
||||
|
||||
failed:
|
||||
gprs_gsup_client_destroy(gsupc);
|
||||
gsup_client_destroy(gsupc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void gprs_gsup_client_destroy(struct gprs_gsup_client *gsupc)
|
||||
void gsup_client_destroy(struct gsup_client *gsupc)
|
||||
{
|
||||
osmo_timer_del(&gsupc->connect_timer);
|
||||
osmo_timer_del(&gsupc->ping_timer);
|
||||
|
@ -316,7 +318,7 @@ void gprs_gsup_client_destroy(struct gprs_gsup_client *gsupc)
|
|||
talloc_free(gsupc);
|
||||
}
|
||||
|
||||
int gprs_gsup_client_send(struct gprs_gsup_client *gsupc, struct msgb *msg)
|
||||
int gsup_client_send(struct gsup_client *gsupc, struct msgb *msg)
|
||||
{
|
||||
if (!gsupc) {
|
||||
msgb_free(msg);
|
||||
|
@ -328,12 +330,12 @@ int gprs_gsup_client_send(struct gprs_gsup_client *gsupc, struct msgb *msg)
|
|||
return -EAGAIN;
|
||||
}
|
||||
|
||||
gsup_client_send(gsupc, IPAC_PROTO_EXT_GSUP, msg);
|
||||
client_send(gsupc, IPAC_PROTO_EXT_GSUP, msg);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct msgb *gprs_gsup_msgb_alloc(void)
|
||||
struct msgb *gsup_client_msgb_alloc(void)
|
||||
{
|
||||
return msgb_alloc_headroom(4000, 64, __func__);
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
|
||||
extern void *tall_bsc_ctx;
|
||||
|
||||
static int gsup_read_cb(struct gprs_gsup_client *gsupc, struct msgb *msg);
|
||||
static int gsup_read_cb(struct 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
|
||||
|
@ -62,7 +62,7 @@ int gprs_subscr_init(struct sgsn_instance *sgi)
|
|||
|
||||
addr_str = inet_ntoa(sgi->cfg.gsup_server_addr.sin_addr);
|
||||
|
||||
sgi->gsup_client = gprs_gsup_client_create(
|
||||
sgi->gsup_client = gsup_client_create(
|
||||
addr_str, sgi->cfg.gsup_server_port,
|
||||
&gsup_read_cb,
|
||||
&sgi->cfg.oap);
|
||||
|
@ -73,7 +73,7 @@ int gprs_subscr_init(struct sgsn_instance *sgi)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int gsup_read_cb(struct gprs_gsup_client *gsupc, struct msgb *msg)
|
||||
static int gsup_read_cb(struct gsup_client *gsupc, struct msgb *msg)
|
||||
{
|
||||
int rc;
|
||||
|
||||
|
@ -161,7 +161,7 @@ void gprs_subscr_cancel(struct gsm_subscriber *subscr)
|
|||
static int gprs_subscr_tx_gsup_message(struct gsm_subscriber *subscr,
|
||||
struct osmo_gsup_message *gsup_msg)
|
||||
{
|
||||
struct msgb *msg = gprs_gsup_msgb_alloc();
|
||||
struct msgb *msg = gsup_client_msgb_alloc();
|
||||
|
||||
if (strlen(gsup_msg->imsi) == 0 && subscr)
|
||||
strncpy(gsup_msg->imsi, subscr->imsi, sizeof(gsup_msg->imsi) - 1);
|
||||
|
@ -176,7 +176,7 @@ static int gprs_subscr_tx_gsup_message(struct gsm_subscriber *subscr,
|
|||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return gprs_gsup_client_send(sgsn->gsup_client, msg);
|
||||
return gsup_client_send(sgsn->gsup_client, msg);
|
||||
}
|
||||
|
||||
static int gprs_subscr_tx_gsup_error_reply(struct gsm_subscriber *subscr,
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include <openbsc/gprs_gsup_client.h>
|
||||
#include <openbsc/debug.h>
|
||||
|
||||
static struct gprs_gsup_client *g_gc;
|
||||
static struct gsup_client *g_gc;
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
|
@ -113,7 +113,7 @@ int req_auth_info(const char *imsi)
|
|||
|
||||
osmo_gsup_encode(msg, &gsup);
|
||||
|
||||
return gprs_gsup_client_send(g_gc, msg);
|
||||
return gsup_client_send(g_gc, msg);
|
||||
}
|
||||
|
||||
/* allocate + generate + send Send-Auth-Info */
|
||||
|
@ -128,7 +128,7 @@ int req_loc_upd(const char *imsi)
|
|||
|
||||
osmo_gsup_encode(msg, &gsup);
|
||||
|
||||
return gprs_gsup_client_send(g_gc, msg);
|
||||
return gsup_client_send(g_gc, msg);
|
||||
}
|
||||
|
||||
int resp_isd(struct imsi_op *io)
|
||||
|
@ -143,7 +143,7 @@ int resp_isd(struct imsi_op *io)
|
|||
|
||||
imsi_op_release(io);
|
||||
|
||||
return gprs_gsup_client_send(g_gc, msg);
|
||||
return gsup_client_send(g_gc, msg);
|
||||
}
|
||||
|
||||
/* receive an incoming GSUP message */
|
||||
|
@ -196,7 +196,7 @@ static int op_type_by_gsup_msgt(enum osmo_gsup_message_type msg_type)
|
|||
}
|
||||
}
|
||||
|
||||
static int gsupc_read_cb(struct gprs_gsup_client *gsupc, struct msgb *msg)
|
||||
static int gsupc_read_cb(struct gsup_client *gsupc, struct msgb *msg)
|
||||
{
|
||||
struct osmo_gsup_message gsup_msg = {0};
|
||||
struct imsi_op *io;
|
||||
|
@ -281,8 +281,8 @@ int main(int argc, char **argv)
|
|||
|
||||
osmo_init_logging(&gprs_log_info);
|
||||
|
||||
g_gc = gprs_gsup_client_create(server_host, server_port,
|
||||
gsupc_read_cb, NULL);
|
||||
g_gc = gsup_client_create(server_host, server_port, gsupc_read_cb,
|
||||
NULL);
|
||||
|
||||
|
||||
signal(SIGINT, sig_cb);
|
||||
|
|
|
@ -36,7 +36,7 @@ sgsn_test_LDFLAGS = \
|
|||
-Wl,--wrap=sgsn_update_subscriber_data \
|
||||
-Wl,--wrap=gprs_subscr_request_update_location \
|
||||
-Wl,--wrap=gprs_subscr_request_auth_info \
|
||||
-Wl,--wrap=gprs_gsup_client_send \
|
||||
-Wl,--wrap=gsup_client_send \
|
||||
$(NULL)
|
||||
|
||||
sgsn_test_LDADD = \
|
||||
|
|
|
@ -146,14 +146,14 @@ int __wrap_gprs_subscr_request_auth_info(struct sgsn_mm_ctx *mmctx) {
|
|||
return (*subscr_request_auth_info_cb)(mmctx);
|
||||
};
|
||||
|
||||
/* override, requires '-Wl,--wrap=gprs_gsup_client_send' */
|
||||
int __real_gprs_gsup_client_send(struct gprs_gsup_client *gsupc, struct msgb *msg);
|
||||
int (*gprs_gsup_client_send_cb)(struct gprs_gsup_client *gsupc, struct msgb *msg) =
|
||||
&__real_gprs_gsup_client_send;
|
||||
/* 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 __wrap_gprs_gsup_client_send(struct gprs_gsup_client *gsupc, struct msgb *msg)
|
||||
int __wrap_gsup_client_send(struct gsup_client *gsupc, struct msgb *msg)
|
||||
{
|
||||
return (*gprs_gsup_client_send_cb)(gsupc, msg);
|
||||
return (*gsup_client_send_cb)(gsupc, msg);
|
||||
};
|
||||
|
||||
static int count(struct llist_head *head)
|
||||
|
@ -714,7 +714,7 @@ static void test_subscriber_gsup(void)
|
|||
cleanup_test();
|
||||
}
|
||||
|
||||
int my_gprs_gsup_client_send_dummy(struct gprs_gsup_client *gsupc, struct msgb *msg)
|
||||
int my_gsup_client_send_dummy(struct gsup_client *gsupc, struct msgb *msg)
|
||||
{
|
||||
msgb_free(msg);
|
||||
return 0;
|
||||
|
@ -1281,7 +1281,7 @@ static void test_gmm_attach_subscr_gsup_auth(int retry)
|
|||
cleanup_test();
|
||||
}
|
||||
|
||||
int my_gprs_gsup_client_send(struct gprs_gsup_client *gsupc, struct msgb *msg)
|
||||
int my_gsup_client_send(struct gsup_client *gsupc, struct msgb *msg)
|
||||
{
|
||||
struct osmo_gsup_message to_peer = {0};
|
||||
struct osmo_gsup_message from_peer = {0};
|
||||
|
@ -1323,7 +1323,7 @@ int my_gprs_gsup_client_send(struct gprs_gsup_client *gsupc, struct msgb *msg)
|
|||
return 0;
|
||||
}
|
||||
|
||||
reply_msg = gprs_gsup_msgb_alloc();
|
||||
reply_msg = gsup_client_msgb_alloc();
|
||||
reply_msg->l2h = reply_msg->data;
|
||||
osmo_gsup_encode(reply_msg, &from_peer);
|
||||
gprs_subscr_rx_gsup_message(reply_msg);
|
||||
|
@ -1338,9 +1338,9 @@ static void test_gmm_attach_subscr_real_gsup_auth(int retry)
|
|||
struct gsm_subscriber *subscr;
|
||||
|
||||
sgsn_inst.cfg.auth_policy = SGSN_AUTH_POLICY_REMOTE;
|
||||
gprs_gsup_client_send_cb = my_gprs_gsup_client_send;
|
||||
gsup_client_send_cb = my_gsup_client_send;
|
||||
|
||||
sgsn->gsup_client = talloc_zero(tall_bsc_ctx, struct gprs_gsup_client);
|
||||
sgsn->gsup_client = talloc_zero(tall_bsc_ctx, struct gsup_client);
|
||||
|
||||
if (retry) {
|
||||
upd_loc_skip = 3;
|
||||
|
@ -1355,7 +1355,7 @@ static void test_gmm_attach_subscr_real_gsup_auth(int retry)
|
|||
assert_no_subscrs();
|
||||
|
||||
sgsn->cfg.auth_policy = saved_auth_policy;
|
||||
gprs_gsup_client_send_cb = __real_gprs_gsup_client_send;
|
||||
gsup_client_send_cb = __real_gsup_client_send;
|
||||
upd_loc_skip = 0;
|
||||
auth_info_skip = 0;
|
||||
talloc_free(sgsn->gsup_client);
|
||||
|
@ -2239,7 +2239,7 @@ static void test_ggsn_selection(void)
|
|||
|
||||
printf("Testing GGSN selection\n");
|
||||
|
||||
gprs_gsup_client_send_cb = my_gprs_gsup_client_send_dummy;
|
||||
gsup_client_send_cb = my_gsup_client_send_dummy;
|
||||
|
||||
/* Check for emptiness */
|
||||
OSMO_ASSERT(gprs_subscr_get_by_imsi(imsi1) == NULL);
|
||||
|
@ -2358,7 +2358,7 @@ static void test_ggsn_selection(void)
|
|||
sgsn_ggsn_ctx_free(ggcs[1]);
|
||||
sgsn_ggsn_ctx_free(ggcs[2]);
|
||||
|
||||
gprs_gsup_client_send_cb = __real_gprs_gsup_client_send;
|
||||
gsup_client_send_cb = __real_gsup_client_send;
|
||||
|
||||
cleanup_test();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue