laforge has submitted this change. ( https://gerrit.osmocom.org/c/python/pyosmocom/+/40117?usp=email )
Change subject: osmocom.construct: Bytes + GreedyBytes with automatic hexstring-conversion
......................................................................
osmocom.construct: Bytes + GreedyBytes with automatic hexstring-conversion
This is a convenience version of the Bytes / GreedyBytes construct
that accepts not only a bytes/bytearray object, but also a hex-encoded
string within the encoder.
Related: OS#6774
Change-Id: I59f500c925848872a7fa38d6dbf3d6ea72bc3a90
---
M src/osmocom/construct.py
1 file changed, 16 insertions(+), 2 deletions(-)
Approvals:
fixeria: Looks good to me, but someone else must approve
Jenkins Builder: Verified
osmith: Looks good to me, approved
diff --git a/src/osmocom/construct.py b/src/osmocom/construct.py
index 7a2851a..5e062c3 100644
--- a/src/osmocom/construct.py
+++ b/src/osmocom/construct.py
@@ -10,9 +10,10 @@
# pylint: disable=import-error,no-name-in-module
from construct.lib.containers import Container, ListContainer
from construct.core import EnumIntegerString
-from construct import Adapter, Prefixed, Int8ub, GreedyBytes, Default, Flag, Byte, Construct, Enum
-from construct import BitsInteger, BitStruct, Bytes, StreamError, stream_read_entire, stream_write
+from construct import Adapter, Prefixed, Int8ub, Default, Flag, Byte, Construct, Enum
+from construct import BitsInteger, BitStruct, StreamError, stream_read_entire, stream_write
from construct import SizeofError, IntegerError, swapbytes
+import construct
from construct.core import evaluate
from construct.lib import integertypes
@@ -33,6 +34,19 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+class Bytes(construct.Bytes):
+ """Just like construct.Bytes but supporting hex-string input."""
+ def _build(self, obj, stream, context, path):
+ data = h2b(obj) if isinstance(obj, str) else obj
+ return super()._build(data, stream, context, path)
+
+(a)construct.core.singleton
+class GreedyBytes(construct.GreedyBytes.__class__):
+ """Just like construct.GreedyBytes but supporting hex-string input."""
+ def _build(self, obj, stream, context, path):
+ data = h2b(obj) if isinstance(obj, str) else obj
+ return super()._build(data, stream, context, path)
+
class HexAdapter(Adapter):
"""convert a bytes() type to a string of hex nibbles."""
--
To view, visit https://gerrit.osmocom.org/c/python/pyosmocom/+/40117?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: python/pyosmocom
Gerrit-Branch: master
Gerrit-Change-Id: I59f500c925848872a7fa38d6dbf3d6ea72bc3a90
Gerrit-Change-Number: 40117
Gerrit-PatchSet: 3
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Attention is currently required from: lynxis lazus, pespin.
neels has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-hnbgw/+/40162?usp=email )
Change subject: rua: Handle event TX_DIRECT_TRANSFER in disconnected state discarding msg
......................................................................
Patch Set 1:
(4 comments)
Patchset:
PS1:
IMHO this patch should not modify the event handler function,
but only add the event to the list of permitted events.
The larger part of this patch seems like a workaround for a customer not providing a pcap...
File src/osmo-hnbgw/context_map_rua.c:
https://gerrit.osmocom.org/c/osmo-hnbgw/+/40162/comment/3b3c727c_fcfaf6e7?u… :
PS1, Line 285: condition
We have data to be sent out on RUA, but RUA is already disconnected.
This can happen for any forsaken reason (RAN disconnected, CN disconnected, something went wrong on layer 2, ...) and we can't make any detailed statement here other than that.
I believe this isn't called a race condition, is it
https://gerrit.osmocom.org/c/osmo-hnbgw/+/40162/comment/f62ebfa0_021631e9?u… :
PS1, Line 290: msgb_l2len(ranap_msg), osmo_hexdump(msgb_l2(ranap_msg), msgb_l2len(ranap_msg)));
I think we should not print entire messages' hexdump on NOTICE.
can we put the log message on DEBUG instead?
It might make sense to log the dry fact on NOTICE,
and additionally, separately the hexdump on DEBUG,
and sanity-limit the hexdump length?
https://gerrit.osmocom.org/c/osmo-hnbgw/+/40162/comment/ddeb620e_8eea5a36?u… :
PS1, Line 295: all
it's no longer all events
--
To view, visit https://gerrit.osmocom.org/c/osmo-hnbgw/+/40162?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-hnbgw
Gerrit-Branch: master
Gerrit-Change-Id: Id68f219ce776fbbfaa80d3b3ed976f48bef4f883
Gerrit-Change-Number: 40162
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Comment-Date: Sun, 27 Apr 2025 03:42:17 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-hnbgw/+/40161?usp=email )
Change subject: cosmetic: Improve ranap_msg passing ownership documentation
......................................................................
cosmetic: Improve ranap_msg passing ownership documentation
In general ranap_msg is made owned by OTC_SELECT, and under RAB
Assignment where PFCP or MGCP is involved the msg ownership is
temporarily stolen to the related FSM instance.
Change-Id: I556e01b26a71b43432c623adb7ea5af2114981e3
---
M include/osmocom/hnbgw/context_map.h
M src/osmo-hnbgw/hnbgw_cn.c
M src/osmo-hnbgw/hnbgw_ranap.c
3 files changed, 18 insertions(+), 11 deletions(-)
Approvals:
Jenkins Builder: Verified
lynxis lazus: Looks good to me, approved
diff --git a/include/osmocom/hnbgw/context_map.h b/include/osmocom/hnbgw/context_map.h
index f9bd251..41b312d 100644
--- a/include/osmocom/hnbgw/context_map.h
+++ b/include/osmocom/hnbgw/context_map.h
@@ -29,13 +29,17 @@
* - The RANAP message shall be at msgb_l2().
*/
enum map_rua_fsm_event {
- /* Receiving a RUA Connect from HNB. */
+ /* Receiving a RUA Connect from HNB.
+ * Parameter: struct msgb *ranap_msg */
MAP_RUA_EV_RX_CONNECT,
- /* Receiving some data from HNB via RUA, to forward via SCCP to CN. */
+ /* Receiving some data from HNB via RUA, to forward via SCCP to CN.
+ * Parameter: struct msgb *ranap_msg */
MAP_RUA_EV_RX_DIRECT_TRANSFER,
- /* Receiving a RUA Disconnect from HNB. */
+ /* Receiving a RUA Disconnect from HNB.
+ * Parameter: struct msgb *ranap_msg (can be NULL) */
MAP_RUA_EV_RX_DISCONNECT,
- /* SCCP has received some data from CN to forward via RUA to HNB. */
+ /* SCCP has received some data from CN to forward via RUA to HNB.
+ * Parameter: struct msgb *ranap_msg */
MAP_RUA_EV_TX_DIRECT_TRANSFER,
/* The CN side is disconnected (e.g. received an SCCP Released), that means we are going gracefully disconnect
* RUA, too. */
@@ -52,9 +56,11 @@
enum map_sccp_fsm_event {
/* Receiving an SCCP CC from CN. */
MAP_SCCP_EV_RX_CONNECTION_CONFIRM,
- /* Receiving some data from CN via SCCP, to forward via RUA to HNB. */
+ /* Receiving some data from CN via SCCP, to forward via RUA to HNB.
+ * Parameter: struct msgb *ranap_msg */
MAP_SCCP_EV_RX_DATA_INDICATION,
- /* RUA has received some data from HNB to forward via SCCP to CN. */
+ /* RUA has received some data from HNB to forward via SCCP to CN.
+ * Parameter: struct msgb *ranap_msg */
MAP_SCCP_EV_TX_DATA_REQUEST,
/* 3GPP TS 25.468 9.1.5: The RAN side received a RUA Disconnect.
* - Under normal conditions (cause=Normal) the RUA Disconnect contains a RANAP Iu-ReleaseComplete.
diff --git a/src/osmo-hnbgw/hnbgw_cn.c b/src/osmo-hnbgw/hnbgw_cn.c
index 3659b36..686a0e5 100644
--- a/src/osmo-hnbgw/hnbgw_cn.c
+++ b/src/osmo-hnbgw/hnbgw_cn.c
@@ -258,7 +258,8 @@
}
}
-/* Entry point for primitives coming up from SCCP User SAP */
+/* Entry point for primitives coming up from SCCP User SAP.
+ * Ownership of oph->msg is transferred to us. */
static int sccp_sap_up(struct osmo_prim_hdr *oph, void *ctx)
{
struct osmo_sccp_user *scu = ctx;
diff --git a/src/osmo-hnbgw/hnbgw_ranap.c b/src/osmo-hnbgw/hnbgw_ranap.c
index 692cf11..6dc1f06 100644
--- a/src/osmo-hnbgw/hnbgw_ranap.c
+++ b/src/osmo-hnbgw/hnbgw_ranap.c
@@ -252,7 +252,7 @@
}
/* Process a received RANAP PDU through SCCP DATA.ind coming from CN (MSC/SGSN)
- * Takes ownership of ranap_msg? */
+ * ranap_msg is owned by OTC_SELECT. */
int hnbgw_ranap_rx_data_ul(struct hnbgw_context_map *map, struct msgb *ranap_msg)
{
OSMO_ASSERT(map);
@@ -270,7 +270,7 @@
* information, for RTP mapping via MGW, or GTP mapping via UPF. */
switch (message->procedureCode) {
case RANAP_ProcedureCode_id_RAB_Assignment:
- /* mgw_fsm_handle_rab_ass_resp() takes ownership of prim->oph and (ranap) message */
+ /* mgw_fsm_handle_rab_ass_resp() may take ownership of "ranap_msg" (prim->oph) and "message" */
return mgw_fsm_handle_cs_rab_ass_resp(map, ranap_msg, message);
}
} else {
@@ -279,7 +279,7 @@
/* map->is_ps == true and PFCP is enabled in osmo-hnbgw.cfg */
switch (message->procedureCode) {
case RANAP_ProcedureCode_id_RAB_Assignment:
- /* ps_rab_ass_fsm takes ownership of prim->oph and RANAP message */
+ /* ps_rab_ass_fsm() may take ownership of "ranap_msg" (prim->oph) and "message" */
return hnbgw_gtpmap_rx_rab_ass_resp(map, ranap_msg, message);
}
}
@@ -617,7 +617,7 @@
}
/* Process a received RANAP PDU through SCCP DATA.ind coming from CN (MSC/SGSN)
- * Takes ownership of ranap_msg? */
+ * ranap_msg is owned by OTC_SELECT. */
int hnbgw_ranap_rx_data_dl(struct hnbgw_context_map *map, struct msgb *ranap_msg)
{
OSMO_ASSERT(map);
--
To view, visit https://gerrit.osmocom.org/c/osmo-hnbgw/+/40161?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-hnbgw
Gerrit-Branch: master
Gerrit-Change-Id: I556e01b26a71b43432c623adb7ea5af2114981e3
Gerrit-Change-Number: 40161
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>