falconia has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-mgw/+/37299?usp=email )
Change subject: E1: support HRv1 codec on both 16k and 8k subslots
......................................................................
E1: support HRv1 codec on both 16k and 8k subslots
HRv1 support in OsmoMGW-E1 was previously broken (couldn't work
on either 16k or 8k subslots) because of inconsistency: the TRAU
frame type was set to OSMO_TRAU16_FT_HR, but the TRAU sync pattern
was set to OSMO_TRAU_SYNCP_8_HR. However, now that libosmotrau
has proper support for HRv1 TRAU frame encoding and RTP conversion
in both 16k and 8k formats, drive it correctly in OsmoMGW-E1.
Change-Id: Ifadbdc68905178c6ffdd673a6fb71c18610c9847
---
M src/libosmo-mgcp/mgcp_e1.c
1 file changed, 38 insertions(+), 6 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/99/37299/1
diff --git a/src/libosmo-mgcp/mgcp_e1.c b/src/libosmo-mgcp/mgcp_e1.c
index 20aff95..28d943d 100644
--- a/src/libosmo-mgcp/mgcp_e1.c
+++ b/src/libosmo-mgcp/mgcp_e1.c
@@ -467,9 +467,17 @@
return OSMO_TRAU16_FT_FR;
else if (strcmp(sdp_subtype_name, "GSM-EFR") == 0)
return OSMO_TRAU16_FT_EFR;
- else if (strcmp(sdp_subtype_name, "GSM-HR-08") == 0)
- return OSMO_TRAU16_FT_HR;
- else if (strcmp(sdp_subtype_name, "AMR") == 0) {
+ else if (strcmp(sdp_subtype_name, "GSM-HR-08") == 0) {
+ if (i460_rate == OSMO_I460_RATE_16k)
+ return OSMO_TRAU16_FT_HR;
+ else if (i460_rate == OSMO_I460_RATE_8k)
+ return OSMO_TRAU8_SPEECH;
+ else {
+ LOGPENDP(endp, DE1, LOGL_ERROR,
+ "E1-TRAU-TX: unsupported or illegal I.460 rate for HR\n");
+ return OSMO_TRAU_FT_NONE;
+ }
+ } else if (strcmp(sdp_subtype_name, "AMR") == 0) {
if (i460_rate == OSMO_I460_RATE_8k) {
switch (amr_ft) {
case AMR_4_75:
@@ -502,9 +510,17 @@
return OSMO_TRAU_SYNCP_16_FR_EFR;
else if (strcmp(sdp_subtype_name, "GSM-EFR") == 0)
return OSMO_TRAU_SYNCP_16_FR_EFR;
- else if (strcmp(sdp_subtype_name, "GSM-HR-08") == 0)
- return OSMO_TRAU_SYNCP_8_HR;
- else if (strcmp(sdp_subtype_name, "AMR") == 0) {
+ else if (strcmp(sdp_subtype_name, "GSM-HR-08") == 0) {
+ if (i460_rate == OSMO_I460_RATE_16k)
+ return OSMO_TRAU_SYNCP_16_FR_EFR;
+ else if (i460_rate == OSMO_I460_RATE_8k)
+ return OSMO_TRAU_SYNCP_8_HR;
+ else {
+ LOGPENDP(endp, DE1, LOGL_ERROR,
+ "E1-TRAU-TX: unsupported or illegal I.460 rate for HR\n");
+ return OSMO_TRAU_SYNCP_16_FR_EFR;
+ }
+ } else if (strcmp(sdp_subtype_name, "AMR") == 0) {
if (i460_rate == OSMO_I460_RATE_8k) {
switch (amr_ft) {
case AMR_4_75:
--
To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/37299?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: Ifadbdc68905178c6ffdd673a6fb71c18610c9847
Gerrit-Change-Number: 37299
Gerrit-PatchSet: 1
Gerrit-Owner: falconia <falcon(a)freecalypso.org>
Gerrit-MessageType: newchange
Attention is currently required from: fixeria, neels, pespin.
falconia has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/36975?usp=email )
Change subject: build config: add --disable-ortp option
......................................................................
Patch Set 2:
(1 comment)
File configure.ac:
https://gerrit.osmocom.org/c/libosmo-abis/+/36975/comment/eea85380_2cc3418c
PS2, Line 150: _cflags_save=$CFLAGS
> I believe these API quirks should not be executed if `ENABLE_ORTP = no`?
You are right, thanks for the catch! The current patch works in that the build passes with --disable-ortp and no ortp present, but those now-bogus tests still run, setting variables which then remain unused.
I will revise my patch to conditionalize the tests in question.
--
To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/36975?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Change-Id: I554260483b94d812ac3a957c969a902870f53883
Gerrit-Change-Number: 36975
Gerrit-PatchSet: 2
Gerrit-Owner: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Wed, 26 Jun 2024 16:13:04 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: comment
falconia has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/37286?usp=email )
Change subject: trau_frame: fix 8k decoding
......................................................................
trau_frame: fix 8k decoding
osmo_trau_frame_decode_8k() API was broken for most TRAU frame types:
the processing begins with identifying the sync pattern, but the check
for the leading 8 zeros in HRv1, AMR-low and AMR-6k7 formats was
broken in that it was checking for 16 zero bits instead of 8.
While at it, fix global namespace pollution: the bit8_0[] datum
used in this logic was defined as global when it should be static.
Change-Id: Idabc1283d477473b479f2d76d783ca9aeaf0af5d
---
M src/trau/trau_frame.c
1 file changed, 18 insertions(+), 1 deletion(-)
Approvals:
Jenkins Builder: Verified
fixeria: Looks good to me, approved
diff --git a/src/trau/trau_frame.c b/src/trau/trau_frame.c
index 389495c..98e26da 100644
--- a/src/trau/trau_frame.c
+++ b/src/trau/trau_frame.c
@@ -1360,7 +1360,7 @@
#define TRAU8_FT_AMR_NO_SPEECH_CMR 0x14 /* 1, 0, 1, 0, 0 */
#define TRAU8_FT_AMR_475_515_590 0..7
-const uint8_t bit8_0[16] = { 0, };
+static const uint8_t bit8_0[8] = { 0, };
/*!< check sync pattern for hr/data/oam */
static bool is_hr(const ubit_t *bits)
--
To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/37286?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Change-Id: Idabc1283d477473b479f2d76d783ca9aeaf0af5d
Gerrit-Change-Number: 37286
Gerrit-PatchSet: 1
Gerrit-Owner: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
falconia has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/37285?usp=email )
Change subject: {de,en}code8_hr: fix totally broken functions
......................................................................
{de,en}code8_hr: fix totally broken functions
The functions decode8_hr() and encode8_hr() in trau_frame.c (encoding
and decoding HRv1 TRAU frames in 8 kbit/s format) are available via
osmo_trau_frame_decode_8k() and osmo_trau_frame_encode() public APIs,
but they are not currently used anywhere in Osmocom. (OsmoMGW-E1 has
no working support for HR codec, and there is no support for HRv1-8k
in the TRAU<->RTP layer until next patch in this series.) Study of
the code reveals that these functions were totally broken prior to
this change:
* The movement of Dn bits between trau_bits and fr->d_bits used wrong
offsets for some of the bits (and even missed one group of bits
entirely in the encoding direction), producing garbled codec frames.
* The filling of XCn bits in the encoding direction was likewise
garbled by use of wrong offset.
* When encoding TRAU-UL frames in this format, bit C5 (odd parity)
was set incorrectly.
* The order of bits in fr->crc_bits array (Osmocom internal) was
opposite the order needed for osmo_crc8gen_check_bits() and
osmo_crc8gen_set_bits() functions - contrast with HRv1-16k functions
that use sensible bit order for this fr->crc_bits array.
Given that this HRv1-8k mode within TRAU frame encoding and decoding
API was totally broken and not used anywhere, there are no compatibility
concerns with changing aspects of this API such as CRC bit order.
Change-Id: I7cf0275f2ff212e001db38d7b090f222f292cdb0
---
M src/trau/trau_frame.c
1 file changed, 49 insertions(+), 11 deletions(-)
Approvals:
falconia: Looks good to me, approved
fixeria: Looks good to me, but someone else must approve
laforge: Looks good to me, but someone else must approve
pespin: Looks good to me, but someone else must approve
Jenkins Builder: Verified
diff --git a/src/trau/trau_frame.c b/src/trau/trau_frame.c
index 0be005a..389495c 100644
--- a/src/trau/trau_frame.c
+++ b/src/trau/trau_frame.c
@@ -780,15 +780,14 @@
}
/* CRC0 .. CRC2 */
- fr->crc_bits[2] = trau_bits[82];
- fr->crc_bits[1] = trau_bits[83];
- fr->crc_bits[0] = trau_bits[84];
+ memcpy(fr->crc_bits, trau_bits + 73, 3);
/* D45 .. D48 */
- memcpy(fr->d_bits + d_idx, trau_bits + 85, 4);
+ memcpy(fr->d_bits + d_idx, trau_bits + 76, 4);
+ d_idx += 4;
/* D49 .. D111 */
- for (i = 10; i < 10 + 10; i++) {
+ for (i = 10; i < 10 + 9; i++) {
int offset = i * 8;
memcpy(fr->d_bits + d_idx, trau_bits + offset + 1, 7);
d_idx += 7;
@@ -843,7 +842,7 @@
cbits_out[1] = 0;
cbits_out[2] = 0;
cbits_out[3] = 1;
- cbits_out[4] = 1;
+ cbits_out[4] = 0;
} else {
cbits_out[0] = 0;
cbits_out[1] = 0;
@@ -855,7 +854,7 @@
/* XC1 .. XC2 */
memcpy(trau_bits + 1 * 8 + 6, fr->xc_bits, 2);
/* XC3 .. XC6 */
- memcpy(trau_bits + 2 * 8 + 2, fr->xc_bits, 4);
+ memcpy(trau_bits + 2 * 8 + 2, fr->xc_bits + 2, 4);
/* D1 .. D2 */
memcpy(trau_bits + 2 * 8 + 6, fr->d_bits, 2);
d_idx += 2;
@@ -868,12 +867,14 @@
};
/* CRC0 .. CRC2 */
- trau_bits[82] = fr->crc_bits[2];
- trau_bits[83] = fr->crc_bits[1];
- trau_bits[84] = fr->crc_bits[0];
+ memcpy(trau_bits + 73, fr->crc_bits, 3);
+
+ /* D45 .. D48 */
+ memcpy(trau_bits + 76, fr->d_bits + d_idx, 4);
+ d_idx += 4;
/* D49 .. D111 */
- for (i = 10; i < 10 + 10; i++) {
+ for (i = 10; i < 10 + 9; i++) {
int offset = i * 8;
memcpy(trau_bits + offset + 1, fr->d_bits + d_idx, 7);
d_idx += 7;
--
To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/37285?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Change-Id: I7cf0275f2ff212e001db38d7b090f222f292cdb0
Gerrit-Change-Number: 37285
Gerrit-PatchSet: 1
Gerrit-Owner: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
Attention is currently required from: laforge.
falconia has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/37285?usp=email )
Change subject: {de,en}code8_hr: fix totally broken functions
......................................................................
Patch Set 1: Code-Review+2
(1 comment)
Patchset:
PS1:
> This shows one more reason to have unit tests (see my other related comment to another patch in this […]
I hope you realize that when someone uses their non-funded spare time to make improvements to retronetworking functionality, they cannot be held to the same standard (w.r.t. unit test requirements) as paid employees working on functionality that has commercial backing. That being said, if and when I receive that promised InSite BTS from @osmocom.account@tbspace.de, once I get it running and capture some real-life TRAU-UL traffic (plus real-life TRAU-DL output from the TCSM2 TRAU I already have), I will look into putting together some unit tests based on those real-life traffic examples.
Meanwhile, on the present patch, seeing 3 CR+1's including yours, I will go ahead and CR+2 it, then merge the series in which the other two patches already got CR+2.
--
To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/37285?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Change-Id: I7cf0275f2ff212e001db38d7b090f222f292cdb0
Gerrit-Change-Number: 37285
Gerrit-PatchSet: 1
Gerrit-Owner: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Wed, 26 Jun 2024 15:53:06 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: comment
falconia has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/37129?usp=email )
Change subject: add support for RTP extensions via TW-TS-003
......................................................................
add support for RTP extensions via TW-TS-003
Themyscira Wireless Technical Specification TW-TS-003 defines
a mechanism whereby the CN can ask the BSS (via an extension to
BSSMAP Assignment procedure) to use enhanced RTP payload formats
that are contrary to the stipulations of 3GPP TS 48.103.
However, these RTP extensions need to originate at the BTS,
hence if the BSC receives a request from the CN to use them,
it needs to validate that request against BTS capabilities,
and then actually pass it to the BTS via an Osmocom-defined
RSL IE that replicates TW-TS-003 in Abis. Implement this logic.
Intra-BSC handovers: if ThemWi RTP extensions are used in a GSM
network that allows handovers, all deployed BTSes must have
the same capabilities with regard to these extensions, practically
meaning same or close-enough version of OsmoBTS. OsmoBSC checks
CN-requested RTP extensions against BTS capabilities on the
initial assignment, but not on subsequent handovers.
Inter-BSC handovers: support for RTP extensions in this deployment
configuration (networks that allow such handovers) remains to be
implemented.
OsmoMGW considerations: if all deployed BTSes are native IP
OsmoBTS, as opposed to E1-based, OsmoMGW does not need to know
anything at all about ThemWi RTP extensions. However, future
support for these RTP extensions with E1-based BTSes will require
adding a mechanism for communicating the necessary non-standard
request to OsmoMGW.
LCLS considerations: enabling ThemWi RTP extensions affects only
the uplink RTP output path in OsmoBTS and not the path from RTP
input to downlink Tx. The latter path accepts both basic and
extended RTP formats; any ThemWi extensions in the incoming RTP
stream are harmlessly ignored. Therefore, activation of ThemWi
RTP extensions will have no impact on LCLS operation.
Related: OS#6448
Depends: I0eccfe5ddcf44f8f20440acb01e2d4870ec0cd91 (libosmocore)
Change-Id: I2a742afff160a9a8286633bf5ae0dd4a828c7a42
---
M include/osmocom/bsc/gsm_data.h
M src/osmo-bsc/abis_rsl.c
M src/osmo-bsc/assignment_fsm.c
M src/osmo-bsc/osmo_bsc_bssap.c
4 files changed, 120 insertions(+), 0 deletions(-)
Approvals:
fixeria: Looks good to me, but someone else must approve
Jenkins Builder: Verified
laforge: Looks good to me, approved
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index bd51a42..6bffcc4 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -150,6 +150,7 @@
uint16_t msc_rtp_port;
bool use_osmux;
uint8_t osmux_cid;
+ uint8_t rtp_extensions;
/* Rate/codec setting in preference order (need at least 1 !) */
int n_ch_mode_rate;
@@ -359,6 +360,7 @@
/* RTP address where the MSC expects us to send the RTP stream coming from the BTS. */
char msc_assigned_rtp_addr[INET6_ADDRSTRLEN];
uint16_t msc_assigned_rtp_port;
+ uint8_t rtp_extensions;
/* The endpoint at the MGW used to join both BTS and MSC side connections, e.g.
* "rtpbridge/23@mgw". */
diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c
index 49e8b52..9d922d0 100644
--- a/src/osmo-bsc/abis_rsl.c
+++ b/src/osmo-bsc/abis_rsl.c
@@ -3033,6 +3033,11 @@
if (lchan->abis_ip.osmux.use)
msgb_tlv_put(msg, RSL_IE_OSMO_OSMUX_CID, 1, &lchan->abis_ip.osmux.local_cid);
+ /* Are we serving a GSM subscriber for whom the CN requested
+ * the use of RTP extensions? */
+ if (lchan->conn && lchan->conn->user_plane.rtp_extensions)
+ msgb_tlv_put(msg, RSL_IE_OSMO_RTP_EXTENSIONS, 1,
+ &lchan->conn->user_plane.rtp_extensions);
msg->dst = rsl_chan_link(lchan);
@@ -3077,6 +3082,9 @@
msgb_tv_put(msg, RSL_IE_IPAC_RTP_PAYLOAD2, lchan->abis_ip.rtp_payload2);
if (lchan->abis_ip.osmux.use)
msgb_tlv_put(msg, RSL_IE_OSMO_OSMUX_CID, 1, &lchan->abis_ip.osmux.local_cid);
+ if (lchan->conn && lchan->conn->user_plane.rtp_extensions)
+ msgb_tlv_put(msg, RSL_IE_OSMO_RTP_EXTENSIONS, 1,
+ &lchan->conn->user_plane.rtp_extensions);
msg->dst = rsl_chan_link(lchan);
diff --git a/src/osmo-bsc/assignment_fsm.c b/src/osmo-bsc/assignment_fsm.c
index 5e98a28..79c4ac7 100644
--- a/src/osmo-bsc/assignment_fsm.c
+++ b/src/osmo-bsc/assignment_fsm.c
@@ -22,6 +22,8 @@
#include <osmocom/core/tdef.h>
#include <osmocom/gsm/gsm0808.h>
+#include <osmocom/gsm/rtp_extensions.h>
+#include <osmocom/gsm/bts_features.h>
#include <osmocom/mgcp_client/mgcp_client_endpoint_fsm.h>
@@ -172,6 +174,13 @@
msg->l3h[1] = msgb_l3len(msg) - 2;
}
+static void bssap_extend_twts003(struct msgb *msg, uint8_t accepted_ext)
+{
+ OSMO_ASSERT(msg->l3h[1] == msgb_l3len(msg) - 2); /*TL not in len */
+ msgb_tlv_put(msg, GSM0808_IE_THEMWI_RTP_EXTENSIONS, 1, &accepted_ext);
+ msg->l3h[1] = msgb_l3len(msg) - 2;
+}
+
static void send_assignment_complete(struct gsm_subscriber_connection *conn)
{
int rc;
@@ -267,6 +276,9 @@
conn->assignment.req.use_osmux)
bssap_extend_osmux(resp, osmux_cid);
+ if (conn->user_plane.rtp_extensions)
+ bssap_extend_twts003(resp, conn->user_plane.rtp_extensions);
+
rate_ctr_inc(rate_ctr_group_get_ctr(conn->sccp.msc->msc_ctrs, MSC_CTR_BSSMAP_TX_DT1_ASSIGNMENT_COMPLETE));
rc = gscon_sigtran_send(conn, resp);
if (rc) {
@@ -478,6 +490,7 @@
.aoip = gscon_is_aoip(conn),
.msc_assigned_cic = conn->user_plane.msc_assigned_cic,
.msc_rtp_port = conn->user_plane.msc_assigned_rtp_port,
+ .rtp_extensions = conn->user_plane.rtp_extensions,
.n_ch_mode_rate = 1,
.ch_mode_rate_list = { lchan->current_ch_mode_rate },
.target_lchan = to_lchan,
@@ -522,6 +535,31 @@
return _reassignment_request(assign_for, lchan, NULL, new_lchan_type, -1, -1);
}
+/*
+ * The CN may have requested RTP extensions (payload format modifications
+ * contrary to the stipulations of TS 48.103) via BSSMAP IE of TW-TS-003.
+ * This function checks whether or not we can fulfill that request
+ * based on BTS capabilities, and sets the bitmask of accepted extensions
+ * that will be passed on to the BTS via Abis RSL.
+ */
+static void handle_rtp_extensions(struct gsm_subscriber_connection *conn,
+ struct gsm_bts *bts)
+{
+ const struct assignment_request *req = &conn->assignment.req;
+ uint8_t requested_ext = req->rtp_extensions;
+ uint8_t accepted_ext = 0;
+
+ if ((requested_ext & OSMO_RTP_EXT_TWTS001) &&
+ osmo_bts_has_feature(&bts->features, BTS_FEAT_TWTS001))
+ accepted_ext |= OSMO_RTP_EXT_TWTS001;
+
+ if ((requested_ext & OSMO_RTP_EXT_TWTS002) &&
+ osmo_bts_has_feature(&bts->features, BTS_FEAT_TWTS002))
+ accepted_ext |= OSMO_RTP_EXT_TWTS002;
+
+ conn->user_plane.rtp_extensions = accepted_ext;
+}
+
void assignment_fsm_start(struct gsm_subscriber_connection *conn, struct gsm_bts *bts,
struct assignment_request *req)
{
@@ -553,6 +591,8 @@
return;
conn->assignment.ch_indctr = req->ch_indctr;
+ handle_rtp_extensions(conn, bts);
+
if (!req->target_lchan && reuse_existing_lchan(conn)) {
/* The already existing lchan is suitable for this mode */
conn->assignment.new_lchan = NULL;
diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c
index 2a98054..c9e8e5e 100644
--- a/src/osmo-bsc/osmo_bsc_bssap.c
+++ b/src/osmo-bsc/osmo_bsc_bssap.c
@@ -992,6 +992,26 @@
return 0;
}
+static int bssmap_handle_ass_req_tp_rtp_ext(struct tlv_parsed *tp,
+ struct assignment_request *req,
+ uint8_t *cause)
+{
+ /* If the special TW-TS-003 BSSMAP IE is not included,
+ * we are in standard 3GPP-compliant operation mode -
+ * no more work is needed here. */
+ if (!TLVP_PRESENT(tp, GSM0808_IE_THEMWI_RTP_EXTENSIONS))
+ return 0;
+
+ /* the format is TLV with one required byte of value */
+ if (TLVP_LEN(tp, GSM0808_IE_THEMWI_RTP_EXTENSIONS) < 1) {
+ *cause = GSM0808_CAUSE_INFORMATION_ELEMENT_OR_FIELD_MISSING;
+ return -1;
+ }
+
+ req->rtp_extensions = *TLVP_VAL(tp, GSM0808_IE_THEMWI_RTP_EXTENSIONS);
+ return 0;
+}
+
static int bssmap_handle_ass_req_ct_data(struct gsm_subscriber_connection *conn, struct tlv_parsed *tp,
struct gsm0808_channel_type *ct, struct assignment_request *req,
uint8_t *cause)
@@ -1056,6 +1076,10 @@
return -1;
}
+ /* optional RTP extensions per TW-TS-003 */
+ if (bssmap_handle_ass_req_tp_rtp_ext(tp, req, cause) < 0)
+ return -1;
+
return 0;
}
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/37129?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I2a742afff160a9a8286633bf5ae0dd4a828c7a42
Gerrit-Change-Number: 37129
Gerrit-PatchSet: 2
Gerrit-Owner: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged
Attention is currently required from: pespin.
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37298?usp=email
to look at the new patch set (#2).
The following approvals got outdated and were removed:
Verified-1 by Jenkins Builder
Change subject: SIP_Templates: Allow setting Session-Expires and Min_SE in INVITE templates
......................................................................
SIP_Templates: Allow setting Session-Expires and Min_SE in INVITE templates
Related: SYS#6987
Change-Id: Ib2bc6258c072e88539ccc852d057b517822936bd
---
M asterisk/SIP_ConnectionHandler.ttcn
M library/SIP_Templates.ttcn
M sip/SIP_Tests.ttcn
3 files changed, 56 insertions(+), 4 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/98/37298/2
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37298?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ib2bc6258c072e88539ccc852d057b517822936bd
Gerrit-Change-Number: 37298
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newpatchset