|
From: <bo...@us...> - 2004-01-12 21:32:45
|
Update of /cvsroot/sharedaemon/core/src
In directory sc8-pr-cvs1:/tmp/cvs-serv29094
Modified Files:
Ed2kPacket.cpp parse-ed2k.c parse-ed2k.h
Log Message:
Removed double #defines
Index: Ed2kPacket.cpp
===================================================================
RCS file: /cvsroot/sharedaemon/core/src/Ed2kPacket.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Ed2kPacket.cpp 20 Nov 2003 16:27:25 -0000 1.3
+++ Ed2kPacket.cpp 12 Jan 2004 21:32:42 -0000 1.4
@@ -20,6 +20,9 @@
#include "Ed2kPacket.h"
+#include "parse-ed2k.h"
+
+/*
#define LOGINREQUEST 0x01 // mlDonkey adds DWORD with content: 'MLDK'
#define REJECT 0x05
#define GETSERVERLIST 0x14
@@ -102,6 +105,7 @@
#define VERIFYUPSANSWER 0x72 // (never used)
#define UDPVERIFYUPREQ 0x73 // (never used)
#define UDPVERIFYUPA 0x74 // (never used)
+*/
static u8 buf[1024];
static int ofs;
Index: parse-ed2k.c
===================================================================
RCS file: /cvsroot/sharedaemon/core/src/parse-ed2k.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- parse-ed2k.c 9 Dec 2003 00:16:29 -0000 1.15
+++ parse-ed2k.c 12 Jan 2004 21:32:42 -0000 1.16
@@ -95,15 +95,10 @@
// | | | | | +---- Client <-> Server
// | | | | | | +-- Client <-> Client
// Client <-> Server
-#define LOGINREQUEST 0x01 // mlDonkey adds a DWORD with content: 'MLDK' // <DWORD>tagcount<TAG>tag[tagcount] // <BYTE>magic=0x10
{ 1,0,0,0,0,1,0,PROT_NAME(LOGINREQUEST) ,"cse301",NULL,"<HASH>user_hash<IPPORT>client_address=0,0<DWORD>tagcount<TAG>tag[tagcount]<IPPORT>server_address<DWORD>*software_id=1262767181" },
-#define REJECT 0x05
{ 1,0,0,0,0,0,0,PROT_NAME(REJECT) ,"cse305",NULL,"" },
-#define GETSERVERLIST 0x14
{ 1,0,0,0,0,0,0,PROT_NAME(GETSERVERLIST) ,"cse314",NULL,"" },
-#define OFFERFILES 0x15
{ 1,0,0,0,0,0,0,PROT_NAME(OFFERFILES) ,"cse315",NULL,"<DWORD>filecount{<HASH>hash<IPPORT>source<DWORD>tagcount<TAG>tag[tagcount]}file[filecount]" },
-#define SEARCHREQUEST 0x16
// { 1,0,0,0,0,0,0,PROT_NAME(SEARCHREQUEST) ,"cse316",NULL,"<Query_Tree>query" },
/*
@@ -130,188 +125,111 @@
*/
-#define DISCONNECT 0x18 // (not verified)
{ 1,0,0,0,0,0,0,PROT_NAME(DISCONNECT) ,"cse318",NULL,"" },
-#define GETSOURCES 0x19
{ 1,0,0,0,0,0,0,PROT_NAME(GETSOURCES) ,"cse319",NULL,"<HASH>file_hash" },
-#define SEARCH_USER 0x1A
// { 1,0,0,0,0,0,0,PROT_NAME(SEARCH_USER) ,"cse31a",NULL,"<Query_Tree>query" },
// Maybe there is a 0x1b too
// CONFORMING TO "eDonkey-protocol-0.6.1"
-#define CALLBACKREQUEST 0x1C // <ID 4>
{ 1,0,0,0,0,0,0,PROT_NAME(CALLBACKREQUEST) ,"cse31c",NULL,"<DWORD>LowID_client_ip" },
// Maybe there is a 0x20 too
// CONFORMING TO "eDonkey-protocol-0.6.1" : Exception in Connection::doTask 25 for 16.39
-#define QUERY_MORE_RESULT 0x21
{ 1,0,0,0,0,0,0,PROT_NAME(QUERY_MORE_RESULT) ,"cse321",NULL,"" },
-#define SERVERLIST 0x32 // Server -> Client
{ 1,0,0,0,0,0,0,PROT_NAME(SERVERLIST) ,"cse332",NULL,"<BYTE>server_count<IPPORT>server[server_count]" },
-#define SEARCHRESULT 0x33
{ 1,0,0,0,0,0,0,PROT_NAME(SEARCHRESULT) ,"cse333",NULL,"<DWORD>num_results{<HASH>hash<IPPORT>ipport<DWORD>tag_count<TAG>tag[tag_count]}user[num_results]<DWORD>unknown1<DWORD>unknown2" },
-#define SERVERSTATUS 0x34
{ 1,0,0,0,0,0,0,PROT_NAME(SERVERSTATUS) ,"cse334",NULL,"<DWORD>user_count<DWORD>file_count" },
-#define CALLBACKREQUESTED 0x35
{ 1,0,0,0,0,0,0,PROT_NAME(CALLBACKREQUESTED) ,"cse335",NULL,"<IPPORT>HighID_client_ip" },
-#define CALLBACK_FAIL 0x36
{ 1,0,0,0,0,0,0,PROT_NAME(CALLBACK_FAIL) ,"cse336",NULL,"<DWORD>client_id" },
-#define SERVERMESSAGE 0x38
{ 1,0,0,0,0,0,0,PROT_NAME(SERVERMESSAGE) ,"cse338",NULL,"<WORD>message_len<CHAR>message[message_len]" },
-#define IDCHANGE 0x40
{ 1,0,0,0,0,0,0,PROT_NAME(IDCHANGE) ,"cse340",NULL,"<DWORD>new_id" },
-#define SERVERIDENT 0x41
{ 1,0,0,0,0,0,0,PROT_NAME(SERVERIDENT) ,"cse341",NULL,"<HASH>server_hash<IPPORT>server_address<DWORD>tag_count<TAG>tag[tag_count]" },
-#define FOUNDSOURCES 0x42
{ 1,0,0,0,0,0,0,PROT_NAME(FOUNDSOURCES) ,"cse342",NULL,"<HASH>file_hash<BYTE>source_count<IPPORT>source_address[source_count]" },
-#define USERS_LIST 0x43
{ 1,0,0,0,0,0,0,PROT_NAME(USERS_LIST) ,"cse343",NULL,"<DWORD>user_count{<HASH>hash<IPPORT>address<TAG>name}user[user_count]" },
-#define QUERY_CHATS 0x1D // (deprecated not supported by server any longer)
// { 1,0,0,0,0,0,0,PROT_NAME(QUERY_CHATS) ,"cse31d",NULL,"DEPRECATED" },
-#define CHAT_MESSAGE 0x1E // (deprecated not supported by server any longer)
// { 1,0,0,0,0,0,0,PROT_NAME(CHAT_MESSAGE) ,"cse31e",NULL,"DEPRECATED" },
-#define JOIN_ROOM 0x1F // (deprecated not supported by server any longer)
// { 1,0,0,0,0,0,0,PROT_NAME(JOIN_ROOM) ,"cse31f",NULL,"DEPRECATED" },
-#define CHAT_ROOM_REQUEST 0x39 // (deprecated not supported by server any longer)
// { 1,0,0,0,0,0,0,PROT_NAME(CHAT_ROOM_REQUEST) ,"cse339",NULL,"DEPRECATED" },
-#define CHAT_BROADCAST 0x3A // (deprecated not supported by server any longer)
// { 1,0,0,0,0,0,0,PROT_NAME(CHAT_BROADCAST) ,"cse33a",NULL,"DEPRECATED" },
-#define CHAT_USER_JOIN 0x3B // (deprecated not supported by server any longer)
// { 1,0,0,0,0,0,0,PROT_NAME(CHAT_USER_JOIN) ,"cse33b",NULL,"DEPRECATED" },
-#define CHAT_USER_LEAVE 0x3C // (deprecated not supported by server any longer)
// { 1,0,0,0,0,0,0,PROT_NAME(CHAT_USER_LEAVE) ,"cse33c",NULL,"DEPRECATED" },
-#define CHAT_USER 0x3D // (deprecated not supported by server any longer)
// { 1,0,0,0,0,0,0,PROT_NAME(CHAT_USER) ,"cse33d",NULL,"DEPRECATED" },
// client <-> server [UDP]
-#define GLOBSERVSTATREQ 0x96
{ 1,0,0,0,0,0,0,PROT_NAME(GLOBSERVSTATREQ) ,"cse396",NULL,"<WORD>unknown1<WORD>unknown2" },
// if unknown2==0xaa,0x5a, The respond contains max_users, else not.
// { 1,0,0,0,0,0,0,PROT_NAME(GLOBSERVSTATRES) ,"cse396",NULL,"<DWORD>user_count<DWORD>file_count" },
-#define GLOBSERVSTATRES 0x97
{ 1,0,0,0,0,0,0,PROT_NAME(GLOBSERVSTATRES) ,"cse397",NULL,"<WORD>unknown1<WORD>unknown2<DWORD>user_count<DWORD>file_count<DWORD>*max_users" },
-#define GLOBSEARCHREQUEST 0x98
// { 1,0,0,0,0,0,0,PROT_NAME(GLOBSEARCHREQUEST) ,"cse398",NULL,"<Search query>" },
-#define GLOBSEARCHRESULT 0x99
{ 1,0,0,0,0,0,0,PROT_NAME(GLOBSEARCHRESULT) ,"cse399",NULL,"<HASH>hash<IPPORT>dummy<DWORD>tag_count<TAG>tag[tag_count]" },
-#define GLOBGETSOURCES 0x9A
{ 1,0,0,0,0,0,0,PROT_NAME(GLOBGETSOURCES) ,"cse39a",NULL,"<HASH>file_hash" },
-#define GLOBFOUNDSORUCES 0x9B
{ 1,0,0,0,0,0,0,PROT_NAME(GLOBFOUNDSORUCES) ,"cse39b",NULL,"<HASH>file_hash<BYTE>num_peers<IPPORT>peer[num_peers]" },
-#define GLOBCALLBACKREQ 0x9C
{ 1,0,0,0,0,0,0,PROT_NAME(GLOBCALLBACKREQ) ,"cse39c",NULL,"<DWORD>LowID_client_id" },
-#define GLOBCALLBACKFAILED 0x9E // CONFORMING TO "eDonkey-protocol-0.6.1"
{ 1,0,0,0,0,0,0,PROT_NAME(GLOBCALLBACKFAILED) ,"cse39e",NULL,"<DWORD>LowID_client_id" },
// Maybe there is a 0xA0 too
// CONFORMING TO "eDonkey-protocol-0.6.1" : Exception in Connection::doTask 25 for 16.39
-#define UDP_SERVERLIST 0xA1 // CONFORMING TO "eDonkey-protocol-0.6.1"
// { 1,0,0,0,0,0,0,PROT_NAME(UDP_SERVERLIST) ,"cse3a1",NULL,"<Address list>" },
-#define UNKNOWN1 0xA2
{ 1,0,0,0,0,0,0,PROT_NAME(UNKNOWN1) ,"cse3a2",NULL,"" },
-#define UDP_SERVERINFO 0xA3 // CONFORMING TO "eDonkey-protocol-0.6.1"
// { 1,0,0,0,0,0,0,PROT_NAME(UDP_SERVERLIST) ,"cse3a3",NULL,"<String>name<String>description" },
-#define UNKNOWN2 0xA4
{ 1,0,0,0,0,0,0,PROT_NAME(UNKNOWN2) ,"cse3a4",NULL,"" },
// client <-> client
-#define HELLO 0x01
{ 1,0,0,0,0,0,1,PROT_NAME(HELLO) ,"cce301",NULL,"<BYTE>magic=0x10<HASH>user_hash<IPPORT>address<DWORD>tagcount<TAG>tag[tagcount]<IPPORT>server_address" },
-#define SENDINGPART 0x46
{ 1,0,0,0,0,0,0,PROT_NAME(SENDINGPART) ,"cce346",NULL,"<HASH>file_hash<RANGE>range<BYTE>data[range]" },
-#define REQUESTPARTS 0x47 // "<HASH>file_hash<DWORD>start[3]<DWORD>end[3]"
{ 1,0,0,0,0,0,0,PROT_NAME(REQUESTPARTS) ,"cce347",NULL,"<HASH>file_hash<DWORD>part_1_start<DWORD>part_2_start<DWORD>part_3_start<DWORD>part_1_end<DWORD>part_2_end<DWORD>part_3_end" }, // <HASH>file_hash<DWORD>start[3]<DWORD>end[3]
-#define FILEREQANSNOFIL 0x48
{ 1,0,0,0,0,0,0,PROT_NAME(FILEREQANSNOFIL) ,"cce348",NULL,"<HASH>file_hash" },
-#define END_OF_DOWNLOAD 0x49
{ 1,0,0,0,0,0,0,PROT_NAME(END_OF_DOWNLOAD) ,"cce349",NULL,"<HASH>file_hash" },
-#define ASKSHAREDFILES 0x4A
{ 1,0,0,0,0,0,0,PROT_NAME(ASKSHAREDFILES) ,"cce34a",NULL,"" },
-#define ASKSHAREDFILESANSWER 0x4B // ? "<DWORD>file_count{<HASH>file<TAG>name}file[file_count]" },
{ 1,0,0,0,0,0,0,PROT_NAME(ASKSHAREDFILESANSWER) ,"cce34b",NULL,"<DWORD>file_count{<IPPORT>address<TAG>name}file[file_count]" },
-#define HELLOANSWER 0x4C
{ 1,0,0,0,0,0,0,PROT_NAME(HELLOANSWER) ,"cce34c",NULL,"<HASH>user_hash<IPPORT>user<DWORD>tagcount<TAG>tag[tagcount]<IPPORT>server" },
-#define CHANGE_CLIENT_ID 0x4D
{ 1,0,0,0,0,0,0,PROT_NAME(CHANGE_CLIENT_ID) ,"cce34d",NULL,"<DWORD>old_id<DWORD>new_id" },
-#define MESSAGE 0x4E
{ 1,0,0,0,0,0,0,PROT_NAME(MESSAGE) ,"cce34e",NULL,"<WORD>message_len<CHAR>message[message_len]" },
-#define SETREQFILEID 0x4F
{ 1,0,0,0,0,0,0,PROT_NAME(SETREQFILEID) ,"cce34f",NULL,"<HASH>file_hash" },
-#define FILESTATUS 0x50
{ 1,0,0,0,0,0,0,PROT_NAME(FILESTATUS) ,"cce350",NULL,"<HASH>file_hash<BITMAP>chunks" },
-#define HASHSETREQUEST 0x51
{ 1,0,0,0,0,0,0,PROT_NAME(HASHSETREQUEST) ,"cce351",NULL,"<HASH>file_hash" },
-#define HASHSETANSWER 0x52
{ 1,0,0,0,0,0,0,PROT_NAME(HASHSETANSWER) ,"cce352",NULL,"<HASH>file_hash<WORD>chunk_count<HASH>chunk_hash[chunk_count]" },
// Maybe there is a 0x53 too
// CONFORMING TO "eDonkey-protocol-0.6.1"
-#define STARTUPLOADREQ 0x54 // The file_hash seems to be optional
{ 1,0,0,0,0,0,0,PROT_NAME(STARTUPLOADREQ) ,"cce354",NULL,"<HASH>*file_hash" },
-#define ACCEPTUPLOADREQ 0x55
{ 1,0,0,0,0,0,0,PROT_NAME(ACCEPTUPLOADREQ) ,"cce355",NULL,"<EMPTY>" },
-#define CANCELTRANSFER 0x56
{ 1,0,0,0,0,0,0,PROT_NAME(CANCELTRANSFER) ,"cce356",NULL,"<EMPTY>" },
-#define OUTOFPARTREQS 0x57
{ 1,0,0,0,0,0,0,PROT_NAME(OUTOFPARTREQS) ,"cce357",NULL,"<EMPTY>" },
-#define FILEREQUEST 0x58
{ 1,0,0,0,0,0,0,PROT_NAME(FILEREQUEST) ,"cce358",NULL,"<HASH>file_hash<BITMAP>*chunks" },
-#define FILEREQANSWER 0x59
{ 1,0,0,0,0,0,0,PROT_NAME(FILEREQANSWER) ,"cce359",NULL,"<HASH>file_hash<WORD>filename_len<CHAR>filename[filename_len]" },
-#define CHANGE_SLOT 0x5B // The writers of "eDonkey-protocol-0.6.1" are not sure about this...
{ 1,0,0,0,0,0,0,PROT_NAME(CHANGE_SLOT) ,"cce35b",NULL,"<HASH>file_hash" },
-#define QUEUERANK 0x5C // (original comment: slot index of the request)
{ 1,0,0,0,0,0,0,PROT_NAME(QUEUERANK) ,"cce35c",NULL,"<DWORD>rank" },
// Client -> Client, CONFORMING TO "eDonkey-protocol-0.6.1"
-#define GETSHAREDDIRS 0x5d // Request shared directories
{ 1,0,0,0,0,0,0,PROT_NAME(GETSHAREDDIRS) ,"cce35d",NULL,"" },
-#define GETSHAREDFILES4DIR 0x5e // Request shared files from directory
// { 1,0,0,0,0,0,0,PROT_NAME(GETSHAREDFILES4DIR) ,"cce35e",NULL,"<Directory>" },
-#define ANSWERSHAREDDIRS 0x5f
// { 1,0,0,0,0,0,0,PROT_NAME(ANSWERSHAREDDIRS) ,"cce35f",NULL,"<Directory list>" },
-#define ANSWERSHAREDFILES4DIR 0x60
// { 1,0,0,0,0,0,0,PROT_NAME(ANSWERSHAREDFILES4DIR),"cce360",NULL,"<Directory> <File info list>" },
-#define ANSWERSHAREDDENIED 0x61
{ 1,0,0,0,0,0,0,PROT_NAME(ANSWERSHAREDDENIED) ,"cce361",NULL,"" },
// extened prot client <-> extened prot client
-#define EMULEINFO 0x01
{ 0,1,0,0,0,0,0,PROT_NAME(EMULEINFO) ,"ccc5e301",NULL,"<BYTE>client_version<BYTE>protocol_version<DWORD>tagcount<TAG>tag[tagcount]" },
// Values: ET_COMPRESSION ET_UDPPORT ET_UDPVER ET_SOURCEEXCHANGE ET_COMMENTS ET_EXTENDEDREQUEST ET_COMPATABLECLIENT ET_MOD_VERSION
-#define EMULEINFOANSWER 0x02
{ 0,1,0,0,0,0,0,PROT_NAME(EMULEINFOANSWER) ,"ccc502",NULL,"<BYTE>client_version<BYTE>protocol_version<DWORD>tagcount<TAG>tag[tagcount]" },
//
// CONFORMING TO "eDonkey-protocol-0.6.1" and comfirming to the xMule sources,
// a part may be split down to several packets. Each packet _may_ have same
// value for range.
-#define COMPRESSEDPART 0x40
{ 0,1,0,0,0,0,0,PROT_NAME(COMPRESSEDPART) ,"ccc540",NULL,"<HASH>file_hash<RANGE>range<BYTE>cdata[range]" },
-#define QUEUERANKING 0x60
{ 0,1,0,0,0,0,0,PROT_NAME(QUEUERANKING) ,"ccc560",NULL,"<WORD>rank<DWORD>unknown1=0<DWORD>unknown2=0<WORD>unknown3=0" },
// "eDonkey-protocol-0.6.1" doesn't know anything about 0x61:
-#define FILEDESC 0x61 // max len = 128 [Why the hell is comment_len a 32 bit value, and than limited to 128 bytes?]
{ 0,1,0,0,0,0,0,PROT_NAME(FILEDESC) ,"ccc561",NULL,"<BYTE>quality_rating<DWORD>comment_len<CHAR>comment[comment_len]" },
-#define REQUESTSOURCES 0x81
{ 0,1,0,0,0,0,0,PROT_NAME(REQUESTSOURCES) ,"ccc581",NULL,"<HASH>file_hash" },
-#define ANSWERSOURCES 0x82
{ 0,1,0,0,0,0,0,PROT_NAME(ANSWERSOURCES) ,"ccc582",NULL,"<HASH>file_hash<WORD>num_sources{<IPPORT>server<IPPORT>client}source[num_sources]" },
// extened prot client <-> extened prot client UDP
-#define REASKFILEPING 0x90
{ 0,1,0,0,0,0,0,PROT_NAME(REASKFILEPING) ,"ccc590",NULL,"<HASH>file_hash" },
-#define REASKACK 0x91
{ 0,1,0,0,0,0,0,PROT_NAME(REASKACK) ,"ccc591",NULL,"<WORD>rank" },
-#define FILENOTFOUND 0x92
{ 0,1,0,0,0,0,0,PROT_NAME(FILENOTFOUND) ,"ccc592",NULL,"" },
-#define QUEUEFULL 0x93
{ 0,1,0,0,0,0,0,PROT_NAME(QUEUEFULL) ,"ccc593",NULL,"" },
// unknown: (?extened prot client <-> extened prot client?)
-#define VERIFYUPSREQ 0x71 // (never used) */
{ 0,1,0,0,0,0,0,PROT_NAME(VERIFYUPSREQ) ,"ccc571",NULL,"" },
-#define VERIFYUPSANSWER 0x72 // (never used) */
{ 0,1,0,0,0,0,0,PROT_NAME(VERIFYUPSANSWER) ,"ccc572",NULL,"" },
-#define UDPVERIFYUPREQ 0x73 // (never used) */
{ 0,1,0,0,0,0,0,PROT_NAME(UDPVERIFYUPREQ) ,"ccc573",NULL,"" },
-#define UDPVERIFYUPA 0x74 // (never used)
{ 0,1,0,0,0,0,0,PROT_NAME(UDPVERIFYUPA) ,"ccc574",NULL,"" }
};
Index: parse-ed2k.h
===================================================================
RCS file: /cvsroot/sharedaemon/core/src/parse-ed2k.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- parse-ed2k.h 20 Nov 2003 16:27:25 -0000 1.9
+++ parse-ed2k.h 12 Jan 2004 21:32:42 -0000 1.10
@@ -158,4 +158,87 @@
# define typename type_name
#endif // #ifdef __cplusplus, #else
+#define LOGINREQUEST 0x01 // mlDonkey adds a DWORD with content: 'MLDK' // <DWORD>tagcount<TAG>tag[tagcount] // <BYTE>magic=0x10
+#define REJECT 0x05
+#define GETSERVERLIST 0x14
+#define OFFERFILES 0x15
+#define SEARCHREQUEST 0x16
+#define DISCONNECT 0x18 // (not verified)
+#define GETSOURCES 0x19
+#define SEARCH_USER 0x1A
+#define CALLBACKREQUEST 0x1C // <ID 4>
+#define QUERY_MORE_RESULT 0x21
+#define SERVERLIST 0x32 // Server -> Client
+#define SEARCHRESULT 0x33
+#define SERVERSTATUS 0x34
+#define CALLBACKREQUESTED 0x35
+#define CALLBACK_FAIL 0x36
+#define SERVERMESSAGE 0x38
+#define IDCHANGE 0x40
+#define SERVERIDENT 0x41
+#define FOUNDSOURCES 0x42
+#define USERS_LIST 0x43
+#define QUERY_CHATS 0x1D // (deprecated not supported by server any longer)
+#define CHAT_MESSAGE 0x1E // (deprecated not supported by server any longer)
+#define JOIN_ROOM 0x1F // (deprecated not supported by server any longer)
+#define CHAT_ROOM_REQUEST 0x39 // (deprecated not supported by server any longer)
+#define CHAT_BROADCAST 0x3A // (deprecated not supported by server any longer)
+#define CHAT_USER_JOIN 0x3B // (deprecated not supported by server any longer)
+#define CHAT_USER_LEAVE 0x3C // (deprecated not supported by server any longer)
+#define CHAT_USER 0x3D // (deprecated not supported by server any longer)
+#define GLOBSERVSTATREQ 0x96
+#define GLOBSERVSTATRES 0x97
+#define GLOBSEARCHREQUEST 0x98
+#define GLOBSEARCHRESULT 0x99
+#define GLOBGETSOURCES 0x9A
+#define GLOBFOUNDSORUCES 0x9B
+#define GLOBCALLBACKREQ 0x9C
+#define GLOBCALLBACKFAILED 0x9E // CONFORMING TO "eDonkey-protocol-0.6.1"
+#define UDP_SERVERLIST 0xA1 // CONFORMING TO "eDonkey-protocol-0.6.1"
+#define UNKNOWN1 0xA2
+#define UDP_SERVERINFO 0xA3 // CONFORMING TO "eDonkey-protocol-0.6.1"
+#define UNKNOWN2 0xA4
+#define HELLO 0x01
+#define SENDINGPART 0x46
+#define REQUESTPARTS 0x47 // "<HASH>file_hash<DWORD>start[3]<DWORD>end[3]"
+#define FILEREQANSNOFIL 0x48
+#define END_OF_DOWNLOAD 0x49
+#define ASKSHAREDFILES 0x4A
+#define ASKSHAREDFILESANSWER 0x4B // ? "<DWORD>file_count{<HASH>file<TAG>name}file[file_count]" },
+#define HELLOANSWER 0x4C
+#define CHANGE_CLIENT_ID 0x4D
+#define MESSAGE 0x4E
+#define SETREQFILEID 0x4F
+#define FILESTATUS 0x50
+#define HASHSETREQUEST 0x51
+#define HASHSETANSWER 0x52
+#define STARTUPLOADREQ 0x54 // The file_hash seems to be optional
+#define ACCEPTUPLOADREQ 0x55
+#define CANCELTRANSFER 0x56
+#define OUTOFPARTREQS 0x57
+#define FILEREQUEST 0x58
+#define FILEREQANSWER 0x59
+#define CHANGE_SLOT 0x5B // The writers of "eDonkey-protocol-0.6.1" are not sure about this...
+#define QUEUERANK 0x5C // (original comment: slot index of the request)
+#define GETSHAREDDIRS 0x5d // Request shared directories
+#define GETSHAREDFILES4DIR 0x5e // Request shared files from directory
+#define ANSWERSHAREDDIRS 0x5f
+#define ANSWERSHAREDFILES4DIR 0x60
+#define ANSWERSHAREDDENIED 0x61
+#define EMULEINFO 0x01
+#define EMULEINFOANSWER 0x02
+#define COMPRESSEDPART 0x40
+#define QUEUERANKING 0x60
+#define FILEDESC 0x61 // max len = 128 [Why the hell is comment_len a 32 bit value, and than limited to 128 bytes?]
+#define REQUESTSOURCES 0x81
+#define ANSWERSOURCES 0x82
+#define REASKFILEPING 0x90
+#define REASKACK 0x91
+#define FILENOTFOUND 0x92
+#define QUEUEFULL 0x93
+#define VERIFYUPSREQ 0x71 // (never used) */
+#define VERIFYUPSANSWER 0x72 // (never used) */
+#define UDPVERIFYUPREQ 0x73 // (never used) */
+#define UDPVERIFYUPA 0x74 // (never used)
+
#endif // #ifndef PARSE_ED2K_H
|