aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Kluchnikov <kluchnikovi@gmail.com>2016-03-03 22:13:50 +0300
committerIvan Kluchnikov <kluchnikovi@gmail.com>2017-02-07 18:59:55 +0300
commitfb11fc1a7a748c5f52e5752f07eaffadb362e1c4 (patch)
tree95bba560e6edb16382f20624bec475bde68abb80
parent0904c1de1945e91c39ccfe56cf1040d1815d6a3a (diff)
sup: pass subscriber group parameter to subscr_get_by_extension function
Subscriber group parameter should be set for subscriber in subscr_get_by_extension function, because it is used in connection_for_subscr function.
-rw-r--r--openbsc/include/openbsc/gsup_client.h1
-rw-r--r--openbsc/src/libmsc/gsm_sup.c9
-rw-r--r--openbsc/src/libmsc/vty_interface_layer3.c1
3 files changed, 7 insertions, 4 deletions
diff --git a/openbsc/include/openbsc/gsup_client.h b/openbsc/include/openbsc/gsup_client.h
index a113225e1..f12cd1a2d 100644
--- a/openbsc/include/openbsc/gsup_client.h
+++ b/openbsc/include/openbsc/gsup_client.h
@@ -47,6 +47,7 @@ struct gsup_client {
struct osmo_timer_list connect_timer;
int is_connected;
int got_ipa_pong;
+ struct gsm_network *net;
};
struct gsup_client *gsup_client_create(const char *ip_addr,
diff --git a/openbsc/src/libmsc/gsm_sup.c b/openbsc/src/libmsc/gsm_sup.c
index 304e225a2..50693b009 100644
--- a/openbsc/src/libmsc/gsm_sup.c
+++ b/openbsc/src/libmsc/gsm_sup.c
@@ -202,7 +202,8 @@ int subscr_tx_sms_message(struct gsm_subscriber *subscr,
return gprs_gsup_client_send(subscr->group->net->sms_client, msg);
}
-static int rx_sms_message(const uint8_t* data, size_t data_len)
+static int rx_sms_message(struct gprs_gsup_client *sup_client,
+ const uint8_t* data, size_t data_len)
{
int rc;
@@ -236,12 +237,12 @@ static int rx_sms_message(const uint8_t* data, size_t data_len)
memcpy(rp_msg, data + offset, data_len);
struct gsm_subscriber *subscr;
- subscr = subscr_get_by_extension(NULL, extension);
+ struct gsm_network *net = sup_client->net;
+ subscr = subscr_get_by_extension(net->subscr_group, extension);
if (!subscr) {
msgb_free(msg);
return -GMM_CAUSE_IMSI_UNKNOWN;
}
-
return gsm411_send_rp_msg_subscr(subscr, msg);
}
@@ -514,7 +515,7 @@ static int subscr_rx_sup_message(struct gprs_gsup_client *sup_client, struct msg
if (*data == GPRS_GSUP_MSGT_MAP) {
return rx_uss_message(data, data_len);
} else if (*data == GPRS_GSUP_MSGT_SMS) {
- return rx_sms_message(data, data_len);
+ return rx_sms_message(sup_client, data, data_len);
}
#endif
rc = gprs_gsup_decode(data, data_len, &gsup_msg);
diff --git a/openbsc/src/libmsc/vty_interface_layer3.c b/openbsc/src/libmsc/vty_interface_layer3.c
index eb86f8e71..5fd17c7ff 100644
--- a/openbsc/src/libmsc/vty_interface_layer3.c
+++ b/openbsc/src/libmsc/vty_interface_layer3.c
@@ -1072,6 +1072,7 @@ DEFUN(sms_destination, sms_destination_cmd,
vty_out(vty, "%%Cannot set up SMS socket%s", VTY_NEWLINE);
return CMD_WARNING;
}
+ gsmnet->sms_client->net = gsmnet;
return CMD_SUCCESS;
}