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