tlv: Add tlvp_val{16,32}be() to get TLV values in unaligned host byte order

Change-Id: I3749e1e4974742bc8c32722e0e998775b5394829
This commit is contained in:
Harald Welte 2017-05-15 12:45:59 +02:00
parent 95871dadbd
commit 50ef73377c
1 changed files with 23 additions and 0 deletions

View File

@ -4,6 +4,8 @@
#include <string.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/bit16gen.h>
#include <osmocom/core/bit32gen.h>
/*! \defgroup tlv GSM L3 compatible TLV parser
* @{
@ -436,6 +438,27 @@ static inline uint32_t tlvp_val32_unal(const struct tlv_parsed *tp, int pos)
return res;
}
/*! \brief Retrieve (possibly unaligned) TLV element and convert to host byte order
* \param[in] tp pointer to \ref tlv_parsed
* \param[in] pos element to return
* \returns aligned 16 bit value in host byte order
*/
static inline uint16_t tlvp_val16be(const struct tlv_parsed *tp, int pos)
{
return osmo_load16be(TLVP_VAL(tp, pos));
}
/*! \brief Retrieve (possibly unaligned) TLV element and convert to host byte order
* \param[in] tp pointer to \ref tlv_parsed
* \param[in] pos element to return
* \returns aligned 32 bit value in host byte order
*/
static inline uint32_t tlvp_val32be(const struct tlv_parsed *tp, int pos)
{
return osmo_load32be(TLVP_VAL(tp, pos));
}
struct tlv_parsed *osmo_tlvp_copy(const struct tlv_parsed *tp_orig, void *ctx);
int osmo_tlvp_merge(struct tlv_parsed *dst, const struct tlv_parsed *src);
int osmo_shift_v_fixed(uint8_t **data, size_t *data_len,