daniel has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/33685 )
Change subject: osmo_io: Document expectation that segmentation_cb() can modify msgb
......................................................................
osmo_io: Document expectation that segmentation_cb() can modify msgb
This is used for parsing e.g. the ipa header and setting msg->cb.
Guard against segmentation_cb changing msg->data in
iofd_handle_segmentation().
Change-Id: Idd2115baae98a7818aabb26232d4423d2d48fb5c
---
M include/osmocom/core/osmo_io.h
M src/core/osmo_io.c
2 files changed, 25 insertions(+), 4 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/85/33685/1
diff --git a/include/osmocom/core/osmo_io.h b/include/osmocom/core/osmo_io.h
index 932b909..81f13f2 100644
--- a/include/osmocom/core/osmo_io.h
+++ b/include/osmocom/core/osmo_io.h
@@ -46,7 +46,10 @@
* Needs to return the size of the next message. If it returns
* -EAGAIN or a value larger than msgb_length() (message is incomplete)
* osmo_io will wait for more data to be read. Other negative values
- * cause the msg to be discarded. */
+ * cause the msg to be discarded. If a full message was received the msgb
+ * will be trimmed to size and forwarded to the read call-back. All parsing
+ * done to the msgb by the segmentation_cb() for that message will be preserved
+ * (e.g. setting lxh or msgb->cb). */
int (*segmentation_cb)(struct msgb *msg);
};
diff --git a/src/core/osmo_io.c b/src/core/osmo_io.c
index fdb9e32..8217316 100644
--- a/src/core/osmo_io.c
+++ b/src/core/osmo_io.c
@@ -226,6 +226,9 @@
int extra_len, received_len;
struct msgb *msg_pending;
+ /* Save the start of message before segmentation_cb (which could change it) */
+ uint8_t *data = msg->data;
+
received_len = msgb_length(msg);
if (!iofd->io_ops.segmentation_cb) {
@@ -258,12 +261,14 @@
/* msgb contains more than one segment */
/* Copy the trailing data over */
msg_pending = iofd_msgb_alloc(iofd);
- memcpy(msgb_data(msg_pending), msgb_data(msg) + expected_len, extra_len);
+ memcpy(msgb_data(msg_pending), data + expected_len, extra_len);
msgb_put(msg_pending, extra_len);
*pending_out = msg_pending;
- /* Trim the original msgb to size */
- msgb_trim(msg, expected_len);
+ /* Trim the original msgb to size. Don't use msgb_trim because we need to reference
+ * msg->data from before it might have been modified by the segmentation_cb(). */
+ msg->len = expected_len;
+ msg->tail = data + expected_len;
return IOFD_SEG_ACT_HANDLE_MORE;
defer:
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/33685
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Idd2115baae98a7818aabb26232d4423d2d48fb5c
Gerrit-Change-Number: 33685
Gerrit-PatchSet: 1
Gerrit-Owner: daniel <dwillmann(a)sysmocom.de>
Gerrit-MessageType: newchange
daniel has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/33686 )
Change subject: osmo_io: Add function to change the tx_queue size
......................................................................
osmo_io: Add function to change the tx_queue size
Change-Id: If3d1de8bffe1123002515878655ea9e02b482888
---
M include/osmocom/core/osmo_io.h
M src/core/libosmocore.map
M src/core/osmo_io.c
3 files changed, 20 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/86/33686/1
diff --git a/include/osmocom/core/osmo_io.h b/include/osmocom/core/osmo_io.h
index 81f13f2..6416cf5 100644
--- a/include/osmocom/core/osmo_io.h
+++ b/include/osmocom/core/osmo_io.h
@@ -85,6 +85,7 @@
const struct osmo_sockaddr *dest);
void osmo_iofd_set_alloc_info(struct osmo_io_fd *iofd, unsigned int size, unsigned int headroom);
+void osmo_iofd_set_txqueue_size(struct osmo_io_fd *iofd, unsigned int size);
void *osmo_iofd_get_data(const struct osmo_io_fd *iofd);
void osmo_iofd_set_data(struct osmo_io_fd *iofd, void *data);
diff --git a/src/core/libosmocore.map b/src/core/libosmocore.map
index 50be67c..d9b3697 100644
--- a/src/core/libosmocore.map
+++ b/src/core/libosmocore.map
@@ -268,6 +268,7 @@
osmo_iofd_set_data;
osmo_iofd_set_ioops;
osmo_iofd_set_priv_nr;
+osmo_iofd_set_txqueue_size;
osmo_iofd_setup;
osmo_iofd_txqueue_clear;
osmo_iofd_txqueue_len;
diff --git a/src/core/osmo_io.c b/src/core/osmo_io.c
index 8217316..cab3457 100644
--- a/src/core/osmo_io.c
+++ b/src/core/osmo_io.c
@@ -542,6 +542,15 @@
iofd->msgb_alloc.size = size;
}
+/*! Set the maximum number of messages enqueued for sending
+ * \param[in] iofd the file descriptor
+ * \param[in] size the maximum size of the transmit queue
+ */
+void osmo_iofd_set_txqueue_size(struct osmo_io_fd *iofd, unsigned int size)
+{
+ iofd->tx_queue.max_length = size;
+}
+
/*! Get the associated user-data from an iofd
* \param[in] iofd the file descriptor
* \returns the data that was previously set with \ref osmo_iofd_setup()
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/33686
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: If3d1de8bffe1123002515878655ea9e02b482888
Gerrit-Change-Number: 33686
Gerrit-PatchSet: 1
Gerrit-Owner: daniel <dwillmann(a)sysmocom.de>
Gerrit-MessageType: newchange
Attention is currently required from: neels.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33490 )
Change subject: rua: also match on RUA Disconnect without RANAP payload
......................................................................
Patch Set 1: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33490
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ia0b89e9198794d196a88040ee89bdf24f3b08ae0
Gerrit-Change-Number: 33490
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Comment-Date: Tue, 11 Jul 2023 14:59:22 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
Attention is currently required from: neels, pespin.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33669 )
Change subject: hnbgw: add role and sctp-role in osmo-stp.cfg
......................................................................
Patch Set 1:
(1 comment)
Patchset:
PS1:
this should be purely cosmetic, right? On osmo-stp, sctp-server and role=sg should be the only sane default. @pespin?
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33669
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I1019c1d4ebb6183a389c655ea6716bfb0255721a
Gerrit-Change-Number: 33669
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Tue, 11 Jul 2023 14:57:59 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment