osmo-bsc/src/tlv_parser.c

26 lines
417 B
C
Raw Normal View History

2009-02-06 12:51:39 +00:00
#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;
}