lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

March 2023

  • 1 participants
  • 3642 discussions
[S] Change in osmocom-bb[master]: layer23: modem: llc: Fix typo LLGM -> LLGMM
by pespin 31 Mar '23

31 Mar '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmocom-bb/+/32157 ) Change subject: layer23: modem: llc: Fix typo LLGM -> LLGMM ...................................................................... layer23: modem: llc: Fix typo LLGM -> LLGMM Depends: libosmo-gprs.git Change-Id I59577d27bedd26903c9b1bfc64792f0891cea728 Change-Id: I786661894fc6772784ba6f0d2fdb45bbdca5254c --- M src/host/layer23/src/modem/llc.c 1 file changed, 11 insertions(+), 1 deletion(-) Approvals: fixeria: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/host/layer23/src/modem/llc.c b/src/host/layer23/src/modem/llc.c index 5352e0f..c611947 100644 --- a/src/host/layer23/src/modem/llc.c +++ b/src/host/layer23/src/modem/llc.c @@ -92,7 +92,7 @@ int rc = 0; switch (llc_prim->oph.sap) { - case OSMO_GPRS_LLC_SAP_LLGM: + case OSMO_GPRS_LLC_SAP_LLGMM: LOGP(DLLC, LOGL_DEBUG, "%s(): Rx %s TLLI=0x%08x\n", __func__, pdu_name, llc_prim->llgmm.tlli); break; -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/32157 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I786661894fc6772784ba6f0d2fdb45bbdca5254c Gerrit-Change-Number: 32157 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in osmocom-bb[master]: modem: initial SM layer support through libosmo-gprs-sm
by pespin 31 Mar '23

31 Mar '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmocom-bb/+/32155 ) Change subject: modem: initial SM layer support through libosmo-gprs-sm ...................................................................... modem: initial SM layer support through libosmo-gprs-sm Depends: libosmo-gprs.git Change-Id I9b4a9a6364f7799540475e7e1d10ab2310768281 Related: OS#5501 Change-Id: I9476d93954c7dc348e6f97ca89eaa651f802f9a0 --- M src/host/layer23/configure.ac M src/host/layer23/include/osmocom/bb/common/logging.h M src/host/layer23/include/osmocom/bb/modem/Makefile.am A src/host/layer23/include/osmocom/bb/modem/sm.h M src/host/layer23/src/common/logging.c M src/host/layer23/src/modem/Makefile.am M src/host/layer23/src/modem/app_modem.c A src/host/layer23/src/modem/sm.c M src/host/layer23/src/modem/vty.c 9 files changed, 228 insertions(+), 0 deletions(-) Approvals: fixeria: Looks good to me, approved pespin: Verified diff --git a/src/host/layer23/configure.ac b/src/host/layer23/configure.ac index 1434fbf..b4eb860 100644 --- a/src/host/layer23/configure.ac +++ b/src/host/layer23/configure.ac @@ -50,6 +50,7 @@ PKG_CHECK_MODULES(LIBOSMOGPRSLLC, libosmo-gprs-llc) PKG_CHECK_MODULES(LIBOSMOGPRSSNDCP, libosmo-gprs-sndcp) PKG_CHECK_MODULES(LIBOSMOGPRSGMM, libosmo-gprs-gmm) +PKG_CHECK_MODULES(LIBOSMOGPRSSM, libosmo-gprs-sm) AC_CHECK_LIB(gps, gps_waiting, LIBGPS_CFLAGS=" -D_HAVE_GPSD" LIBGPS_LIBS=" -lgps ",,) AC_SUBST([LIBGPS_CFLAGS]) AC_SUBST([LIBGPS_LIBS]) diff --git a/src/host/layer23/include/osmocom/bb/common/logging.h b/src/host/layer23/include/osmocom/bb/common/logging.h index fc0861e..fa76c59 100644 --- a/src/host/layer23/include/osmocom/bb/common/logging.h +++ b/src/host/layer23/include/osmocom/bb/common/logging.h @@ -31,6 +31,7 @@ DLLC, DSNDCP, DGMM, + DSM }; extern const struct log_info log_info; diff --git a/src/host/layer23/include/osmocom/bb/modem/Makefile.am b/src/host/layer23/include/osmocom/bb/modem/Makefile.am index 6dfc98e..2f69d19 100644 --- a/src/host/layer23/include/osmocom/bb/modem/Makefile.am +++ b/src/host/layer23/include/osmocom/bb/modem/Makefile.am @@ -4,6 +4,7 @@ grr.h \ llc.h \ rlcmac.h \ + sm.h \ sndcp.h \ vty.h \ $(NULL) diff --git a/src/host/layer23/include/osmocom/bb/modem/sm.h b/src/host/layer23/include/osmocom/bb/modem/sm.h new file mode 100644 index 0000000..51000cf --- /dev/null +++ b/src/host/layer23/include/osmocom/bb/modem/sm.h @@ -0,0 +1,7 @@ +#pragma once + +#include <stdbool.h> + +struct osmocom_ms; + +int modem_sm_init(struct osmocom_ms *ms); diff --git a/src/host/layer23/src/common/logging.c b/src/host/layer23/src/common/logging.c index e3a5beb..d1b5b92 100644 --- a/src/host/layer23/src/common/logging.c +++ b/src/host/layer23/src/common/logging.c @@ -177,6 +177,12 @@ .color = "\033[0;32m", .enabled = 1, .loglevel = LOGL_NOTICE, }, + [DSM] = { + .name = "DSM", + .description = "GPRS Session Management (SM)", + .color = "\033[0;31m", + .enabled = 1, .loglevel = LOGL_NOTICE, + }, }; const struct log_info log_info = { diff --git a/src/host/layer23/src/modem/Makefile.am b/src/host/layer23/src/modem/Makefile.am index 086c2f3..935722b 100644 --- a/src/host/layer23/src/modem/Makefile.am +++ b/src/host/layer23/src/modem/Makefile.am @@ -12,6 +12,7 @@ $(LIBOSMOGPRSLLC_CFLAGS) \ $(LIBOSMOGPRSSNDCP_CFLAGS) \ $(LIBOSMOGPRSGMM_CFLAGS) \ + $(LIBOSMOGPRSSM_CFLAGS) \ $(NULL) bin_PROGRAMS = modem @@ -23,6 +24,7 @@ grr.c \ llc.c \ rlcmac.c \ + sm.c \ sndcp.c \ vty.c \ $(NULL) @@ -35,4 +37,5 @@ $(LIBOSMOGPRSLLC_LIBS) \ $(LIBOSMOGPRSSNDCP_LIBS) \ $(LIBOSMOGPRSGMM_LIBS) \ + $(LIBOSMOGPRSSM_LIBS) \ $(NULL) diff --git a/src/host/layer23/src/modem/app_modem.c b/src/host/layer23/src/modem/app_modem.c index cecf4e6..644c630 100644 --- a/src/host/layer23/src/modem/app_modem.c +++ b/src/host/layer23/src/modem/app_modem.c @@ -51,6 +51,7 @@ #include <osmocom/bb/modem/llc.h> #include <osmocom/bb/modem/sndcp.h> #include <osmocom/bb/modem/gmm.h> +#include <osmocom/bb/modem/sm.h> #include <osmocom/bb/modem/vty.h> #include <osmocom/bb/modem/grr.h> @@ -180,6 +181,11 @@ return rc; } + if ((rc = modem_sm_init(app_data.ms))) { + LOGP(DSM, LOGL_FATAL, "Failed initializing SM layer\n"); + return rc; + } + osmo_signal_register_handler(SS_L1CTL, &signal_cb, NULL); lapdm_channel_set_l3(&app_data.ms->lapdm_channel, &modem_grr_rslms_cb, app_data.ms); return 0; diff --git a/src/host/layer23/src/modem/sm.c b/src/host/layer23/src/modem/sm.c new file mode 100644 index 0000000..5dc80e0 --- /dev/null +++ b/src/host/layer23/src/modem/sm.c @@ -0,0 +1,120 @@ +/* GPRS SM interfaces as per 3GPP TS 24.008, TS 24.007 */ +/* (C) 2023 by sysmocom - s.m.f.c. GmbH <info(a)sysmocom.de> + * All Rights Reserved + * Author: Pau Espin Pedrol <pespin(a)sysmocom.de> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation; either version 3 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/lienses/>. + * + */ + +#include <stdbool.h> +#include <string.h> +#include <stdint.h> +#include <errno.h> +#include <stdio.h> + +#include <osmocom/core/msgb.h> +#include <osmocom/core/prim.h> +#include <osmocom/core/utils.h> +#include <osmocom/core/linuxlist.h> +#include <osmocom/core/talloc.h> +#include <osmocom/core/tun.h> +#include <osmocom/gsm/protocol/gsm_04_08_gprs.h> + +#include <osmocom/gprs/gmm/gmm.h> +#include <osmocom/gprs/gmm/gmm_prim.h> +#include <osmocom/gprs/sm/sm_prim.h> +#include <osmocom/gprs/sm/sm.h> +#include <osmocom/gprs/rlcmac/rlcmac_prim.h> + +#include <osmocom/bb/common/settings.h> +#include <osmocom/bb/common/logging.h> +#include <osmocom/bb/common/apn.h> +#include <osmocom/bb/common/ms.h> +#include <osmocom/bb/modem/sm.h> + +static int modem_sm_prim_up_cb(struct osmo_gprs_sm_prim *sm_prim, void *user_data) +{ + const char *pdu_name = osmo_gprs_sm_prim_name(sm_prim); + int rc = 0; + + switch (sm_prim->oph.sap) { + case OSMO_GPRS_SM_SAP_SMREG: + switch (OSMO_PRIM_HDR(&sm_prim->oph)) { + case OSMO_PRIM(OSMO_GPRS_SM_SMREG_PDP_ACTIVATE, PRIM_OP_CONFIRM): + if (sm_prim->smreg.pdp_act_cnf.accepted) + LOGP(DSM, LOGL_INFO, "%s(): Rx %s (TODO: set IP address in tun device)\n", __func__, pdu_name); + else + LOGP(DSM, LOGL_INFO, "%s(): Rx %s: Activate PDP failed! cause '%s'\n", __func__, pdu_name, + get_value_string(gsm48_gsm_cause_names, sm_prim->smreg.pdp_act_cnf.rej.cause)); + break; + case OSMO_PRIM(OSMO_GPRS_SM_SMREG_PDP_ACTIVATE, PRIM_OP_INDICATION): + case OSMO_PRIM(OSMO_GPRS_SM_SMREG_PDP_DEACTIVATE, PRIM_OP_CONFIRM): + case OSMO_PRIM(OSMO_GPRS_SM_SMREG_PDP_DEACTIVATE, PRIM_OP_INDICATION): + case OSMO_PRIM(OSMO_GPRS_SM_SMREG_PDP_MODIFY, PRIM_OP_CONFIRM): + case OSMO_PRIM(OSMO_GPRS_SM_SMREG_PDP_MODIFY, PRIM_OP_INDICATION): + case OSMO_PRIM(OSMO_GPRS_SM_SMREG_PDP_ACTIVATE_SEC, PRIM_OP_CONFIRM): + default: + LOGP(DSM, LOGL_ERROR, "%s(): Rx %s UNIMPLEMENTED\n", __func__, pdu_name); + break; + }; + break; + default: + LOGP(DSM, LOGL_ERROR, "%s(): Unexpected Rx %s\n", __func__, pdu_name); + OSMO_ASSERT(0); + } + + return rc; +} + +static int modem_sm_prim_down_cb(struct osmo_gprs_sm_prim *sm_prim, void *user_data) +{ + const char *pdu_name = osmo_gprs_sm_prim_name(sm_prim); + int rc = 0; + + switch (sm_prim->oph.sap) { + default: + LOGP(DSM, LOGL_ERROR, "%s(): Unexpected Rx %s\n", __func__, pdu_name); + OSMO_ASSERT(0); + } + + return rc; +} + +static int modem_sm_prim_gmm_down_cb(struct osmo_gprs_gmm_prim *gmm_prim, void *user_data) +{ + int rc; + + rc = osmo_gprs_gmm_prim_upper_down(gmm_prim); + + /* GMM took ownership of the message, tell SM layer to not free it: */ + rc = 1; + return rc; +} + +int modem_sm_init(struct osmocom_ms *ms) +{ + int rc; + rc = osmo_gprs_sm_init(OSMO_GPRS_SM_LOCATION_MS); + if (rc != 0) + return rc; + + osmo_gprs_sm_set_log_cat(OSMO_GPRS_SM_LOGC_SM, DSM); + + osmo_gprs_sm_prim_set_up_cb(modem_sm_prim_up_cb, ms); + osmo_gprs_sm_prim_set_down_cb(modem_sm_prim_down_cb, ms); + osmo_gprs_sm_prim_set_gmm_down_cb(modem_sm_prim_gmm_down_cb, ms); + + return rc; +} diff --git a/src/host/layer23/src/modem/vty.c b/src/host/layer23/src/modem/vty.c index 68a46b8..a23ae73 100644 --- a/src/host/layer23/src/modem/vty.c +++ b/src/host/layer23/src/modem/vty.c @@ -26,6 +26,8 @@ #include <osmocom/gprs/llc/llc.h> #include <osmocom/gprs/llc/llc_prim.h> #include <osmocom/gprs/gmm/gmm_prim.h> +#include <osmocom/gprs/sm/sm_prim.h> + #include <osmocom/vty/vty.h> #include <osmocom/vty/command.h> @@ -62,6 +64,7 @@ #define GRR_CMDG_DESC "GPRS RR specific commands\n" #define LLC_CMDG_DESC "GPRS LLC specific commands\n" #define GMM_CMDG_DESC "GPRS GMM specific commands\n" +#define SM_CMDG_DESC "GPRS SM specific commands\n" /* testing commands */ DEFUN_HIDDEN(test_grr_tx_chan_req, @@ -212,6 +215,74 @@ return CMD_SUCCESS; } +DEFUN_HIDDEN(test_sm_act_pdp_ctx, + test_sm_act_pdp_ctx_cmd, + "test MS_NAME sm act-pdp-ctx APN", + TEST_CMD_DESC MS_NAME_DESC SM_CMDG_DESC + "Enqueue a SM SMREG-ACTIVATE.req for transmission\n" + "APN to activate\n") +{ + struct osmo_gprs_sm_prim *sm_prim; + struct osmocom_ms *ms; + struct osmobb_apn *apn; + + uint8_t nsapi = 6; + enum osmo_gprs_sm_llc_sapi llc_sapi = OSMO_GPRS_SM_LLC_SAPI_SAPI3; + struct osmo_sockaddr pdp_addr_any = {0}; + uint8_t qos[OSMO_GPRS_SM_QOS_MAXLEN] = {0}; + uint8_t pco[OSMO_GPRS_SM_QOS_MAXLEN] = {0}; + uint32_t ptmsi = 0x00000000; + char *imsi = "1234567890"; + char *imei = "42342342342342"; + char *imeisv = "4234234234234275"; + enum osmo_gprs_sm_pdp_addr_ietf_type pdp_addr_ietf_type; + + if ((ms = l23_vty_get_ms(argv[0], vty)) == NULL) { + vty_out(vty, "Unable to find MS '%s'%s", argv[0], VTY_NEWLINE); + return CMD_WARNING; + } + + apn = ms_find_apn_by_name(ms, argv[1]); + if (!apn) { + vty_out(vty, "Unable to find APN '%s'%s", argv[1], VTY_NEWLINE); + return CMD_WARNING; + } + + if (apn->cfg.apn_type_mask & APN_TYPE_IPv4v6) { + pdp_addr_ietf_type = OSMO_GPRS_SM_PDP_ADDR_IETF_IPV4V6; + } else if (apn->cfg.apn_type_mask & APN_TYPE_IPv4) { + pdp_addr_ietf_type = OSMO_GPRS_SM_PDP_ADDR_IETF_IPV4; + } else if (apn->cfg.apn_type_mask & APN_TYPE_IPv6) { + pdp_addr_ietf_type = OSMO_GPRS_SM_PDP_ADDR_IETF_IPV6; + } else { + vty_out(vty, "APN '%s' has no PDP address type set%s", argv[1], VTY_NEWLINE); + return CMD_WARNING; + } + + sm_prim = osmo_gprs_sm_prim_alloc_smreg_pdp_act_req(); + sm_prim->smreg.pdp_act_req.nsapi = nsapi; + sm_prim->smreg.pdp_act_req.llc_sapi = llc_sapi; + sm_prim->smreg.pdp_act_req.pdp_addr_ietf_type = pdp_addr_ietf_type; + sm_prim->smreg.pdp_act_req.pdp_addr_v4 = pdp_addr_any; + sm_prim->smreg.pdp_act_req.pdp_addr_v6 = pdp_addr_any; + memcpy(sm_prim->smreg.pdp_act_req.qos, qos, sizeof(qos)); + sm_prim->smreg.pdp_act_req.qos_len = 1; + memcpy(sm_prim->smreg.pdp_act_req.pco, pco, sizeof(pco)); + sm_prim->smreg.pdp_act_req.pco_len = 1; + OSMO_STRLCPY_ARRAY(sm_prim->smreg.pdp_act_req.apn, apn->cfg.name); + sm_prim->smreg.pdp_act_req.gmm.ptmsi = ptmsi; + OSMO_STRLCPY_ARRAY(sm_prim->smreg.pdp_act_req.gmm.imsi, imsi); + OSMO_STRLCPY_ARRAY(sm_prim->smreg.pdp_act_req.gmm.imei, imei); + OSMO_STRLCPY_ARRAY(sm_prim->smreg.pdp_act_req.gmm.imeisv, imeisv); + + if (osmo_gprs_sm_prim_upper_down(sm_prim) != 0) { + vty_out(vty, "Failed to enqueue a SM PDU%s", VTY_NEWLINE); + return CMD_WARNING; + } + + return CMD_SUCCESS; +} + /* per APN config */ DEFUN(cfg_ms_apn, cfg_ms_apn_cmd, "apn APN_NAME", "Configure an APN\n" @@ -397,6 +468,7 @@ install_element_ve(&test_llc_unitdata_req_gmm_attch_cmd); install_element_ve(&test_gmm_reg_attach_cmd); install_element_ve(&test_gmm_reg_detach_cmd); + install_element_ve(&test_sm_act_pdp_ctx_cmd); install_element(CONFIG_NODE, &l23_cfg_ms_cmd); install_element(MS_NODE, &cfg_ms_apn_cmd); -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/32155 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I9476d93954c7dc348e6f97ca89eaa651f802f9a0 Gerrit-Change-Number: 32155 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in osmocom-bb[master]: modem: initial SM layer support through libosmo-gprs-sm
by pespin 31 Mar '23

31 Mar '23
pespin has removed a vote from this change. ( https://gerrit.osmocom.org/c/osmocom-bb/+/32155 ) Change subject: modem: initial SM layer support through libosmo-gprs-sm ...................................................................... Removed Verified-1 by Jenkins Builder (1000002) -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/32155 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I9476d93954c7dc348e6f97ca89eaa651f802f9a0 Gerrit-Change-Number: 32155 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: deleteVote
1 0
0 0
[M] Change in osmocom-bb[master]: modem: initial SM layer support through libosmo-gprs-sm
by pespin 31 Mar '23

31 Mar '23
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmocom-bb/+/32155 ) Change subject: modem: initial SM layer support through libosmo-gprs-sm ...................................................................... Patch Set 2: Verified+1 (1 comment) Patchset: PS2: This one fails to build because I forgot to run this one before merging the last libosmo-gprs patch. -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/32155 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I9476d93954c7dc348e6f97ca89eaa651f802f9a0 Gerrit-Change-Number: 32155 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Fri, 31 Mar 2023 16:02:50 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[XL] Change in libosmocore[master]: Add osmo_io with initial poll backend
by Jenkins Builder 31 Mar '23

31 Mar '23
Attention is currently required from: osmith, Hoernchen, neels, laforge, pespin, fixeria. Jenkins Builder has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/30934 ) Change subject: Add osmo_io with initial poll backend ...................................................................... Patch Set 6: (2 comments) File include/osmocom/core/osmo_io.h: Robot Comment from checkpatch (run ID jenkins-gerrit-lint-5659): https://gerrit.osmocom.org/c/libosmocore/+/30934/comment/f96e35e9_08303690 PS6, Line 73: const char *osmo_iofd_get_name(const struct osmo_io_fd *iofd); adding a line without newline at end of file File src/core/osmo_io.c: Robot Comment from checkpatch (run ID jenkins-gerrit-lint-5659): https://gerrit.osmocom.org/c/libosmocore/+/30934/comment/0dd7b7a0_4e84460c PS6, Line 460: int osmo_iofd_unregister(struct osmo_io_fd *iofd) please, no spaces at the start of a line -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/30934 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I50d73cf550d6ce8154bf827bf47408131cf5b0a0 Gerrit-Change-Number: 30934 Gerrit-PatchSet: 6 Gerrit-Owner: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: Hoernchen <ewild(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: neels <nhofmeyr(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-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Attention: Hoernchen <ewild(a)sysmocom.de> Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Fri, 31 Mar 2023 15:50:09 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Gerrit-MessageType: comment
1 0
0 0
[M] Change in libosmocore[master]: tests: Add initial osmo_io tests
by Jenkins Builder 31 Mar '23

31 Mar '23
Jenkins Builder has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/32181 ) Change subject: tests: Add initial osmo_io tests ...................................................................... Patch Set 1: (8 comments) File tests/osmo_io/osmo_io_test.c: Robot Comment from checkpatch (run ID jenkins-gerrit-lint-5658): https://gerrit.osmocom.org/c/libosmocore/+/32181/comment/27eff49c_1e48ab40 PS1, Line 54: printf("%s: Write returned rc=%d\n",osmo_iofd_get_name(iofd), rc); space required after that ',' (ctx:VxV) Robot Comment from checkpatch (run ID jenkins-gerrit-lint-5658): https://gerrit.osmocom.org/c/libosmocore/+/32181/comment/aa6f4db0_134bf382 PS1, Line 66: static void test_connected() { Bad function definition - void test_connected() should probably be void test_connected(void) Robot Comment from checkpatch (run ID jenkins-gerrit-lint-5658): https://gerrit.osmocom.org/c/libosmocore/+/32181/comment/0dbe83bf_f48cbef0 PS1, Line 66: static void test_connected() { open brace '{' following function definitions go on the next line Robot Comment from checkpatch (run ID jenkins-gerrit-lint-5658): https://gerrit.osmocom.org/c/libosmocore/+/32181/comment/4e42760b_a142fe08 PS1, Line 94: for (int i = 0; i < 128; i++) { braces {} are not necessary for single statement blocks Robot Comment from checkpatch (run ID jenkins-gerrit-lint-5658): https://gerrit.osmocom.org/c/libosmocore/+/32181/comment/ff17bdc2_1fe03a63 PS1, Line 116: static void test_unconnected() { Bad function definition - void test_unconnected() should probably be void test_unconnected(void) Robot Comment from checkpatch (run ID jenkins-gerrit-lint-5658): https://gerrit.osmocom.org/c/libosmocore/+/32181/comment/9d32669c_dfbc20b2 PS1, Line 116: static void test_unconnected() { open brace '{' following function definitions go on the next line Robot Comment from checkpatch (run ID jenkins-gerrit-lint-5658): https://gerrit.osmocom.org/c/libosmocore/+/32181/comment/3d71b0aa_530e488b PS1, Line 144: for (int i = 0; i < 128; i++) { braces {} are not necessary for single statement blocks Robot Comment from checkpatch (run ID jenkins-gerrit-lint-5658): https://gerrit.osmocom.org/c/libosmocore/+/32181/comment/71fa8615_3e680c15 PS1, Line 172: } adding a line without newline at end of file -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/32181 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: Ia67629e53f4d2e5784177250d58e268fdfcaa0c2 Gerrit-Change-Number: 32181 Gerrit-PatchSet: 1 Gerrit-Owner: daniel <dwillmann(a)sysmocom.de> Gerrit-CC: Jenkins Builder Gerrit-Comment-Date: Fri, 31 Mar 2023 15:50:05 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Gerrit-MessageType: comment
1 0
0 0
[M] Change in libosmocore[master]: tests: Add initial osmo_io tests
by daniel 31 Mar '23

31 Mar '23
daniel has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/32181 ) Change subject: tests: Add initial osmo_io tests ...................................................................... tests: Add initial osmo_io tests Change-Id: Ia67629e53f4d2e5784177250d58e268fdfcaa0c2 --- M tests/Makefile.am A tests/osmo_io/osmo_io_test.c A tests/osmo_io/osmo_io_test.err A tests/osmo_io/osmo_io_test.ok M tests/testsuite.at 5 files changed, 206 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/81/32181/1 diff --git a/tests/Makefile.am b/tests/Makefile.am index 6876df3..025d294 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -53,6 +53,7 @@ v110/test_frame \ v110/test_ra1 \ gsm44021/test_frame_csd \ + osmo_io/osmo_io_test \ $(NULL) if ENABLE_MSGFILE @@ -321,6 +322,7 @@ tdef_tdef_vty_dynamic_test_LDADD = $(top_builddir)/src/vty/libosmovty.la $(LDADD) sockaddr_str_sockaddr_str_test_SOURCES = sockaddr_str/sockaddr_str_test.c + osmo_io/osmo_io_test \ sockaddr_str_sockaddr_str_test_LDADD = $(LDADD) use_count_use_count_test_SOURCES = use_count/use_count_test.c @@ -367,6 +369,8 @@ $(top_builddir)/src/gsm/libosmogsm.la \ $(LDADD) +osmo_io_osmo_io_test_SOURCES = osmo_io/osmo_io_test.c + # The `:;' works around a Bash 3.2 bug when the output is not writeable. $(srcdir)/package.m4: $(top_srcdir)/configure.ac @@ -469,6 +473,7 @@ v110/test_frame.ok \ v110/test_ra1.ok \ gsm44021/test_frame_csd.ok \ + osmo_io/osmo_io_test.ok osmo_io/osmo_io_test.err \ $(NULL) if ENABLE_LIBSCTP @@ -678,6 +683,10 @@ >$(srcdir)/v110/test_ra1.ok gsm44021/test_frame_csd \ >$(srcdir)/gsm44021/test_frame_csd.ok + osmo_io/osmo_io_test \ + >$(srcdir)/osmo_io/osmo_io_test.ok \ + 2>$(srcdir)/osmo_io/osmo_io_test.err + check-local: atconfig $(TESTSUITE) [ -e /proc/cpuinfo ] && cat /proc/cpuinfo diff --git a/tests/osmo_io/osmo_io_test.c b/tests/osmo_io/osmo_io_test.c new file mode 100644 index 0000000..9c3440d --- /dev/null +++ b/tests/osmo_io/osmo_io_test.c @@ -0,0 +1,172 @@ +/* + * (C) 2023 by sysmocom s.f.m.c + * Author: Daniel Willmann <daniel(a)sysmocom.de> + * + * 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. + * + */ + +#include <stdio.h> +#include <stdint.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <sys/socket.h> +#include <errno.h> + +#include <osmocom/core/application.h> +#include <osmocom/core/osmo_io.h> +#include <osmocom/core/utils.h> +#include <osmocom/core/logging.h> +#include <osmocom/core/select.h> +#include <osmocom/core/bits.h> + +#include "config.h" +#include "osmocom/core/msgb.h" + +#define TEST_START() printf("Running %s\n", __func__) + +void *ctx = NULL; + +static void read_cb(struct osmo_io_fd *iofd, int rc, struct msgb *msg) +{ + printf("%s: Got msg with len=%d\n", osmo_iofd_get_name(iofd), rc); + if (msg) + printf("%s\n", osmo_hexdump(msgb_data(msg), msgb_length(msg))); + + talloc_free(msg); +} + +static void write_cb(struct osmo_io_fd *iofd, int rc, struct msgb *msg) +{ + printf("%s: Write returned rc=%d\n",osmo_iofd_get_name(iofd), rc); +} + +struct osmo_io_ops ioops_conn = { + .read_cb = read_cb, + .write_cb = write_cb, +}; + +uint8_t TESTDATA[] = { + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 +}; + +static void test_connected() { + int fds[2] = {0, 0}, rc; + struct osmo_io_fd *iofd1, *iofd2; + struct msgb *msg; + uint8_t *buf; + + TEST_START(); + + rc = socketpair(AF_UNIX, SOCK_STREAM, 0, fds); + OSMO_ASSERT(rc == 0); + + iofd1 = osmo_iofd_setup(ctx, fds[0], "ep1", OSMO_IO_FD_MODE_READ_WRITE, &ioops_conn, NULL); + osmo_iofd_register(iofd1, fds[0]); + iofd2 = osmo_iofd_setup(ctx, fds[1], "ep2", OSMO_IO_FD_MODE_READ_WRITE, &ioops_conn, NULL); + osmo_iofd_register(iofd2, fds[1]); + + msg = msgb_alloc(1024, "Test data"); + buf = msgb_put(msg, sizeof(TESTDATA)); + memcpy(buf, TESTDATA, sizeof(TESTDATA)); + + osmo_iofd_write_msgb(iofd1, msg); + osmo_iofd_write_enable(iofd1); + osmo_iofd_write_enable(iofd2); + osmo_iofd_read_enable(iofd1); + osmo_iofd_read_enable(iofd2); + + + /* Allow enough cycles to handle the messages */ + for (int i = 0; i < 128; i++) { + osmo_select_main(1); + } + + osmo_iofd_free(iofd1); + osmo_iofd_free(iofd2); +} + +static void recvmsg_cb(struct osmo_io_fd *iofd, int rc, struct msgb *msg, struct osmo_sockaddr *addr) +{ + printf("%s: Got msg with len=%d\n", osmo_iofd_get_name(iofd), rc); + if (msg) + printf("%s\n", osmo_hexdump(msgb_data(msg), msgb_length(msg))); + + talloc_free(msg); +} + +struct osmo_io_ops ioops_unconn = { + .sendmsg_cb = write_cb, + .recvmsg_cb = recvmsg_cb, +}; + +static void test_unconnected() { + int fds[2] = {0, 0}, rc; + struct osmo_io_fd *iofd1, *iofd2; + struct msgb *msg; + uint8_t *buf; + + TEST_START(); + + rc = socketpair(AF_UNIX, SOCK_DGRAM, 0, fds); + OSMO_ASSERT(rc == 0); + + iofd1 = osmo_iofd_setup(ctx, fds[0], "ep1", OSMO_IO_FD_MODE_RECVFROM_SENDTO, &ioops_unconn, NULL); + osmo_iofd_register(iofd1, fds[0]); + iofd2 = osmo_iofd_setup(ctx, fds[1], "ep2", OSMO_IO_FD_MODE_RECVFROM_SENDTO, &ioops_unconn, NULL); + osmo_iofd_register(iofd2, fds[1]); + + msg = msgb_alloc(1024, "Test data"); + buf = msgb_put(msg, sizeof(TESTDATA)); + memcpy(buf, TESTDATA, sizeof(TESTDATA)); + + osmo_iofd_sendto_msgb(iofd1, msg, 0, NULL); + osmo_iofd_write_enable(iofd1); + osmo_iofd_write_enable(iofd2); + osmo_iofd_read_enable(iofd1); + osmo_iofd_read_enable(iofd2); + + + /* Allow enough cycles to handle the messages */ + for (int i = 0; i < 128; i++) { + osmo_select_main(1); + } + + osmo_iofd_free(iofd1); + osmo_iofd_free(iofd2); +} +static const struct log_info_cat default_categories[] = { +}; + +static struct log_info info = { + .cat = default_categories, + .num_cat = ARRAY_SIZE(default_categories), +}; + +int main(int argc, char *argv[]) +{ + ctx = talloc_named_const(NULL, 0, "osmo_io_test"); + osmo_init_logging2(ctx, &info); + log_set_use_color(osmo_stderr_target, 0); + log_set_print_filename2(osmo_stderr_target, LOG_FILENAME_NONE); + log_set_print_category(osmo_stderr_target, 0); + log_set_print_category_hex(osmo_stderr_target, 0); + + test_connected(); + test_unconnected(); + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/tests/osmo_io/osmo_io_test.err b/tests/osmo_io/osmo_io_test.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/osmo_io/osmo_io_test.err diff --git a/tests/osmo_io/osmo_io_test.ok b/tests/osmo_io/osmo_io_test.ok new file mode 100644 index 0000000..5556d4a --- /dev/null +++ b/tests/osmo_io/osmo_io_test.ok @@ -0,0 +1,8 @@ +Running test_connected +ep1: Write returned rc=16 +ep2: Got msg with len=16 +01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 +Running test_unconnected +ep1: Write returned rc=16 +ep2: Got msg with len=16 +01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 diff --git a/tests/testsuite.at b/tests/testsuite.at index 60aa74d..a2c8845 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -508,3 +508,11 @@ cat $abs_srcdir/gsm44021/test_frame_csd.ok > expout AT_CHECK([$abs_top_builddir/tests/gsm44021/test_frame_csd], [], [expout],[]) AT_CLEANUP + +AT_SETUP([osmo_io]) +AT_KEYWORDS([osmo_io]) +cat $abs_srcdir/osmo_io/osmo_io_test.ok > expout +cat $abs_srcdir/osmo_io/osmo_io_test.err > experr +touch experr +AT_CHECK([$abs_top_builddir/tests/osmo_io/osmo_io_test], [0], [expout], [experr]) +AT_CLEANUP -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/32181 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: Ia67629e53f4d2e5784177250d58e268fdfcaa0c2 Gerrit-Change-Number: 32181 Gerrit-PatchSet: 1 Gerrit-Owner: daniel <dwillmann(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[XL] Change in libosmocore[master]: Add osmo_io with initial poll backend
by daniel 31 Mar '23

31 Mar '23
Attention is currently required from: osmith, Hoernchen, neels, laforge, pespin, fixeria. daniel has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/30934 ) Change subject: Add osmo_io with initial poll backend ...................................................................... Patch Set 6: (6 comments) Patchset: PS3: > Are you talking about a map file for all of libosmocore or just a libosmoio map file? We have a libosmocore.map file now File include/osmocom/core/osmo_io.h: https://gerrit.osmocom.org/c/libosmocore/+/30934/comment/a894a935_681ff3b8 PS5, Line 57: int osmo_iofd_sendto_msgb(struct osmo_io_fd *iofd, struct msgb *msg, int flags, > maybe name it sendto_flags to clarify what are the flags for, but not that important. Done File src/core/osmo_io.c: https://gerrit.osmocom.org/c/libosmocore/+/30934/comment/74a82377_353ddfb5 PS5, Line 210: * If there are bytes left over *pending_out will point to a msgb with the remaining data. > " If there are bytes left over, *pending_out will" (see extra comma) Done https://gerrit.osmocom.org/c/libosmocore/+/30934/comment/32c493f5_ebe9662c PS5, Line 426: if (!osmo_iofd_ops.close || (osmo_iofd_ops.close && osmo_iofd_ops.close(iofd))) > There seems to be a lot of expected stuff happening here with regards to struct configuration and re […] I reworked this and now have separate free and close functions which also works with (un-)registering an iofd so users don't need to go through free/alloc every time a connection is reconnected (e.g. by libosmo-netif). File src/osmo_io.c: https://gerrit.osmocom.org/c/libosmocore/+/30934/comment/803e3585_bf78bf05 PS3, Line 157: */ > not critical: I usually put the end-of-comment on the previous line to save extraneous lines in the […] I actually prefer it like this if you don't mind. In select.c both styles are used throughout the file. File src/osmo_io_poll.c: https://gerrit.osmocom.org/c/libosmocore/+/30934/comment/8baf0854_c27cc953 PS3, Line 84: / > Ack This seems to map to a POLLPRI event in poll() man poll says this: ``` POLLPRI There is some exceptional condition on the file descriptor. Possibilities include: • There is out-of-band data on a TCP socket (see tcp(7)). • A pseudoterminal master in packet mode has seen a state change on the slave (see ioctl_tty(2)). • A cgroup.events file has been modified (see cgroups(7)). ``` I don't see this being relevant for us in any way so I don't think we need to support FD_EXCEPT here. -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/30934 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I50d73cf550d6ce8154bf827bf47408131cf5b0a0 Gerrit-Change-Number: 30934 Gerrit-PatchSet: 6 Gerrit-Owner: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: Hoernchen <ewild(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: neels <nhofmeyr(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-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Attention: Hoernchen <ewild(a)sysmocom.de> Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Fri, 31 Mar 2023 15:49:31 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: laforge <laforge(a)osmocom.org> Comment-In-Reply-To: pespin <pespin(a)sysmocom.de> Comment-In-Reply-To: daniel <dwillmann(a)sysmocom.de> Gerrit-MessageType: comment
1 0
0 0
[M] Change in libosmocore[master]: gpsr_ns2_udp: Use osmo_io_fd instead of osmo_fd
by daniel 31 Mar '23

31 Mar '23
Attention is currently required from: laforge, daniel, lynxis lazus. Hello Jenkins Builder, lynxis lazus, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/libosmocore/+/30936 to look at the new patch set (#5). Change subject: gpsr_ns2_udp: Use osmo_io_fd instead of osmo_fd ...................................................................... gpsr_ns2_udp: Use osmo_io_fd instead of osmo_fd Change-Id: Id776d2d9f35c304620f3d5b94492148dd987f5a0 --- M src/gb/gprs_ns2_udp.c 1 file changed, 42 insertions(+), 75 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/36/30936/5 -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/30936 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: Id776d2d9f35c304620f3d5b94492148dd987f5a0 Gerrit-Change-Number: 30936 Gerrit-PatchSet: 5 Gerrit-Owner: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu> Gerrit-CC: laforge <laforge(a)osmocom.org> Gerrit-CC: pespin <pespin(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: daniel <dwillmann(a)sysmocom.de> Gerrit-Attention: lynxis lazus <lynxis(a)fe80.eu> Gerrit-MessageType: newpatchset
1 0
0 0
[XL] Change in libosmocore[master]: Add osmo_io with initial poll backend
by daniel 31 Mar '23

31 Mar '23
Attention is currently required from: osmith, Hoernchen, neels, laforge, pespin, fixeria. Hello osmith, Jenkins Builder, Hoernchen, neels, pespin, fixeria, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/libosmocore/+/30934 to look at the new patch set (#6). Change subject: Add osmo_io with initial poll backend ...................................................................... Add osmo_io with initial poll backend * make backend configurable for later * segmentation callback for chunked streams * logging target for osmo_io * support partial writes Change-Id: I50d73cf550d6ce8154bf827bf47408131cf5b0a0 Related: SYS#5094, OS#5751 --- M TODO-RELEASE M include/osmocom/core/Makefile.am M include/osmocom/core/logging.h A include/osmocom/core/osmo_io.h M src/core/Makefile.am M src/core/libosmocore.map M src/core/logging.c A src/core/osmo_io.c A src/core/osmo_io_internal.h A src/core/osmo_io_poll.c M tests/logging/logging_vty_test.vty 11 files changed, 1,043 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/34/30934/6 -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/30934 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I50d73cf550d6ce8154bf827bf47408131cf5b0a0 Gerrit-Change-Number: 30934 Gerrit-PatchSet: 6 Gerrit-Owner: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: Hoernchen <ewild(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: neels <nhofmeyr(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-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Attention: Hoernchen <ewild(a)sysmocom.de> Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newpatchset
1 0
0 0
  • ← Newer
  • 1
  • 2
  • 3
  • 4
  • 5
  • ...
  • 365
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.