Attention is currently required from: lynxis lazus.
pespin has posted comments on this change by lynxis lazus. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38921?usp=email )
Change subject: SGSN_Tests: assign random TEID-C to Context Req/Resp/Ack messages
......................................................................
Patch Set 1:
(1 comment)
File sgsn/SGSN_Tests.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38921/comment/d142f0dc_7399… :
PS1, Line 3040: var OCT4 teidc := f_gtp_teid_random();
> The spec is using the TEID-C
Done
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38921?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Icac28280a810e8d24eeeaaae1fb1a15278fde8da
Gerrit-Change-Number: 38921
Gerrit-PatchSet: 1
Gerrit-Owner: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Comment-Date: Mon, 25 Nov 2024 11:08:03 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Comment-In-Reply-To: lynxis lazus <lynxis(a)fe80.eu>
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-netif/+/38925?usp=email )
Change subject: stream_cli: Move osmo_stream_cli_close() before osmo_stream_cli_reconnect()
......................................................................
stream_cli: Move osmo_stream_cli_close() before osmo_stream_cli_reconnect()
The reconnect function is also calling the disconnect_cb() callback
through making use of osmo_stream_cli_close().
Hence, put the close() function further up in the file following the
dependency chaing, allowing removal of an extra declaration.
It also helps in seeing the whole related code together.
Furthermore, those functions will be split in a follow-up commit into
private helper functions so the order will become more relevant due to
being static and not appearing in a header file.
Change-Id: Ib7a7655f6a8aa45793ad8a43961f161c74d22e33
---
M src/stream_cli.c
1 file changed, 39 insertions(+), 41 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/25/38925/1
diff --git a/src/stream_cli.c b/src/stream_cli.c
index b7ca9fd..9fc8101 100644
--- a/src/stream_cli.c
+++ b/src/stream_cli.c
@@ -116,51 +116,10 @@
struct osmo_sock_init2_multiaddr_pars ma_pars;
};
-void osmo_stream_cli_close(struct osmo_stream_cli *cli);
-
/*! \addtogroup stream_cli
* @{
*/
-/*! Re-connect an Osmocom Stream Client.
- * If re-connection is enabled for this client
- * (which is the case unless negative timeout was explicitly set via osmo_stream_cli_set_reconnect_timeout() call),
- * we close any existing connection (if any) and schedule a re-connect timer */
-void osmo_stream_cli_reconnect(struct osmo_stream_cli *cli)
-{
- osmo_stream_cli_close(cli);
-
- if (cli->reconnect_timeout < 0) {
- LOGSCLI(cli, LOGL_INFO, "not reconnecting, disabled\n");
- return;
- }
-
- cli->state = STREAM_CLI_STATE_WAIT_RECONNECT;
- LOGSCLI(cli, LOGL_INFO, "retrying reconnect in %d seconds...\n",
- cli->reconnect_timeout);
- osmo_timer_schedule(&cli->timer, cli->reconnect_timeout, 0);
-}
-
-/*! Check if Osmocom Stream Client is in connected state.
- * \param[in] cli Osmocom Stream Client
- * \return true if connected, false otherwise
- */
-bool osmo_stream_cli_is_connected(struct osmo_stream_cli *cli)
-{
- return cli->state == STREAM_CLI_STATE_CONNECTED;
-}
-
-/*! Check if Osmocom Stream Client is opened (has an FD available) according to
- * its current state.
- * \param[in] cli Osmocom Stream Client
- * \return true if fd is available (osmo_stream_cli_get_fd()), false otherwise
- */
-static bool stream_cli_is_opened(const struct osmo_stream_cli *cli)
-{
- return cli->state == STREAM_CLI_STATE_CONNECTING ||
- cli->state == STREAM_CLI_STATE_CONNECTED;
-}
-
static void stream_cli_close_iofd(struct osmo_stream_cli *cli)
{
if (!cli->iofd)
@@ -219,6 +178,45 @@
}
}
+/*! Re-connect an Osmocom Stream Client.
+ * If re-connection is enabled for this client
+ * (which is the case unless negative timeout was explicitly set via osmo_stream_cli_set_reconnect_timeout() call),
+ * we close any existing connection (if any) and schedule a re-connect timer */
+void osmo_stream_cli_reconnect(struct osmo_stream_cli *cli)
+{
+ osmo_stream_cli_close(cli);
+
+ if (cli->reconnect_timeout < 0) {
+ LOGSCLI(cli, LOGL_INFO, "not reconnecting, disabled\n");
+ return;
+ }
+
+ cli->state = STREAM_CLI_STATE_WAIT_RECONNECT;
+ LOGSCLI(cli, LOGL_INFO, "retrying reconnect in %d seconds...\n",
+ cli->reconnect_timeout);
+ osmo_timer_schedule(&cli->timer, cli->reconnect_timeout, 0);
+}
+
+/*! Check if Osmocom Stream Client is in connected state.
+ * \param[in] cli Osmocom Stream Client
+ * \return true if connected, false otherwise
+ */
+bool osmo_stream_cli_is_connected(struct osmo_stream_cli *cli)
+{
+ return cli->state == STREAM_CLI_STATE_CONNECTED;
+}
+
+/*! Check if Osmocom Stream Client is opened (has an FD available) according to
+ * its current state.
+ * \param[in] cli Osmocom Stream Client
+ * \return true if fd is available (osmo_stream_cli_get_fd()), false otherwise
+ */
+static bool stream_cli_is_opened(const struct osmo_stream_cli *cli)
+{
+ return cli->state == STREAM_CLI_STATE_CONNECTING ||
+ cli->state == STREAM_CLI_STATE_CONNECTED;
+}
+
/*! Retrieve file descriptor of the stream client socket.
* \param[in] cli Stream Client of which we want to obtain the file descriptor
* \returns File descriptor or negative in case of error */
--
To view, visit https://gerrit.osmocom.org/c/libosmo-netif/+/38925?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: libosmo-netif
Gerrit-Branch: master
Gerrit-Change-Id: Ib7a7655f6a8aa45793ad8a43961f161c74d22e33
Gerrit-Change-Number: 38925
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Attention is currently required from: daniel, osmith, pespin.
fixeria has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38882?usp=email )
Change subject: Osmocom_CTRL_Functions.ttcn: Use Misc_Helpers.f_shutdown() everywhere
......................................................................
Patch Set 2:
(1 comment)
File library/Osmocom_CTRL_Functions.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38882/comment/1888051c_78d3… :
PS2, Line 47: log2str
I don't like using `f_shutdown()` for setting the testcase verdict, so no CR+1 from me, sorry.
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38882?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I3b11a4dee35da89b2fec0cc66021dd57db04beb4
Gerrit-Change-Number: 38882
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: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: daniel <dwillmann(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 25 Nov 2024 10:59:57 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Attention is currently required from: pespin.
lynxis lazus has posted comments on this change by lynxis lazus. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38921?usp=email )
Change subject: SGSN_Tests: assign random TEID-C to Context Req/Resp/Ack messages
......................................................................
Patch Set 1:
(1 comment)
File sgsn/SGSN_Tests.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38921/comment/d3f8c4ac_0d36… :
PS1, Line 3040: var OCT4 teidc := f_gtp_teid_random();
> why teidc and not teic?
The spec is using the TEID-C
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38921?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Icac28280a810e8d24eeeaaae1fb1a15278fde8da
Gerrit-Change-Number: 38921
Gerrit-PatchSet: 1
Gerrit-Owner: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 25 Nov 2024 10:35:05 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-netif/+/38894?usp=email )
Change subject: stream_srv: Add osmo_stream_srv_link_set_{ip_dscp,priority}() APIs
......................................................................
stream_srv: Add osmo_stream_srv_link_set_{ip_dscp,priority}() APIs
Change-Id: Iacb6b72a05055820253eaaa04850637dd2fc20e9
---
M TODO-RELEASE
M include/osmocom/netif/stream.h
M src/stream_srv.c
3 files changed, 50 insertions(+), 1 deletion(-)
Approvals:
pespin: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/TODO-RELEASE b/TODO-RELEASE
index 15f995e..4f59788 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -7,4 +7,4 @@
# If any interfaces have been added since the last public release: c:r:a + 1.
# If any interfaces have been removed or changed since the last public release: c:r:0.
#library what description / commit summary line
-libosmo-netif add API osmo_stream_cli_set_{ip_dscp,priority}()
+libosmo-netif add API osmo_stream_cli_set_{ip_dscp,priority}(), osmo_stream_srv_link_set_{ip_dscp,priority}()
diff --git a/include/osmocom/netif/stream.h b/include/osmocom/netif/stream.h
index 96d8bbf..6edf915 100644
--- a/include/osmocom/netif/stream.h
+++ b/include/osmocom/netif/stream.h
@@ -70,6 +70,8 @@
void osmo_stream_srv_link_set_name(struct osmo_stream_srv_link *link, const char *name);
const char *osmo_stream_srv_link_get_name(const struct osmo_stream_srv_link *link);
void osmo_stream_srv_link_set_nodelay(struct osmo_stream_srv_link *link, bool nodelay);
+int osmo_stream_srv_link_set_priority(struct osmo_stream_srv_link *link, int sk_prio);
+int osmo_stream_srv_link_set_ip_dscp(struct osmo_stream_srv_link *link, uint8_t ip_dscp);
void osmo_stream_srv_link_set_addr(struct osmo_stream_srv_link *link, const char *addr);
int osmo_stream_srv_link_set_addrs(struct osmo_stream_srv_link *link, const char **addr, size_t addrcnt);
void osmo_stream_srv_link_set_port(struct osmo_stream_srv_link *link, uint16_t port);
diff --git a/src/stream_srv.c b/src/stream_srv.c
index a600ad9..aa7edbf 100644
--- a/src/stream_srv.c
+++ b/src/stream_srv.c
@@ -81,7 +81,9 @@
uint16_t port;
int sk_domain;
int sk_type;
+ int sk_prio; /* socket priority, SO_PRIORITY, default=0=unset */
uint16_t proto;
+ uint8_t ip_dscp; /* IP Differentiated services, 0..63, default=0=unset */
osmo_stream_srv_link_accept_cb_t accept_cb;
void *data;
int flags;
@@ -148,6 +150,24 @@
goto error_close_socket;
}
+ if (link->ip_dscp > 0) {
+ ret = osmo_sock_set_dscp(sock_fd, link->ip_dscp);
+ if (ret < 0) {
+ LOGSLNK(link, LOGL_ERROR, "set_ip_dscp(%u): failed setsockopt err=%d\n",
+ link->ip_dscp, errno);
+ goto error_close_socket;
+ }
+ }
+
+ if (link->sk_prio > 0) {
+ ret = osmo_sock_set_priority(sock_fd, link->sk_prio);
+ if (ret < 0) {
+ LOGSLNK(link, LOGL_ERROR, "set_priority(%d): failed setsockopt err=%d\n",
+ link->sk_prio, errno);
+ goto error_close_socket;
+ }
+ }
+
if (!link->accept_cb) {
ret = -ENOTSUP;
goto error_close_socket;
@@ -224,6 +244,33 @@
link->flags &= ~OSMO_STREAM_SRV_F_NODELAY;
}
+/*! Set the priority value of the stream socket.
+ * Setting this will automatically set the socket priority
+ * option on any socket established via this server link, before
+ * calling the accept_cb().
+ * \param[in] link server link whose sockets are to be configured
+ * \param[in] sk_prio priority value. Values outside 0..6 require CAP_NET_ADMIN.
+ * \return negative on error, 0 on success
+ */
+int osmo_stream_srv_link_set_priority(struct osmo_stream_srv_link *link, int sk_prio)
+{
+ link->sk_prio = sk_prio;
+ return 0;
+}
+
+/*! Set the DSCP (differentiated services code point) of the stream socket.
+ * Setting this will automatically set the IP DSCP option on any socket on any
+ * socket established via this server link, before calling the accept_cb().
+ * \param[in] link server link whose sockets are to be configured
+ * \param[in] ip_dscp DSCP value. Value range 0..63.
+ * \return negative on error, 0 on success
+ */
+int osmo_stream_srv_link_set_ip_dscp(struct osmo_stream_srv_link *link, uint8_t ip_dscp)
+{
+ link->ip_dscp = ip_dscp;
+ return 0;
+}
+
/*! Set the local address to which we bind.
* Any changes to this setting will only become active upon next (re)connect.
* \param[in] link Stream Server Link to modify
--
To view, visit https://gerrit.osmocom.org/c/libosmo-netif/+/38894?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: libosmo-netif
Gerrit-Branch: master
Gerrit-Change-Id: Iacb6b72a05055820253eaaa04850637dd2fc20e9
Gerrit-Change-Number: 38894
Gerrit-PatchSet: 5
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: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Attention is currently required from: fixeria, laforge.
lynxis lazus has posted comments on this change by lynxis lazus. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38397?usp=email )
Change subject: SGSN: BSSGP_ConnHdlr: GMM Service Request: handle PMM IDLE UE correct
......................................................................
Patch Set 4:
(1 comment)
File sgsn/BSSGP_ConnHdlr.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38397/comment/266d95e9_46bf… :
PS4, Line 640: } else {
> So in the case of `exp_service_acc := false`, this altstep repeats and will keep waiting for what ki […]
The SGSN (and this testcase) implemented Service Accept in the wrong way.
If a UE wants to transfer data in PMM_IDLE (meaning it is attached, but doesn't has an active channel),
the phone will do an Service Request.
But the correct flow would be:
(UE/RNC - SGSN)
Service Req ->
SecurityModeCommand <-
SecurityModeCommandComplete ->
There isn't a Service Accept, because it is implicit by the SecurityCommand.
But if the phone is in PMM_CONNECTED, meaning it already has a active signalling channel it would be:
Service Req ->
Service Accept <-
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38397?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I29237997e414aea80f254247da54f909410a4b36
Gerrit-Change-Number: 38397
Gerrit-PatchSet: 4
Gerrit-Owner: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 25 Nov 2024 10:18:21 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de>