Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
packet-edonkey.h
1/* packet-edonkey.h
2 * Declarations for edonkey dissection
3 * Copyright 2003, Xuan Zhang <[email protected]>
4 * Copyright 2007, Stefano Picerno <[email protected]>
5 * Copyright 2008, Stefan Monhof <[email protected]>
6 *
7 * eDonkey dissector based on protocol descriptions from mldonkey:
8 * http://savannah.nongnu.org/download/mldonkey/docs/Edonkey-Overnet/edonkey-protocol.txt
9 * http://savannah.nongnu.org/download/mldonkey/docs/Edonkey-Overnet/overnet-protocol.txt
10 *
11 * Kademlia dissector based on source code inspection of aMule 2.1.3 and eMule 0.48a
12 * Modified and added on the basis of information and names from the eMule 0.49a source code
13 *
14 * Wireshark - Network traffic analyzer
15 * By Gerald Combs <[email protected]>
16 * Copyright 1998 Gerald Combs
17 *
18 * SPDX-License-Identifier: GPL-2.0-or-later
19 */
20
21#define EDONKEY_MAX_SNAP_SIZE 1500
22#define EDONKEY_TCP_HEADER_LENGTH 5
23#define EDONKEY_UDP_HEADER_LENGTH 2
24
25/* Definitions for EDONKEY protocols */
26#define EDONKEY_PROTO_EDONKEY 0xe3 /* eDonkey */
27#define EDONKEY_PROTO_EMULE_EXT 0xc5 /* eMule extensions */
28#define EDONKEY_PROTO_EMULE_COMP 0xd4 /* eMule compressed (data is zlib compressed) */
29
30/* Definitions for EDONKEY messages */
31/* EDONKEY TCP MESSAGES */
32/* Client <-> Server */
33#define EDONKEY_MSG_HELLO 0x01
34#define EDONKEY_MSG_BAD_PROTO 0x05
35#define EDONKEY_MSG_GET_SERVER_LIST 0x14
36#define EDONKEY_MSG_OFFER_FILES 0x15
37#define EDONKEY_MSG_SEARCH_FILES 0x16
38#define EDONKEY_MSG_DISCONNECT 0x18
39#define EDONKEY_MSG_GET_SOURCES 0x19
40#define EDONKEY_MSG_SEARCH_USER 0x1a
41/* define EDONKEY_MSG_UNKNOWN 0x1b */
42#define EDONKEY_MSG_CLIENT_CB_REQ 0x1c
43/* define EDONKEY_MSG_UNKNOWN 0x20 */
44#define EDONKEY_MSG_MORE_RESULTS 0x21
45#define EDONKEY_MSG_GET_SOURCES_OBFU 0x23
46#define EDONKEY_MSG_SERVER_LIST 0x32
47#define EDONKEY_MSG_SEARCH_FILE_RESULTS 0x33
48#define EDONKEY_MSG_SERVER_STATUS 0x34
49#define EDONKEY_MSG_SERVER_CB_REQ 0x35
50#define EDONKEY_MSG_CALLBACK_FAIL 0x36
51#define EDONKEY_MSG_SERVER_MESSAGE 0x38
52#define EDONKEY_MSG_ID_CHANGE 0x40
53#define EDONKEY_MSG_SERVER_INFO_DATA 0x41
54#define EDONKEY_MSG_FOUND_SOURCES 0x42
55#define EDONKEY_MSG_SEARCH_USER_RESULTS 0x43
56#define EDONKEY_MSG_FOUND_SOURCES_OBFU 0x44
57
58/* Client <-> Client */
59#define EDONKEY_MSG_HELLO_CLIENT 0x10 /* 0x01 0x10 */
60#define EDONKEY_MSG_SENDING_PART 0x46
61#define EDONKEY_MSG_REQUEST_PARTS 0x47
62#define EDONKEY_MSG_NO_SUCH_FILE 0x48
63#define EDONKEY_MSG_END_OF_DOWNLOAD 0x49
64#define EDONKEY_MSG_VIEW_FILES 0x4a
65#define EDONKEY_MSG_VIEW_FILES_ANSWER 0x4b
66#define EDONKEY_MSG_HELLO_ANSWER 0x4c
67#define EDONKEY_MSG_NEW_CLIENT_ID 0x4d
68#define EDONKEY_MSG_CLIENT_MESSAGE 0x4e
69#define EDONKEY_MSG_FILE_STATUS_REQUEST 0x4f
70#define EDONKEY_MSG_FILE_STATUS 0x50
71#define EDONKEY_MSG_HASHSET_REQUEST 0x51
72#define EDONKEY_MSG_HASHSET_ANSWER 0x52
73/*#define EDONKEY_MSG_UNKNOWN 0x53 */
74#define EDONKEY_MSG_SLOT_REQUEST 0x54
75#define EDONKEY_MSG_SLOT_GIVEN 0x55
76#define EDONKEY_MSG_SLOT_RELEASE 0x56
77#define EDONKEY_MSG_SLOT_TAKEN 0x57
78#define EDONKEY_MSG_FILE_REQUEST 0x58
79#define EDONKEY_MSG_FILE_REQUEST_ANSWER 0x59
80/*#define EDONKEY_MSG_UNKNOWN 0x5b*/
81#define EDONKEY_MSG_GET_SHARED_DIRS 0x5d
82#define EDONKEY_MSG_GET_SHARED_FILES 0x5e
83#define EDONKEY_MSG_SHARED_DIRS 0x5f
84#define EDONKEY_MSG_SHARED_FILES 0x60
85#define EDONKEY_MSG_SHARED_DENIED 0x61
86
87/* OVERNET EXTENSIONS */
88/*#define OVERNET_MSG_UNKNOWN 0x62*/
89/*#define OVERNET_MSG_UNKNOWN 0x63*/
90
91/* EMULE EXTENSIONS */
92#define EMULE_MSG_HELLO 0x01
93#define EMULE_MSG_HELLO_ANSWER 0x02
94#define EMULE_MSG_DATA_COMPRESSED 0x40
95#define EMULE_MSG_QUEUE_RANKING 0x60
96#define EMULE_MSG_FILE_DESC 0x61
97#define EMULE_MSG_SOURCES_REQUEST 0x81
98#define EMULE_MSG_SOURCES_ANSWER 0x82
99#define EMULE_MSG_PUBLIC_KEY 0x85
100#define EMULE_MSG_SIGNATURE 0x86
101#define EMULE_MSG_SEC_IDENT_STATE 0x87
102#define EMULE_MSG_MULTIPACKET 0x92
103#define EMULE_MSG_MULTIPACKET_ANSWER 0x93
104#define EMULE_MSG_CALLBACK 0x99
105#define EMULE_MSG_AICH_REQUEST 0x9b
106#define EMULE_MSG_AICH_ANSWER 0x9c
107#define EMULE_MSG_AICHFILEHASH_ANSWER 0x9d
108#define EMULE_MSG_AICHFILEHASH_REQUEST 0x9e
109#define EMULE_MSG_DATA_COMPRESSED_64 0xa1
110#define EMULE_MSG_SENDING_PART_64 0xa2
111#define EMULE_MSG_REQUEST_PARTS_64 0xa3
112#define EMULE_MSG_MULTIPACKET_EXT 0xa4
113
114/* EDONKEY UDP MESSAGES */
115#define EDONKEY_MSG_UDP_SERVER_STATUS_REQUEST 0x96
116#define EDONKEY_MSG_UDP_SERVER_STATUS 0x97
117#define EDONKEY_MSG_UDP_SEARCH_FILE 0x98
118#define EDONKEY_MSG_UDP_SEARCH_FILE_RESULTS 0x99
119#define EDONKEY_MSG_UDP_GET_SOURCES 0x9a
120#define EDONKEY_MSG_UDP_FOUND_SOURCES 0x9b
121#define EDONKEY_MSG_UDP_CALLBACK_REQUEST 0x9c
122#define EDONKEY_MSG_UDP_CALLBACK_FAIL 0x9e
123/* #define EDONKEY_MSG_UDP_UNKNOWN 0xa0 */
124#define EDONKEY_MSG_UDP_SERVER_LIST 0xa1
125#define EDONKEY_MSG_UDP_GET_SERVER_INFO 0xa2
126#define EDONKEY_MSG_UDP_SERVER_INFO 0xa3
127#define EDONKEY_MSG_UDP_GET_SERVER_LIST 0xa4
128
129/* EMULE UDP EXTENSIONS */
130#define EMULE_MSG_UDP_REASKFILEPING 0x90
131#define EMULE_MSG_UDP_REASKACK 0x91
132#define EMULE_MSG_UDP_FILE_NOT_FOUND 0x92
133#define EMULE_MSG_UDP_QUEUE_FULL 0x93
134
135/* OVERNET UDP EXTENSIONS */
136#define OVERNET_MSG_UDP_CONNECT 0x0a
137#define OVERNET_MSG_UDP_CONNECT_REPLY 0x0b
138#define OVERNET_MSG_UDP_PUBLICIZE 0x0c
139#define OVERNET_MSG_UDP_PUBLICIZE_ACK 0x0d
140#define OVERNET_MSG_UDP_SEARCH 0x0e
141#define OVERNET_MSG_UDP_SEARCH_NEXT 0x0f
142#define OVERNET_MSG_UDP_SEARCH_INFO 0x10
143#define OVERNET_MSG_UDP_SEARCH_RESULT 0x11
144#define OVERNET_MSG_UDP_SEARCH_END 0x12
145#define OVERNET_MSG_UDP_PUBLISH 0x13
146#define OVERNET_MSG_UDP_PUBLISH_ACK 0x14
147#define OVERNET_MSG_UDP_IDENTIFY_REPLY 0x15
148#define OVERNET_MSG_UDP_IDENTIFY_ACK 0x16
149#define OVERNET_MSG_UDP_FIREWALL_CONNECTION 0x18
150#define OVERNET_MSG_UDP_FIREWALL_CONNECTION_ACK 0x19
151#define OVERNET_MSG_UDP_FIREWALL_CONNECTION_NACK 0x1a
152#define OVERNET_MSG_UDP_IP_QUERY 0x1b
153#define OVERNET_MSG_UDP_IP_QUERY_ANSWER 0x1c
154#define OVERNET_MSG_UDP_IP_QUERY_END 0x1d
155#define OVERNET_MSG_UDP_IDENTIFY 0x1e
156/*#define OVERNET_MSG_UDP_UNKNOWN 0x21 */
157
158/* EDONKEY META TAG TYPES */
159#define EDONKEY_MTAG_UNKNOWN 0x00
160#define EDONKEY_MTAG_HASH 0x01
161#define EDONKEY_MTAG_STRING 0x02
162#define EDONKEY_MTAG_DWORD 0x03
163#define EDONKEY_MTAG_FLOAT 0x04
164#define EDONKEY_MTAG_BOOL 0x05
165#define EDONKEY_MTAG_BOOL_ARRAY 0x06
166#define EDONKEY_MTAG_BLOB 0x07
167#define EDONKEY_MTAG_WORD 0x08
168#define EDONKEY_MTAG_BYTE 0x09
169#define EDONKEY_MTAG_BSOB 0x0a
170#define EDONKEY_MTAG_STR1 0x11
171#define EDONKEY_MTAG_STR16 0x20
172#define EDONKEY_MTAG_SHORTNAME 0x80
173
174/* EDONKEY SPECIAL TAGS */
175#define EDONKEY_STAG_UNKNOWN 0x00
176#define EDONKEY_STAG_NAME 0x01
177#define EDONKEY_STAG_SIZE 0x02
178#define EDONKEY_STAG_TYPE 0x03
179#define EDONKEY_STAG_FORMAT 0x04
180#define EDONKEY_STAG_COLLECTION 0x05
181#define EDONKEY_STAG_PART_PATH 0x06
182#define EDONKEY_STAG_PART_HASH 0x07
183#define EDONKEY_STAG_COPIED 0x08
184#define EDONKEY_STAG_GAP_START 0x09
185#define EDONKEY_STAG_GAP_END 0x0a
186#define EDONKEY_STAG_DESCRIPTION 0x0b
187#define EDONKEY_STAG_PING 0x0c
188#define EDONKEY_STAG_FAIL 0x0d
189#define EDONKEY_STAG_PREFERENCE 0x0e
190#define EDONKEY_STAG_PORT 0x0f
191#define EDONKEY_STAG_IP 0x10
192#define EDONKEY_STAG_VERSION 0x11
193#define EDONKEY_STAG_TEMPFILE 0x12
194#define EDONKEY_STAG_PRIORITY 0x13
195#define EDONKEY_STAG_STATUS 0x14
196#define EDONKEY_STAG_AVAILABILITY 0x15
197#define EDONKEY_STAG_QTIME 0x16
198#define EDONKEY_STAG_PARTS 0x17
199#define EDONKEY_STAG_MOD_VERSION 0x55
200
201/* EMULE SPECIAL TAGS */
202#define EMULE_STAG_COMPRESSION 0x20
203#define EMULE_STAG_UDP_CLIENT_PORT 0x21
204#define EMULE_STAG_UDP_VERSION 0x22
205#define EMULE_STAG_SOURCE_EXCHANGE 0x23
206#define EMULE_STAG_COMMENTS 0x24
207#define EMULE_STAG_EXTENDED_REQUEST 0x25
208#define EMULE_STAG_COMPATIBLE_CLIENT 0x26
209#define EMULE_STAG_COMPLETE_SOURCES 0x30
210#define EMULE_STAG_SIZE_HI 0x3a
211#define EMULE_STAG_SERVER_VERSION 0x91
212#define EMULE_STAG_COMPAT_OPTIONS1 0xef
213#define EMULE_STAG_UDPPORTS 0xf9
214#define EMULE_STAG_MISCOPTIONS1 0xfa
215#define EMULE_STAG_VERSION 0xfb
216#define EMULE_STAG_BUDDYIP 0xfc
217#define EMULE_STAG_BUDDYUDP 0xfd
218#define EMULE_STAG_MISCOPTIONS2 0xfe
219
220/* EDONKEY SEARCH TYPES */
221#define EDONKEY_SEARCH_BOOL 0x00
222#define EDONKEY_SEARCH_NAME 0x01
223#define EDONKEY_SEARCH_META 0x02
224#define EDONKEY_SEARCH_LIMIT 0x03
225
226/* EDONKEY SEARCH OPERATORS */
227#define EDONKEY_SEARCH_AND 0x00
228#define EDONKEY_SEARCH_OR 0x01
229#define EDONKEY_SEARCH_ANDNOT 0x02
230
231/* EDONKEY SEARCH MIN/MAX */
232#define EDONKEY_SEARCH_MIN 0x01
233#define EDONKEY_SEARCH_MAX 0x02
234
235/* KADEMLIA TAGS */
236#define KADEMLIA_TAGTYPE_HASH 0x01
237#define KADEMLIA_TAGTYPE_STRING 0x02
238#define KADEMLIA_TAGTYPE_UINT32 0x03
239#define KADEMLIA_TAGTYPE_FLOAT32 0x04
240#define KADEMLIA_TAGTYPE_BOOL 0x05
241#define KADEMLIA_TAGTYPE_BOOLARRAY 0x06
242#define KADEMLIA_TAGTYPE_BLOB 0x07
243#define KADEMLIA_TAGTYPE_UINT16 0x08
244#define KADEMLIA_TAGTYPE_UINT8 0x09
245#define KADEMLIA_TAGTYPE_BSOB 0x0A
246#define KADEMLIA_TAGTYPE_UINT64 0x0B
247
248#define KADEMLIA_TAGTYPE_STR1 0x11
249#define KADEMLIA_TAGTYPE_STR2 0x12
250#define KADEMLIA_TAGTYPE_STR3 0x13
251#define KADEMLIA_TAGTYPE_STR4 0x14
252#define KADEMLIA_TAGTYPE_STR5 0x15
253#define KADEMLIA_TAGTYPE_STR6 0x16
254#define KADEMLIA_TAGTYPE_STR7 0x17
255#define KADEMLIA_TAGTYPE_STR8 0x18
256#define KADEMLIA_TAGTYPE_STR9 0x19
257#define KADEMLIA_TAGTYPE_STR10 0x1A
258#define KADEMLIA_TAGTYPE_STR11 0x1B
259#define KADEMLIA_TAGTYPE_STR12 0x1C
260#define KADEMLIA_TAGTYPE_STR13 0x1D
261#define KADEMLIA_TAGTYPE_STR14 0x1E
262#define KADEMLIA_TAGTYPE_STR15 0x1F
263#define KADEMLIA_TAGTYPE_STR16 0x20
264#define KADEMLIA_TAGTYPE_STR17 0x21
265#define KADEMLIA_TAGTYPE_STR18 0x22
266#define KADEMLIA_TAGTYPE_STR19 0x23
267#define KADEMLIA_TAGTYPE_STR20 0x24
268#define KADEMLIA_TAGTYPE_STR21 0x25
269#define KADEMLIA_TAGTYPE_STR22 0x26
270
271#define KADEMLIA_TAG_MEDIA_ARTIST 0xD0 /* <string> */
272#define KADEMLIA_TAG_MEDIA_ALBUM 0xD1 /* <string> */
273#define KADEMLIA_TAG_MEDIA_TITLE 0xD2 /* <string> */
274#define KADEMLIA_TAG_MEDIA_LENGTH 0xD3 /* <uint32> !!! */
275#define KADEMLIA_TAG_MEDIA_BITRATE 0xD4 /* <uint32> */
276#define KADEMLIA_TAG_MEDIA_CODEC 0xD5 /* <string> */
277#define KADEMLIA_TAG_USER_COUNT 0xF4 /* <uint32> */
278#define KADEMLIA_TAG_FILE_COUNT 0xF5 /* <uint32> */
279#define KADEMLIA_TAG_FILECOMMENT 0xF6 /* <string> */
280#define KADEMLIA_TAG_FILERATING 0xF7 /* <uint8> */
281#define KADEMLIA_TAG_BUDDYHASH 0xF8 /* <string> */
282#define KADEMLIA_TAG_CLIENTLOWID 0xF9 /* <uint32> */
283#define KADEMLIA_TAG_SERVERPORT 0xFA /* <uint16> */
284#define KADEMLIA_TAG_SERVERIP 0xFB /* <uint32> */
285#define KADEMLIA_TAG_SOURCEUPORT 0xFC /* <uint16> */
286#define KADEMLIA_TAG_SOURCEPORT 0xFD /* <uint16> */
287#define KADEMLIA_TAG_SOURCEIP 0xFE /* <uint32> */
288#define KADEMLIA_TAG_SOURCETYPE 0xFF /* <uint8> */
289
290#define EDONKEY_PROTO_ADU_KADEMLIA 0xA4
291#define EDONKEY_PROTO_ADU_KADEMLIA_COMP 0xA5
292
293#define EDONKEY_PROTO_KADEMLIA 0xE4
294#define EDONKEY_PROTO_KADEMLIA_COMP 0xE5
295
296/* KADEMLIA (opcodes) (udp) */
297#define KADEMLIA_BOOTSTRAP_REQ 0x00 /* <PEER (sender) [25]> */
298#define KADEMLIA2_BOOTSTRAP_REQ 0x01 /* */
299
300#define KADEMLIA_BOOTSTRAP_RES 0x08 /* <CNT [2]> <PEER [25]>*(CNT) */
301#define KADEMLIA2_BOOTSTRAP_RES 0x09 /* */
302
303#define KADEMLIA_HELLO_REQ 0x10 /* <PEER (sender) [25]> */
304#define KADEMLIA2_HELLO_REQ 0x11 /* */
305
306#define KADEMLIA_HELLO_RES 0x18 /* <PEER (receiver) [25]> */
307#define KADEMLIA2_HELLO_RES 0x19 /* */
308
309#define KADEMLIA_REQ 0x20 /* <TYPE [1]> <HASH (target) [16]> <HASH (receiver) 16> */
310#define KADEMLIA2_REQ 0x21 /* */
311
312#define KADEMLIA_RES 0x28 /* <HASH (target) [16]> <CNT> <PEER [25]>*(CNT) */
313#define KADEMLIA2_RES 0x29 /* */
314
315#define KADEMLIA_SEARCH_REQ 0x30 /* <HASH (key) [16]> <ext 0/1 [1]> <SEARCH_TREE>[ext] */
316/*#define UNUSED 0x31 Old Opcode, don't use. */
317#define KADEMLIA_SEARCH_NOTES_REQ 0x32 /* <HASH (key) [16]> */
318#define KADEMLIA2_SEARCH_KEY_REQ 0x33 /* */
319#define KADEMLIA2_SEARCH_SOURCE_REQ 0x34 /* */
320#define KADEMLIA2_SEARCH_NOTES_REQ 0x35 /* */
321
322#define KADEMLIA_SEARCH_RES 0x38 /* <HASH (key) [16]> <CNT1 [2]> (<HASH (answer) [16]> <CNT2 [2]> <META>*(CNT2))*(CNT1) */
323/*#define UNUSED 0x39 Old Opcode, don't use. */
324#define KADEMLIA_SEARCH_NOTES_RES 0x3A /* <HASH (key) [16]> <CNT1 [2]> (<HASH (answer) [16]> <CNT2 [2]> <META>*(CNT2))*(CNT1) */
325#define KADEMLIA2_SEARCH_RES 0x3B /* */
326
327#define KADEMLIA_PUBLISH_REQ 0x40 /* <HASH (key) [16]> <CNT1 [2]> (<HASH (target) [16]> <CNT2 [2]> <META>*(CNT2))*(CNT1) */
328/*#define UNUSED 0x41 Old Opcode, don't use. */
329#define KADEMLIA_PUBLISH_NOTES_REQ 0x42 /* <HASH (key) [16]> <HASH (target) [16]> <CNT2 [2]> <META>*(CNT2))*(CNT1) */
330#define KADEMLIA2_PUBLISH_KEY_REQ 0x43 /* */
331#define KADEMLIA2_PUBLISH_SOURCE_REQ 0x44 /* */
332#define KADEMLIA2_PUBLISH_NOTES_REQ 0x45 /* */
333
334#define KADEMLIA_PUBLISH_RES 0x48 /* <HASH (key) [16]> */
335/*#define UNUSED 0x49 Old Opcode, don't use. */
336#define KADEMLIA_PUBLISH_NOTES_RES 0x4A /* <HASH (key) [16]> */
337#define KADEMLIA2_PUBLISH_RES 0x4B /* */
338
339#define KADEMLIA_FIREWALLED_REQ 0x50 /* <TCPPORT (sender) [2]> */
340#define KADEMLIA_FINDBUDDY_REQ 0x51 /* <TCPPORT (sender) [2]> */
341#define KADEMLIA_CALLBACK_REQ 0x52 /* <TCPPORT (sender) [2]> */
342
343#define KADEMLIA_FIREWALLED_RES 0x58 /* <IP (sender) [4]> */
344#define KADEMLIA_FIREWALLED_ACK_RES 0x59 /* (null) */
345#define KADEMLIA_FINDBUDDY_RES 0x5A /* <TCPPORT (sender) [2]> */
346
347/* KADEMLIA (parameter) */
348#define KADEMLIA_FIND_VALUE 0x02
349#define KADEMLIA_STORE 0x04
350#define KADEMLIA_FIND_NODE 0x0B
351
352/* Kad search + some unused tags to mirror the ed2k ones. */
353#define KADEMLIA_TAG_FILENAME 0x01 /* <string> */
354#define KADEMLIA_TAG_FILESIZE 0x02 /* <uint32> */
355#define KADEMLIA_TAG_FILESIZE_HI 0x3A /* <uint32> */
356#define KADEMLIA_TAG_FILETYPE 0x03 /* <string> */
357#define KADEMLIA_TAG_FILEFORMAT 0x04 /* <string> */
358#define KADEMLIA_TAG_COLLECTION 0x05
359#define KADEMLIA_TAG_PART_PATH 0x06 /* <string> */
360#define KADEMLIA_TAG_PART_HASH 0x07
361#define KADEMLIA_TAG_COPIED 0x08 /* <uint32> */
362#define KADEMLIA_TAG_GAP_START 0x09 /* <uint32> */
363#define KADEMLIA_TAG_GAP_END 0x0A /* <uint32> */
364#define KADEMLIA_TAG_DESCRIPTION 0x0B /* <string> */
365#define KADEMLIA_TAG_PING 0x0C
366#define KADEMLIA_TAG_FAIL 0x0D
367#define KADEMLIA_TAG_PREFERENCE 0x0E
368#define KADEMLIA_TAG_PORT 0x0F
369#define KADEMLIA_TAG_IP_ADDRESS 0x10
370#define KADEMLIA_TAG_VERSION 0x11 /* <string> */
371#define KADEMLIA_TAG_TEMPFILE 0x12 /* <string> */
372#define KADEMLIA_TAG_PRIORITY 0x13 /* <uint32> */
373#define KADEMLIA_TAG_STATUS 0x14 /* <uint32> */
374#define KADEMLIA_TAG_SOURCES 0x15 /* <uint32> */
375#define KADEMLIA_TAG_PERMISSIONS 0x16
376#define KADEMLIA_TAG_QTIME 0x16
377#define KADEMLIA_TAG_PARTS 0x17
378#define KADEMLIA_TAG_MEDIA_ARTIST 0xD0 /* <string> */
379#define KADEMLIA_TAG_MEDIA_ALBUM 0xD1 /* <string> */
380#define KADEMLIA_TAG_MEDIA_TITLE 0xD2 /* <string> */
381#define KADEMLIA_TAG_MEDIA_LENGTH 0xD3 /* <uint32> !!! */
382#define KADEMLIA_TAG_MEDIA_BITRATE 0xD4 /* <uint32> */
383#define KADEMLIA_TAG_MEDIA_CODEC 0xD5 /* <string> */
384#define KADEMLIA_TAG_ENCRYPTION 0xF3 /* <uint8> */
385#define KADEMLIA_TAG_FILERATING 0xF7 /* <uint8> */
386#define KADEMLIA_TAG_BUDDYHASH 0xF8 /* <string> */
387#define KADEMLIA_TAG_CLIENTLOWID 0xF9 /* <uint32> */
388#define KADEMLIA_TAG_SERVERPORT 0xFA /* <uint16> */
389#define KADEMLIA_TAG_SERVERIP 0xFB /* <uint32> */
390#define KADEMLIA_TAG_SOURCEUPORT 0xFC /* <uint16> */
391#define KADEMLIA_TAG_SOURCEPORT 0xFD /* <uint16> */
392#define KADEMLIA_TAG_SOURCEIP 0xFE /* <uint32> */
393#define KADEMLIA_TAG_SOURCETYPE 0xFF /* <uint8> */
394
395/* KADEMLIA (version) */
396#define KADEMLIA_VERSION1_46c 0x01 /*45b - 46c*/
397#define KADEMLIA_VERSION2_47a 0x02 /*47a*/
398#define KADEMLIA_VERSION3_47b 0x03 /*47b*/
399#define KADEMLIA_VERSION5_48a 0x05 /* -0.48a */
400#define KADEMLIA_VERSION6_49aBETA 0x06 /* -0.49aBETA1 */
401#define KADEMLIA_VERSION7_49a 0x07 /* -0.49a */