summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-04-15 19:04:34 +0200
committerHarald Welte <laforge@gnumonks.org>2017-04-15 19:04:34 +0200
commit59a9ebf8b8f465589b40eb58aeb839bdaadb7009 (patch)
treea0362340f8a1339df184ad83c4899af27835fcb1
parentb522740be59beeed388c0d74f2a7641dc8cb5b11 (diff)
msgb: Add msgb_pull_to_l2() analogous to msgb_pull_to_l3()
Introduce msgb_pull_to_l2() which pulls (removes) any msgb contents in front of the L2 header (msg->l2h). Change-Id: I7786a1b30f9e7eaa3dcdb3cbb2a85a126588f6cd
-rw-r--r--include/osmocom/core/msgb.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/osmocom/core/msgb.h b/include/osmocom/core/msgb.h
index 9cb1c24d..afb887c0 100644
--- a/include/osmocom/core/msgb.h
+++ b/include/osmocom/core/msgb.h
@@ -350,6 +350,21 @@ static inline unsigned char *msgb_pull_to_l3(struct msgb *msg)
return ret;
}
+/*! \brief remove (pull) all headers in front of l2h from the message buffer.
+ * \param[in] msgb message buffer with a valid l2h
+ * \returns pointer to new start of msgb (l2h)
+ *
+ * This function moves the \a data pointer of the \ref msgb further back
+ * in the message, thereby shrinking the size of the message.
+ * l1h will be cleared.
+ */
+static inline unsigned char *msgb_pull_to_l2(struct msgb *msg)
+{
+ unsigned char *ret = msgb_pull(msg, msg->l2h - msg->data);
+ msg->l1h = NULL;
+ return ret;
+}
+
/*! \brief remove uint8 from front of message
* \param[in] msgb message buffer
* \returns 8bit value taken from end of msgb