blob: 182c54d245e06383bd0aa1e89de16fe8ac421c39 [file] [log] [blame]
#include <openbsc/tlv.h>
int tlv_parse(struct tlv_parser *parser, u_int8_t *data, int data_len)
{
u_int8_t *cur = data;
memset(parser, 0, sizeof(*parser));
while (cur +2 <= data + data_len) {
u_int8_t tag, len;
u_int8_t *val;
tag = *cur++;
len = *cur++;
val = cur;
parser->lv[tag].len = len;
parser->lv[tag].val = val;
if (cur + len > data + data_len)
break;
cur += len;
}
return 0;
}