2 * Declarations for edonkey dissection
3 * Copyright 2003, Xuan Zhang <xz@aemail4u.com>
4 * eDonkey dissector based on protocol descriptions from mldonkey:
5 * http://savannah.nongnu.org/download/mldonkey/docs/Edonkey-Overnet/edonkey-protocol.txt
6 * http://savannah.nongnu.org/download/mldonkey/docs/Edonkey-Overnet/overnet-protocol.txt
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * This program is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU General Public License
16 * as published by the Free Software Foundation; either version 2
17 * of the License, or (at your option) any later version.
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, write to the Free Software
26 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
29 void proto_register_edonkey(void);
31 #define EDONKEY_MAX_SNAP_SIZE 1500
32 #define EDONKEY_TCP_HEADER_LENGTH 5
33 #define EDONKEY_UDP_HEADER_LENGTH 2
35 /* Definitions for EDONKEY protocols */
36 #define EDONKEY_PROTO_EDONKEY 0xe3 /* eDonkey */
37 #define EDONKEY_PROTO_EMULE_EXT 0xc5 /* eMule extensions */
38 #define EDONKEY_PROTO_EMULE_COMP 0xd4 /* eMule compressed (data is zlib compressed) */
40 /* Definitions for EDONKEY messages */
41 /* EDONKEY TCP MESSAGES */
42 /* Client <-> Server */
43 #define EDONKEY_MSG_HELLO 0x01
44 #define EDONKEY_MSG_BAD_PROTO 0x05
45 #define EDONKEY_MSG_GET_SERVER_LIST 0x14
46 #define EDONKEY_MSG_OFFER_FILES 0x15
47 #define EDONKEY_MSG_SEARCH_FILES 0x16
48 #define EDONKEY_MSG_DISCONNECT 0x18
49 #define EDONKEY_MSG_GET_SOURCES 0x19
50 #define EDONKEY_MSG_SEARCH_USER 0x1a
51 /* define EDONKEY_MSG_UNKNOWN 0x1b */
52 #define EDONKEY_MSG_CLIENT_CB_REQ 0x1c
53 /* define EDONKEY_MSG_UNKNOWN 0x20 */
54 #define EDONKEY_MSG_MORE_RESULTS 0x21
55 #define EDONKEY_MSG_SERVER_LIST 0x32
56 #define EDONKEY_MSG_SEARCH_FILE_RESULTS 0x33
57 #define EDONKEY_MSG_SERVER_STATUS 0x34
58 #define EDONKEY_MSG_SERVER_CB_REQ 0x35
59 #define EDONKEY_MSG_CALLBACK_FAIL 0x36
60 #define EDONKEY_MSG_SERVER_MESSAGE 0x38
61 #define EDONKEY_MSG_ID_CHANGE 0x40
62 #define EDONKEY_MSG_SERVER_INFO_DATA 0x41
63 #define EDONKEY_MSG_FOUND_SOURCES 0x42
64 #define EDONKEY_MSG_SEARCH_USER_RESULTS 0x43
66 /* Client <-> Client */
67 #define EDONKEY_MSG_HELLO_CLIENT 0x10 /* 0x01 0x10 */
68 #define EDONKEY_MSG_SENDING_PART 0x46
69 #define EDONKEY_MSG_REQUEST_PARTS 0x47
70 #define EDONKEY_MSG_NO_SUCH_FILE 0x48
71 #define EDONKEY_MSG_END_OF_DOWNLOAD 0x49
72 #define EDONKEY_MSG_VIEW_FILES 0x4a
73 #define EDONKEY_MSG_VIEW_FILES_ANSWER 0x4b
74 #define EDONKEY_MSG_HELLO_ANSWER 0x4c
75 #define EDONKEY_MSG_NEW_CLIENT_ID 0x4d
76 #define EDONKEY_MSG_CLIENT_MESSAGE 0x4e
77 #define EDONKEY_MSG_FILE_STATUS_REQUEST 0x4f
78 #define EDONKEY_MSG_FILE_STATUS 0x50
79 #define EDONKEY_MSG_HASHSET_REQUEST 0x51
80 #define EDONKEY_MSG_HASHSET_ANSWER 0x52
81 /*#define EDONKEY_MSG_UNKNOWN 0x53 */
82 #define EDONKEY_MSG_SLOT_REQUEST 0x54
83 #define EDONKEY_MSG_SLOT_GIVEN 0x55
84 #define EDONKEY_MSG_SLOT_RELEASE 0x56
85 #define EDONKEY_MSG_SLOT_TAKEN 0x57
86 #define EDONKEY_MSG_FILE_REQUEST 0x58
87 #define EDONKEY_MSG_FILE_REQUEST_ANSWER 0x59
88 /*#define EDONKEY_MSG_UNKNOWN 0x5b*/
89 #define EDONKEY_MSG_GET_SHARED_DIRS 0x5d
90 #define EDONKEY_MSG_GET_SHARED_FILES 0x5e
91 #define EDONKEY_MSG_SHARED_DIRS 0x5f
92 #define EDONKEY_MSG_SHARED_FILES 0x60
93 #define EDONKEY_MSG_SHARED_DENIED 0x61
95 /* OVERNET EXTENSIONS */
96 /*#define OVERNET_MSG_UNKNOWN 0x62*/
97 /*#define OVERNET_MSG_UNKNOWN 0x63*/
99 /* EMULE EXTENSIONS */
100 #define EMULE_MSG_HELLO 0x01
101 #define EMULE_MSG_HELLO_ANSWER 0x02
102 #define EMULE_MSG_DATA_COMPRESSED 0x40
103 #define EMULE_MSG_QUEUE_RANKING 0x60
104 #define EMULE_MSG_SOURCES_REQUEST 0x81
105 #define EMULE_MSG_SOURCES_ANSWER 0x82
106 #define EMULE_MSG_MULTIPACKET 0x92
107 #define EMULE_MSG_MULTIPACKET_ANSWER 0x93
108 #define EMULE_MSG_AICH_REQUEST 0x9b
109 #define EMULE_MSG_AICH_ANSWER 0x9c
110 #define EMULE_MSG_AICHFILEHASH_ANSWER 0x9d
111 #define EMULE_MSG_AICHFILEHASH_REQUEST 0x9e
112 #define EMULE_MSG_DATA_COMPRESSED_64 0xa1
113 #define EMULE_MSG_SENDING_PART_64 0xa2
114 #define EMULE_MSG_REQUEST_PARTS_64 0xa3
115 #define EMULE_MSG_MULTIPACKET_EXT 0xa4
117 /* EDONKEY UDP MESSAGES */
118 #define EDONKEY_MSG_UDP_SERVER_STATUS_REQUEST 0x96
119 #define EDONKEY_MSG_UDP_SERVER_STATUS 0x97
120 #define EDONKEY_MSG_UDP_SEARCH_FILE 0x98
121 #define EDONKEY_MSG_UDP_SEARCH_FILE_RESULTS 0x99
122 #define EDONKEY_MSG_UDP_GET_SOURCES 0x9a
123 #define EDONKEY_MSG_UDP_FOUND_SOURCES 0x9b
124 #define EDONKEY_MSG_UDP_CALLBACK_REQUEST 0x9c
125 #define EDONKEY_MSG_UDP_CALLBACK_FAIL 0x9e
126 /* #define EDONKEY_MSG_UDP_UNKNOWN 0xa0 */
127 #define EDONKEY_MSG_UDP_SERVER_LIST 0xa1
128 #define EDONKEY_MSG_UDP_GET_SERVER_INFO 0xa2
129 #define EDONKEY_MSG_UDP_SERVER_INFO 0xa3
130 #define EDONKEY_MSG_UDP_GET_SERVER_LIST 0xa4
132 /* EMULE UDP EXTENSIONS */
133 #define EMULE_MSG_UDP_REASKFILEPING 0x90
134 #define EMULE_MSG_UDP_REASKACK 0x91
135 #define EMULE_MSG_UDP_FILE_NOT_FOUND 0x92
136 #define EMULE_MSG_UDP_QUEUE_FULL 0x93
138 /* OVERNET UDP EXTENSIONS */
139 #define OVERNET_MSG_UDP_CONNECT 0x0a
140 #define OVERNET_MSG_UDP_CONNECT_REPLY 0x0b
141 #define OVERNET_MSG_UDP_PUBLICIZE 0x0c
142 #define OVERNET_MSG_UDP_PUBLICIZE_ACK 0x0d
143 #define OVERNET_MSG_UDP_SEARCH 0x0e
144 #define OVERNET_MSG_UDP_SEARCH_NEXT 0x0f
145 #define OVERNET_MSG_UDP_SEARCH_INFO 0x10
146 #define OVERNET_MSG_UDP_SEARCH_RESULT 0x11
147 #define OVERNET_MSG_UDP_SEARCH_END 0x12
148 #define OVERNET_MSG_UDP_PUBLISH 0x13
149 #define OVERNET_MSG_UDP_PUBLISH_ACK 0x14
150 #define OVERNET_MSG_UDP_IDENTIFY_REPLY 0x15
151 #define OVERNET_MSG_UDP_IDENTIFY_ACK 0x16
152 #define OVERNET_MSG_UDP_FIREWALL_CONNECTION 0x18
153 #define OVERNET_MSG_UDP_FIREWALL_CONNECTION_ACK 0x19
154 #define OVERNET_MSG_UDP_FIREWALL_CONNECTION_NACK 0x1a
155 #define OVERNET_MSG_UDP_IP_QUERY 0x1b
156 #define OVERNET_MSG_UDP_IP_QUERY_ANSWER 0x1c
157 #define OVERNET_MSG_UDP_IP_QUERY_END 0x1d
158 #define OVERNET_MSG_UDP_IDENTIFY 0x1e
159 /*#define OVERNET_MSG_UDP_UNKNOWN 0x21 */
161 /* EDONKEY META TAG TYPES */
162 #define EDONKEY_MTAG_UNKNOWN 0x00
163 #define EDONKEY_MTAG_HASH 0x01
164 #define EDONKEY_MTAG_STRING 0x02
165 #define EDONKEY_MTAG_DWORD 0x03
166 #define EDONKEY_MTAG_FLOAT 0x04
167 #define EDONKEY_MTAG_BOOL 0x05
168 #define EDONKEY_MTAG_BOOL_ARRAY 0x06
169 #define EDONKEY_MTAG_BLOB 0x07
170 #define EDONKEY_MTAG_WORD 0x08
171 #define EDONKEY_MTAG_BYTE 0x09
172 #define EDONKEY_MTAG_BSOB 0x0a
173 #define EDONKEY_MTAG_STR1 0x11
174 #define EDONKEY_MTAG_STR16 0x20
175 #define EDONKEY_MTAG_SHORTNAME 0x80
177 /* EDONKEY SPECIAL TAGS */
178 #define EDONKEY_STAG_UNKNOWN 0x00
179 #define EDONKEY_STAG_NAME 0x01
180 #define EDONKEY_STAG_SIZE 0x02
181 #define EDONKEY_STAG_TYPE 0x03
182 #define EDONKEY_STAG_FORMAT 0x04
183 #define EDONKEY_STAG_COLLECTION 0x05
184 #define EDONKEY_STAG_PART_PATH 0x06
185 #define EDONKEY_STAG_PART_HASH 0x07
186 #define EDONKEY_STAG_COPIED 0x08
187 #define EDONKEY_STAG_GAP_START 0x09
188 #define EDONKEY_STAG_GAP_END 0x0a
189 #define EDONKEY_STAG_DESCRIPTION 0x0b
190 #define EDONKEY_STAG_PING 0x0c
191 #define EDONKEY_STAG_FAIL 0x0d
192 #define EDONKEY_STAG_PREFERENCE 0x0e
193 #define EDONKEY_STAG_PORT 0x0f
194 #define EDONKEY_STAG_IP 0x10
195 #define EDONKEY_STAG_VERSION 0x11
196 #define EDONKEY_STAG_TEMPFILE 0x12
197 #define EDONKEY_STAG_PRIORITY 0x13
198 #define EDONKEY_STAG_STATUS 0x14
199 #define EDONKEY_STAG_AVAILABILITY 0x15
200 #define EDONKEY_STAG_QTIME 0x16
201 #define EDONKEY_STAG_PARTS 0x17
202 #define EDONKEY_STAG_MOD_VERSION 0x55
204 /* EMULE SPECIAL TAGS */
205 #define EMULE_STAG_COMPRESSION 0x20
206 #define EMULE_STAG_UDP_CLIENT_PORT 0x21
207 #define EMULE_STAG_UDP_VERSION 0x22
208 #define EMULE_STAG_SOURCE_EXCHANGE 0x23
209 #define EMULE_STAG_COMMENTS 0x24
210 #define EMULE_STAG_EXTENDED_REQUEST 0x25
211 #define EMULE_STAG_COMPATIBLE_CLIENT 0x26
212 #define EMULE_STAG_COMPLETE_SOURCES 0x30
213 #define EMULE_STAG_SIZE_HI 0x3a
214 #define EMULE_STAG_SERVER_VERSION 0x91
215 #define EMULE_STAG_COMPAT_OPTIONS1 0xef
216 #define EMULE_STAG_UDPPORTS 0xf9
217 #define EMULE_STAG_MISCOPTIONS1 0xfa
218 #define EMULE_STAG_VERSION 0xfb
219 #define EMULE_STAG_BUDDYIP 0xfc
220 #define EMULE_STAG_BUDDYUDP 0xfd
221 #define EMULE_STAG_MISCOPTIONS2 0xfe
223 /* EDONKEY SEARCH TYPES */
224 #define EDONKEY_SEARCH_BOOL 0x00
225 #define EDONKEY_SEARCH_NAME 0x01
226 #define EDONKEY_SEARCH_META 0x02
227 #define EDONKEY_SEARCH_LIMIT 0x03
229 /* EDONKEY SEARCH OPERATORS */
230 #define EDONKEY_SEARCH_AND 0x00
231 #define EDONKEY_SEARCH_OR 0x01
232 #define EDONKEY_SEARCH_ANDNOT 0x02
234 /* EDONKEY SEARCH MIN/MAX */
235 #define EDONKEY_SEARCH_MIN 0x01
236 #define EDONKEY_SEARCH_MAX 0x02