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 -----
  • November
  • 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

June 2023

  • 1 participants
  • 2480 discussions
[S] Change in osmo-hnbgw[master]: RUA: log tweak
by neels 21 Jun '23

21 Jun '23
neels has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-hnbgw/+/33331 ) Change subject: RUA: log tweak ...................................................................... Patch Set 2: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-hnbgw/+/33331 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-hnbgw Gerrit-Branch: master Gerrit-Change-Id: I87592cbf197d5d3d2a22b04d9f6b64422af65ded Gerrit-Change-Number: 33331 Gerrit-PatchSet: 2 Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Wed, 21 Jun 2023 02:16:41 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[L] Change in osmo-hnbgw[master]: detect in/active CN links by RANAP RESET
by neels 21 Jun '23

21 Jun '23
neels has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-hnbgw/+/33175 ) Change subject: detect in/active CN links by RANAP RESET ...................................................................... Patch Set 7: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-hnbgw/+/33175 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-hnbgw Gerrit-Branch: master Gerrit-Change-Id: Id3eefdea889a736fd5957b80280fa45b9547b792 Gerrit-Change-Number: 33175 Gerrit-PatchSet: 7 Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Wed, 21 Jun 2023 02:11:19 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[S] Change in libosmo-sccp[master]: Set stream_cli/srv name to contain ASP + sockname
by pespin 20 Jun '23

20 Jun '23
Hello Jenkins Builder, fixeria, daniel, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/libosmo-sccp/+/33335 to look at the new patch set (#9). Change subject: Set stream_cli/srv name to contain ASP + sockname ...................................................................... Set stream_cli/srv name to contain ASP + sockname Upon connect/accept, update the name to contain both the ASP and the sockname of the established socked. This allows easily identifying the stream based on IP layer as well as upper xUA layer. Example logs: """ stream.c:1193 SRV(m3ua,::1:2905) accept()ed new link from ::1 to port 2905 stream.c:1672 SRVCONN(asp-dyn-0,(r=::1:43568<->l=::1:2905)) connected read/write (what=0x1) stream.c:1589 SRVCONN(asp-dyn-0,(r=::1:43568<->l=::1:2905)) message received """ """ stream.c:521 CLICONN(asp0){CONNECTING} connection established stream.c:552 CLICONN(asp0,(r=::1:2905<->l=::ffff:127.0.0.2:35911)){CONNECTED} connected read stream.c:401 CLICONN(asp0,(r=::1:2905<->l=::ffff:127.0.0.2:35911)){CONNECTED} message received """ Depends: libosmo-netif.git I539a0d29d11348efe702f971965a55cf56db5c59 Change-Id: I05bc5f6c7795f62c1814c1c774287b41ee85a475 --- M TODO-RELEASE M src/osmo_ss7.c 2 files changed, 31 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/35/33335/9 -- To view, visit https://gerrit.osmocom.org/c/libosmo-sccp/+/33335 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-sccp Gerrit-Branch: master Gerrit-Change-Id: I05bc5f6c7795f62c1814c1c774287b41ee85a475 Gerrit-Change-Number: 33335 Gerrit-PatchSet: 9 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-CC: laforge <laforge(a)osmocom.org> Gerrit-MessageType: newpatchset
1 0
0 0
[S] Change in libosmo-netif[master]: stream: Drop name param from recently added API osmo_stream_srv_creat...
by pespin 20 Jun '23

20 Jun '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-netif/+/33343 ) Change subject: stream: Drop name param from recently added API osmo_stream_srv_create2() ...................................................................... stream: Drop name param from recently added API osmo_stream_srv_create2() It was later decided that since setting a name is not really required, it is best to leave it out of the create() function and let the user use the osmo_stream_srv_set_name() API if needed (otherwise a dynamic name based on socket is selected) Change-Id: I5d677ef57b7db0aedd8c43282568c845097cb12b --- M examples/ipa-stream-server.c M examples/stream-server.c M include/osmocom/netif/stream.h M src/stream.c 4 files changed, 21 insertions(+), 9 deletions(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved diff --git a/examples/ipa-stream-server.c b/examples/ipa-stream-server.c index e490ff6..c72ed9a 100644 --- a/examples/ipa-stream-server.c +++ b/examples/ipa-stream-server.c @@ -75,12 +75,13 @@ return -1; } - conn = osmo_stream_srv_create2(tall_test, "ipa_srv", srv, fd, NULL); + conn = osmo_stream_srv_create2(tall_test, srv, fd, NULL); if (conn == NULL) { LOGP(DSTREAMTEST, LOGL_ERROR, "error while creating connection\n"); return -1; } + osmo_stream_srv_set_name(conn, "ipa_srv"); osmo_stream_srv_set_read_cb(conn, read_cb); osmo_stream_srv_set_closed_cb(conn, close_cb); diff --git a/examples/stream-server.c b/examples/stream-server.c index d7c2aff..8aa8b9b 100644 --- a/examples/stream-server.c +++ b/examples/stream-server.c @@ -69,12 +69,13 @@ return -1; } - conn = osmo_stream_srv_create2(tall_test, "stream_server", srv, fd, NULL); + conn = osmo_stream_srv_create2(tall_test, srv, fd, NULL); if (conn == NULL) { LOGP(DSTREAMTEST, LOGL_ERROR, "error while creating connection\n"); return -1; } + osmo_stream_srv_set_name(conn, "stream_server"); osmo_stream_srv_set_read_cb(conn, read_cb); osmo_stream_srv_set_closed_cb(conn, close_cb); diff --git a/include/osmocom/netif/stream.h b/include/osmocom/netif/stream.h index c56b9a6..057815b 100644 --- a/include/osmocom/netif/stream.h +++ b/include/osmocom/netif/stream.h @@ -46,7 +46,7 @@ struct osmo_stream_srv; struct osmo_stream_srv *osmo_stream_srv_create(void *ctx, struct osmo_stream_srv_link *link, int fd, int (*read_cb)(struct osmo_stream_srv *conn), int (*closed_cb)(struct osmo_stream_srv *conn), void *data); -struct osmo_stream_srv *osmo_stream_srv_create2(void *ctx, const char *name, struct osmo_stream_srv_link *link, int fd, void *data); +struct osmo_stream_srv *osmo_stream_srv_create2(void *ctx, struct osmo_stream_srv_link *link, int fd, void *data); void osmo_stream_srv_set_name(struct osmo_stream_srv *conn, const char *name); void osmo_stream_srv_set_read_cb(struct osmo_stream_srv *conn, int (*read_cb)(struct osmo_stream_srv *conn, struct msgb *msg)); void osmo_stream_srv_set_closed_cb(struct osmo_stream_srv *conn, int (*closed_cb)(struct osmo_stream_srv *conn)); diff --git a/src/stream.c b/src/stream.c index 8771614..b646c3d 100644 --- a/src/stream.c +++ b/src/stream.c @@ -1703,14 +1703,12 @@ /*! \brief Create a Stream Server inside the specified link * \param[in] ctx talloc allocation context from which to allocate - * \param[in] name name of the connection * \param[in] link Stream Server Link to which we belong * \param[in] fd system file descriptor of the new connection * \param[in] data User data to save in the new Stream Server struct * \returns Stream Server in case of success; NULL on error */ struct osmo_stream_srv * -osmo_stream_srv_create2(void *ctx, const char *name, - struct osmo_stream_srv_link *link, int fd, void *data) +osmo_stream_srv_create2(void *ctx, struct osmo_stream_srv_link *link, int fd, void *data) { struct osmo_stream_srv *conn; @@ -1723,11 +1721,9 @@ conn->mode = OSMO_STREAM_MODE_OSMO_IO; conn->srv = link; - if (name) - conn->name = talloc_strdup(conn, name); osmo_sock_get_name_buf(conn->sockname, sizeof(conn->sockname), fd); - conn->iofd = osmo_iofd_setup(conn, fd, conn->name ? : conn->sockname, + conn->iofd = osmo_iofd_setup(conn, fd, conn->sockname, OSMO_IO_FD_MODE_READ_WRITE, &srv_ioops, conn); if (!conn->iofd) { talloc_free(conn); -- To view, visit https://gerrit.osmocom.org/c/libosmo-netif/+/33343 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Change-Id: I5d677ef57b7db0aedd8c43282568c845097cb12b Gerrit-Change-Number: 33343 Gerrit-PatchSet: 3 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in libosmo-netif[master]: stream: Drop recently added API osmo_stream_cli_create2
by pespin 20 Jun '23

20 Jun '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-netif/+/33342 ) ( 2 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: stream: Drop recently added API osmo_stream_cli_create2 ...................................................................... stream: Drop recently added API osmo_stream_cli_create2 It was later decided that since setting a name is not really required, it is best to leave it out of the create() function and let the user use the osmo_stream_cli_set_name() API if needed (otherwise a dynamic name based on socket is selected). Change-Id: I2a2fad318ef22c2ac117f95588a078ca3beccea5 --- M examples/ipa-stream-client.c M examples/stream-client.c M include/osmocom/netif/stream.h M src/stream.c 4 files changed, 37 insertions(+), 35 deletions(-) Approvals: daniel: Looks good to me, but someone else must approve laforge: Looks good to me, approved Jenkins Builder: Verified diff --git a/examples/ipa-stream-client.c b/examples/ipa-stream-client.c index 91abfac..b66d93a 100644 --- a/examples/ipa-stream-client.c +++ b/examples/ipa-stream-client.c @@ -164,11 +164,12 @@ * initialize stream client. */ - conn = osmo_stream_cli_create2(tall_test, "ipa_test_client"); + conn = osmo_stream_cli_create(tall_test); if (conn == NULL) { fprintf(stderr, "cannot create client\n"); exit(EXIT_FAILURE); } + osmo_stream_cli_set_name(conn, "ipa_test_client"); osmo_stream_cli_set_addr(conn, "127.0.0.1"); osmo_stream_cli_set_port(conn, 10000); osmo_stream_cli_set_connect_cb(conn, connect_cb); diff --git a/examples/stream-client.c b/examples/stream-client.c index 350535d..6781c72 100644 --- a/examples/stream-client.c +++ b/examples/stream-client.c @@ -103,11 +103,12 @@ * initialize stream cli. */ - conn = osmo_stream_cli_create2(tall_test, "stream_client"); + conn = osmo_stream_cli_create(tall_test); if (conn == NULL) { fprintf(stderr, "cannot create cli\n"); exit(EXIT_FAILURE); } + osmo_stream_cli_set_name(conn, "stream_client"); osmo_stream_cli_set_addr(conn, "127.0.0.1"); osmo_stream_cli_set_port(conn, 10000); osmo_stream_cli_set_connect_cb(conn, connect_cb); diff --git a/include/osmocom/netif/stream.h b/include/osmocom/netif/stream.h index 11e9070..c56b9a6 100644 --- a/include/osmocom/netif/stream.h +++ b/include/osmocom/netif/stream.h @@ -90,7 +90,6 @@ bool osmo_stream_cli_is_connected(struct osmo_stream_cli *cli); struct osmo_stream_cli *osmo_stream_cli_create(void *ctx); -struct osmo_stream_cli *osmo_stream_cli_create2(void *ctx, const char *name); void osmo_stream_cli_destroy(struct osmo_stream_cli *cli); int osmo_stream_cli_open(struct osmo_stream_cli *cli); diff --git a/src/stream.c b/src/stream.c index a5a5bf1..8771614 100644 --- a/src/stream.c +++ b/src/stream.c @@ -576,7 +576,23 @@ */ struct osmo_stream_cli *osmo_stream_cli_create(void *ctx) { - return osmo_stream_cli_create2(ctx, ""); + struct osmo_stream_cli *cli; + + cli = talloc_zero(ctx, struct osmo_stream_cli); + if (!cli) + return NULL; + + cli->mode = OSMO_STREAM_MODE_UNKNOWN; + cli->sk_domain = AF_UNSPEC; + cli->sk_type = SOCK_STREAM; + cli->proto = IPPROTO_TCP; + + cli->state = STREAM_CLI_STATE_CLOSED; + osmo_timer_setup(&cli->timer, cli_timer_cb, cli); + cli->reconnect_timeout = 5; /* default is 5 seconds. */ + INIT_LLIST_HEAD(&cli->tx_queue); + + return cli; } static void stream_cli_iofd_read_cb(struct osmo_io_fd *iofd, int res, struct msgb *msg) @@ -624,35 +640,6 @@ .segmentation_cb = NULL, }; -/*! \brief Create an Osmocom stream client - * \param[in] ctx talloc context from which to allocate memory - * This function allocates a new \ref osmo_stream_cli and initializes - * it with default values (5s reconnect timer, TCP protocol) - * \param[in] name a description of the stream client. Will be used in logging - * \return allocated stream client, or NULL in case of error - */ -struct osmo_stream_cli *osmo_stream_cli_create2(void *ctx, const char *name) -{ - struct osmo_stream_cli *cli; - - cli = talloc_zero(ctx, struct osmo_stream_cli); - if (!cli) - return NULL; - - cli->name = talloc_strdup(cli, name); - cli->mode = OSMO_STREAM_MODE_UNKNOWN; - cli->sk_domain = AF_UNSPEC; - cli->sk_type = SOCK_STREAM; - cli->proto = IPPROTO_TCP; - - cli->state = STREAM_CLI_STATE_CLOSED; - osmo_timer_setup(&cli->timer, cli_timer_cb, cli); - cli->reconnect_timeout = 5; /* default is 5 seconds. */ - INIT_LLIST_HEAD(&cli->tx_queue); - - return cli; -} - /*! \brief Set a name on the cli object (used during logging) * \param[in] cli stream_cli whose name is to be set * \param[in] name the name to be set on cli @@ -875,7 +862,7 @@ } /*! \brief Set the call-back function called to read from the stream client socket - * Only for osmo_stream_cli created with osmo_stream_cli_create() + * This function will configure osmo_stream_cli to use osmo_ofd internally. * \param[in] cli Stream Client to modify * \param[in] read_cb Call-back function to be called when we want to read */ void @@ -888,7 +875,7 @@ } /*! \brief Set the call-back function called to read from the stream client socket - * Only use this function for osmo_stream_cli created with osmo_stream_cli_create2() + * This function will configure osmo_stream_cli to use osmo_iofd internally. * \param[in] cli Stream Client to modify * \param[in] read_cb Call-back function to be called when data was read from the socket */ void -- To view, visit https://gerrit.osmocom.org/c/libosmo-netif/+/33342 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Change-Id: I2a2fad318ef22c2ac117f95588a078ca3beccea5 Gerrit-Change-Number: 33342 Gerrit-PatchSet: 3 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in libosmo-netif[master]: stream: Print socket info as part of the logging context
by pespin 20 Jun '23

20 Jun '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-netif/+/33337 ) Change subject: stream: Print socket info as part of the logging context ...................................................................... stream: Print socket info as part of the logging context Since the local port is logged now in stream_test, it must be set to a specific value in order to have deterministic log output being validated. Change-Id: I17ef699dab72c1b613708070d22e9f040b0fe069 --- M src/stream.c M tests/stream/stream_test.c M tests/stream/stream_test.err 3 files changed, 42 insertions(+), 10 deletions(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve osmith: Looks good to me, but someone else must approve pespin: Looks good to me, approved diff --git a/src/stream.c b/src/stream.c index 0f56969..a5a5bf1 100644 --- a/src/stream.c +++ b/src/stream.c @@ -77,19 +77,22 @@ #endif #define LOGSCLI(cli, level, fmt, args...) \ - LOGP(DLINP, level, "CLICONN(%s){%s} " fmt, \ + LOGP(DLINP, level, "CLICONN(%s,%s){%s} " fmt, \ cli->name ? : "", \ + cli->sockname, \ get_value_string(stream_cli_state_names, (cli)->state), \ ## args) #define LOGSLNK(link, level, fmt, args...) \ - LOGP(DLINP, level, "SRV(%s) " fmt, \ + LOGP(DLINP, level, "SRV(%s,%s) " fmt, \ link->name ? : "", \ + link->sockname, \ ## args) #define LOGSSRV(srv, level, fmt, args...) \ - LOGP(DLINP, level, "SRVCONN(%s) " fmt, \ + LOGP(DLINP, level, "SRVCONN(%s,%s) " fmt, \ srv->name ? : "", \ + srv->sockname, \ ## args) /* is any of the bytes from offset .. u8_size in 'u8' non-zero? return offset or -1 if all zero */ @@ -271,6 +274,7 @@ struct osmo_stream_cli { char *name; + char sockname[OSMO_SOCK_NAME_MAXLEN]; enum osmo_stream_mode mode; union { struct osmo_fd ofd; @@ -513,6 +517,9 @@ if (cli->mode == OSMO_STREAM_MODE_OSMO_FD && llist_empty(&cli->tx_queue)) osmo_fd_write_disable(&cli->ofd); + /* Update sockname based on socket info: */ + osmo_sock_get_name_buf(cli->sockname, sizeof(cli->sockname), osmo_stream_cli_fd(cli)); + LOGSCLI(cli, LOGL_DEBUG, "connection established\n"); cli->state = STREAM_CLI_STATE_CONNECTED; switch (cli->sk_domain) { @@ -1145,6 +1152,7 @@ struct osmo_stream_srv_link { struct osmo_fd ofd; char *name; + char sockname[OSMO_SOCK_NAME_MAXLEN]; char *addr[OSMO_STREAM_MAX_ADDRS]; uint8_t addrcnt; uint16_t port; @@ -1483,6 +1491,8 @@ link->ofd.fd = -1; return -EIO; } + + OSMO_STRLCPY_ARRAY(link->sockname, osmo_stream_srv_link_get_sockname(link)); return 0; } @@ -1517,6 +1527,7 @@ struct osmo_stream_srv { struct osmo_stream_srv_link *srv; char *name; + char sockname[OSMO_SOCK_NAME_MAXLEN]; enum osmo_stream_mode mode; union { struct osmo_fd ofd; @@ -1693,6 +1704,8 @@ conn->data = data; INIT_LLIST_HEAD(&conn->tx_queue); + osmo_sock_get_name_buf(conn->sockname, sizeof(conn->sockname), fd); + if (osmo_fd_register(&conn->ofd) < 0) { LOGSSRV(conn, LOGL_ERROR, "could not register FD\n"); talloc_free(conn); @@ -1722,8 +1735,13 @@ conn->mode = OSMO_STREAM_MODE_OSMO_IO; conn->srv = link; - conn->name = talloc_strdup(conn, name); - conn->iofd = osmo_iofd_setup(conn, fd, name, OSMO_IO_FD_MODE_READ_WRITE, &srv_ioops, conn); + + if (name) + conn->name = talloc_strdup(conn, name); + osmo_sock_get_name_buf(conn->sockname, sizeof(conn->sockname), fd); + + conn->iofd = osmo_iofd_setup(conn, fd, conn->name ? : conn->sockname, + OSMO_IO_FD_MODE_READ_WRITE, &srv_ioops, conn); if (!conn->iofd) { talloc_free(conn); return NULL; diff --git a/tests/stream/stream_test.c b/tests/stream/stream_test.c index 1b82d1a..67603e9 100644 --- a/tests/stream/stream_test.c +++ b/tests/stream/stream_test.c @@ -214,6 +214,7 @@ printf("Prepare %s stream client...\n", ASTR(autoreconnect)); + osmo_stream_cli_set_local_port(cli, 8976); osmo_stream_cli_set_name(cli, "cli_test"); osmo_stream_cli_set_addr(cli, host); osmo_stream_cli_set_port(cli, port); diff --git a/tests/stream/stream_test.err b/tests/stream/stream_test.err index 9fba03e..2409c07 100644 --- a/tests/stream/stream_test.err +++ b/tests/stream/stream_test.err @@ -12,15 +12,15 @@ {2.000006} autoreconnecting test step 6 [client OK, server OK], FD reg 1 {2.000007} autoreconnecting test step 5 [client OK, server OK], FD reg 1 -CLICONN(cli_test){CONNECTED} connection closed with srv -CLICONN(cli_test){WAIT_RECONNECT} retrying reconnect in 9 seconds... +CLICONN(cli_test,r=127.0.0.11:1111<->l=127.0.0.1:8976){CONNECTED} connection closed with srv +CLICONN(cli_test,r=127.0.0.11:1111<->l=127.0.0.1:8976){WAIT_RECONNECT} retrying reconnect in 9 seconds... {11.000008} autoreconnecting test step 4 [client OK, server OK], FD reg 0 {11.000009} autoreconnecting test step 3 [client OK, server OK], FD reg 1 {11.000010} autoreconnecting test step 2 [client OK, server OK], FD reg 0 -SRVCONN(srv_test) connection closed with client +SRVCONN(srv_test,r=127.0.0.1:8976<->l=127.0.0.11:1111) connection closed with client {11.000011} autoreconnecting test step 1 [client OK, server NA], FD reg 0 @@ -37,7 +37,7 @@ {11.000017} non-reconnecting test step 2 [client OK, server OK], FD reg 1 {11.000018} non-reconnecting test step 1 [client OK, server OK], FD reg 1 -CLICONN(cli_test){CONNECTED} connection closed with srv -CLICONN(cli_test){CLOSED} not reconnecting, disabled +CLICONN(cli_test,r=127.0.0.11:1111<->l=127.0.0.1:8976){CONNECTED} connection closed with srv +CLICONN(cli_test,r=127.0.0.11:1111<->l=127.0.0.1:8976){CLOSED} not reconnecting, disabled {20.000019} non-reconnecting test step 0 [client OK, server OK], FD reg 0 -- To view, visit https://gerrit.osmocom.org/c/libosmo-netif/+/33337 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Change-Id: I17ef699dab72c1b613708070d22e9f040b0fe069 Gerrit-Change-Number: 33337 Gerrit-PatchSet: 5 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[S] Change in libosmo-netif[master]: stream: srv cb: Use osmo_sockaddr and improve logging when cli connects
by pespin 20 Jun '23

20 Jun '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-netif/+/33338 ) ( 3 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: stream: srv cb: Use osmo_sockaddr and improve logging when cli connects ...................................................................... stream: srv cb: Use osmo_sockaddr and improve logging when cli connects Specially important is the change where we now print the remote port which connected to us, not our local port (which is already printed as part of LOGSLNK). Change-Id: I6e556f8263496ded41bb221ccc8e193c5361697f --- M src/stream.c 1 file changed, 22 insertions(+), 18 deletions(-) Approvals: daniel: Looks good to me, but someone else must approve laforge: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/stream.c b/src/stream.c index b646c3d..fdc1cc1 100644 --- a/src/stream.c +++ b/src/stream.c @@ -1155,36 +1155,27 @@ { int ret; int sock_fd; - char addrstr[128]; - bool is_ipv6 = false; - struct sockaddr_storage sa; - socklen_t sa_len = sizeof(sa); + struct osmo_sockaddr osa; + socklen_t sa_len = sizeof(osa.u.sas); struct osmo_stream_srv_link *link = ofd->data; - ret = accept(ofd->fd, (struct sockaddr *)&sa, &sa_len); + ret = accept(ofd->fd, &osa.u.sa, &sa_len); if (ret < 0) { - LOGP(DLINP, LOGL_ERROR, "failed to accept from origin " - "peer, reason=`%s'\n", strerror(errno)); + LOGP(DLINP, LOGL_ERROR, "failed to accept from origin peer, reason=`%s'\n", + strerror(errno)); return ret; } sock_fd = ret; - is_ipv6 = false; - switch (((struct sockaddr *)&sa)->sa_family) { + switch (osa.u.sa.sa_family) { case AF_UNIX: LOGSLNK(link, LOGL_DEBUG, "accept()ed new link on fd %d\n", sock_fd); break; case AF_INET6: - is_ipv6 = true; - /* fall through */ case AF_INET: - LOGSLNK(link, LOGL_DEBUG, "accept()ed new link from %s to port %u\n", - inet_ntop(is_ipv6 ? AF_INET6 : AF_INET, - is_ipv6 ? (void *)&(((struct sockaddr_in6 *)&sa)->sin6_addr) : - (void *)&(((struct sockaddr_in *)&sa)->sin_addr), - addrstr, sizeof(addrstr)), - link->port); + LOGSLNK(link, LOGL_DEBUG, "accept()ed new link from %s\n", + osmo_sockaddr_to_str(&osa)); if (link->proto == IPPROTO_SCTP) { ret = sctp_sock_activate_events(sock_fd); @@ -1194,7 +1185,7 @@ break; default: LOGSLNK(link, LOGL_DEBUG, "accept()ed unexpected address family %d\n", - ((struct sockaddr *)&sa)->sa_family); + osa.u.sa.sa_family); goto error_close_socket; } -- To view, visit https://gerrit.osmocom.org/c/libosmo-netif/+/33338 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Change-Id: I6e556f8263496ded41bb221ccc8e193c5361697f Gerrit-Change-Number: 33338 Gerrit-PatchSet: 4 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in libosmo-netif[master]: stream: Print socket info as part of the logging context
by pespin 20 Jun '23

20 Jun '23
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-netif/+/33337 ) Change subject: stream: Print socket info as part of the logging context ...................................................................... Patch Set 5: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/libosmo-netif/+/33337 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Change-Id: I17ef699dab72c1b613708070d22e9f040b0fe069 Gerrit-Change-Number: 33337 Gerrit-PatchSet: 5 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Tue, 20 Jun 2023 17:51:09 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[L] Change in osmo-mgw[master]: mgcp-client: Add keepalive feature
by pespin 20 Jun '23

20 Jun '23
Attention is currently required from: dexter. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-mgw/+/33308 ) Change subject: mgcp-client: Add keepalive feature ...................................................................... Patch Set 6: (1 comment) Patchset: PS6: waiting to get another vote here to merge the whole feature. -- To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/33308 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Change-Id: I3dc74c78548d017f272da863d5282dc5e0020ca3 Gerrit-Change-Number: 33308 Gerrit-PatchSet: 6 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Attention: dexter <pmaier(a)sysmocom.de> Gerrit-Comment-Date: Tue, 20 Jun 2023 17:50:50 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Gerrit-MessageType: comment
1 0
0 0
[M] Change in osmo-mgw[master]: mgw: Allow auditing speciall 'null' endpoint
by pespin 20 Jun '23

20 Jun '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-mgw/+/33312 ) Change subject: mgw: Allow auditing speciall 'null' endpoint ...................................................................... mgw: Allow auditing speciall 'null' endpoint This is a special endpoint which can always be audited. This is useful for clients who wish to submit requests to osmo-mgw periodically to find out whether the MGW is still reachable. This endpoint will be used by libomso-mgcp-client as default target endpoint to implement such feature. This "null" Endpoint is osmo-mgw specific, not described in MGCP specs. Related: SYS#6481 Change-Id: Ia409b16e9211e6261e2e0f21288544289d6f3733 --- M doc/manuals/chapters/mgcp_endpoints.adoc M include/osmocom/mgcp/mgcp_endp.h M src/libosmo-mgcp/mgcp_endp.c M src/libosmo-mgcp/mgcp_protocol.c M tests/mgcp/mgcp_test.c M tests/mgcp/mgcp_test.ok 6 files changed, 131 insertions(+), 8 deletions(-) Approvals: Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve laforge: Looks good to me, approved diff --git a/doc/manuals/chapters/mgcp_endpoints.adoc b/doc/manuals/chapters/mgcp_endpoints.adoc index 797fdea..2fb6e16 100644 --- a/doc/manuals/chapters/mgcp_endpoints.adoc +++ b/doc/manuals/chapters/mgcp_endpoints.adoc @@ -91,4 +91,10 @@ not yet useable. NOTE: the VTY command "show mgcp" can be used to get a list of all available -endpoints (including identifiers) \ No newline at end of file +endpoints (including identifiers) + +=== The `null` endpoint + +OsmoMGW offers a special `null@<domain>` endpoint which can be audited at all times. +This is useful for MGCP clients who wish to submit requests to OsmoMGW +periodically to find out whether it is still reachable and in a working state. \ No newline at end of file diff --git a/include/osmocom/mgcp/mgcp_endp.h b/include/osmocom/mgcp/mgcp_endp.h index 08b966f..7bf034b 100644 --- a/include/osmocom/mgcp/mgcp_endp.h +++ b/include/osmocom/mgcp/mgcp_endp.h @@ -133,6 +133,7 @@ int mgcp_endp_claim(struct mgcp_endpoint *endp, const char *callid); void mgcp_endp_update(struct mgcp_endpoint *endp); bool mgcp_endp_is_wildcarded(const char *epname); +bool mgcp_endp_is_null(const char *epname); struct mgcp_endpoint *mgcp_endp_by_name_trunk(int *cause, const char *epname, const struct mgcp_trunk *trunk); struct mgcp_endpoint *mgcp_endp_by_name(int *cause, const char *epname, diff --git a/src/libosmo-mgcp/mgcp_endp.c b/src/libosmo-mgcp/mgcp_endp.c index 2bf15e0..20088b7 100644 --- a/src/libosmo-mgcp/mgcp_endp.c +++ b/src/libosmo-mgcp/mgcp_endp.c @@ -229,6 +229,17 @@ return false; } +/*! Check if the given epname refers to a "null" endpoint. + * \param[in] epname endpoint name to check + * \returns true if epname refers to "null"" endpoint, else false. */ +bool mgcp_endp_is_null(const char *epname) +{ + if (strncasecmp(epname, "null@", 5) == 0) + return true; + + return false; +} + /*! Find an endpoint by its name on a specified trunk. * \param[out] cause pointer to store cause code, can be NULL. * \param[in] epname endpoint name to lookup. diff --git a/src/libosmo-mgcp/mgcp_protocol.c b/src/libosmo-mgcp/mgcp_protocol.c index 1fa345b..80e0f8a 100644 --- a/src/libosmo-mgcp/mgcp_protocol.c +++ b/src/libosmo-mgcp/mgcp_protocol.c @@ -86,6 +86,9 @@ /* set to true when the request has been classified as wildcarded */ bool wildcarded; + /* Set to true when the request is targeted at the "null" endpoint */ + bool null_endp; + /* contains cause code in case of problems during endp/trunk resolution */ int mgcp_cause; }; @@ -390,7 +393,10 @@ /* Locate endpoint and trunk, if no endpoint can be located try at least to identify the trunk. */ rq.pdata = &pdata; rq.wildcarded = mgcp_endp_is_wildcarded(pdata.epname); - rq.endp = mgcp_endp_by_name(&rc, pdata.epname, pdata.cfg); + if (!rq.wildcarded) + rq.null_endp = mgcp_endp_is_null(pdata.epname); + if (!rq.null_endp) + rq.endp = mgcp_endp_by_name(&rc, pdata.epname, pdata.cfg); rq.mgcp_cause = rc; if (!rq.endp) { rate_ctr_inc(rate_ctr_group_get_ctr(rate_ctrs, MGCP_GENERAL_RX_FAIL_NO_ENDPOINT)); @@ -407,14 +413,14 @@ rq.name, pdata.epname); return create_err_response(cfg, NULL, -rq.mgcp_cause, rq.name, pdata.trans); } - } else { + } else if (!rq.null_endp) { /* If the endpoint name suggests that the request refers to a specific endpoint, then the * request cannot be handled and we must stop early. */ LOGP(DLMGCP, LOGL_NOTICE, "%s: cannot find endpoint \"%s\", cause=%d -- abort\n", rq.name, pdata.epname, -rq.mgcp_cause); return create_err_response(cfg, NULL, -rq.mgcp_cause, rq.name, pdata.trans); - } + } /* else: Handle special "null" endpoint below (with rq.endp=NULL, rq.trunk=NULL) */ } else { osmo_strlcpy(debug_last_endpoint_name, rq.endp->name, sizeof(debug_last_endpoint_name)); rq.trunk = rq.endp->trunk; @@ -460,6 +466,11 @@ static struct msgb *handle_audit_endpoint(struct mgcp_request_data *rq) { LOGPENDP(rq->endp, DLMGCP, LOGL_NOTICE, "AUEP: auditing endpoint ...\n"); + + /* Auditing "null" endpoint is allowed for keepalive purposes. There's no rq->endp nor rq->trunk in this case. */ + if (rq->null_endp) + return create_ok_response(rq->pdata->cfg, NULL, 200, "AUEP", rq->pdata->trans); + if (!rq->endp || !mgcp_endp_avail(rq->endp)) { LOGPENDP(rq->endp, DLMGCP, LOGL_ERROR, "AUEP: selected endpoint not available!\n"); return create_err_response(rq->trunk, NULL, 501, "AUEP", rq->pdata->trans); @@ -855,7 +866,7 @@ struct mgcp_parse_data *pdata = rq->pdata; struct mgcp_trunk *trunk = rq->trunk; struct mgcp_endpoint *endp = rq->endp; - struct rate_ctr_group *rate_ctrs = trunk->ratectr.mgcp_crcx_ctr_group; + struct rate_ctr_group *rate_ctrs; int error_code = 400; const char *local_options = NULL; const char *callid = NULL; @@ -869,6 +880,14 @@ LOGPENDP(endp, DLMGCP, LOGL_NOTICE, "CRCX: creating new connection ...\n"); + if (rq->null_endp) { + /* trunk not available so rate_ctr aren't available either. */ + LOGP(DLMGCP, LOGL_ERROR, "CRCX: Not allowed in 'null' endpoint!\n"); + return create_err_response(pdata->cfg, NULL, 502, "CRCX", pdata->trans); + } + + rate_ctrs = trunk->ratectr.mgcp_crcx_ctr_group; + /* we must have a free ep */ if (!endp) { rate_ctr_inc(rate_ctr_group_get_ctr(rate_ctrs, MGCP_CRCX_FAIL_AVAIL)); @@ -1134,7 +1153,7 @@ struct mgcp_parse_data *pdata = rq->pdata; struct mgcp_trunk *trunk = rq->trunk; struct mgcp_endpoint *endp = rq->endp; - struct rate_ctr_group *rate_ctrs = trunk->ratectr.mgcp_mdcx_ctr_group; + struct rate_ctr_group *rate_ctrs; char new_local_addr[INET6_ADDRSTRLEN]; int error_code = 500; int silent = 0; @@ -1149,6 +1168,14 @@ LOGPENDP(endp, DLMGCP, LOGL_NOTICE, "MDCX: modifying existing connection ...\n"); + if (rq->null_endp) { + /* trunk not available so rate_ctr aren't available either. */ + LOGP(DLMGCP, LOGL_ERROR, "MDCX: Not allowed in 'null' endpoint!\n"); + return create_err_response(pdata->cfg, NULL, 502, "MDCX", pdata->trans); + } + + rate_ctrs = trunk->ratectr.mgcp_mdcx_ctr_group; + /* Prohibit wildcarded requests */ if (rq->wildcarded) { LOGPENDP(endp, DLMGCP, LOGL_ERROR, @@ -1360,7 +1387,7 @@ struct mgcp_parse_data *pdata = rq->pdata; struct mgcp_trunk *trunk = rq->trunk; struct mgcp_endpoint *endp = rq->endp; - struct rate_ctr_group *rate_ctrs = trunk->ratectr.mgcp_dlcx_ctr_group; + struct rate_ctr_group *rate_ctrs; int error_code = 400; int silent = 0; char *line; @@ -1370,10 +1397,18 @@ unsigned int i; /* NOTE: In this handler we can not take it for granted that the endp - * pointer will be populated, however a trunk is always guaranteed. */ + * pointer will be populated, however a trunk is always guaranteed (except for 'null' endp). + */ LOGPEPTR(endp, trunk, DLMGCP, LOGL_NOTICE, "DLCX: deleting connection(s) ...\n"); + if (rq->null_endp) { + /* trunk not available so rate_ctr aren't available either. */ + LOGP(DLMGCP, LOGL_ERROR, "DLCX: Not allowed in 'null' endpoint!\n"); + return create_err_response(pdata->cfg, NULL, 502, "DLCX", pdata->trans); + } + + rate_ctrs = trunk->ratectr.mgcp_dlcx_ctr_group; if (endp && !mgcp_endp_avail(endp)) { rate_ctr_inc(rate_ctr_group_get_ctr(rate_ctrs, MGCP_DLCX_FAIL_AVAIL)); LOGPENDP(endp, DLMGCP, LOGL_ERROR, @@ -1524,6 +1559,12 @@ LOGP(DLMGCP, LOGL_NOTICE, "RSIP: resetting all endpoints ...\n"); + if (rq->null_endp) { + /* trunk not available so rate_ctr aren't available either. */ + LOGP(DLMGCP, LOGL_ERROR, "RSIP: Not allowed in 'null' endpoint!\n"); + return create_err_response(rq->pdata->cfg, NULL, 502, "RSIP", rq->pdata->trans); + } + if (rq->pdata->cfg->reset_cb) rq->pdata->cfg->reset_cb(rq->endp->trunk); return NULL; @@ -1549,6 +1590,12 @@ LOGP(DLMGCP, LOGL_NOTICE, "RQNT: processing request for notification ...\n"); + if (rq->null_endp) { + /* trunk not available so rate_ctr aren't available either. */ + LOGP(DLMGCP, LOGL_ERROR, "RQNT: Not allowed in 'null' endpoint!\n"); + return create_err_response(rq->pdata->cfg, NULL, 502, "RQNT", rq->pdata->trans); + } + for_each_line(line, rq->pdata->save) { switch (toupper(line[0])) { case 'S': diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c index 2374e91..e37bb57 100644 --- a/tests/mgcp/mgcp_test.c +++ b/tests/mgcp/mgcp_test.c @@ -77,6 +77,8 @@ #define AUEP1_RET "500 158663169 FAIL\r\n" #define AUEP2 "AUEP 18983213 ds/e1-2/1@mgw MGCP 1.0\r\n" #define AUEP2_RET "500 18983213 FAIL\r\n" +#define AUEP_NULL "AUEP 18983215 null@mgw MGCP 1.0\r\n" +#define AUEP_NULL_RET "200 18983215 OK\r\n" #define EMPTY "\r\n" #define EMPTY_RET NULL #define SHORT "CRCX \r\n" @@ -274,6 +276,12 @@ #define MDCX_TOO_LONG_CI_RET "510 18983224 FAIL\r\n" +#define MDCX_NULL \ + "MDCX 9 null@mgw MGCP 1.0\r\n" \ + "I: %s\n" + +#define MDCX_NULL_RET "502 9 FAIL\r\n" + #define SHORT2 "CRCX 1" #define SHORT2_RET "510 000000 FAIL\r\n" #define SHORT3 "CRCX 1 1@mgw" @@ -392,6 +400,13 @@ #define DLCX_RET_OSMUX DLCX_RET \ "X-Osmo-CP: EC TI=0, TO=0\r\n" +#define DLCX_NULL \ + "DLCX 8 null@mgw MGCP 1.0\r\n" \ + "I: %s\r\n" \ + "C: 2\r\n" + +#define DLCX_NULL_RET "502 8 FAIL\r\n" + #define RQNT \ "RQNT 186908780 1@mgw MGCP 1.0\r\n" \ "X: B244F267488\r\n" \ @@ -405,6 +420,13 @@ #define RQNT1_RET "200 186908780 OK\r\n" #define RQNT2_RET "200 186908781 OK\r\n" +#define RQNT_NULL \ + "RQNT 186908782 null@mgw MGCP 1.0\r\n" \ + "X: B244F267488\r\n" \ + "S: D/9\r\n" + +#define RQNT_NULL_RET "502 186908782 FAIL\r\n" + #define PTYPE_IGNORE 0 /* == default initializer */ #define PTYPE_NONE 128 #define PTYPE_NYI PTYPE_NONE @@ -545,6 +567,20 @@ "m=audio 16008 RTP/AVP 0\r\n" \ "a=ptime:20\r\n" +#define CRCX_NULL \ + "CRCX 2 null@mgw MGCP 1.0\r\n" \ + "m: recvonly\r\n" \ + "C: 2\r\n" \ + "L: p:20\r\n" \ + "\r\n" \ + "v=0\r\n" \ + "c=IN IP4 123.12.12.123\r\n" \ + "m=audio 5904 RTP/AVP 97\r\n" \ + "a=rtpmap:97 GSM-EFR/8000\r\n" \ + "a=ptime:40\r\n" + +#define CRCX_NULL_RET "502 2 FAIL\r\n" + struct mgcp_test { const char *name; const char *req; @@ -586,6 +622,11 @@ {"CRCX", CRCX_X_OSMO_IGN, CRCX_X_OSMO_IGN_RET, 97}, {"MDCX_TOO_LONG_CI", MDCX_TOO_LONG_CI, MDCX_TOO_LONG_CI_RET}, {"CRCX", CRCX_AMR_WITH_FMTP, CRCX_AMR_WITH_FMTP_RET}, + {"AUEP_NULL", AUEP_NULL, AUEP_NULL_RET}, + {"CRCX_NULL", CRCX_NULL, CRCX_NULL_RET}, + {"MDCX_NULL", MDCX_NULL, MDCX_NULL_RET}, + {"DLCX_NULL", DLCX_NULL, DLCX_NULL_RET}, + {"RQNT_NULL", RQNT_NULL, RQNT_NULL_RET}, }; static const struct mgcp_test retransmit[] = { diff --git a/tests/mgcp/mgcp_test.ok b/tests/mgcp/mgcp_test.ok index 08df5d4..d76e455 100644 --- a/tests/mgcp/mgcp_test.ok +++ b/tests/mgcp/mgcp_test.ok Binary files differ -- To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/33312 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Change-Id: Ia409b16e9211e6261e2e0f21288544289d6f3733 Gerrit-Change-Number: 33312 Gerrit-PatchSet: 3 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: fixeria <axilirator(a)gmail.com> Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • ...
  • 248
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.