From bf85d6f433e5d1d24a3cb7f212f6bfb65988d609 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 8 Feb 2021 13:17:23 +0100 Subject: xua: introduce xua_msg_get_u32p() helper Change-Id: Id7780074b82bc668ae148456750b1a01799decd1 --- include/osmocom/sigtran/xua_msg.h | 1 + src/xua_msg.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/include/osmocom/sigtran/xua_msg.h b/include/osmocom/sigtran/xua_msg.h index 329ba96..11bce6f 100644 --- a/include/osmocom/sigtran/xua_msg.h +++ b/include/osmocom/sigtran/xua_msg.h @@ -91,6 +91,7 @@ int msgb_t16l16vp_put_u32(struct msgb *msg, uint16_t tag, uint32_t val); int xua_msg_add_u32(struct xua_msg *xua, uint16_t iei, uint32_t val); uint32_t xua_msg_part_get_u32(const struct xua_msg_part *part); uint32_t xua_msg_get_u32(const struct xua_msg *xua, uint16_t iei); +const uint32_t *xua_msg_get_u32p(const struct xua_msg *xua, uint16_t iei, uint32_t *out); const char *xua_msg_part_get_str(const struct xua_msg_part *part); const char *xua_msg_get_str(const struct xua_msg *xua, uint16_t iei); void xua_part_add_gt(struct msgb *msg, const struct osmo_sccp_gt *gt); diff --git a/src/xua_msg.c b/src/xua_msg.c index 42c580d..1df9abd 100644 --- a/src/xua_msg.c +++ b/src/xua_msg.c @@ -297,6 +297,16 @@ uint32_t xua_msg_get_u32(const struct xua_msg *xua, uint16_t iei) return xua_msg_part_get_u32(part); } +/* get a U32 IE in host-byte-order, returning whether it exists (!= NULL) or not (== NULL) */ +const uint32_t *xua_msg_get_u32p(const struct xua_msg *xua, uint16_t iei, uint32_t *out) +{ + struct xua_msg_part *part = xua_msg_find_tag(xua, iei); + if (!part) + return NULL; + *out = xua_msg_part_get_u32(part); + return out; +} + const char *xua_msg_part_get_str(const struct xua_msg_part *part) { static char __thread buf[256]; -- cgit v1.2.3