summaryrefslogtreecommitdiff
path: root/src/eir.c
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@intel.com>2012-01-18 01:18:16 +0200
committerJohan Hedberg <johan.hedberg@intel.com>2012-01-18 01:18:16 +0200
commitcacfa7e3a408583614d029a532858367fff1ddac (patch)
tree986d0e604b1eac352b6a62e9839e8084e02988a8 /src/eir.c
parent4b98e3cfcb03790c9c452990b054868782b9481d (diff)
downloadbluez-cacfa7e3a408583614d029a532858367fff1ddac.tar.gz
eir: Add eir_length() function
Diffstat (limited to 'src/eir.c')
-rw-r--r--src/eir.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/eir.c b/src/eir.c
index 913a038d1..419f4445b 100644
--- a/src/eir.c
+++ b/src/eir.c
@@ -369,3 +369,26 @@ size_t eir_append_data(uint8_t *eir, size_t eir_len, uint8_t type,
return eir_len;
}
+
+size_t eir_length(uint8_t *eir, size_t maxlen)
+{
+ uint8_t field_len;
+ size_t parsed, length;
+
+ for (parsed = 0, length = 0; parsed < maxlen - 1; parsed += field_len) {
+ field_len = eir[0];
+
+ if (field_len == 0)
+ break;
+
+ parsed += field_len + 1;
+
+ if (parsed > maxlen)
+ break;
+
+ length = parsed;
+ eir += field_len + 1;
+ }
+
+ return length;
+}