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.
This commit is contained in:
Ivan Kluchnikov 2016-03-03 22:13:50 +03:00
parent 0904c1de19
commit fb11fc1a7a
3 changed files with 7 additions and 4 deletions

View File

@ -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,

View File

@ -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);

View File

@ -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;
}