From fc664e93e62645fc6e9659664351e77f3c4b374f Mon Sep 17 00:00:00 2001 From: Josh Bell Date: Mon, 15 Jan 2007 19:49:52 +0000 Subject: Port fix for SL-32157 "PowerPC Mac crashes when crossing regions or teleporting with capabilities turned on" from Branch 1-13-2 r56710 via partial merge of release-candidate -r 56743:56744 --- indra/llcommon/llsdutil.cpp | 23 +++++++++++++++++++++++ indra/llcommon/llsdutil.h | 4 ++++ 2 files changed, 27 insertions(+) (limited to 'indra') diff --git a/indra/llcommon/llsdutil.cpp b/indra/llcommon/llsdutil.cpp index 8fe43736e4..7cd0ed4c08 100644 --- a/indra/llcommon/llsdutil.cpp +++ b/indra/llcommon/llsdutil.cpp @@ -180,3 +180,26 @@ U64 ll_U64_from_sd(const LLSD& sd) return ((U64)high) << 32 | low; } + +// IP Address (stored in net order in a U32, so don't need swizzling) +LLSD ll_sd_from_ipaddr(const U32 val) +{ + std::vector v; + + v.resize(4); + memcpy(&(v[0]), &val, 4); /* Flawfinder: ignore */ + + return LLSD(v); +} + +U32 ll_ipaddr_from_sd(const LLSD& sd) +{ + U32 ret; + std::vector v = sd.asBinary(); + if (v.size() < 4) + { + return 0; + } + memcpy(&ret, &(v[0]), 4); /* Flawfinder: ignore */ + return ret; +} diff --git a/indra/llcommon/llsdutil.h b/indra/llcommon/llsdutil.h index 9369f1a39f..79961c5311 100644 --- a/indra/llcommon/llsdutil.h +++ b/indra/llcommon/llsdutil.h @@ -47,4 +47,8 @@ U32 ll_U32_from_sd(const LLSD& sd); LLSD ll_sd_from_U64(const U64); U64 ll_U64_from_sd(const LLSD& sd); +// IP Address +LLSD ll_sd_from_ipaddr(const U32); +U32 ll_ipaddr_from_sd(const LLSD& sd); + #endif // LL_LLSDUTIL_H -- cgit v1.2.3