This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Vadim Yanitskiy gerrit-no-reply at lists.osmocom.orgVadim Yanitskiy has uploaded this change for review. ( https://gerrit.osmocom.org/11062 Change subject: library/GSUP_Types.ttcn: add MO/MT FORWARD_SM messages ...................................................................... library/GSUP_Types.ttcn: add MO/MT FORWARD_SM messages According to 3GPP TS 29.002, sections 12.2 and 12.9 the FORWARD_SM messages (a.k.a MAP-*-FORWARD-SHORT-MESSAGE) are used to forward MO/MT SMS messages. Please note that only the 'must-have' fields of both message types are introduced by this change, in particular: - OSMO_GSUP_MSGT_{MO|MT}_FORWARD_SM_REQUEST (MAP Request) - OSMO_GSUP_SM_RP_DA_IE - OSMO_GSUP_SM_RP_OA_IE - OSMO_GSUP_SM_RP_UI_IE - OSMO_GSUP_MSGT_{MO|MT}_FORWARD_SM_RESULT (MAP ACK) - OSMO_GSUP_SM_RP_UI_IE - OSMO_GSUP_MSGT_{MO|MT}_FORWARD_SM_ERROR (MAP Response) - GSUP_CAUSE_IE (MAP User Error, see 7.6.1) Since there is no TCAP layer in GSUP, the context is emulated using the session management IEs, in particular using the GSUP_SESSION_ID_IE. The session state IE isn't used due to the 'REQ-RSP' nature of this message. Change-Id: Ibf49474a81235096c032ea21f217170f523bd94e --- M library/GSUP_Types.ttcn 1 file changed, 310 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/62/11062/1 diff --git a/library/GSUP_Types.ttcn b/library/GSUP_Types.ttcn index fed13bf..a7c4732 100644 --- a/library/GSUP_Types.ttcn +++ b/library/GSUP_Types.ttcn @@ -48,7 +48,10 @@ /* SM related IEs (see 3GPP TS 29.002, section 7.6.8) */ OSMO_GSUP_SMSC_ADDR_IE ('40'O), OSMO_GSUP_NODE_ADDR_IE ('41'O), - OSMO_GSUP_SM_RP_RPI_IE ('42'O) + OSMO_GSUP_SM_RP_RPI_IE ('42'O), + OSMO_GSUP_SM_RP_DA_IE ('43'O), + OSMO_GSUP_SM_RP_OA_IE ('44'O), + OSMO_GSUP_SM_RP_UI_IE ('45'O) } with { variant "FIELDLENGTH(8)" }; type enumerated GSUP_MessageType { @@ -85,7 +88,15 @@ /* FIXME: 0b001001? any ideas? */ OSMO_GSUP_MSGT_SRI_FOR_SM_REQUEST ('00100100'B), OSMO_GSUP_MSGT_SRI_FOR_SM_ERROR ('00100101'B), - OSMO_GSUP_MSGT_SRI_FOR_SM_RESULT ('00100110'B) + OSMO_GSUP_MSGT_SRI_FOR_SM_RESULT ('00100110'B), + + OSMO_GSUP_MSGT_MO_FORWARD_SM_REQUEST ('00101000'B), + OSMO_GSUP_MSGT_MO_FORWARD_SM_ERROR ('00101001'B), + OSMO_GSUP_MSGT_MO_FORWARD_SM_RESULT ('00101010'B), + + OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST ('00110000'B), + OSMO_GSUP_MSGT_MT_FORWARD_SM_ERROR ('00110001'B), + OSMO_GSUP_MSGT_MT_FORWARD_SM_RESULT ('00110010'B) } with { variant "FIELDLENGTH(8)" }; type enumerated GSUP_CancelType { @@ -141,6 +152,9 @@ smsc_addr, tag = OSMO_GSUP_SMSC_ADDR_IE; node_addr, tag = OSMO_GSUP_NODE_ADDR_IE; sm_rp_rpi, tag = OSMO_GSUP_SM_RP_RPI_IE; + sm_rp_da, tag = OSMO_GSUP_SM_RP_DA_IE; + sm_rp_oa, tag = OSMO_GSUP_SM_RP_OA_IE; + sm_rp_ui, tag = OSMO_GSUP_SM_RP_UI_IE; )" }; @@ -178,7 +192,10 @@ /* Short Message Service */ octetstring smsc_addr, /* FIXME: octetstring? */ octetstring node_addr, /* FIXME: octetstring? */ - boolean sm_rp_rpi /* FIXME: boolean? */ + boolean sm_rp_rpi, /* FIXME: boolean? */ + GSUP_SM_RP_DA sm_rp_da, + GSUP_SM_RP_OA sm_rp_oa, + octetstring sm_rp_ui }; type record GSUP_PDU { @@ -655,6 +672,140 @@ } } +/** + * SM-RP-DA represents the SM Destination Address, see 7.6.8.1. + * It can be either of the following: + * - IMSI + * - LMSI (not implemented) + * - MSISDN + * - roaming number (not implemented) + * - service centre address + */ +type union GSUP_SM_RP_DA_IeValue { + hexstring imsi, + hexstring msisdn, + octetstring smsc_addr +}; + +type record GSUP_SM_RP_DA { + GSUP_IEI tag, + GSUP_SM_RP_DA_IeValue val +} with { variant (val) "CROSSTAG(imsi, tag = OSMO_GSUP_IMSI_IE; + msisdn, tag = OSMO_GSUP_MSISDN_IE; + smsc_addr, tag = OSMO_GSUP_SMSC_ADDR_IE; + )" +}; + +template (value) GSUP_SM_RP_DA ts_GSUP_SM_RP_DA_IMSI(hexstring imsi) := { + tag := OSMO_GSUP_IMSI_IE, + val := { imsi := imsi } +} +template GSUP_SM_RP_DA tr_GSUP_SM_RP_DA_IMSI(template hexstring imsi) := { + tag := OSMO_GSUP_IMSI_IE, + val := { imsi := imsi } +} + +template (value) GSUP_SM_RP_DA ts_GSUP_SM_RP_DA_MSISDN(hexstring msisdn) := { + tag := OSMO_GSUP_MSISDN_IE, + val := { msisdn := msisdn } +} +template GSUP_SM_RP_DA tr_GSUP_SM_RP_DA_MSISDN(template hexstring msisdn) := { + tag := OSMO_GSUP_MSISDN_IE, + val := { msisdn := msisdn } +} + +template (value) GSUP_SM_RP_DA ts_GSUP_SM_RP_DA_SMSC_ADDR(octetstring smsc_addr) := { + tag := OSMO_GSUP_SMSC_ADDR_IE, + val := { smsc_addr := smsc_addr } +} +template GSUP_SM_RP_DA tr_GSUP_SM_RP_DA_SMSC_ADDR(template octetstring smsc_addr) := { + tag := OSMO_GSUP_SMSC_ADDR_IE, + val := { smsc_addr := smsc_addr } +} + +template (value) GSUP_IE ts_GSUP_IE_SM_RP_DA(GSUP_SM_RP_DA val) := { + tag := OSMO_GSUP_SM_RP_DA_IE, + len := 0, /* overwritten */ + val := { + sm_rp_da := val + } +} +template GSUP_IE tr_GSUP_IE_SM_RP_DA(template GSUP_SM_RP_DA val) := { + tag := OSMO_GSUP_SM_RP_DA_IE, + len := ?, + val := { + sm_rp_da := val + } +} + +/** + * SM-RP-OA represents the SM Originating Address, see 7.6.8.2. + * It can be either of the following: + * - MSISDN + * - service centre address + */ +type union GSUP_SM_RP_OA_IeValue { + hexstring msisdn, + octetstring smsc_addr +}; + +type record GSUP_SM_RP_OA { + GSUP_IEI tag, + GSUP_SM_RP_OA_IeValue val +} with { variant (val) "CROSSTAG(msisdn, tag = OSMO_GSUP_MSISDN_IE; + smsc_addr, tag = OSMO_GSUP_SMSC_ADDR_IE; + )" +}; + +template (value) GSUP_SM_RP_OA ts_GSUP_SM_RP_OA_MSISDN(hexstring msisdn) := { + tag := OSMO_GSUP_MSISDN_IE, + val := { msisdn := msisdn } +} +template GSUP_SM_RP_OA tr_GSUP_SM_RP_OA_MSISDN(template hexstring msisdn) := { + tag := OSMO_GSUP_MSISDN_IE, + val := { msisdn := msisdn } +} + +template (value) GSUP_SM_RP_OA ts_GSUP_SM_RP_OA_SMSC_ADDR(octetstring smsc_addr) := { + tag := OSMO_GSUP_SMSC_ADDR_IE, + val := { smsc_addr := smsc_addr } +} +template GSUP_SM_RP_OA tr_GSUP_SM_RP_OA_SMSC_ADDR(template octetstring smsc_addr) := { + tag := OSMO_GSUP_SMSC_ADDR_IE, + val := { smsc_addr := smsc_addr } +} + +template (value) GSUP_IE ts_GSUP_IE_SM_RP_OA(GSUP_SM_RP_OA val) := { + tag := OSMO_GSUP_SM_RP_OA_IE, + len := 0, /* overwritten */ + val := { + sm_rp_oa := val + } +} +template GSUP_IE tr_GSUP_IE_SM_RP_OA(template GSUP_SM_RP_OA val) := { + tag := OSMO_GSUP_SM_RP_OA_IE, + len := ?, + val := { + sm_rp_oa := val + } +} + +/* SM-RP-UI represents the SM TPDU, see 7.6.8.4 */ +template (value) GSUP_IE ts_GSUP_IE_SM_RP_UI(octetstring val) := { + tag := OSMO_GSUP_SM_RP_UI_IE, + len := 0, /* overwritten */ + val := { + sm_rp_ui := val + } +} +template GSUP_IE tr_GSUP_IE_SM_RP_UI(template octetstring val) := { + tag := OSMO_GSUP_SM_RP_UI_IE, + len := ?, + val := { + sm_rp_ui := val + } +} + template (value) GSUP_IE ts_GSUP_IE_SSInfo(octetstring ss) := { tag := OSMO_GSUP_SS_INFO_IE, len := 0, /* overwritten */ @@ -853,6 +1004,162 @@ } ); +template (value) GSUP_PDU ts_GSUP_MO_FORWARD_SM_REQ( + OCT4 sid, /* TCAP TransactionID */ + GSUP_SM_RP_DA sm_rp_da, /* Destination Address, see 7.6.8.1 */ + GSUP_SM_RP_OA sm_rp_oa, /* Originating Address, see 7.6.8.2 */ + octetstring sm_rp_ui /* SM TPDU, see 7.6.8.4 */ +) := ts_GSUP( + OSMO_GSUP_MSGT_MO_FORWARD_SM_REQUEST, + { + /* TODO: optional IMSI */ + valueof(ts_GSUP_IE_SessionId(sid)), + valueof(ts_GSUP_IE_SM_RP_DA(sm_rp_da)), + valueof(ts_GSUP_IE_SM_RP_OA(sm_rp_oa)), + valueof(ts_GSUP_IE_SM_RP_UI(sm_rp_ui)) + } +); +template GSUP_PDU tr_GSUP_MO_FORWARD_SM_REQ( + template OCT4 sid := ?, /* TCAP TransactionID */ + template GSUP_SM_RP_DA sm_rp_da, /* Destination Address, see 7.6.8.1 */ + template GSUP_SM_RP_OA sm_rp_oa, /* Originating Address, see 7.6.8.2 */ + template octetstring sm_rp_ui /* SM TPDU, see 7.6.8.4 */ +) := tr_GSUP( + OSMO_GSUP_MSGT_MO_FORWARD_SM_REQUEST, + { + /* TODO: optional IMSI */ + tr_GSUP_IE_SessionId(sid), + tr_GSUP_IE_SM_RP_DA(sm_rp_da), + tr_GSUP_IE_SM_RP_OA(sm_rp_oa), + tr_GSUP_IE_SM_RP_UI(sm_rp_ui) + } +); + +template (value) GSUP_PDU ts_GSUP_MO_FORWARD_SM_RES( + OCT4 sid, /* TCAP TransactionID */ + octetstring sm_rp_ui /* SM TPDU, see 7.6.8.4 */ +) := ts_GSUP( + OSMO_GSUP_MSGT_MO_FORWARD_SM_RESULT, + { + valueof(ts_GSUP_IE_SessionId(sid)), + valueof(ts_GSUP_IE_SM_RP_UI(sm_rp_ui)) + } +); +template GSUP_PDU tr_GSUP_MO_FORWARD_SM_RES( + template OCT4 sid := ?, /* TCAP TransactionID */ + template octetstring sm_rp_ui /* SM TPDU, see 7.6.8.4 */ +) := tr_GSUP( + OSMO_GSUP_MSGT_MO_FORWARD_SM_RESULT, + { + tr_GSUP_IE_SessionId(sid), + tr_GSUP_IE_SM_RP_UI(sm_rp_ui) + } +); + +template (value) GSUP_PDU ts_GSUP_MO_FORWARD_SM_ERR( + OCT4 sid, /* TCAP TransactionID */ + integer cause /* User error, see 12.2.3 */ +) := ts_GSUP( + OSMO_GSUP_MSGT_MO_FORWARD_SM_ERROR, + { + valueof(ts_GSUP_IE_SessionId(sid)), + valueof(ts_GSUP_IE_Cause(cause)) + } +); +template GSUP_PDU tr_GSUP_MO_FORWARD_SM_ERR( + template OCT4 sid := ?, /* TCAP TransactionID */ + template integer cause := ? /* User error, see 12.2.3 */ +) := tr_GSUP( + OSMO_GSUP_MSGT_MO_FORWARD_SM_ERROR, + { + tr_GSUP_IE_SessionId(sid), + tr_GSUP_IE_Cause(cause) + } +); + +template (value) GSUP_PDU ts_GSUP_MT_FORWARD_SM_REQ( + OCT4 sid, /* TCAP TransactionID */ + GSUP_SM_RP_DA sm_rp_da, /* Destination Address, see 7.6.8.1 */ + GSUP_SM_RP_OA sm_rp_oa, /* Originating Address, see 7.6.8.2 */ + octetstring sm_rp_ui /* SM TPDU, see 7.6.8.4 */ +) := ts_GSUP( + OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST, + { + /** + * TODO: add MT-specific fields (and IEs): + * - moreMessagesToSend + * - smDeliveryTimer + * - smDeliveryStartTime + */ + valueof(ts_GSUP_IE_SessionId(sid)), + valueof(ts_GSUP_IE_SM_RP_DA(sm_rp_da)), + valueof(ts_GSUP_IE_SM_RP_OA(sm_rp_oa)), + valueof(ts_GSUP_IE_SM_RP_UI(sm_rp_ui)) + } +); +template GSUP_PDU tr_GSUP_MT_FORWARD_SM_REQ( + template OCT4 sid := ?, /* TCAP TransactionID */ + template GSUP_SM_RP_DA sm_rp_da, /* Destination Address, see 7.6.8.1 */ + template GSUP_SM_RP_OA sm_rp_oa, /* Originating Address, see 7.6.8.2 */ + template octetstring sm_rp_ui /* SM TPDU, see 7.6.8.4 */ +) := tr_GSUP( + OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST, + { + /** + * TODO: add MT-specific fields (and IEs): + * - moreMessagesToSend + * - smDeliveryTimer + * - smDeliveryStartTime + */ + tr_GSUP_IE_SessionId(sid), + tr_GSUP_IE_SM_RP_DA(sm_rp_da), + tr_GSUP_IE_SM_RP_OA(sm_rp_oa), + tr_GSUP_IE_SM_RP_UI(sm_rp_ui) + } +); + +template (value) GSUP_PDU ts_GSUP_MT_FORWARD_SM_RES( + OCT4 sid, /* TCAP TransactionID */ + octetstring sm_rp_ui /* SM TPDU, see 7.6.8.4 */ +) := ts_GSUP( + OSMO_GSUP_MSGT_MT_FORWARD_SM_RESULT, + { + valueof(ts_GSUP_IE_SessionId(sid)), + valueof(ts_GSUP_IE_SM_RP_UI(sm_rp_ui)) + } +); +template GSUP_PDU tr_GSUP_MT_FORWARD_SM_RES( + template OCT4 sid := ?, /* TCAP TransactionID */ + template octetstring sm_rp_ui /* SM TPDU, see 7.6.8.4 */ +) := tr_GSUP( + OSMO_GSUP_MSGT_MT_FORWARD_SM_RESULT, + { + tr_GSUP_IE_SessionId(sid), + tr_GSUP_IE_SM_RP_UI(sm_rp_ui) + } +); + +template (value) GSUP_PDU ts_GSUP_MT_FORWARD_SM_ERR( + OCT4 sid, /* TCAP TransactionID */ + integer cause /* User error, see 12.9.3 */ +) := ts_GSUP( + OSMO_GSUP_MSGT_MT_FORWARD_SM_ERROR, + { + valueof(ts_GSUP_IE_SessionId(sid)), + valueof(ts_GSUP_IE_Cause(cause)) + } +); +template GSUP_PDU tr_GSUP_MT_FORWARD_SM_ERR( + template OCT4 sid := ?, /* TCAP TransactionID */ + template integer cause := ? /* User error, see 12.9.3 */ +) := tr_GSUP( + OSMO_GSUP_MSGT_MT_FORWARD_SM_ERROR, + { + tr_GSUP_IE_SessionId(sid), + tr_GSUP_IE_Cause(cause) + } +); + function f_gsup_find_ie(GSUP_PDU msg, GSUP_IEI iei, out GSUP_IeValue ret) return boolean { for (var integer i := 0; i < sizeof(msg.ies); i := i+1) { if (msg.ies[i].tag == iei) { -- To view, visit https://gerrit.osmocom.org/11062 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: Ibf49474a81235096c032ea21f217170f523bd94e Gerrit-Change-Number: 11062 Gerrit-PatchSet: 1 Gerrit-Owner: Vadim Yanitskiy <axilirator at gmail.com> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180923/d0cad413/attachment.htm>