From 63196de6d899d01c4e1899e3aab2e700a47a196d Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 5 Mar 2011 14:32:50 +0100 Subject: TLV: Add tv_fixed_put() and msgb_tv_fixed_put() This is for a Tag-Value type with fixed-length value (len > 1) --- include/osmocore/tlv.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/include/osmocore/tlv.h b/include/osmocore/tlv.h index 4cfce872..7bda9f92 100644 --- a/include/osmocore/tlv.h +++ b/include/osmocore/tlv.h @@ -132,6 +132,14 @@ static inline uint8_t *tv_put(uint8_t *buf, uint8_t tag, return buf; } +static inline uint8_t *tv_fixed_put(uint8_t *buf, uint8_t tag, + unsigned int len, const uint8_t *val) +{ + *buf++ = tag; + memcpy(buf, val, len); + return buf + len; +} + /* 'val' is still in host byte order! */ static inline uint8_t *tv16_put(uint8_t *buf, uint8_t tag, uint16_t val) @@ -160,6 +168,13 @@ static inline uint8_t *msgb_tv_put(struct msgb *msg, uint8_t tag, uint8_t val) return tv_put(buf, tag, val); } +static inline uint8_t *msgb_tv_fixed_put(struct msgb *msg, uint8_t tag, + unsigned int len, const uint8_t *val) +{ + uint8_t *buf = msgb_put(msg, 1+len); + return tv_fixed_put(buf, tag, len, val); +} + static inline uint8_t *msgb_v_put(struct msgb *msg, uint8_t val) { uint8_t *buf = msgb_put(msg, 1); -- cgit v1.2.3