blob: 182c54d245e06383bd0aa1e89de16fe8ac421c39 [file] [log] [blame]
Harald Welte91b5b0d2009-02-06 12:51:39 +00001#include <openbsc/tlv.h>
2
3int tlv_parse(struct tlv_parser *parser, u_int8_t *data, int data_len)
4{
5 u_int8_t *cur = data;
6 memset(parser, 0, sizeof(*parser));
7
8 while (cur +2 <= data + data_len) {
9 u_int8_t tag, len;
10 u_int8_t *val;
11
12 tag = *cur++;
13 len = *cur++;
14 val = cur;
15
16 parser->lv[tag].len = len;
17 parser->lv[tag].val = val;
18
19 if (cur + len > data + data_len)
20 break;
21
22 cur += len;
23 }
24 return 0;
25}