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/.
Harald Welte gerrit-no-reply at lists.osmocom.org
Review at https://gerrit.osmocom.org/2469
SUA-to-SCCP: Fix use of Called/Calling vs. Src/Dest Address
SUA uses different semantics (source / destination) address, while SCCP
uses Calling/CalledParty. This leads to some confusion. At least in the
CR/CORE and CREF/COREF case, the CallingParty equals the SRC_ADDR.
Change-Id: I1c641aac7b53c6de7c4e369aaf3004523bd85936
---
M src/sccp2sua.c
1 file changed, 24 insertions(+), 4 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/69/2469/1
diff --git a/src/sccp2sua.c b/src/sccp2sua.c
index 753d9a4..499b55b 100644
--- a/src/sccp2sua.c
+++ b/src/sccp2sua.c
@@ -559,7 +559,7 @@
* \param msg caller-provided message buffer to which option is to be appended
* \param[in] opt xUA option/IE (messge part) to be converted+added
* \returns 0 in case of success; negative on error */
-static int sccp_msg_add_sua_opt(struct msgb *msg, struct xua_msg_part *opt)
+static int sccp_msg_add_sua_opt(enum sccp_message_types type, struct msgb *msg, struct xua_msg_part *opt)
{
uint32_t tmp32;
uint8_t pnc, *lenptr;
@@ -575,7 +575,17 @@
msgb_put_u24be(msg, xua_msg_part_get_u32(opt));
break;
case SUA_IEI_DEST_ADDR:
- msgb_put_u8(msg, SCCP_PNC_CALLED_PARTY_ADDRESS);
+ switch (type) {
+ case SCCP_MSG_TYPE_CC:
+ case SCCP_MSG_TYPE_CREF:
+ /* The Destination of a CC message is the
+ * originator of the connection: Calling Party */
+ msgb_put_u8(msg, SCCP_PNC_CALLING_PARTY_ADDRESS);
+ break;
+ default:
+ msgb_put_u8(msg, SCCP_PNC_CALLED_PARTY_ADDRESS);
+ break;
+ }
lenptr = msgb_put(msg, 1);
rc = sua_addr_to_sccp(msg, opt);
if (rc < 0)
@@ -583,7 +593,17 @@
*lenptr = rc;
break;
case SUA_IEI_SRC_ADDR:
- msgb_put_u8(msg, SCCP_PNC_CALLING_PARTY_ADDRESS);
+ switch (type) {
+ case SCCP_MSG_TYPE_CC:
+ case SCCP_MSG_TYPE_CREF:
+ /* The Source of a CC message is the
+ * responder of the connection: Called Party */
+ msgb_put_u8(msg, SCCP_PNC_CALLED_PARTY_ADDRESS);
+ break;
+ default:
+ msgb_put_u8(msg, SCCP_PNC_CALLING_PARTY_ADDRESS);
+ break;
+ }
lenptr = msgb_put(msg, 1);
rc = sua_addr_to_sccp(msg, opt);
if (rc < 0)
@@ -935,7 +955,7 @@
* that is already present in mandatory fixed or
* mandatory variable parts of the header */
if (!sccp_is_mandatory(type, part) && sccp_option_permitted(type, part))
- sccp_msg_add_sua_opt(msg, part);
+ sccp_msg_add_sua_opt(type, msg, part);
}
msgb_put_u8(msg, SCCP_PNC_END_OF_OPTIONAL);
--
To view, visit https://gerrit.osmocom.org/2469
To unsubscribe, visit https://gerrit.osmocom.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1c641aac7b53c6de7c4e369aaf3004523bd85936
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>