pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/41813?usp=email )
Change subject: Add Emscripten build support and JS callback logging backend
......................................................................
Add Emscripten build support and JS callback logging backend
This change enables building libosmocore for sandboxed, non-POSIX
environments, specifically WebAssembly targets produced via the
Emscripten toolchain.
The broader motivation is to allow partial execution of selected
Osmocom components in isolated runtime environments where direct access
to hardware and traditional operating system facilities (filesystem,
sockets, privileged execution) is not available.
One intended use case is running a GSM 2G base station where the
radio-facing components are executed inside a web environment, while
the remaining Osmocom stack and core network components continue to run
unchanged on a conventional backend server. In this model, highly
stripped-down variants of osmo-bts and osmo-trx are built as static
WebAssembly libraries and executed in the browser, while depending on
core libraries such as libosmocore, libosmo-netif, and libosmo-abis.
A practical advantage of this approach is that no deployment or
privileged setup is required on the radio endpoint side. A user can
instantiate a radio endpoint with minimal configuration, while all
stateful logic and operational complexity remains centralized on the
backend. Multiple such radio endpoints may connect to the same backend
core network, effectively forming a single logical network from the
core network perspective, independent of the physical location of the
radio endpoints.
Existing libosmocore build logic and platform assumptions rely on the
availability of POSIX APIs and OS services which are not present in
WebAssembly runtimes. This currently prevents libosmocore from being
built for such targets without targeted, build-time adjustments. This
patch introduces the minimal set of changes required to enable such
builds, without affecting native platforms.
As part of this groundwork, a minimal callback-based logging hook is
introduced. When building for Emscripten, this hook allows forwarding
log messages to an external environment via a user-provided JavaScript
callback. This enables integration with browser-side logging or UI
infrastructure without introducing new logging backends or runtime
dependencies. For all other build targets, the hook resolves to a no-op
implementation and does not alter existing logging behavior.
No runtime behavior, protocol semantics, or network interactions are
changed by this patch. All modifications are strictly limited to
build-time and platform-specific code paths and are only active when
targeting Emscripten. Native builds and existing deployment scenarios
remain unaffected.
This patch is intended as groundwork. Follow-up changes, proposed
separately and incrementally, may extend similar support to other
Osmocom components such as libosmo-netif, libosmo-abis, osmo-bts, and
osmo-trx, while keeping all such changes optional and isolated from
native builds.
Change-Id: Ia8d5f4bb6570b5e055826f3a051e5e5896866e31
---
M .gitignore
M configure.ac
M include/osmocom/core/logging.h
M src/core/Makefile.am
M src/core/libosmocore.map
A src/core/logging_emscripten.c
M src/vty/logging_vty.c
7 files changed, 158 insertions(+), 0 deletions(-)
Approvals:
Jenkins Builder: Verified
pespin: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/.gitignore b/.gitignore
index 907743f..91535e8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@
*.la
*.pc
*.pyc
+*.wasm
aclocal.m4
acinclude.m4
aminclude.am
diff --git a/configure.ac b/configure.ac
index 18807f8..b32f304 100644
--- a/configure.ac
+++ b/configure.ac
@@ -25,6 +25,18 @@
AC_PROG_INSTALL
LT_INIT([pic-only disable-static])
+dnl Detect emscripten compiler
+case "$CC" in
+*emcc*)
+ emscripten=yes
+ ;;
+*)
+ emscripten=no
+ ;;
+esac
+AM_CONDITIONAL(HAVE_EMSCRIPTEN, test "x$emscripten" = "xyes")
+AC_SUBST([HAVE_EMSCRIPTEN], [$emscripten])
+
AC_CONFIG_MACRO_DIR([m4])
dnl patching ${archive_cmds} to affect generation of file "libtool" to fix linking with clang
@@ -268,6 +280,18 @@
ENABLE_GNUTLS_DEFAULT="no"
fi
+if test "x$emscripten" = "xyes"
+then
+ ENABLE_SERIAL_DEFAULT="no"
+ ENABLE_GNUTLS_DEFAULT="no"
+ ENABLE_GB_DEFAULT="no"
+ ENABLE_LIBMNL_DEFAULT="no"
+ ENABLE_LIBSCTP_DEFAULT="no"
+ ENABLE_LIBUSB_DEFAULT="no"
+ ENABLE_PCSC_DEFAULT="no"
+ ENABLE_URING_DEFAULT="no"
+fi
+
AC_ARG_ENABLE([uring], [AS_HELP_STRING([--disable-uring], [Build without io_uring support])],
[ENABLE_URING=$enableval], [ENABLE_URING=$ENABLE_URING_DEFAULT])
AS_IF([test "x$ENABLE_URING" = "xyes"], [
diff --git a/include/osmocom/core/logging.h b/include/osmocom/core/logging.h
index 286f646..ac6e553 100644
--- a/include/osmocom/core/logging.h
+++ b/include/osmocom/core/logging.h
@@ -282,6 +282,7 @@
LOG_TGT_TYPE_STRRB, /*!< osmo_strrb-backed logging */
LOG_TGT_TYPE_GSMTAP, /*!< GSMTAP network logging */
LOG_TGT_TYPE_SYSTEMD, /*!< systemd journal logging */
+ LOG_TGT_TYPE_EMSCRIPTEN, /*!< Emscripten logging using JS callback */
};
/*! Whether/how to log the source filename (and line number). */
@@ -451,6 +452,7 @@
bool ofd_wq_mode,
bool add_sink);
struct log_target *log_target_create_systemd(bool raw);
+struct log_target *log_target_create_emscripten(void);
void log_target_systemd_set_raw(struct log_target *target, bool raw);
int log_target_file_reopen(struct log_target *tgt);
int log_target_file_switch_to_stream(struct log_target *tgt);
diff --git a/src/core/Makefile.am b/src/core/Makefile.am
index 1c0bfed..fd18be8 100644
--- a/src/core/Makefile.am
+++ b/src/core/Makefile.am
@@ -82,6 +82,10 @@
probes.d \
$(NULL)
+if HAVE_EMSCRIPTEN
+libosmocore_la_SOURCES += logging_emscripten.c
+endif
+
if HAVE_SSSE3
libosmocore_la_SOURCES += conv_acc_sse.c
if HAVE_SSE4_1
diff --git a/src/core/libosmocore.map b/src/core/libosmocore.map
index f6e15f0..5a3c3e8 100644
--- a/src/core/libosmocore.map
+++ b/src/core/libosmocore.map
@@ -101,6 +101,7 @@
log_target_create_stderr;
log_target_create_syslog;
log_target_create_systemd;
+log_target_create_emscripten;
log_target_destroy;
log_target_file_reopen;
log_target_file_switch_to_stream;
diff --git a/src/core/logging_emscripten.c b/src/core/logging_emscripten.c
new file mode 100644
index 0000000..a186fd2
--- /dev/null
+++ b/src/core/logging_emscripten.c
@@ -0,0 +1,79 @@
+/*! \file logging_emscripten.c
+ * Logging support code using a JS callback. This module sends log
+ * messages to a JavaScript callback named `on_log`
+ * with interface on_log(const char *subsys, int level, const char *msg).
+ * */
+/*
+ * (C) 2026 by Timur Davydov <dtv.comp(a)gmail.com>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+
+/*! \addtogroup logging
+ * @{
+ * \file logging_emscripten.c */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/core/logging_internal.h>
+
+#include <emscripten.h>
+
+EM_JS(void, on_log_wrapper, (const char *subsys, int level, const char *msg), {
+ return on_log(subsys, level, msg);
+});
+
+static void _emscripten_raw_output(struct log_target *target, int subsys,
+ unsigned int level, const char *file,
+ int line, int cont, const char *format,
+ va_list ap)
+{
+ char msg[MAX_LOG_SIZE];
+ const char *subsys_name = log_category_name(subsys);
+ int rc;
+
+ rc = vsnprintf(msg, sizeof(msg), format, ap);
+ if (rc <= 0)
+ return;
+ if (rc >= sizeof(msg))
+ rc = sizeof(msg) - 1;
+
+ /* Drop newline at the end if exists: */
+ if (msg[rc - 1] == '\n')
+ msg[rc - 1] = '\0';
+
+ on_log_wrapper(subsys_name ? subsys_name : "", level, msg);
+}
+
+/*! Create a new logging target for JS callback logging (uses `on_log`)
+ * \returns Log target in case of success, NULL in case of error
+ */
+struct log_target *log_target_create_emscripten(void)
+{
+ struct log_target *target;
+
+ target = log_target_create();
+ if (!target)
+ return NULL;
+
+ target->type = LOG_TGT_TYPE_EMSCRIPTEN;
+ target->raw_output = _emscripten_raw_output;
+
+ return target;
+}
+
+/* @} */
diff --git a/src/vty/logging_vty.c b/src/vty/logging_vty.c
index 6fd7abc..3fa62a1 100644
--- a/src/vty/logging_vty.c
+++ b/src/vty/logging_vty.c
@@ -1032,6 +1032,46 @@
RET_WITH_UNLOCK(CMD_SUCCESS);
}
+#if defined(__EMSCRIPTEN__)
+DEFUN(cfg_log_emscripten, cfg_log_emscripten_cmd,
+ "log emscripten",
+ LOG_STR "Logging via EMSCRIPTEN\n")
+{
+ struct log_target *tgt;
+
+ log_tgt_mutex_lock();
+ tgt = log_target_create_emscripten();
+ if (!tgt) {
+ vty_out(vty, "%% Unable to create EMSCRIPTEN log target%s", VTY_NEWLINE);
+ RET_WITH_UNLOCK(CMD_WARNING);
+ }
+ log_add_target(tgt);
+
+ vty->index = tgt;
+ vty->node = CFG_LOG_NODE;
+
+ RET_WITH_UNLOCK(CMD_SUCCESS);
+}
+
+DEFUN(cfg_no_log_emscripten, cfg_no_log_emscripten_cmd,
+ "no log emscripten",
+ NO_STR LOG_STR "Logging via EMSCRIPTEN\n")
+{
+ struct log_target *tgt;
+
+ log_tgt_mutex_lock();
+ tgt = log_target_find(LOG_TGT_TYPE_EMSCRIPTEN, NULL);
+ if (tgt == NULL) {
+ vty_out(vty, "%% Unable to find EMSCRIPTEN log target%s", VTY_NEWLINE);
+ RET_WITH_UNLOCK(CMD_WARNING);
+ }
+
+ log_target_destroy(tgt);
+
+ RET_WITH_UNLOCK(CMD_SUCCESS);
+}
+#endif /* defined(__EMSCRIPTEN__) */
+
static int config_write_log_single(struct vty *vty, struct log_target *tgt)
{
char level_buf[128];
@@ -1084,6 +1124,9 @@
tgt->sd_journal.raw ? " raw" : "",
VTY_NEWLINE);
break;
+ case LOG_TGT_TYPE_EMSCRIPTEN:
+ vty_out(vty, "log emscripten%s", VTY_NEWLINE);
+ break;
}
vty_out(vty, " logging filter all %u%s",
@@ -1311,4 +1354,8 @@
install_lib_element(CONFIG_NODE, &cfg_no_log_systemd_journal_cmd);
install_lib_element(CONFIG_NODE, &cfg_log_gsmtap_cmd);
install_lib_element(CONFIG_NODE, &cfg_no_log_gsmtap_cmd);
+#if defined(__EMSCRIPTEN__)
+ install_lib_element(CONFIG_NODE, &cfg_log_emscripten_cmd);
+ install_lib_element(CONFIG_NODE, &cfg_no_log_emscripten_cmd);
+#endif /* defined(__EMSCRIPTEN__) */
}
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/41813?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ia8d5f4bb6570b5e055826f3a051e5e5896866e31
Gerrit-Change-Number: 41813
Gerrit-PatchSet: 27
Gerrit-Owner: Timur Davydov <dtv.comp(a)gmail.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/42040?usp=email )
Change subject: cosmetic: Fix typo in comment
......................................................................
cosmetic: Fix typo in comment
Change-Id: If5adb80baaae78cae7164e1f85c53195eafa6e3e
---
M src/ss7_as_vty.c
1 file changed, 1 insertion(+), 1 deletion(-)
Approvals:
laforge: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/src/ss7_as_vty.c b/src/ss7_as_vty.c
index 92e16bb..2d919bb 100644
--- a/src/ss7_as_vty.c
+++ b/src/ss7_as_vty.c
@@ -666,7 +666,7 @@
/* AS in ASP role should be configured with a local PC which they can
* then announce using RKM.
* Still, allow STPs to have AS(P) configured in an ASP mode to talk to a
- * peer STP by announcing remove PCs. */
+ * peer STP by announcing remote PCs. */
if (as_role == OSMO_SS7_ASP_ROLE_ASP &&
!osmo_ss7_pc_is_local(as->inst, as->cfg.routing_key.pc))
vty_out(vty, "%% AS '%s' with local role ASP should have a local PC configured in its "
--
To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/42040?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: If5adb80baaae78cae7164e1f85c53195eafa6e3e
Gerrit-Change-Number: 42040
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Attention is currently required from: fixeria.
pespin has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/42039?usp=email )
Change subject: xua_rkm: Add checks for ASP role in rx msg path
......................................................................
Patch Set 2: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/42039?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: I672060c24571586b37102c7f7f60e4b0e20e07a9
Gerrit-Change-Number: 42039
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Wed, 04 Feb 2026 14:17:19 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/42038?usp=email )
Change subject: xua_asp_fsm: Remove duplicated role field
......................................................................
xua_asp_fsm: Remove duplicated role field
The role is actually taken from the asp object, and it's not expected to
change during its lifetime, so there's no really a need to keep a copy
of it. Simplify the code by using the asp role everywhere.
Change-Id: Ia6de131ce50f07261736645fe5b2ed1ad39eb01b
---
M src/ss7_asp.c
M src/ss7_xua_srv.c
M src/xua_asp_fsm.c
M src/xua_asp_fsm.h
4 files changed, 19 insertions(+), 29 deletions(-)
Approvals:
laforge: Looks good to me, approved
fixeria: Looks good to me, but someone else must approve
Jenkins Builder: Verified
diff --git a/src/ss7_asp.c b/src/ss7_asp.c
index 161e070..4ca1fb4 100644
--- a/src/ss7_asp.c
+++ b/src/ss7_asp.c
@@ -915,7 +915,7 @@
osmo_ss7_asp_remove_default_lm(asp);
}
- if ((rc = xua_asp_fsm_start(asp, asp->cfg.role, LOGL_DEBUG)) < 0)
+ if ((rc = xua_asp_fsm_start(asp, LOGL_DEBUG)) < 0)
return rc;
OSMO_ASSERT(asp->fi);
diff --git a/src/ss7_xua_srv.c b/src/ss7_xua_srv.c
index 85906b7..deb1808 100644
--- a/src/ss7_xua_srv.c
+++ b/src/ss7_xua_srv.c
@@ -178,7 +178,7 @@
oxs->cfg.local.host_cnt);
ss7_asp_peer_set_hosts(&asp->cfg.remote, asp,
&hostbuf_ptr, 1);
- if ((rc = xua_asp_fsm_start(asp, asp->cfg.role, LOGL_DEBUG)) < 0) {
+ if ((rc = xua_asp_fsm_start(asp, LOGL_DEBUG)) < 0) {
talloc_free(sock_name);
osmo_ss7_asp_destroy(asp);
return rc;
diff --git a/src/xua_asp_fsm.c b/src/xua_asp_fsm.c
index f70e313..580a298 100644
--- a/src/xua_asp_fsm.c
+++ b/src/xua_asp_fsm.c
@@ -86,8 +86,6 @@
struct xua_asp_fsm_priv {
/* pointer back to ASP to which we belong */
struct osmo_ss7_asp *asp;
- /* Role (ASP/SG/IPSP) */
- enum osmo_ss7_asp_role role;
/* routing context[s]: list of 32bit integers */
/* ACTIVE: traffic mode type, tid label, drn label ? */
@@ -515,12 +513,13 @@
#define ENSURE_ASP_OR_IPSP(fi, event) \
do { \
struct xua_asp_fsm_priv *_xafp = fi->priv; \
- if (_xafp->role != OSMO_SS7_ASP_ROLE_ASP && \
- _xafp->role != OSMO_SS7_ASP_ROLE_IPSP) { \
+ enum osmo_ss7_asp_role _role = _xafp->asp->cfg.role; \
+ if (_role != OSMO_SS7_ASP_ROLE_ASP && \
+ _role != OSMO_SS7_ASP_ROLE_IPSP) { \
LOGPFSML(fi, LOGL_ERROR, "event %s not permitted " \
"in role %s\n", \
osmo_fsm_event_name(fi->fsm, event), \
- get_value_string(osmo_ss7_asp_role_names, _xafp->role));\
+ get_value_string(osmo_ss7_asp_role_names, _role));\
return; \
} \
} while(0)
@@ -528,12 +527,13 @@
#define ENSURE_SG_OR_IPSP(fi, event) \
do { \
struct xua_asp_fsm_priv *_xafp = fi->priv; \
- if (_xafp->role != OSMO_SS7_ASP_ROLE_SG && \
- _xafp->role != OSMO_SS7_ASP_ROLE_IPSP) { \
+ enum osmo_ss7_asp_role _role = _xafp->asp->cfg.role; \
+ if (_role != OSMO_SS7_ASP_ROLE_SG && \
+ _role != OSMO_SS7_ASP_ROLE_IPSP) { \
LOGPFSML(fi, LOGL_ERROR, "event %s not permitted " \
"in role %s\n", \
osmo_fsm_event_name(fi->fsm, event), \
- get_value_string(osmo_ss7_asp_role_names, _xafp->role));\
+ get_value_string(osmo_ss7_asp_role_names, _role));\
return; \
} \
} while(0)
@@ -959,22 +959,19 @@
.cleanup = xua_asp_fsm_cleanup,
};
-static int ipa_asp_fsm_start(struct osmo_ss7_asp *asp,
- enum osmo_ss7_asp_role role, int log_level);
+static int ipa_asp_fsm_start(struct osmo_ss7_asp *asp, int log_level);
/*! \brief Start a new ASP finite state machine for given ASP (stored in asp->fi)
* \param[in] asp Application Server Process for which to start FSM
- * \param[in] role Role (ASP, SG, IPSP) of this FSM
* \param[in] log_level Logging Level for ASP FSM logging
* \returns 0 on success; negative on error */
-int xua_asp_fsm_start(struct osmo_ss7_asp *asp,
- enum osmo_ss7_asp_role role, int log_level)
+int xua_asp_fsm_start(struct osmo_ss7_asp *asp, int log_level)
{
struct osmo_fsm_inst *fi;
struct xua_asp_fsm_priv *xafp;
if (asp->cfg.proto == OSMO_SS7_ASP_PROT_IPA)
- return ipa_asp_fsm_start(asp, role, log_level);
+ return ipa_asp_fsm_start(asp, log_level);
/* allocate as child of AS? */
fi = osmo_fsm_inst_alloc(&xua_asp_fsm, asp, NULL, log_level, asp->cfg.name);
@@ -986,7 +983,6 @@
osmo_fsm_inst_term(fi, OSMO_FSM_TERM_ERROR, NULL);
return -ENOMEM;
}
- xafp->role = role;
xafp->asp = asp;
osmo_timer_setup(&xafp->t_beat.timer, xua_t_beat_cb, fi);
@@ -1026,8 +1022,6 @@
struct ipa_asp_fsm_priv {
/* pointer back to ASP to which we belong */
struct osmo_ss7_asp *asp;
- /* Role (ASP/SG/IPSP) */
- enum osmo_ss7_asp_role role;
/* Structure holding parsed data of the IPA CCM ID exchange */
struct ipaccess_unit *ipa_unit;
@@ -1146,7 +1140,7 @@
switch (event) {
case XUA_ASP_E_M_ASP_UP_REQ:
case XUA_ASP_E_SCTP_EST_IND:
- if (iafp->role == OSMO_SS7_ASP_ROLE_SG) {
+ if (iafp->asp->cfg.role == OSMO_SS7_ASP_ROLE_SG) {
/* Server: Transmit IPA ID GET + Wait for Response */
if (fd >= 0) {
ipa_ccm_send_id_req(fd);
@@ -1407,7 +1401,7 @@
* It will be applied to PDUs received from the IPA socket. */
_ipa_asp_pick_unused_sls(iafp->asp, as);
/* Now that the AS is known, start the client side: */
- if (iafp->role == OSMO_SS7_ASP_ROLE_ASP && fi->state == IPA_ASP_S_DOWN) {
+ if (iafp->asp->cfg.role == OSMO_SS7_ASP_ROLE_ASP && fi->state == IPA_ASP_S_DOWN) {
LOGPFSML(fi, LOGL_NOTICE, "Bringing up ASP now once it has been assigned to an AS\n");
osmo_fsm_inst_dispatch(fi, XUA_ASP_E_M_ASP_UP_REQ, NULL);
}
@@ -1522,11 +1516,9 @@
/*! \brief Start a new ASP finite state machine for given ASP (stored on asp->fi)
* \param[in] asp Application Server Process for which to start FSM
- * \param[in] role Role (ASP, SG, IPSP) of this FSM
* \param[in] log_level Logging Level for ASP FSM logging
* \returns 0 on success; negative on error */
-static int ipa_asp_fsm_start(struct osmo_ss7_asp *asp,
- enum osmo_ss7_asp_role role, int log_level)
+static int ipa_asp_fsm_start(struct osmo_ss7_asp *asp, int log_level)
{
struct osmo_fsm_inst *fi;
struct ipa_asp_fsm_priv *iafp;
@@ -1557,7 +1549,7 @@
} else {
/* ASP in client mode will be brought up when this ASP is added
* to an AS, see XUA_ASP_E_AS_ASSIGNED. */
- if (role == OSMO_SS7_ASP_ROLE_ASP) {
+ if (asp->cfg.role == OSMO_SS7_ASP_ROLE_ASP) {
LOGPFSML(fi, LOGL_NOTICE, "ASP is not assigned to any AS. ASP bring up delayed\n");
can_start = false;
}
@@ -1565,7 +1557,6 @@
/* asp->ipa.sls will be assigned together with AS unit_name during XUA_ASP_E_AS_ASSIGNED. */
}
- iafp->role = role;
iafp->asp = asp;
iafp->ipa_unit = talloc_zero(iafp, struct ipaccess_unit);
iafp->ipa_unit->unit_name = talloc_strdup(iafp->ipa_unit, unit_name);
@@ -1576,7 +1567,7 @@
/* Attach FSM to ASP: */
asp->fi = fi;
- if (can_start && role == OSMO_SS7_ASP_ROLE_ASP)
+ if (can_start && asp->cfg.role == OSMO_SS7_ASP_ROLE_ASP)
osmo_fsm_inst_dispatch(fi, XUA_ASP_E_M_ASP_UP_REQ, NULL);
return 0;
diff --git a/src/xua_asp_fsm.h b/src/xua_asp_fsm.h
index ab19e36..61a43a1 100644
--- a/src/xua_asp_fsm.h
+++ b/src/xua_asp_fsm.h
@@ -42,5 +42,4 @@
extern struct osmo_fsm xua_asp_fsm;
extern struct osmo_fsm ipa_asp_fsm;
-int xua_asp_fsm_start(struct osmo_ss7_asp *asp,
- enum osmo_ss7_asp_role role, int log_level);
+int xua_asp_fsm_start(struct osmo_ss7_asp *asp, int log_level);
--
To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/42038?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: Ia6de131ce50f07261736645fe5b2ed1ad39eb01b
Gerrit-Change-Number: 42038
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Attention is currently required from: Hoernchen.
laforge has posted comments on this change by Hoernchen. ( https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/42049?usp=email )
Change subject: fix wait time extension handling
......................................................................
Patch Set 1:
(1 comment)
Commit Message:
https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/42049/comment/18278323_49… :
PS1, Line 7: fix wait time extension handling
I'm sorry, but the commit log is missing. Of course we fix something in the commit, but what bug exactly is fixed here is the relevant part.
--
To view, visit https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/42049?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ccid-firmware
Gerrit-Branch: master
Gerrit-Change-Id: I7527a4337ae857b9b2a4e982606fac770e677d73
Gerrit-Change-Number: 42049
Gerrit-PatchSet: 1
Gerrit-Owner: Hoernchen <ewild(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-Attention: Hoernchen <ewild(a)sysmocom.de>
Gerrit-Comment-Date: Wed, 04 Feb 2026 14:09:40 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Attention is currently required from: laforge, neels.
Hello Jenkins Builder, laforge, neels,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/pysim/+/42043?usp=email
to look at the new patch set (#5).
The following approvals got outdated and were removed:
Verified+1 by Jenkins Builder
Change subject: esim/http_json_api: add alternative API interface
......................................................................
esim/http_json_api: add alternative API interface
unfortunately the API changes introduced in change
I277aa90fddb5171c4bf6c3436259aa371d30d092
broke the API interface of http_json_api.py. This was taken into
account and necessary to introduce add the server functionality next
to the already existing client functionality. The changes to the API
were minimal and all code locations that use http_json_api.py
were re-aligned.
Unfortunately it was not clear at this point in time that there are
out-of-tree projects that could be affected by API changes in
http_json_api.py
To mitigate the problem this patch introduces an alternative API
interface to the JsonHttpApiFunction base class. This alternative
API interface works like the old API interface when the class is
instantiated in the original way. To make use of the revised client
the API use has to pass an additional keyword argument that defines
the role.
Related: SYS#7866
Change-Id: I2a5d4b59b12e08d5eae7a1215814d3a69c8921f6
---
M pySim/esim/http_json_api.py
1 file changed, 51 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/43/42043/5
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/42043?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newpatchset
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I2a5d4b59b12e08d5eae7a1215814d3a69c8921f6
Gerrit-Change-Number: 42043
Gerrit-PatchSet: 5
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Attention is currently required from: laforge, neels.
dexter has posted comments on this change by dexter. ( https://gerrit.osmocom.org/c/pysim/+/42043?usp=email )
Change subject: esim/http_json_api: add alternative API interface
......................................................................
Patch Set 5:
(2 comments)
File pySim/esim/http_json_api.py:
https://gerrit.osmocom.org/c/pysim/+/42043/comment/d7c7e735_819bcc53?usp=em… :
PS4, Line 237:
> I think you probably wanted to remove those print statements before submitting it here? ;)
Done
https://gerrit.osmocom.org/c/pysim/+/42043/comment/a4286226_1b0a0490?usp=em… :
PS4, Line 272:
> not sure we want those all the time from sysmo-esim-mgr. […]
Its probably enough if we warn once during the instantiation.
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/42043?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I2a5d4b59b12e08d5eae7a1215814d3a69c8921f6
Gerrit-Change-Number: 42043
Gerrit-PatchSet: 5
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Wed, 04 Feb 2026 14:08:22 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: laforge <laforge(a)osmocom.org>