Protocols/OSCAR/TLV: Difference between revisions
No edit summary |
No edit summary |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{Protocols/OSCAR}} | {{Protocols/OSCAR}} | ||
TLVs notes from another | |||
<!-- | |||
TLVs are a very convenient and efficient method of putting data into an organized format, esp variable length strings, etc. TLV litterally stands for "Type, Length, Value". And that's exactly what it is: a 16bit Type code, a 16bit value for the length of the Value field, and then the actual data in the Value field (variable length). | |||
TLVs can be be in SNACs, but thats not required. TLVs often are used directly in the FLAP Data Field, but normally are inside of SNACs. No more than one TLV of each Type code may exist in a single FLAP command (SNAC or not). TLVs must follow the strict tuple-rule, or they're really not TLVs, they're raw data. | |||
TLVs are a big win. They make sending a variable length string like, eg, "afritz@iname" as simple as defining a TLV with values {0x0011, 0x000c, "afritz@iname.com"}. (The type 0x0011 is used throughout the authorization process as the "email address type".) A side note about strings: strings in this protocol are never NULL-terminated. If they look like they are, that's probably a word-length value behind it. | |||
--> | |||
TLVs are a very common structure used in the OSCAR protocol to represent dynamically typed data. Parsers should always ignore unknown tags as to not break old clients when new protocol items are added. Possible values for tags are determined by where the TLV is in the protocol; these possible values belong to a TLV class. In the wild, the term type is sometimes used interchangeably with tag, however this document uses tag to reference the integer value associated with the TLV and type as the datatype associated with that tag. | TLVs are a very common structure used in the OSCAR protocol to represent dynamically typed data. Parsers should always ignore unknown tags as to not break old clients when new protocol items are added. Possible values for tags are determined by where the TLV is in the protocol; these possible values belong to a TLV class. In the wild, the term type is sometimes used interchangeably with tag, however this document uses tag to reference the integer value associated with the TLV and type as the datatype associated with that tag. | ||
Line 5: | Line 13: | ||
{| class="wikitable" | {| class="wikitable" | ||
! Name | ! Name | ||
! | ! Size | ||
! Notes | ! Notes | ||
|- | |- | ||
| | | Type | ||
| width=" | | width="95" | uint16 (word) | ||
| Numeric tag of the data, possible values are defined in the TLV class for the group of TLVs | | Numeric type or "tag" of the data, possible values are defined in the TLV class for the group of TLVs | ||
|- | |- | ||
| | | Length | ||
| uint16 (word) | | uint16 (word) | ||
| Length in bytes of the variable data | | Length in bytes of the variable data | ||
|- | |- | ||
| | | Value | ||
| blob | | blob | ||
| The data inside the TLV of len length; usually another datatype is used to represent the data - this is described in the TLV class | | The data inside the TLV of len length; usually another datatype is used to represent the data - this is described in the TLV class | ||
Line 38: | Line 46: | ||
| Two byte length of elements, followed by that many bytes of elements | | Two byte length of elements, followed by that many bytes of elements | ||
|} | |} | ||
== Common TLVs == | |||
=== From Aleksandr Shutko: Common tlv set. === | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#4040FF > | |||
<table width=100% cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td><b><font color="white">Common tlv set.</font></b></td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
<br> | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E9E9E9 > | |||
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td colspan=3 height=4> </td></tr> | |||
<tr> | |||
<td width=7> </td> | |||
<td valign=top> | |||
<br>Here is a common set of widely used tlvs:<br><br> | |||
<!-- TLV 0x01 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 01</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x01) - screen name (uin)</td> | |||
</tr> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>screen name (uin)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x02 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 02</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x02) - new password</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>array</td> | |||
<td width=5> </td> | |||
<td width=60%>new password string</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x03 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 03</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x03) - client identity string</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>client identity string (name, version)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x04 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 04</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x04) - error description url</td> | |||
</tr> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>error description url string</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x05 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 05</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x05) - reconnect here</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>server address & port string</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x06 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 06</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x06) - authorization cookie</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>array</td> | |||
<td width=5> </td> | |||
<td width=60%>authorization cookie</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x07 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 07</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x07) - snac version</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> </td> | |||
<td width=5> </td> | |||
<td width=17%> </td> | |||
<td width=5> </td> | |||
<td width=60%>?</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x08 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 08</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x08) - error subcode</td> | |||
</tr> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>error subcode (family specific)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x09 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 09</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x09) - disconnect reason</td> | |||
</tr> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>disconnect reason (see table below)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x0A --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 0A</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x0A) - reconnect hostname</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> </td> | |||
<td width=5> </td> | |||
<td width=17%> </td> | |||
<td width=5> </td> | |||
<td width=60%>?</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x0B --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 0B</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x0B) - url</td> | |||
</tr> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>url</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x0C --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 0C</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x0C) - debug data</td> | |||
</tr> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>debug data</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x0D --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 0D</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x0D) - service (family) id</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>service (family) id</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x0E --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 0E</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x0E) - client country (2 symbols)</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>client country</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x0F --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 0F</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x0F) - client language (2 symbols)</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>client language</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x10 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 10</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x10) - script</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> </td> | |||
<td width=5> </td> | |||
<td width=17%> </td> | |||
<td width=5> </td> | |||
<td width=60%>?</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x11 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 11</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x11) - user email</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>user email string</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x12 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 12</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x12) - old password</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>old password string</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x13 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 13</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x13) - registration status</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>registration status <span>(1 - no disclosure, | |||
2 - limit disclosure, 3 - full disclosure (?))</span></td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x14 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 14</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x14) - distribution number</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>distribution number</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x15 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 15</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x15) - personal text</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9> | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> </td> | |||
<td width=5> </td> | |||
<td width=17%> </td> | |||
<td width=5> </td> | |||
<td width=60%>?</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x16 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 16</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x16) - client id</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>client id number</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x17 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 17</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x17) - client major version</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>client major version</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x18 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 18</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x18) - client minor version</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>client minor version</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x19 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 19</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x19) - client lesser version</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>client lesser version</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x1A --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 1A</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x1A) - client build number</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>client build number</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x25 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 25</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x25) - password hash (MD5)</td> | |||
</tr> | |||
<tr> | |||
<td> 00 10</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> | |||
xx xx xx xx<br> | |||
xx xx xx xx<br> | |||
xx xx xx xx<br> | |||
xx xx xx xx<br> | |||
</td> | |||
<td width=5> </td> | |||
<td width=17%>array</td> | |||
<td width=5> </td> | |||
<td width=60%>password hash (MD5)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x40 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 40</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x40) - latest beta build number</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>latest beta build number</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x41 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 41</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x41) - latest beta install url</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>latest beta install url</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x42 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 42</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x42) - latest beta info url</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>latest beta info url</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x43 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 43</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x43) - latest beta version</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>latest beta version</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x44 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 44</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x44) - latest release build number</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td width=17%>dword</td> | |||
<td width=5> </td> | |||
<td width=60%>latest release build number</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x45 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 45</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x45) - latest release install url</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>latest release install url</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x46 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 46</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x46) - latest release info url</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>latest release info url</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x47 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 47</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x47) - latest release version</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ..</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>latest release version</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td></tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x48 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 48</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x48) - beta digest signature (MD5)</td> | |||
</tr> | |||
<tr> | |||
<td> 00 20</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ...</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>hexadecimal string for beta digest signature (MD5)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x49 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 49</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x49) - release digest signature (MD5)</td> | |||
</tr> | |||
<tr> | |||
<td> 00 20</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ...</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>hexadecimal string for release digest signature (MD5)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- TLV 0x54 --> | |||
<table width=630 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=20> </td> | |||
<td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0> <tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> 00 54</td> | |||
<td width=5> </td> | |||
<td width=17%>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Type(0x54) - change password url</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=60%>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#f9f9f9 > | |||
<table width=600 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=25%> xx ...</td> | |||
<td width=5> </td> | |||
<td width=17%>string</td> | |||
<td width=5> </td> | |||
<td width=60%>change password url</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
<!-- end of TLV --> | |||
</td><td width=7> </td></tr> | |||
<tr><td colspan=3> </td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
=== From Aleksandr Shutko: Basic OSCAR information: TLV === | |||
<table width=640 cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td> | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E9E9E9 > | |||
<table width=100% cellSpacing=0 cellPadding=0 bgcolor="#4040FF" border=0> | |||
<tr> | |||
<td><b><font size=2 color="white"> TLV (Type-Length-Value) tuple description </font></b></td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9 > | |||
<table width=100% cellSpacing=0 cellPadding=0 border=0> | |||
<tr><td width=5> </td> | |||
<td><br> | |||
| |||
TLVs are a very convenient and efficient method of putting data into an organized | |||
format, especially variable length strings, etc. TLV literally stands for "Type, | |||
Length, Value". And that's exactly what it is: a 16bit Type code, a 16bit value | |||
for the length of the Value field, and then the actual data in the Value field | |||
(variable length). Here is TLV format:<br><br> | |||
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td width=20></td> | |||
<td> | |||
<table width=250 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#fafafa > | |||
<table width=250 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20%> xx xx</td> | |||
<td width=5> </td> | |||
<td width=20%>word</td> | |||
<td width=5> </td> | |||
<td width=65%>TLV type number</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV length value</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#fafafa > | |||
<table width=250 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=3></td></tr> | |||
<tr><td width=50> </td> | |||
<td> | |||
<table width=200 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#fafafa > | |||
<table width=200 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td height=30 align=center valign=middle> ......</td> | |||
<td valign=middle width=69%>TLV data</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5> </td> | |||
</tr> | |||
<tr><td height=5 colspan=3> </td></tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr> | |||
</table> | |||
<br> | |||
| |||
TLVs can be be in SNACs, but that's not required. TLVs often are used directly | |||
in the FLAP Data Field, but normally are inside of SNACs. More than one | |||
TLV of each Type code may exist in a single FLAP command (SNAC or not). TLVs | |||
must follow the strict tuple-rule, or they're really not TLVs, they're raw | |||
data. One tlv may contain nested tlv chain inside.<br><br> | |||
| |||
TLVs are a big win. They make sending a variable length string like, e.g., | |||
"afritz@iname" as simple as defining a TLV with values {0x0011, 0x000c, | |||
"afritz@iname.com"}. (The type 0x0011 is used throughout the authorization | |||
process as the "email address type".) A side note about strings: strings in | |||
this protocol are never NULL-terminated. If they look like they are, that's | |||
probably a word-length value behind it. <br><br> | |||
</td> | |||
<td width=5></td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
[[Category:With_Contrib]] | |||
[[Category:OSCAR]] | [[Category:OSCAR]] |
Latest revision as of 10:34, 14 February 2021
OSCAR Protocol |
Introduction • Terms • Clients |
Basic |
Datatypes • FLAP • SNAC • TLV |
UUIDs • Errors • Tool IDs |
Host Interaction |
Rate Limits • Migration • Messages |
Other Services |
ADMIN • ADVERT • ALERT |
BART • BOS • BUCP • CHAT |
CHAT_NAV |
Tutorials |
Sign On • BART • Rendezvous |
ICBM • Locate • Buddies |
Foodgroups |
OSERVICE (0x0001) |
LOCATE (0x0002) |
BUDDY (0x0003) |
ICBM (0x0004) |
ADVERT (0x0005) |
INVITE (0x0006) |
ADMIN (0x0007) |
POPUP (0x0008) |
PD (0x0009) |
USER_LOOKUP (0x000A) |
STATS (0x000B) |
TRANSLATE (0x000C) |
CHAT_NAV (0x000D) |
CHAT (0x000E) |
ODIR (0x000F) |
BART (0x0010) |
FEEDBAG (0x0013) |
ICQ (0x0015) |
BUCP (0x0017) |
ALERT (0x0018) |
PLUGIN (0x0022) |
UNNAMED_FG_24 (0x0024) |
MDIR (0x0025) |
ARS (0x044A) |
TLVs notes from another
TLVs are a very common structure used in the OSCAR protocol to represent dynamically typed data. Parsers should always ignore unknown tags as to not break old clients when new protocol items are added. Possible values for tags are determined by where the TLV is in the protocol; these possible values belong to a TLV class. In the wild, the term type is sometimes used interchangeably with tag, however this document uses tag to reference the integer value associated with the TLV and type as the datatype associated with that tag.
Name | Size | Notes |
---|---|---|
Type | uint16 (word) | Numeric type or "tag" of the data, possible values are defined in the TLV class for the group of TLVs |
Length | uint16 (word) | Length in bytes of the variable data |
Value | blob | The data inside the TLV of len length; usually another datatype is used to represent the data - this is described in the TLV class |
TLVs are usually used in an array of TLV form, allowing the protocol to easily be expanded. Having just one TLV without an array does not gain much since it only allows one item to be described. There are two common methods for adding an array of TLVs to datatypes and SNACs. An additional method also exists to add an array of TLVs to SNACs.
The most common is a tlvBlock which is a u16 number of TLVs followed by that many TLVs. The less common is a tlvLBlock which instead of counting the number of TLVs, counts the size of all the TLVs. The third, which is only available in SNACs, is the tlvRestBlock which says any remaining bytes in the SNAC are TLVs.
Name | Size | Notes |
---|---|---|
tlvBlock | uint16 (word) + data | Two byte number of elements, followed by that many elements |
tlvLBlock | uint16 (word) + data | Two byte length of elements, followed by that many bytes of elements |
Common TLVs
From Aleksandr Shutko: Common tlv set.
|
|
From Aleksandr Shutko: Basic OSCAR information: TLV
|