osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hlr/+/31472 )
Change subject: tests: adjust to XOR-3G rename in libosmocore
......................................................................
tests: adjust to XOR-3G rename in libosmocore
Fix forward compatibility to current master of libosmocore / future
versions where the value_string for OSMO_AUTH_ALG_XOR has been changed.
Adjust the tests so they pass with both the old and the new version.
Related: libosmocore I446e54d0ddf4a18c46ee022b1249af73552e3ce1
Change-Id: I391b1a9b52e1969172aba9d4a1cc5792fc077fe1
(cherry picked from commit 42f82975f23b381a2fcfb42aacbd72660a0ee7f4)
---
M tests/test_subscriber.ctrl
M tests/test_subscriber.vty
M tests/testsuite.at
3 files changed, 22 insertions(+), 5 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/72/31472/1
diff --git a/tests/test_subscriber.ctrl b/tests/test_subscriber.ctrl
index ff26d4c..e827662 100644
--- a/tests/test_subscriber.ctrl
+++ b/tests/test_subscriber.ctrl
@@ -677,9 +677,6 @@
SET 113 subscriber.by-imsi-901991234567891.aud2g xor,c01ffedc1cadaeac1d1f1edacac1ab0a
SET_REPLY 113 subscriber.by-imsi-901991234567891.aud2g OK
-GET 114 subscriber.by-imsi-901991234567891.aud2g
-GET_REPLY 114 subscriber.by-imsi-901991234567891.aud2g XOR,c01ffedc1cadaeac1d1f1edacac1ab0a
-
SET 115 subscriber.by-imsi-901991234567891.aud2g none
SET_REPLY 115 subscriber.by-imsi-901991234567891.aud2g OK
diff --git a/tests/test_subscriber.vty b/tests/test_subscriber.vty
index fe7499c..cfbcd8b 100644
--- a/tests/test_subscriber.vty
+++ b/tests/test_subscriber.vty
@@ -160,7 +160,7 @@
ID: 101
IMSI: 123456789023000
MSISDN: 423
- 2G auth: XOR
+...
KI=deaf0ff1ced0d0dabbedd1ced1cef00d
OsmoHLR# subscriber imsi 123456789023000 update aud2g comp128v1 ki BeefedCafeFaceAcedAddedDecadeFee
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 65f90b4..dde7d8b 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -27,7 +27,12 @@
cat $abs_srcdir/db/db_test.ok > expout
cat $abs_srcdir/db/db_test.err > experr
sqlite3 db_test.db < $abs_top_srcdir/sql/hlr.sql
-AT_CHECK([$abs_top_builddir/tests/db/db_test], [], [expout], [experr])
+
+# Compatibility with libosmocore I446e54d0ddf4a18c46ee022b1249af73552e3ce1
+$abs_top_builddir/tests/db/db_test >out 2>err
+sed -i "s/XOR-3G,/XOR,/g" err
+
+AT_CHECK([cat out; cat err >&2], [], [expout], [experr])
AT_CLEANUP
# AT_SKIP_IF: disable for old sqlite versions, because the way we dump tables in the test doesn't work with it.
--
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/31472
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-hlr
Gerrit-Branch: osmith/1.5.1
Gerrit-Change-Id: I391b1a9b52e1969172aba9d4a1cc5792fc077fe1
Gerrit-Change-Number: 31472
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: newchange
dexter has submitted this change. ( https://gerrit.osmocom.org/c/osmo-mgw/+/31269 )
Change subject: mgcp_e1: be more frugal withe E1 line resources
......................................................................
mgcp_e1: be more frugal withe E1 line resources
At the moment we open an E1 timeslot when needed, but we never
close it even when it is not needed anymore. This may block other
entities from using it. Lets add some logic to detect whether the E1
timeslot is still needed and make sure that it is closed when it is no
longer needed.
Depends: libosmo-abis.git I073cfaba0d5073447842f22665e213135ea3f635
Change-Id: Ie6a32abbc5cd984f6d72a384e3b47c1b82ce7058
Related: OS#5198
---
M include/osmocom/mgcp/mgcp_e1.h
M include/osmocom/mgcp/mgcp_trunk.h
M src/libosmo-mgcp/mgcp_e1.c
M src/libosmo-mgcp/mgcp_endp.c
4 files changed, 95 insertions(+), 19 deletions(-)
Approvals:
Jenkins Builder: Verified
osmith: Looks good to me, but someone else must approve
pespin: Looks good to me, approved
diff --git a/include/osmocom/mgcp/mgcp_e1.h b/include/osmocom/mgcp/mgcp_e1.h
index f0cf3ec..fbd594c 100644
--- a/include/osmocom/mgcp/mgcp_e1.h
+++ b/include/osmocom/mgcp/mgcp_e1.h
@@ -23,5 +23,5 @@
int mgcp_e1_endp_equip(struct mgcp_endpoint *endp, uint8_t ts, uint8_t ss, uint8_t offs);
void mgcp_e1_endp_update(struct mgcp_endpoint *endp);
-void mgcp_e1_endp_release(struct mgcp_endpoint *endp);
+void mgcp_e1_endp_release(struct mgcp_endpoint *endp, uint8_t ts);
int mgcp_e1_send_rtp(struct mgcp_endpoint *endp, struct mgcp_rtp_codec *codec, struct msgb *msg);
diff --git a/include/osmocom/mgcp/mgcp_trunk.h b/include/osmocom/mgcp/mgcp_trunk.h
index 3f14f97..33c3d5b 100644
--- a/include/osmocom/mgcp/mgcp_trunk.h
+++ b/include/osmocom/mgcp/mgcp_trunk.h
@@ -66,7 +66,7 @@
/* E1 specific */
struct {
unsigned int vty_line_nr;
- bool ts_in_use[NUM_E1_TS-1];
+ uint8_t ts_usecount[NUM_E1_TS-1];
struct osmo_i460_timeslot i460_ts[NUM_E1_TS-1];
/* Note: on an E1 line TS 0 is devoted to framing and
* alignment and therefore only NUM_E1_TS-1 timeslots
diff --git a/src/libosmo-mgcp/mgcp_e1.c b/src/libosmo-mgcp/mgcp_e1.c
index 24f297f..c1aeadd 100644
--- a/src/libosmo-mgcp/mgcp_e1.c
+++ b/src/libosmo-mgcp/mgcp_e1.c
@@ -365,13 +365,11 @@
msgb_free(msg);
}
-static int e1_init(struct mgcp_trunk *trunk, uint8_t ts_nr)
+static int e1_open(struct mgcp_trunk *trunk, uint8_t ts_nr)
{
- /*! Each timeslot needs only to be configured once. The Timeslot then
- * stays open and permanently receives data. It is then up to the
- * I.460 demultiplexer to add/remove subchannels as needed. It is
- * allowed to call this function multiple times since we check if the
- * timeslot is already configured. */
+ /*! One E1 timeslot may serve multiple I.460 subslots. The timeslot is opened as soon as an I.460 subslot is
+ * opened and will stay open until the last I.460 subslot is closed (see e1_close below). This function must
+ * be called any time a new I.460 subslot is opened in order to maintain constancy of the ts_usecount counter. */
struct e1inp_line *e1_line;
int rc;
@@ -379,12 +377,14 @@
OSMO_ASSERT(ts_nr > 0 || ts_nr < NUM_E1_TS);
cfg = trunk->cfg;
- if (trunk->e1.ts_in_use[ts_nr - 1]) {
- LOGPTRUNK(trunk, DE1, LOGL_INFO, "E1 timeslot %u already set up, skipping...\n", ts_nr);
+ if (trunk->e1.ts_usecount[ts_nr - 1] > 0) {
+ LOGPTRUNK(trunk, DE1, LOGL_INFO, "E1 timeslot %u already set up and in use by %u subslot(s), using it as it is...\n",
+ ts_nr, trunk->e1.ts_usecount[ts_nr - 1]);
+ trunk->e1.ts_usecount[ts_nr - 1]++;
return 0;
}
- /* Get E1 line */
+ /* Find E1 line */
e1_line = e1inp_line_find(trunk->e1.vty_line_nr);
if (!e1_line) {
LOGPTRUNK(trunk, DE1, LOGL_ERROR, "no such E1 line %u - check VTY config!\n",
@@ -406,7 +406,56 @@
}
LOGPTRUNK(trunk, DE1, LOGL_INFO, "E1 timeslot %u set up successfully.\n", ts_nr);
- trunk->e1.ts_in_use[ts_nr - 1] = true;
+ trunk->e1.ts_usecount[ts_nr - 1]++;
+ OSMO_ASSERT(trunk->e1.ts_usecount[ts_nr - 1] == 1);
+
+ return 0;
+}
+
+static int e1_close(struct mgcp_trunk *trunk, uint8_t ts_nr)
+{
+ /* See also comment above (e1_open). This function must be called any time an I.460 subslot is closed */
+
+ struct e1inp_line *e1_line;
+ int rc;
+
+ OSMO_ASSERT(ts_nr > 0 || ts_nr < NUM_E1_TS);
+ cfg = trunk->cfg;
+
+ if (trunk->e1.ts_usecount[ts_nr - 1] > 1) {
+ trunk->e1.ts_usecount[ts_nr - 1]--;
+ LOGPTRUNK(trunk, DE1, LOGL_INFO, "E1 timeslot %u still in use by %u other subslot(s), leaving it open...\n",
+ ts_nr, trunk->e1.ts_usecount[ts_nr - 1]);
+ return 0;
+ } else if (trunk->e1.ts_usecount[ts_nr - 1] == 0) {
+ /* This should not be as it means we close the timeslot too often. */
+ LOGPTRUNK(trunk, DE1, LOGL_ERROR, "E1 timeslot %u already closed, leaving it as it is...\n", ts_nr);
+ return -EINVAL;
+ }
+
+ /* Find E1 line */
+ e1_line = e1inp_line_find(trunk->e1.vty_line_nr);
+ if (!e1_line) {
+ LOGPTRUNK(trunk, DE1, LOGL_ERROR, "no such E1 line %u - check VTY config!\n",
+ trunk->e1.vty_line_nr);
+ return -EINVAL;
+ }
+
+ /* Release E1 timeslot */
+ rc = e1inp_ts_config_none(&e1_line->ts[ts_nr - 1], e1_line);
+ if (rc < 0) {
+ LOGPTRUNK(trunk, DE1, LOGL_ERROR, "failed to disable E1 timeslot %u.\n", ts_nr);
+ return -EINVAL;
+ }
+ rc = e1inp_line_update(e1_line);
+ if (rc < 0) {
+ LOGPTRUNK(trunk, DE1, LOGL_ERROR, "failed to update E1 line %u.\n", trunk->e1.vty_line_nr);
+ return -EINVAL;
+ }
+
+ LOGPTRUNK(trunk, DE1, LOGL_INFO, "E1 timeslot %u closed.\n", ts_nr);
+ trunk->e1.ts_usecount[ts_nr - 1]--;
+ OSMO_ASSERT(trunk->e1.ts_usecount[ts_nr - 1] == 0);
return 0;
}
@@ -496,7 +545,7 @@
}
}
-/*! Equip E1 endpoint with I.460 mux resources.
+/*! Equip E1 endpoint with I.460 mux and E1 timeslot resources.
* \param[in] endp endpoint to equip
* \param[in] ts E1 timeslot number.
* \param[in] ss E1 subslot number.
@@ -517,7 +566,7 @@
endp->e1.last_amr_ft = AMR_4_75;
/* Set up E1 line / timeslot */
- rc = e1_init(endp->trunk, ts);
+ rc = e1_open(endp->trunk, ts);
if (rc != 0)
return -EINVAL;
@@ -604,9 +653,15 @@
}
/*! Remove E1 resources from endpoint
- * \param[in] endp endpoint to release. */
-void mgcp_e1_endp_release(struct mgcp_endpoint *endp)
+ * \param[in] endp endpoint to release.
+ * \param[in] ts E1 timeslot number. */
+void mgcp_e1_endp_release(struct mgcp_endpoint *endp, uint8_t ts)
{
+ /* Guard against multiple calls. In case we don't see a subchannel anymore we can safely assume that all work
+ * is done. */
+ if (!(endp->e1.schan || endp->e1.trau_rtp_st || endp->e1.trau_sync_fi))
+ return;
+
LOGPENDP(endp, DE1, LOGL_DEBUG, "removing I.460 subchannel and sync...\n");
if (endp->e1.schan)
@@ -615,8 +670,10 @@
talloc_free(endp->e1.trau_rtp_st);
if (endp->e1.trau_sync_fi)
osmo_fsm_inst_term(endp->e1.trau_sync_fi, OSMO_FSM_TERM_REGULAR, NULL);
-
memset(&endp->e1, 0, sizeof(endp->e1));
+
+ /* Close E1 timeslot */
+ e1_close(endp->trunk, ts);
}
/*! Accept RTP message buffer with RTP data and enqueue voice data for E1 transmit.
diff --git a/src/libosmo-mgcp/mgcp_endp.c b/src/libosmo-mgcp/mgcp_endp.c
index 03e5330..2bf15e0 100644
--- a/src/libosmo-mgcp/mgcp_endp.c
+++ b/src/libosmo-mgcp/mgcp_endp.c
@@ -671,7 +671,9 @@
talloc_free(endp->local_options.codec);
endp->local_options.codec = NULL;
- if (endp->trunk->trunk_type == MGCP_TRUNK_E1)
- mgcp_e1_endp_release(endp);
+ if (endp->trunk->trunk_type == MGCP_TRUNK_E1) {
+ uint8_t ts = e1_ts_nr_from_epname(endp->name);
+ mgcp_e1_endp_release(endp, ts);
+ }
}
--
To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/31269
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: Ie6a32abbc5cd984f6d72a384e3b47c1b82ce7058
Gerrit-Change-Number: 31269
Gerrit-PatchSet: 6
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged
Attention is currently required from: dexter.
Hello Jenkins Builder, pespin,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/libosmo-abis/+/31454
to look at the new patch set (#2).
Change subject: trau_pcu_ericsson: add testvectors for MCS1-MCS8
......................................................................
trau_pcu_ericsson: add testvectors for MCS1-MCS8
Change-Id: I7e7e35930a373c9db74faef24f6c404eb5516278
Related: OS#5198
---
M tests/trau_pcu_ericsson/trau_pcu_ericsson_test.c
M tests/trau_pcu_ericsson/trau_pcu_ericsson_test.ok
2 files changed, 1,002 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/54/31454/2
--
To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/31454
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Change-Id: I7e7e35930a373c9db74faef24f6c404eb5516278
Gerrit-Change-Number: 31454
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: newpatchset
osmith has submitted this change. ( https://gerrit.osmocom.org/c/osmo-hlr/+/31469 )
Change subject: Run struct_endianness.py
......................................................................
Run struct_endianness.py
Ensure there is no diff to prepare to run this in CI.
Related: OS#5884
Change-Id: I4294a18871214b70cef267fcaaaaada42cb61bf9
(cherry picked from commit 62e5c1b2c77f150de3b6fab37d84a65ee30b3449)
---
M include/osmocom/mslookup/mdns_rfc.h
1 file changed, 14 insertions(+), 1 deletion(-)
Approvals:
osmith: Verified
laforge: Looks good to me, approved
diff --git a/include/osmocom/mslookup/mdns_rfc.h b/include/osmocom/mslookup/mdns_rfc.h
index 364b4d3..28ed1a2 100644
--- a/include/osmocom/mslookup/mdns_rfc.h
+++ b/include/osmocom/mslookup/mdns_rfc.h
@@ -71,7 +71,7 @@
uint16_t nscount; /* Number of authority records */
uint16_t arcount; /* Number of additional records */
#elif OSMO_IS_BIG_ENDIAN
-/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianess.py) */
+/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianness.py) */
uint16_t id;
uint8_t qr:1, opcode:4, aa:1, tc:1, rd:1;
uint8_t ra:1, z:3, rcode:4;
--
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/31469
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-hlr
Gerrit-Branch: osmith/1.6.1
Gerrit-Change-Id: I4294a18871214b70cef267fcaaaaada42cb61bf9
Gerrit-Change-Number: 31469
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: merged
osmith has submitted this change. ( https://gerrit.osmocom.org/c/osmo-hlr/+/31467 )
Change subject: tests: adjust to XOR-3G rename in libosmocore
......................................................................
tests: adjust to XOR-3G rename in libosmocore
Fix forward compatibility to current master of libosmocore / future
versions where the value_string for OSMO_AUTH_ALG_XOR has been changed.
Adjust the tests so they pass with both the old and the new version.
Related: libosmocore I446e54d0ddf4a18c46ee022b1249af73552e3ce1
Change-Id: I391b1a9b52e1969172aba9d4a1cc5792fc077fe1
---
M tests/test_subscriber.ctrl
M tests/test_subscriber.vty
M tests/testsuite.at
3 files changed, 21 insertions(+), 5 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
diff --git a/tests/test_subscriber.ctrl b/tests/test_subscriber.ctrl
index ff26d4c..e827662 100644
--- a/tests/test_subscriber.ctrl
+++ b/tests/test_subscriber.ctrl
@@ -677,9 +677,6 @@
SET 113 subscriber.by-imsi-901991234567891.aud2g xor,c01ffedc1cadaeac1d1f1edacac1ab0a
SET_REPLY 113 subscriber.by-imsi-901991234567891.aud2g OK
-GET 114 subscriber.by-imsi-901991234567891.aud2g
-GET_REPLY 114 subscriber.by-imsi-901991234567891.aud2g XOR,c01ffedc1cadaeac1d1f1edacac1ab0a
-
SET 115 subscriber.by-imsi-901991234567891.aud2g none
SET_REPLY 115 subscriber.by-imsi-901991234567891.aud2g OK
diff --git a/tests/test_subscriber.vty b/tests/test_subscriber.vty
index fe7499c..cfbcd8b 100644
--- a/tests/test_subscriber.vty
+++ b/tests/test_subscriber.vty
@@ -160,7 +160,7 @@
ID: 101
IMSI: 123456789023000
MSISDN: 423
- 2G auth: XOR
+...
KI=deaf0ff1ced0d0dabbedd1ced1cef00d
OsmoHLR# subscriber imsi 123456789023000 update aud2g comp128v1 ki BeefedCafeFaceAcedAddedDecadeFee
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 65f90b4..dde7d8b 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -27,7 +27,12 @@
cat $abs_srcdir/db/db_test.ok > expout
cat $abs_srcdir/db/db_test.err > experr
sqlite3 db_test.db < $abs_top_srcdir/sql/hlr.sql
-AT_CHECK([$abs_top_builddir/tests/db/db_test], [], [expout], [experr])
+
+# Compatibility with libosmocore I446e54d0ddf4a18c46ee022b1249af73552e3ce1
+$abs_top_builddir/tests/db/db_test >out 2>err
+sed -i "s/XOR-3G,/XOR,/g" err
+
+AT_CHECK([cat out; cat err >&2], [], [expout], [experr])
AT_CLEANUP
# AT_SKIP_IF: disable for old sqlite versions, because the way we dump tables in the test doesn't work with it.
--
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/31467
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-hlr
Gerrit-Branch: osmith/1.6.1
Gerrit-Change-Id: I391b1a9b52e1969172aba9d4a1cc5792fc077fe1
Gerrit-Change-Number: 31467
Gerrit-PatchSet: 2
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: merged
Attention is currently required from: osmith.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-hlr/+/31467 )
Change subject: tests: adjust to XOR-3G rename in libosmocore
......................................................................
Patch Set 2: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/31467
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-hlr
Gerrit-Branch: osmith/1.6.1
Gerrit-Change-Id: I391b1a9b52e1969172aba9d4a1cc5792fc077fe1
Gerrit-Change-Number: 31467
Gerrit-PatchSet: 2
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Attention: osmith <osmith(a)sysmocom.de>
Gerrit-Comment-Date: Thu, 23 Feb 2023 09:36:48 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment