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/11068 Change subject: GSUP/SM: (WIP) introduce new SRI_FOR_SM message ...................................................................... GSUP/SM: (WIP) introduce new SRI_FOR_SM message According to 3GPP TS 29.002, section 12.1 the SRI_FOR_SM message (a.k.a MAP-SEND-ROUTING-INFO-FOR-SM) is used to retrieve the routing information needed for routing a short message to the servicing node of subscriber. Please note that only the 'must-have' fields of SRI_FOR_SM are introduced by this change, in particular: - GSUP_MSGT_SRI_FOR_SM_REQUEST (MAP Request) - GSUP_MSISDN_IE - GSUP_SM_RP_RPI_IE - GSUP_SMSC_ADDR_IE - GSUP_MSGT_SRI_FOR_SM_RESULT (MAP Response) - GSUP_IMSI_IE - GSUP_NODE_ADDR_IE - GSUP_MSGT_SRI_FOR_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 (see GSUP_SESSION_*_IE). Change-Id: I4303dc817a5f8ee97b78d840672c443a6eddb332 --- M include/osmocom/gsm/gsup.h M src/gsm/gsup.c 2 files changed, 51 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/68/11068/1 diff --git a/include/osmocom/gsm/gsup.h b/include/osmocom/gsm/gsup.h index 0ef5a75..bed61ae 100644 --- a/include/osmocom/gsm/gsup.h +++ b/include/osmocom/gsm/gsup.h @@ -88,6 +88,11 @@ /*! Supplementary Services payload */ OSMO_GSUP_SS_INFO_IE = 0x35, + + /* SM related IEs (see 3GPP TS 29.002, section 7.6.8) */ + OSMO_GSUP_SMSC_ADDR_IE = 0x40, + OSMO_GSUP_NODE_ADDR_IE = 0x41, + OSMO_GSUP_SM_RP_RPI_IE = 0x42, }; /*! GSUP message type */ @@ -121,6 +126,11 @@ OSMO_GSUP_MSGT_PROC_SS_REQUEST = 0b00100000, OSMO_GSUP_MSGT_PROC_SS_ERROR = 0b00100001, OSMO_GSUP_MSGT_PROC_SS_RESULT = 0b00100010, + + /* FIXME: 0b001001? any ideas? */ + OSMO_GSUP_MSGT_SRI_FOR_SM_REQUEST = 0b00100100, + OSMO_GSUP_MSGT_SRI_FOR_SM_ERROR = 0b00100101, + OSMO_GSUP_MSGT_SRI_FOR_SM_RESULT = 0b00100110, }; #define OSMO_GSUP_IS_MSGT_REQUEST(msgt) (((msgt) & 0b00000011) == 0b00) @@ -213,6 +223,14 @@ /*! ASN.1 encoded MAP payload for Supplementary Services */ uint8_t *ss_info; size_t ss_info_len; + + /*! SMS (Short Message Service) parameters */ + const uint8_t *smsc_addr; + size_t smsc_addr_len; + const uint8_t *node_addr; + size_t node_addr_len; + /*! HACK: SM-RP-RPI is (<0 / 0 / >0) => (false / omited / true) */ + int sm_rp_rpi; }; int osmo_gsup_decode(const uint8_t *data, size_t data_len, diff --git a/src/gsm/gsup.c b/src/gsm/gsup.c index 9c2f817..22e26f1 100644 --- a/src/gsm/gsup.c +++ b/src/gsm/gsup.c @@ -67,6 +67,10 @@ OSMO_VALUE_STRING(OSMO_GSUP_MSGT_PROC_SS_ERROR), OSMO_VALUE_STRING(OSMO_GSUP_MSGT_PROC_SS_RESULT), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_SRI_FOR_SM_REQUEST), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_SRI_FOR_SM_ERROR), + OSMO_VALUE_STRING(OSMO_GSUP_MSGT_SRI_FOR_SM_RESULT), + { 0, NULL } }; @@ -434,6 +438,20 @@ gsup_msg->ss_info_len = value_len; break; + case OSMO_GSUP_SMSC_ADDR_IE: + gsup_msg->smsc_addr = value; + gsup_msg->smsc_addr_len = value_len; + break; + + case OSMO_GSUP_NODE_ADDR_IE: + gsup_msg->node_addr = value; + gsup_msg->node_addr_len = value_len; + break; + + case OSMO_GSUP_SM_RP_RPI_IE: + gsup_msg->sm_rp_rpi = (*value) ? 1 : -1; + break; + default: LOGP(DLGSUP, LOGL_NOTICE, "GSUP IE type %d unknown\n", iei); @@ -626,6 +644,21 @@ gsup_msg->ss_info_len, gsup_msg->ss_info); } + if (gsup_msg->smsc_addr) { + msgb_tlv_put(msg, OSMO_GSUP_SMSC_ADDR_IE, + gsup_msg->smsc_addr_len, gsup_msg->smsc_addr); + } + + if (gsup_msg->node_addr) { + msgb_tlv_put(msg, OSMO_GSUP_NODE_ADDR_IE, + gsup_msg->node_addr_len, gsup_msg->node_addr); + } + + if (gsup_msg->sm_rp_rpi != 0) { + u8 = gsup_msg->sm_rp_rpi > 0 ? 1 : 0; + msgb_tlv_put(msg, OSMO_GSUP_SM_RP_RPI_IE, sizeof(u8), &u8); + } + return 0; } -- To view, visit https://gerrit.osmocom.org/11068 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: I4303dc817a5f8ee97b78d840672c443a6eddb332 Gerrit-Change-Number: 11068 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/02ffda31/attachment.htm>