diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2010-04-25 17:53:16 +0200 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2010-04-25 17:53:16 +0200 |
commit | d0629eee06c529683508be78bb9b14b3f0d7996c (patch) | |
tree | 826c2c1cb7abf720436bcc0b231326955a76a192 /src/shared | |
parent | e91d8a934c685f9d89f10d3e2fd927102f022cd3 (diff) |
Added single octet TV (type + value) to libosmocore.
In case of a single octet, the upper nibble is the type, the lower nibble
carries the value.
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/libosmocore/include/osmocore/tlv.h | 1 | ||||
-rw-r--r-- | src/shared/libosmocore/src/tlv_parser.c | 8 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/shared/libosmocore/include/osmocore/tlv.h b/src/shared/libosmocore/include/osmocore/tlv.h index c733dbc9..4cfce872 100644 --- a/src/shared/libosmocore/include/osmocore/tlv.h +++ b/src/shared/libosmocore/include/osmocore/tlv.h @@ -212,6 +212,7 @@ enum tlv_type { TLV_TYPE_TLV, TLV_TYPE_TL16V, TLV_TYPE_TvLV, + TLV_TYPE_SINGLE_TV }; struct tlv_def { diff --git a/src/shared/libosmocore/src/tlv_parser.c b/src/shared/libosmocore/src/tlv_parser.c index 407e57aa..bbef7a9a 100644 --- a/src/shared/libosmocore/src/tlv_parser.c +++ b/src/shared/libosmocore/src/tlv_parser.c @@ -36,6 +36,14 @@ int tlv_parse_one(uint8_t *o_tag, uint16_t *o_len, const uint8_t **o_val, tag = *buf; *o_tag = tag; + /* single octet TV IE */ + if (def->def[tag & 0xf0].type == TLV_TYPE_SINGLE_TV) { + *o_tag = tag & 0xf0; + *o_val = buf; + *o_len = 1; + return 1; + } + /* FIXME: use tables for knwon IEI */ switch (def->def[tag].type) { case TLV_TYPE_T: |