diff options
Diffstat (limited to 'src/libmsc/smpp_openbsc.c')
-rw-r--r-- | src/libmsc/smpp_openbsc.c | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/src/libmsc/smpp_openbsc.c b/src/libmsc/smpp_openbsc.c index 151c788b2..e6eb0102a 100644 --- a/src/libmsc/smpp_openbsc.c +++ b/src/libmsc/smpp_openbsc.c @@ -45,6 +45,7 @@ #include <osmocom/msc/transaction.h> #include <osmocom/msc/gsm_subscriber.h> #include <osmocom/msc/vlr.h> +#include <osmocom/msc/msc_a.h> #include "smpp_smsc.h" @@ -556,22 +557,21 @@ void smpp_cmd_flush_pending(struct osmo_esme *esme) void smpp_cmd_ack(struct osmo_smpp_cmd *cmd) { - struct ran_conn *conn; + struct msc_a *msc_a; struct gsm_trans *trans; if (cmd->is_report) goto out; - conn = connection_for_subscr(cmd->vsub); - if (!conn) { - LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber anymore\n"); + msc_a = msc_a_for_vsub(cmd->vsub, true); + if (!msc_a) { + LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber %s\n", vlr_subscr_name(cmd->vsub)); goto out; } - trans = trans_find_by_id(conn, GSM48_PDISC_SMS, cmd->gsm411_trans_id); + trans = trans_find_by_id(msc_a, TRANS_SMS, cmd->gsm411_trans_id); if (!trans) { - LOGP(DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n", - cmd->gsm411_trans_id); + LOG_MSC_A_CAT(msc_a, DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n", cmd->gsm411_trans_id); goto out; } @@ -582,23 +582,23 @@ out: void smpp_cmd_err(struct osmo_smpp_cmd *cmd, uint32_t status) { - struct ran_conn *conn; + struct msc_a *msc_a; struct gsm_trans *trans; int gsm411_cause; if (cmd->is_report) goto out; - conn = connection_for_subscr(cmd->vsub); - if (!conn) { - LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber anymore\n"); + msc_a = msc_a_for_vsub(cmd->vsub, true); + if (!msc_a) { + LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber %s\n", vlr_subscr_name(cmd->vsub)); goto out; } - trans = trans_find_by_id(conn, GSM48_PDISC_SMS, cmd->gsm411_trans_id); + trans = trans_find_by_id(msc_a, TRANS_SMS, cmd->gsm411_trans_id); if (!trans) { - LOGP(DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n", - cmd->gsm411_trans_id); + LOG_MSC_A_CAT(msc_a, DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n", + cmd->gsm411_trans_id); goto out; } @@ -657,11 +657,12 @@ struct osmo_smpp_cmd *smpp_cmd_find_by_seqnum(struct osmo_esme *esme, } static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms, - struct ran_conn *conn) + struct msc_a *msc_a) { struct deliver_sm_t deliver; int mode, ret; uint8_t dcs; + struct vlr_subscr *vsub = msc_a_vsub(msc_a); memset(&deliver, 0, sizeof(deliver)); deliver.command_length = 0; @@ -674,13 +675,13 @@ static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms, deliver.source_addr_npi = NPI_Land_Mobile_E212; snprintf((char *)deliver.source_addr, sizeof(deliver.source_addr), "%s", - conn->vsub->imsi); + vsub->imsi); } else { deliver.source_addr_ton = TON_Network_Specific; deliver.source_addr_npi = NPI_ISDN_E163_E164; snprintf((char *)deliver.source_addr, sizeof(deliver.source_addr), "%s", - conn->vsub->msisdn); + vsub->msisdn); } deliver.dest_addr_ton = sms->dst.ton; @@ -746,19 +747,18 @@ static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms, if (ret < 0) return ret; - return smpp_cmd_enqueue(esme, conn->vsub, sms, + return smpp_cmd_enqueue(esme, vsub, sms, deliver.sequence_number); } static struct smsc *g_smsc; -int smpp_route_smpp_first(struct gsm_sms *sms, struct ran_conn *conn) +bool smpp_route_smpp_first() { - return g_smsc->smpp_first; + return (bool)(g_smsc->smpp_first); } -int smpp_try_deliver(struct gsm_sms *sms, - struct ran_conn *conn) +int smpp_try_deliver(struct gsm_sms *sms, struct msc_a *msc_a) { struct osmo_esme *esme; struct osmo_smpp_addr dst; @@ -771,7 +771,7 @@ int smpp_try_deliver(struct gsm_sms *sms, rc = smpp_route(g_smsc, &dst, &esme); if (!rc) - rc = deliver_to_esme(esme, sms, conn); + rc = deliver_to_esme(esme, sms, msc_a); return rc; } |