summaryrefslogtreecommitdiffstats
path: root/src/shared/libosmocore/include/osmocom/core/msgb.h
diff options
context:
space:
mode:
authorLuca Melette <luca@srlabs.de>2012-05-03 02:21:08 +0200
committerLuca Melette <luca@srlabs.de>2012-05-03 02:21:08 +0200
commit1e9d9f4c080e283298a2dce2e48019428914fa10 (patch)
treec793b796b4f795277a5311916c5af1037fe8120a /src/shared/libosmocore/include/osmocom/core/msgb.h
parent1fc5ab1d396b91e7983e8529208aa1cd21d9629c (diff)
parent186fefcc76294e69c367b2eb8796bb824927248d (diff)
Merge branch 'master' into luca/gsmmap
Introduced code for DSP auto-reset in error conditions Disabled by default US bands (not working yet)
Diffstat (limited to 'src/shared/libosmocore/include/osmocom/core/msgb.h')
-rw-r--r--src/shared/libosmocore/include/osmocom/core/msgb.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/shared/libosmocore/include/osmocom/core/msgb.h b/src/shared/libosmocore/include/osmocom/core/msgb.h
index 9f46e6c6..e465ec2b 100644
--- a/src/shared/libosmocore/include/osmocom/core/msgb.h
+++ b/src/shared/libosmocore/include/osmocom/core/msgb.h
@@ -312,6 +312,32 @@ static inline void msgb_reserve(struct msgb *msg, int len)
msg->tail += len;
}
+/*! \brief Trim the msgb to a given absolute length
+ * \param[in] msg message buffer
+ * \param[in] len new total length of buffer
+ * \returns 0 in case of success, negative in case of error
+ */
+static inline int msgb_trim(struct msgb *msg, int len)
+{
+ if (len > msg->data_len)
+ return -1;
+
+ msg->len = len;
+ msg->tail = msg->data + len;
+
+ return 0;
+}
+
+/*! \brief Trim the msgb to a given layer3 length
+ * \pram[in] msg message buffer
+ * \param[in] l3len new layer3 length
+ * \returns 0 in case of success, negative in case of error
+ */
+static inline int msgb_l3trim(struct msgb *msg, int l3len)
+{
+ return msgb_trim(msg, (msg->l3h - msg->data) + l3len);
+}
+
/*! \brief Allocate message buffer with specified headroom
* \param[in] size size in bytes, including headroom
* \param[in] headroom headroom in bytes