diff options
-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; } |