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>