diff options
author | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2016-03-03 22:13:50 +0300 |
---|---|---|
committer | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2017-02-07 18:59:55 +0300 |
commit | fb11fc1a7a748c5f52e5752f07eaffadb362e1c4 (patch) | |
tree | 95bba560e6edb16382f20624bec475bde68abb80 /openbsc | |
parent | 0904c1de1945e91c39ccfe56cf1040d1815d6a3a (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.
Diffstat (limited to 'openbsc')
-rw-r--r-- | openbsc/include/openbsc/gsup_client.h | 1 | ||||
-rw-r--r-- | openbsc/src/libmsc/gsm_sup.c | 9 | ||||
-rw-r--r-- | openbsc/src/libmsc/vty_interface_layer3.c | 1 |
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; } |