Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Vadim Yanitskiy has submitted this change and it was merged. ( https://gerrit.osmocom.org/11920 ) Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. libmsc/gsm_04_11.c: accept MT SMS messages over GSUP Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Depends-on: (core) Ibe325c64ae2d6c626b232533bb4cbc65fc2b5d71 Depends-on: (OsmoHLR) I0589ff27933e9bca2bcf93b8259004935778db8f Related Change-Id: (TTCN) I63a25c8366cce0852df6b628365151661a22a25f Related: OS#3587 --- M include/osmocom/msc/gsm_04_11.h M include/osmocom/msc/gsm_04_11_gsup.h M src/libmsc/gsm_04_08.c M src/libmsc/gsm_04_11.c M src/libmsc/gsm_04_11_gsup.c 5 files changed, 164 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified Objections: Max: I would prefer this is not merged as is diff --git a/include/osmocom/msc/gsm_04_11.h b/include/osmocom/msc/gsm_04_11.h index b739918..4297cdb 100644 --- a/include/osmocom/msc/gsm_04_11.h +++ b/include/osmocom/msc/gsm_04_11.h @@ -42,6 +42,10 @@ int gsm411_send_sms(struct gsm_network *net, struct vlr_subscr *vsub, struct gsm_sms *sms); +int gsm411_send_rp_data(struct gsm_network *net, struct vlr_subscr *vsub, + size_t sm_rp_oa_len, const uint8_t *sm_rp_oa, + size_t sm_rp_ud_len, const uint8_t *sm_rp_ud); + void gsm411_sapi_n_reject(struct ran_conn *conn); int gsm411_send_rp_ack(struct gsm_trans *trans, uint8_t msg_ref); diff --git a/include/osmocom/msc/gsm_04_11_gsup.h b/include/osmocom/msc/gsm_04_11_gsup.h index 94ff8f6..969eaba 100644 --- a/include/osmocom/msc/gsm_04_11_gsup.h +++ b/include/osmocom/msc/gsm_04_11_gsup.h @@ -12,3 +12,9 @@ uint8_t sm_rp_mr, uint8_t *sm_rp_da, uint8_t sm_rp_da_len); int gsm411_gsup_mo_handler(struct vlr_subscr *vsub, struct osmo_gsup_message *gsup_msg); + +int gsm411_gsup_mt_fwd_sm_res(struct gsm_trans *trans, uint8_t sm_rp_mr); +int gsm411_gsup_mt_fwd_sm_err(struct gsm_trans *trans, + uint8_t sm_rp_mr, uint8_t cause); +int gsm411_gsup_mt_handler(struct vlr_subscr *vsub, + struct osmo_gsup_message *gsup_msg); diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 7ff8681..686194f 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -1810,6 +1810,11 @@ DEBUGP(DMSC, "Routed to GSM 04.11 MO handler\n"); return gsm411_gsup_mo_handler(vsub, gsup_msg); + /* GSM 04.11 code implementing MT SMS */ + case OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST: + DEBUGP(DMSC, "Routed to GSM 04.11 MT handler\n"); + return gsm411_gsup_mt_handler(vsub, gsup_msg); + default: LOGP(DMM, LOGL_ERROR, "No handler found for %s, dropping message...\n", osmo_gsup_message_type_name(gsup_msg->message_type)); diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c index 788a0a9..15a92d4 100644 --- a/src/libmsc/gsm_04_11.c +++ b/src/libmsc/gsm_04_11.c @@ -158,10 +158,13 @@ gsm411_smc_recv(>sms.smc_inst, GSM411_MMSMS_REL_IND, NULL, 0); - /* Notify the SMSqueue and free stored SMS */ - send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, event); - trans->sms.sms = NULL; - sms_free(sms); + /* gsm411_send_rp_data() doesn't set trans->sms.sms */ + if (sms != NULL) { + /* Notify the SMSqueue and free stored SMS */ + send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, event); + trans->sms.sms = NULL; + sms_free(sms); + } /* Destroy this transaction */ trans_free(trans); @@ -794,6 +797,11 @@ * successfully received a SMS. We can now safely mark it as * transmitted */ + if (trans->net->sms_over_gsup) { + /* Forward towards SMSC via GSUP */ + return gsm411_gsup_mt_fwd_sm_res(trans, rph->msg_ref); + } + if (!sms) { LOGP(DLSMS, LOGL_ERROR, "RX RP-ACK but no sms in transaction?!?\n"); return gsm411_send_rp_error(trans, rph->msg_ref, @@ -830,6 +838,11 @@ vlr_subscr_name(trans->conn->vsub), cause_len, cause, get_value_string(gsm411_rp_cause_strs, cause)); + if (trans->net->sms_over_gsup) { + /* Forward towards SMSC via GSUP */ + return gsm411_gsup_mt_fwd_sm_err(trans, rph->msg_ref, cause); + } + if (!sms) { LOGP(DLSMS, LOGL_ERROR, "RX RP-ERR, but no sms in transaction?!?\n"); @@ -1112,6 +1125,42 @@ GSM411_SM_RL_DATA_REQ); } +/* Low-level function to send raw RP-DATA to a given subscriber */ +int gsm411_send_rp_data(struct gsm_network *net,
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Vadim Yanitskiy has posted comments on this change. ( https://gerrit.osmocom.org/11920 ) Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. Patch Set 12: I really need to move this work forward, so feel free to submit a patch that makes everything const. Personally, I don't think it really deserves -1. -- To view, visit https://gerrit.osmocom.org/11920 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Gerrit-Change-Number: 11920 Gerrit-PatchSet: 12 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder (102) Gerrit-Reviewer: Max Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-CC: Stefan Sperling Gerrit-Comment-Date: Fri, 11 Jan 2019 21:42:37 + Gerrit-HasComments: No Gerrit-HasLabels: No
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Max has posted comments on this change. ( https://gerrit.osmocom.org/11920 ) Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. Patch Set 12: > Is there any rule in Osmocom that we have to use 'const' everywhere? If there isn't than we should make one: I don't see any advantage in making code less readable by not using const for const pointers. -- To view, visit https://gerrit.osmocom.org/11920 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Gerrit-Change-Number: 11920 Gerrit-PatchSet: 12 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder (102) Gerrit-Reviewer: Max Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-CC: Stefan Sperling Gerrit-Comment-Date: Tue, 08 Jan 2019 12:26:29 + Gerrit-HasComments: No Gerrit-HasLabels: No
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Vadim Yanitskiy has posted comments on this change. ( https://gerrit.osmocom.org/11920 ) Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. Patch Set 12: > Patch Set 12: Code-Review-1 Sorry, but I don't think that missing 'const' is critical here. Is there any rule in Osmocom that we have to use 'const' everywhere? -- To view, visit https://gerrit.osmocom.org/11920 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Gerrit-Change-Number: 11920 Gerrit-PatchSet: 12 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder (102) Gerrit-Reviewer: Max Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-CC: Stefan Sperling Gerrit-Comment-Date: Tue, 08 Jan 2019 12:21:05 + Gerrit-HasComments: No Gerrit-HasLabels: No
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Max has posted comments on this change. ( https://gerrit.osmocom.org/11920 ) Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. Patch Set 12: Code-Review-1 (2 comments) https://gerrit.osmocom.org/#/c/11920/12/src/libmsc/gsm_04_11_gsup.c File src/libmsc/gsm_04_11_gsup.c: https://gerrit.osmocom.org/#/c/11920/12/src/libmsc/gsm_04_11_gsup.c@205 PS12, Line 205: int gsm411_gsup_mt_fwd_sm_res(struct gsm_trans *trans, uint8_t sm_rp_mr) trans is not modified by this function so it should be const. https://gerrit.osmocom.org/#/c/11920/12/src/libmsc/gsm_04_11_gsup.c@221 PS12, Line 221: int gsm411_gsup_mt_fwd_sm_err(struct gsm_trans *trans, Here as well. -- To view, visit https://gerrit.osmocom.org/11920 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Gerrit-Change-Number: 11920 Gerrit-PatchSet: 12 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder (102) Gerrit-Reviewer: Max Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-CC: Stefan Sperling Gerrit-Comment-Date: Tue, 08 Jan 2019 12:00:06 + Gerrit-HasComments: Yes Gerrit-HasLabels: Yes
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Harald Welte has posted comments on this change. ( https://gerrit.osmocom.org/11920 ) Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. Patch Set 12: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/11920 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Gerrit-Change-Number: 11920 Gerrit-PatchSet: 12 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder (102) Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-CC: Stefan Sperling Gerrit-Comment-Date: Mon, 07 Jan 2019 15:16:32 + Gerrit-HasComments: No Gerrit-HasLabels: Yes
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Vadim Yanitskiy has posted comments on this change. ( https://gerrit.osmocom.org/11920 ) Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. Patch Set 11: (7 comments) https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c File src/libmsc/gsm_04_11.c: https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@162 PS11, Line 162: if (sms != NULL) { /* gsm411_send_rp_data() doesn't set trans->sms.sms */ > put the "doesn't set" above the 'if', and the 'Notify... […] Done https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@1147 PS11, Line 1147: > hmm, I sort of expected a TLV structure, but there are no Ts... too late for > that I guess. Please see GSM TS 04.11, Table 7.4/3GPP TS 04.11: RP-DATA message content. https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@1148 PS11, Line 1148:/* Encode RP-DA length */ > OA? Sure, thanks! https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@1154 PS11, Line 1154:memcpy(ptr, sm_rp_oa, sm_rp_oa_len); > Rather use msgb_lv_put()? Done https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@1158 PS11, Line 1158:ptr[0] = 0x00; > msgb_put_u8()? msgb_v_put()? Done https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@1166 PS11, Line 1166:memcpy(ptr, sm_rp_ud, sm_rp_ud_len); > msgb_lv_put()? Done https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@1170 PS11, Line 1170:return gsm411_rp_sendmsg(>sms.smr_inst, msg, > API wise it would be better to have separate functions that encode and send. > […] I think we can split it later. At the moment I don't see any use cases for a separate encoding function... -- To view, visit https://gerrit.osmocom.org/11920 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Gerrit-Change-Number: 11920 Gerrit-PatchSet: 11 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder (102) Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-CC: Stefan Sperling Gerrit-Comment-Date: Sat, 05 Jan 2019 13:46:59 + Gerrit-HasComments: Yes Gerrit-HasLabels: No
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Hello Neels Hofmeyr, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/11920 to look at the new patch set (#12). Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. libmsc/gsm_04_11.c: accept MT SMS messages over GSUP Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Depends-on: (core) Ibe325c64ae2d6c626b232533bb4cbc65fc2b5d71 Depends-on: (OsmoHLR) I0589ff27933e9bca2bcf93b8259004935778db8f Related Change-Id: (TTCN) I63a25c8366cce0852df6b628365151661a22a25f Related: OS#3587 --- M include/osmocom/msc/gsm_04_11.h M include/osmocom/msc/gsm_04_11_gsup.h M src/libmsc/gsm_04_08.c M src/libmsc/gsm_04_11.c M src/libmsc/gsm_04_11_gsup.c 5 files changed, 164 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/20/11920/12 -- To view, visit https://gerrit.osmocom.org/11920 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Gerrit-Change-Number: 11920 Gerrit-PatchSet: 12 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder (102) Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-CC: Stefan Sperling
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Neels Hofmeyr has posted comments on this change. ( https://gerrit.osmocom.org/11920 ) Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. Patch Set 11: Code-Review-1 (8 comments) (in general, I think you can still drop a lot of comments ... if you can be bothered) https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_08.c File src/libmsc/gsm_04_08.c: https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_08.c@1802 PS11, Line 1802:/* GSM 04.11 code implementing MT SMS */ (a comment is always about "code implementing") https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c File src/libmsc/gsm_04_11.c: https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@162 PS11, Line 162: if (sms != NULL) { /* gsm411_send_rp_data() doesn't set trans->sms.sms */ put the "doesn't set" above the 'if', and the 'Notify...' inside the 'if {' body https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@1147 PS11, Line 1147: hmm, I sort of expected a TLV structure, but there are no Ts... too late for that I guess. https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@1148 PS11, Line 1148:/* Encode RP-DA length */ OA? https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@1154 PS11, Line 1154:memcpy(ptr, sm_rp_oa, sm_rp_oa_len); Rather use msgb_lv_put()? https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@1158 PS11, Line 1158:ptr[0] = 0x00; msgb_put_u8()? msgb_v_put()? https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@1166 PS11, Line 1166:memcpy(ptr, sm_rp_ud, sm_rp_ud_len); msgb_lv_put()? https://gerrit.osmocom.org/#/c/11920/11/src/libmsc/gsm_04_11.c@1170 PS11, Line 1170:return gsm411_rp_sendmsg(>sms.smr_inst, msg, API wise it would be better to have separate functions that encode and send. I often faced inflexibility with code that cannot encode without also sending, for example during unit testing. -- To view, visit https://gerrit.osmocom.org/11920 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Gerrit-Change-Number: 11920 Gerrit-PatchSet: 11 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder (102) Gerrit-Reviewer: Neels Hofmeyr Gerrit-Reviewer: Vadim Yanitskiy Gerrit-CC: Stefan Sperling Gerrit-Comment-Date: Sat, 05 Jan 2019 04:28:14 + Gerrit-HasComments: Yes Gerrit-HasLabels: Yes
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Vadim Yanitskiy has posted comments on this change. ( https://gerrit.osmocom.org/11920 ) Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. Patch Set 8: (3 comments) https://gerrit.osmocom.org/#/c/11920/8/src/libmsc/gsm_04_11.c File src/libmsc/gsm_04_11.c: https://gerrit.osmocom.org/#/c/11920/8/src/libmsc/gsm_04_11.c@802 PS8, Line 802: goto sms_over_gsup; > Could put this right here on this line: return > gsm411_gsup_mt_fwd_sm_res(trans, rph->msg_ref); […] Done https://gerrit.osmocom.org/#/c/11920/8/src/libmsc/gsm_04_11.c@825 PS8, Line 825: return gsm411_gsup_mt_fwd_sm_res(trans, rph->msg_ref); > And then we could remove this part. Done https://gerrit.osmocom.org/#/c/11920/8/src/libmsc/gsm_04_11.c@845 PS8, Line 845: goto sms_over_gsup; > Same here, just use the patern if (.. […] Done -- To view, visit https://gerrit.osmocom.org/11920 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Gerrit-Change-Number: 11920 Gerrit-PatchSet: 8 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder (102) Gerrit-Reviewer: Vadim Yanitskiy Gerrit-CC: Stefan Sperling Gerrit-Comment-Date: Thu, 20 Dec 2018 16:00:25 + Gerrit-HasComments: Yes Gerrit-HasLabels: No
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/11920 to look at the new patch set (#9). Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. libmsc/gsm_04_11.c: accept MT SMS messages over GSUP Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Depends-on: (core) Ibe325c64ae2d6c626b232533bb4cbc65fc2b5d71 Depends-on: (OsmoHLR) I0589ff27933e9bca2bcf93b8259004935778db8f Related Change-Id: (TTCN) I63a25c8366cce0852df6b628365151661a22a25f Related: OS#3587 --- M include/osmocom/msc/gsm_04_11.h M include/osmocom/msc/gsm_04_11_gsup.h M src/libmsc/gsm_04_08.c M src/libmsc/gsm_04_11.c M src/libmsc/gsm_04_11_gsup.c 5 files changed, 174 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/20/11920/9 -- To view, visit https://gerrit.osmocom.org/11920 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Gerrit-Change-Number: 11920 Gerrit-PatchSet: 9 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder (102) Gerrit-CC: Stefan Sperling
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Stefan Sperling has posted comments on this change. ( https://gerrit.osmocom.org/11920 ) Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. Patch Set 8: (3 comments) https://gerrit.osmocom.org/#/c/11920/8/src/libmsc/gsm_04_11.c File src/libmsc/gsm_04_11.c: https://gerrit.osmocom.org/#/c/11920/8/src/libmsc/gsm_04_11.c@802 PS8, Line 802: goto sms_over_gsup; Could put this right here on this line: return gsm411_gsup_mt_fwd_sm_res(trans, rph->msg_ref); Instead of using 'goto'. https://gerrit.osmocom.org/#/c/11920/8/src/libmsc/gsm_04_11.c@825 PS8, Line 825: return gsm411_gsup_mt_fwd_sm_res(trans, rph->msg_ref); And then we could remove this part. https://gerrit.osmocom.org/#/c/11920/8/src/libmsc/gsm_04_11.c@845 PS8, Line 845: goto sms_over_gsup; Same here, just use the patern if (..) return foo(); -- To view, visit https://gerrit.osmocom.org/11920 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Gerrit-Change-Number: 11920 Gerrit-PatchSet: 8 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder (102) Gerrit-CC: Stefan Sperling Gerrit-Comment-Date: Thu, 20 Dec 2018 11:35:22 + Gerrit-HasComments: Yes Gerrit-HasLabels: No
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Vadim Yanitskiy has posted comments on this change. ( https://gerrit.osmocom.org/11920 ) Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. Set Ready For Review -- To view, visit https://gerrit.osmocom.org/11920 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Gerrit-Change-Number: 11920 Gerrit-PatchSet: 7 Gerrit-Owner: Vadim Yanitskiy Gerrit-Reviewer: Jenkins Builder (102) Gerrit-Comment-Date: Wed, 19 Dec 2018 18:47:30 + Gerrit-HasComments: No Gerrit-HasLabels: No
Change in osmo-msc[master]: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP
Vadim Yanitskiy has uploaded this change for review. ( https://gerrit.osmocom.org/11920 Change subject: libmsc/gsm_04_11.c: accept MT SMS messages over GSUP .. libmsc/gsm_04_11.c: accept MT SMS messages over GSUP Change-Id: I57357982ca0e51f6722c24a4aa1d0fb3e6caef88 Depends-on: (core) Ic37f3b2114b8095cfce22977e67133b9103942e3 Related: OS#3587 --- M include/osmocom/msc/gsm_04_11.h M include/osmocom/msc/gsm_04_11_gsup.h M src/libmsc/gsm_04_08.c M src/libmsc/gsm_04_11.c M src/libmsc/gsm_04_11_gsup.c 5 files changed, 177 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/20/11920/1 diff --git a/include/osmocom/msc/gsm_04_11.h b/include/osmocom/msc/gsm_04_11.h index 3997ab2..4310115 100644 --- a/include/osmocom/msc/gsm_04_11.h +++ b/include/osmocom/msc/gsm_04_11.h @@ -42,6 +42,10 @@ int gsm411_send_sms(struct gsm_network *net, struct vlr_subscr *vsub, struct gsm_sms *sms); +int gsm411_send_rp_data(struct gsm_network *net, struct vlr_subscr *vsub, + size_t sm_rp_oa_len, const uint8_t *sm_rp_oa, + size_t sm_rp_ud_len, const uint8_t *sm_rp_ud); + void gsm411_sapi_n_reject(struct gsm_subscriber_connection *conn); int gsm411_send_rp_ack(struct gsm_trans *trans, uint8_t msg_ref); diff --git a/include/osmocom/msc/gsm_04_11_gsup.h b/include/osmocom/msc/gsm_04_11_gsup.h index 82f575d..9c6f2fb 100644 --- a/include/osmocom/msc/gsm_04_11_gsup.h +++ b/include/osmocom/msc/gsm_04_11_gsup.h @@ -13,3 +13,9 @@ uint8_t sm_rp_mr, uint8_t *sm_rp_da, uint8_t sm_rp_da_len); int gsm411_gsup_mo_handler(struct vlr_subscr *vsub, struct osmo_gsup_message *gsup_msg); + +int gsm411_gsup_mt_fwd_sm_res(struct gsm_trans *trans, uint8_t sm_rp_mr); +int gsm411_gsup_mt_fwd_sm_err(struct gsm_trans *trans, + uint8_t sm_rp_mr, uint8_t cause); +int gsm411_gsup_mt_handler(struct vlr_subscr *vsub, + struct osmo_gsup_message *gsup_msg); diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 161585c..87e4cb1 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -1792,6 +1792,11 @@ DEBUGP(DMSC, "Routed to GSM 04.11 MO handler\n"); return gsm411_gsup_mo_handler(vsub, gsup_msg); + /* GSM 04.11 code implementing MT SMS */ + case OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST: + DEBUGP(DMSC, "Routed to GSM 04.11 MT handler\n"); + return gsm411_gsup_mt_handler(vsub, gsup_msg); + default: LOGP(DMM, LOGL_ERROR, "No handler found for %s, dropping message...\n", osmo_gsup_message_type_name(gsup_msg->message_type)); diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c index 93c2ea7..efaf2ae 100644 --- a/src/libmsc/gsm_04_11.c +++ b/src/libmsc/gsm_04_11.c @@ -159,9 +159,11 @@ GSM411_MMSMS_REL_IND, NULL, 0); /* Notify the SMSqueue and free stored SMS */ - send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, event); - trans->sms.sms = NULL; - sms_free(sms); + if (sms != NULL) { /* gsm411_send_rp_data() doesn't set trans->sms.sms */ + send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, event); + trans->sms.sms = NULL; + sms_free(sms); + } /* Destroy this transaction */ trans_free(trans); @@ -798,6 +800,9 @@ * successfully received a SMS. We can now safely mark it as * transmitted */ + if (trans->net->enable_sms_over_gsup) + goto sms_over_gsup; + if (!sms) { LOGP(DLSMS, LOGL_ERROR, "RX RP-ACK but no sms in transaction?!?\n"); return gsm411_send_rp_error(trans, rph->msg_ref, @@ -816,6 +821,10 @@ trans->sms.sms = NULL; return 0; + +sms_over_gsup: + /* Forward towards ESME via GSUP */ + return gsm411_gsup_mt_fwd_sm_res(trans, rph->msg_ref); } static int gsm411_rx_rp_error(struct gsm_trans *trans, @@ -834,6 +843,9 @@ vlr_subscr_name(trans->conn->vsub), cause_len, cause, get_value_string(gsm411_rp_cause_strs, cause)); + if (trans->net->enable_sms_over_gsup) + goto sms_over_gsup; + if (!sms) { LOGP(DLSMS, LOGL_ERROR, "RX RP-ERR, but no sms in transaction?!?\n"); @@ -859,6 +871,10 @@ trans->sms.sms = NULL; return 0; + +sms_over_gsup: + /* Forward towards ESME via GSUP */ + return gsm411_gsup_mt_fwd_sm_err(trans, rph->msg_ref, cause); } static int gsm411_rx_rp_smma(struct msgb *msg, struct gsm_trans *trans, @@ -1115,6 +1131,54 @@ GSM411_SM_RL_DATA_REQ); } +/* Low-level function to send raw RP-DATA to a given subscriber */ +int gsm411_send_rp_data(struct