laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/pysim/+/27135 )
Change subject: ts_31_102: TLV._tlv must point to the class, not an instance
......................................................................
Patch Set 1: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/27135
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ie4878ad6a92feafe47e375c4f5f3f198921e1e95
Gerrit-Change-Number: 27135
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Thu, 10 Feb 2022 18:31:49 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
Attention is currently required from: iedemam.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/27137 )
Change subject: stats: sanitize tcp stat name identifiers
......................................................................
Patch Set 1:
(1 comment)
Patchset:
PS1:
I'd argue it's not the duty of stats to be "friendly as filenames", but rather something specific to whatever statsd consumer on the other side. It's probably also easy on the other side to sanitize names in case they need to be used in file names?
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/27137
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ib04c2f5bfcbd6c19dd87debf1fc053abf0b9bef2
Gerrit-Change-Number: 27137
Gerrit-PatchSet: 1
Gerrit-Owner: iedemam <michael(a)kapsulate.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: iedemam <michael(a)kapsulate.com>
Gerrit-Comment-Date: Thu, 10 Feb 2022 17:47:24 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hnbgw/+/27139 )
Change subject: ranap_rab_ass: add function to check if RAB is in FailureList
......................................................................
ranap_rab_ass: add function to check if RAB is in FailureList
A RANAP RAB-AssignmentResponse may contain a FailedList. In order to
detect that a RAB Assignment failed at the HNB we need to be able to
check if the RAB we are dealing with is contained an such a FailedList.
Change-Id: I4319f7caa45ea758ccd792cc8570521df075cf45
Related: OS#5152
---
M include/osmocom/hnbgw/ranap_rab_ass.h
M src/osmo-hnbgw/ranap_rab_ass.c
M tests/ranap_rab_ass/ranap_rab_ass_test.c
M tests/ranap_rab_ass/ranap_rab_ass_test.ok
4 files changed, 94 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-hnbgw refs/changes/39/27139/1
diff --git a/include/osmocom/hnbgw/ranap_rab_ass.h b/include/osmocom/hnbgw/ranap_rab_ass.h
index f4d5cb6..b3406f0 100644
--- a/include/osmocom/hnbgw/ranap_rab_ass.h
+++ b/include/osmocom/hnbgw/ranap_rab_ass.h
@@ -14,3 +14,5 @@
uint8_t rab_id);
int ranap_rab_ass_resp_ies_replace_inet_addr(RANAP_RAB_AssignmentResponseIEs_t *ies, struct osmo_sockaddr *addr,
uint8_t rab_id);
+
+bool ranap_rab_ass_resp_ies_check_failure(RANAP_RAB_AssignmentResponseIEs_t *ies, uint8_t rab_id);
diff --git a/src/osmo-hnbgw/ranap_rab_ass.c b/src/osmo-hnbgw/ranap_rab_ass.c
index 23505f2..89d4b1b 100644
--- a/src/osmo-hnbgw/ranap_rab_ass.c
+++ b/src/osmo-hnbgw/ranap_rab_ass.c
@@ -141,8 +141,7 @@
{
/* Make sure we indeed deal with a setup-or-modified list */
if (!(ies->presenceMask & RAB_ASSIGNMENTRESPONSEIES_RANAP_RAB_SETUPORMODIFIEDLIST_PRESENT)) {
- RANAP_DEBUG
- ("Decoding failed, the RANAP RAB AssignmentResponse did not contain a setup-or-modified list!\n");
+ RANAP_DEBUG("RANAP RAB AssignmentResponse did not contain a setup-or-modified list!\n");
return NULL;
}
@@ -153,6 +152,23 @@
return ies->raB_SetupOrModifiedList.raB_SetupOrModifiedList_ies.list.array[index];
}
+/* Pick the indexed item from the RAB failed list and return a pointer to it */
+static RANAP_IE_t *failed_list_item_from_rab_ass_resp(const RANAP_RAB_AssignmentResponseIEs_t *ies,
+ unsigned int index)
+{
+ /* Make sure we indeed deal with a failed list */
+ if (!(ies->presenceMask & RAB_ASSIGNMENTRESPONSEIES_RANAP_RAB_FAILEDLIST_PRESENT)) {
+ RANAP_DEBUG("RANAP RAB AssignmentResponse did not contain a failed list!\n");
+ return NULL;
+ }
+
+ /* Detect the end of the list */
+ if (index >= ies->raB_FailedList.raB_FailedList_ies.list.count)
+ return NULL;
+
+ return ies->raB_FailedList.raB_FailedList_ies.list.array[index];
+}
+
/* find the RAB specified by rab_id in ies and when found, decode the result into items_ies */
static int decode_rab_smditms_from_resp_ies(RANAP_RAB_SetupOrModifiedItemIEs_t *items_ies,
RANAP_RAB_AssignmentResponseIEs_t *ies, uint8_t rab_id)
@@ -184,6 +200,37 @@
}
}
+/* See comment above decode_rab_smditms_from_resp_ies() */
+static int decode_rab_flitms_from_resp_ies(RANAP_RAB_FailedItemIEs_t *items_ies,
+ RANAP_RAB_AssignmentResponseIEs_t *ies, uint8_t rab_id)
+{
+ RANAP_IE_t *failed_list_ie;
+ RANAP_RAB_FailedItem_t *rab_failed_item;
+ int rc;
+ uint8_t rab_id_decoded;
+ unsigned int index = 0;
+
+ while (1) {
+ failed_list_ie = failed_list_item_from_rab_ass_resp(ies, index);
+ if (!failed_list_ie)
+ return -EINVAL;
+
+ rc = ranap_decode_rab_faileditemies_fromlist(items_ies, &failed_list_ie->value);
+ if (rc < 0)
+ return -EINVAL;
+
+ rab_failed_item = &items_ies->raB_FailedItem;
+ /* The RAB-ID is defined as a bitstring with a size of 8 (1 byte),
+ * See also RANAP-IEs.asn, RAB-ID ::= BIT STRING (SIZE (8)) */
+ rab_id_decoded = rab_failed_item->rAB_ID.buf[0];
+ if (rab_id_decoded == rab_id)
+ return index;
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_FailedItem, items_ies);
+ index++;
+ }
+}
+
/* find the RAB specified by rab_id in ies and when found, decode the result into item */
static int decode_rab_smditms_from_req_ies(RANAP_RAB_SetupOrModifyItemFirst_t *item,
RANAP_RAB_AssignmentRequestIEs_t *ies, uint8_t rab_id)
@@ -477,3 +524,25 @@
return rc;
}
+
+/*! Check if a specific RAB is present in an RAB-Failed-Item-List inside RANAP_RAB_AssignmentResponseIEs.
+ * \ptmap[in] ies user provided memory with RANAP_RAB_AssignmentResponseIEs.
+ * \ptmap[in] rab_id expected rab id to look for.
+ * \returns true when RAB could be identified as failed; false otherwise */
+bool ranap_rab_ass_resp_ies_check_failure(RANAP_RAB_AssignmentResponseIEs_t *ies, uint8_t rab_id)
+{
+ RANAP_RAB_FailedItemIEs_t _rab_failed_items_ies;
+ RANAP_RAB_FailedItemIEs_t *rab_failed_items_ies = &_rab_failed_items_ies;
+ int rc;
+ bool result = true;
+
+ /* If we can get a failed item for the specified RAB ID, then we know that the
+ * HNB reported the RAB Assignment as failed */
+ rc = decode_rab_flitms_from_resp_ies(rab_failed_items_ies, ies, rab_id);
+ if (rc < 0)
+ result = false;
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_FailedItem, rab_failed_items_ies);
+
+ return result;
+}
diff --git a/tests/ranap_rab_ass/ranap_rab_ass_test.c b/tests/ranap_rab_ass/ranap_rab_ass_test.c
index d7bee09..2d1efdf 100644
--- a/tests/ranap_rab_ass/ranap_rab_ass_test.c
+++ b/tests/ranap_rab_ass/ranap_rab_ass_test.c
@@ -269,6 +269,25 @@
ranap_cn_rx_co_free(&message);
}
+void test_ranap_rab_ass_resp_ies_check_failure(void)
+{
+ int rc;
+ ranap_message message;
+ bool rab_failed_at_hnb;
+ uint8_t testvec[] = {
+ 0x60, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x00,
+ 0x23, 0x40, 0x0a, 0x00, 0x00, 0x01, 0x00, 0x22,
+ 0x40, 0x03, 0x05, 0xd0, 0x00
+ };
+
+ rc = ranap_cn_rx_co_decode(talloc_asn1_ctx, &message, testvec, sizeof(testvec));
+ OSMO_ASSERT(rc == 0);
+ rab_failed_at_hnb =
+ ranap_rab_ass_resp_ies_check_failure(&message.msg.raB_AssignmentResponseIEs, 23);
+ printf("ranap_rab_ass_resp_ies_check_failure rab_failed_at_hnb=%u\n", rab_failed_at_hnb);
+ ranap_cn_rx_co_free(&message);
+}
+
static const struct log_info_cat log_cat[] = {
[DRANAP] = {
.name = "RANAP", .loglevel = LOGL_DEBUG, .enabled = 1,
@@ -329,6 +348,7 @@
test_ranap_rab_ass_resp_extract_inet_addr();
test_ranap_rab_ass_req_replace_inet_addr();
test_ranap_rab_ass_resp_replace_inet_addr();
+ test_ranap_rab_ass_resp_ies_check_failure();
test_cleanup();
return 0;
diff --git a/tests/ranap_rab_ass/ranap_rab_ass_test.ok b/tests/ranap_rab_ass/ranap_rab_ass_test.ok
index 97756cb..3ce997d 100644
--- a/tests/ranap_rab_ass/ranap_rab_ass_test.ok
+++ b/tests/ranap_rab_ass/ranap_rab_ass_test.ok
@@ -14,3 +14,4 @@
before: addr=10.9.1.164, port=1034
ranap_rab_ass_resp_replace_inet_addr rc=0
after: addr=1.2.3.4, port=1234
+ranap_rab_ass_resp_ies_check_failure rab_failed_at_hnb=1
--
To view, visit https://gerrit.osmocom.org/c/osmo-hnbgw/+/27139
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-hnbgw
Gerrit-Branch: master
Gerrit-Change-Id: I4319f7caa45ea758ccd792cc8570521df075cf45
Gerrit-Change-Number: 27139
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: newchange
iedemam has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/27137 )
Change subject: stats: sanitize tcp stat name identifiers
......................................................................
stats: sanitize tcp stat name identifiers
The identifiers being used in tcp_stats are not friendly
as filenames. This change sanitizes the identifiers
before they are used.
BEFORE: ipa-oml,r=127.0.0.1:45749<->l=127.0.0.1:3002
AFTER: ipa-oml_r_127_0_0_1_45749_-_l_127_0_0_1_3002
Change-Id: Ib04c2f5bfcbd6c19dd87debf1fc053abf0b9bef2
---
M src/stats_tcp.c
1 file changed, 1 insertion(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/37/27137/1
diff --git a/src/stats_tcp.c b/src/stats_tcp.c
index dec5b5d..c2694f1 100644
--- a/src/stats_tcp.c
+++ b/src/stats_tcp.c
@@ -123,6 +123,7 @@
osmo_sock_get_name2(stats_tcp_entry->fd->fd));
else
snprintf(stat_name, sizeof(stat_name), "%s", osmo_sock_get_name2(stats_tcp_entry->fd->fd));
+ osmo_identifier_sanitize_buf(stat_name, ":", '_');
osmo_stat_item_group_set_name(stats_tcp_entry->stats_tcp, stat_name);
osmo_stat_item_set(osmo_stat_item_group_get_item(stats_tcp_entry->stats_tcp, STATS_TCP_UNACKED),
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/27137
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ib04c2f5bfcbd6c19dd87debf1fc053abf0b9bef2
Gerrit-Change-Number: 27137
Gerrit-PatchSet: 1
Gerrit-Owner: iedemam <michael(a)kapsulate.com>
Gerrit-MessageType: newchange
Attention is currently required from: iedemam, fixeria.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/27134 )
Change subject: stats: add RSL line number to TCP stats name
......................................................................
Patch Set 3:
(1 comment)
File src/input/ipaccess.c:
https://gerrit.osmocom.org/c/libosmo-abis/+/27134/comment/cd93d39e_7f1a8fb9
PS3, Line 346: snprintf(stat_name, sizeof(stat_name), "ipa-rsl-%u", unit_data.trx_id);
Can you try using new_line->num instead?
--
To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/27134
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Change-Id: Ie42d8a0cb3757f2d01a4b6d69ea2bcce400b7538
Gerrit-Change-Number: 27134
Gerrit-PatchSet: 3
Gerrit-Owner: iedemam <michael(a)kapsulate.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: iedemam <michael(a)kapsulate.com>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Thu, 10 Feb 2022 17:31:42 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Attention is currently required from: fixeria, pespin.
iedemam has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/27134 )
Change subject: stats: add RSL line number to TCP stats name
......................................................................
Patch Set 3:
(1 comment)
This change is ready for review.
Patchset:
PS3:
Hi all,
Thanks for the reviews. After some more testing, I saw that the previous approach was not working.
In the two areas where a "ipa-rsl" stat name is created, both were always being set to zero based on the line->num value. Then I discovered that OsmoBSC is only using the one in this latest patch. The other one shown in a previous patch is on the BTS side I guess?
Regardless, now the correct TRX ID is being set for each RSL link in question. Stats emitted by OsmoBSC show the correct IDs.
-Michael
--
To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/27134
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Change-Id: Ie42d8a0cb3757f2d01a4b6d69ea2bcce400b7538
Gerrit-Change-Number: 27134
Gerrit-PatchSet: 3
Gerrit-Owner: iedemam <michael(a)kapsulate.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Thu, 10 Feb 2022 17:23:44 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment