/[LeafOK_CVS]/pvpgn-1.7.4/src/common/packet.h
ViewVC logotype

Annotation of /pvpgn-1.7.4/src/common/packet.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Tue Jun 6 03:41:38 2006 UTC (19 years, 9 months ago) by sysadm
CVS Tags: pvpgn_1-7-4-0_MIL
Branch point for: GNU, MAIN
Content type: text/x-chdr
Initial revision

1 sysadm 1.1 /*
2     * Copyright (C) 1998 Mark Baysinger (mbaysng@ucsd.edu)
3     * Copyright (C) 1998,1999,2000 Ross Combs (rocombs@cs.nmsu.edu)
4     *
5     * This program is free software; you can redistribute it and/or
6     * modify it under the terms of the GNU General Public License
7     * as published by the Free Software Foundation; either version 2
8     * of the License, or (at your option) any later version.
9     *
10     * This program is distributed in the hope that it will be useful,
11     * but WITHOUT ANY WARRANTY; without even the implied warranty of
12     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13     * GNU General Public License for more details.
14     *
15     * You should have received a copy of the GNU General Public License
16     * along with this program; if not, write to the Free Software
17     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18     */
19     #ifndef INCLUDED_PACKET_TYPES
20     #define INCLUDED_PACKET_TYPES
21    
22     #ifdef JUST_NEED_TYPES
23     # include "common/field_sizes.h"
24     # include "common/init_protocol.h"
25     # include "common/bnet_protocol.h"
26     # include "common/anongame_protocol.h"
27     # include "common/file_protocol.h"
28     # include "common/bot_protocol.h"
29     # include "common/udp_protocol.h"
30     # include "common/d2game_protocol.h"
31     # include "d2cs/d2cs_protocol.h"
32     # include "d2cs/d2cs_d2gs_protocol.h"
33     # include "d2cs/d2cs_bnetd_protocol.h"
34     #else
35     # define JUST_NEED_TYPES
36     # include "common/field_sizes.h"
37     # include "common/init_protocol.h"
38     # include "common/bnet_protocol.h"
39     # include "common/anongame_protocol.h"
40     # include "common/file_protocol.h"
41     # include "common/bot_protocol.h"
42     # include "common/udp_protocol.h"
43     # include "common/d2game_protocol.h"
44     # include "d2cs/d2cs_protocol.h"
45     # include "d2cs/d2cs_d2gs_protocol.h"
46     # include "d2cs/d2cs_bnetd_protocol.h"
47     # undef JUST_NEED_TYPES
48     #endif
49    
50     typedef enum
51     {
52     packet_class_none,
53     packet_class_init,
54     packet_class_bnet,
55     packet_class_file,
56     packet_class_raw,
57     packet_class_udp,
58     packet_class_d2game,
59     packet_class_d2gs,
60     packet_class_d2cs,
61     packet_class_d2cs_bnetd,
62     packet_class_w3route
63     } t_packet_class;
64    
65    
66     typedef enum
67     {
68     packet_dir_from_client,
69     packet_dir_from_server
70     } t_packet_dir;
71    
72    
73     /* These aren't really packets so much as records in a TCP stream. They are variable-
74     * length structures which make up the Battle.net protocol. It is just easier to call
75     * them "packets".
76     */
77     typedef struct
78     {
79     unsigned int ref; /* reference count */
80     t_packet_class class;
81     unsigned int flags; /* user-defined flags (used to mark UDP in bnproxy) */
82     unsigned int len; /* raw packets have no header, so we use this */
83    
84     /* next part looks just like it would on the network (no padding, byte for byte) */
85     union
86     {
87     char data[MAX_PACKET_SIZE];
88    
89     t_bnet_generic bnet;
90     t_file_generic file;
91     t_udp_generic udp;
92     t_d2game_generic d2game;
93     t_w3route_generic w3route;
94    
95     t_client_initconn client_initconn;
96    
97     t_server_authreply1 server_authreply1;
98     t_server_authreq1 server_authreq1;
99     t_client_authreq1 client_authreq1;
100     t_server_authreply_109 server_authreply_109;
101     t_server_authreq_109 server_authreq_109;
102     t_client_authreq_109 client_authreq_109;
103     t_client_cdkey client_cdkey;
104     t_server_cdkeyreply server_cdkeyreply;
105     t_client_statsreq client_statsreq;
106     t_server_statsreply server_statsreply;
107     t_client_loginreq1 client_loginreq1;
108     t_server_loginreply1 server_loginreply1;
109     t_client_progident client_progident;
110     t_client_progident2 client_progident2;
111     t_client_joinchannel client_joinchannel;
112     t_server_channellist server_channellist;
113     t_server_serverlist server_serverlist;
114     t_server_message server_message;
115     t_client_message client_message;
116     t_client_gamelistreq client_gamelistreq;
117     t_server_gamelistreply server_gamelistreply;
118     t_client_udpok client_udpok;
119     t_client_unknown_1b client_unknown_1b;
120     t_client_startgame1 client_startgame1;
121     t_server_startgame1_ack server_startgame1_ack;
122     t_client_startgame3 client_startgame3;
123     t_server_startgame3_ack server_startgame3_ack;
124     t_client_startgame4 client_startgame4;
125     t_server_startgame4_ack server_startgame4_ack;
126     t_client_leavechannel client_leavechannel;
127     t_client_closegame client_closegame;
128     t_client_mapauthreq1 client_mapauthreq1;
129     t_server_mapauthreply1 server_mapauthreply1;
130     t_client_mapauthreq2 client_mapauthreq2;
131     t_server_mapauthreply2 server_mapauthreply2;
132     t_client_ladderreq client_ladderreq;
133     t_server_ladderreply server_ladderreply;
134     t_client_laddersearchreq client_laddersearchreq;
135     t_server_laddersearchreply server_laddersearchreply;
136     t_client_adreq client_adreq;
137     t_server_adreply server_adreply;
138     t_client_adack client_adack;
139     t_client_adclick client_adclick;
140     t_client_adclick2 client_adclick2;
141     t_server_adclickreply2 server_adclickreply2;
142     t_client_game_report client_gamerep;
143     t_server_sessionkey1 server_sessionkey1;
144     t_server_sessionkey2 server_sessionkey2;
145     t_client_createacctreq1 client_createacctreq1;
146     t_server_createacctreply1 server_createacctreply1;
147     t_client_changepassreq client_changepassreq;
148     t_server_changepassack server_changepassack;
149     t_client_iconreq client_iconreq;
150     t_server_iconreply server_iconreply;
151     t_client_fileinforeq client_fileinforeq;
152     t_server_fileinforeply server_fileinforeply;
153     t_client_statsupdate client_statsupdate;
154     t_client_countryinfo1 client_countryinfo1;
155     t_client_countryinfo_109 client_countryinfo_109;
156     t_client_unknown_2b client_unknown_2b;
157     t_client_compinfo1 client_compinfo1;
158     t_client_compinfo2 client_compinfo2;
159     t_server_compreply server_compreply;
160     t_server_echoreq server_echoreq;
161     t_client_echoreply client_echoreply;
162     t_client_playerinforeq client_playerinforeq;
163     t_server_playerinforeply server_playerinforeply;
164     t_client_pingreq client_pingreq;
165     t_server_pingreply server_pingreply;
166     t_client_cdkey2 client_cdkey2;
167     t_server_cdkeyreply2 server_cdkeyreply2;
168     t_client_cdkey3 client_cdkey3;
169     t_server_cdkeyreply3 server_cdkeyreply3;
170     t_server_regsnoopreq server_regsnoopreq;
171     t_client_regsnoopreply client_regsnoopreply;
172     t_client_realmlistreq client_realmlistreq;
173     t_client_realmlistreq_110 client_realmlistreq_110;
174     t_server_realmlistreply server_realmlistreply;
175     t_server_realmlistreply_110 server_realmlistreply_110;
176     t_client_profilereq client_profilereq;
177     t_server_profilereply server_profilereply;
178     t_client_realmjoinreq_109 client_realmjoinreq_109;
179     t_server_realmjoinreply_109 server_realmjoinreply_109;
180     t_client_unknown_37 client_unknown_37;
181     t_server_unknown_37 server_unknown_37;
182     t_client_unknown_39 client_unknown_39;
183     t_client_loginreq2 client_loginreq2;
184     t_server_loginreply2 server_loginreply2;
185     t_client_loginreq_w3 client_loginreq_w3;
186     t_server_loginreply_w3 server_loginreply_w3;
187     t_client_createacctreq2 client_createacctreq2;
188     t_server_createacctreply2 server_createacctreply2;
189     t_client_changegameport client_changegameport;
190     t_client_file_req client_file_req;
191     t_server_file_reply server_file_reply;
192    
193     t_server_file_unknown1 server_file_unknown1;
194     t_client_file_req2 client_file_req2;
195     t_client_file_req3 client_file_req3;
196    
197     t_server_udptest server_udptest;
198     t_client_udpping client_udpping;
199     t_client_sessionaddr1 client_sessionaddr1;
200     t_client_sessionaddr2 client_sessionaddr2;
201    
202     t_client_motd_w3 client_motd_w3;
203     t_server_motd_w3 server_motd_w3;
204     t_client_logonproofreq client_logonproofreq;
205     t_server_logonproofreply server_logonproofreply;
206     t_client_createaccount_w3 client_createaccount_w3;
207     t_server_createaccount_w3 server_createaccount_w3;
208     t_client_findanongame client_findanongame;
209     t_client_findanongame_at client_findanongame_at;
210     t_client_findanongame_at_inv client_findanongame_at_inv;
211    
212    
213     // 5/12/02 EDITED BY THEUNDYING for WC3 1.31+
214     t_server_findanongame_playgame_cancel server_findanongame_playgame_cancel;
215     t_server_anongame_found server_anongame_found;
216     //t_server_w3profile_reply server_w3profile_reply;
217     t_d2cs_bnetd_generic d2cs_bnetd;
218     t_bnetd_d2cs_authreq bnetd_d2cs_authreq;
219     t_d2cs_bnetd_authreply d2cs_bnetd_authreply;
220     t_bnetd_d2cs_authreply bnetd_d2cs_authreply;
221     t_d2cs_bnetd_accountloginreq d2cs_bnetd_accountloginreq;
222     t_bnetd_d2cs_accountloginreply bnetd_d2cs_accountloginreply;
223     t_d2cs_bnetd_charloginreq d2cs_bnetd_charloginreq;
224     t_bnetd_d2cs_charloginreply bnetd_d2cs_charloginreply;
225     t_bnetd_d2cs_gameinforeq bnetd_d2cs_gameinforeq;
226     t_d2cs_bnetd_gameinforeply d2cs_bnetd_gameinforeply;
227    
228     t_d2cs_d2gs_generic d2cs_d2gs;
229     t_d2cs_d2gs_authreq d2cs_d2gs_authreq;
230     t_d2gs_d2cs_authreply d2gs_d2cs_authreply;
231     t_d2cs_d2gs_authreply d2cs_d2gs_authreply;
232     t_d2cs_d2gs_setinitinfo d2cs_d2gs_setinitinfo;
233     t_d2cs_d2gs_setgsinfo d2cs_d2gs_setgsinfo;
234     t_d2gs_d2cs_setgsinfo d2gs_d2cs_setgsinfo;
235     t_d2cs_d2gs_creategamereq d2cs_d2gs_creategamereq;
236     t_d2gs_d2cs_creategamereply d2gs_d2cs_creategamereply;
237     t_d2cs_d2gs_joingamereq d2cs_d2gs_joingamereq;
238     t_d2gs_d2cs_joingamereply d2gs_d2cs_joingamereply;
239     t_d2gs_d2cs_updategameinfo d2gs_d2cs_updategameinfo;
240     t_d2gs_d2cs_closegame d2gs_d2cs_closegame;
241     t_d2cs_d2gs_echoreq d2cs_d2gs_echoreq;
242     t_d2gs_d2cs_echoreply d2gs_d2cs_echoreply;
243     t_d2cs_d2gs_control d2cs_d2gs_control;
244     t_d2cs_d2gs_setconffile d2cs_d2gs_setconffile;
245    
246     t_d2cs_client_generic d2cs_client;
247     t_client_d2cs_loginreq client_d2cs_loginreq;
248     t_d2cs_client_loginreply d2cs_client_loginreply;
249     t_client_d2cs_createcharreq client_d2cs_createcharreq;
250     t_d2cs_client_createcharreply d2cs_client_createcharreply;
251     t_client_d2cs_creategamereq client_d2cs_creategamereq;
252     t_d2cs_client_creategamereply d2cs_client_creategamereply;
253     t_client_d2cs_joingamereq client_d2cs_joingamereq;
254     t_d2cs_client_joingamereply d2cs_client_joingamereply;
255     t_client_d2cs_gamelistreq client_d2cs_gamelistreq;
256     t_d2cs_client_gamelistreply d2cs_client_gamelistreply;
257     t_client_d2cs_gameinforeq client_d2cs_gameinforeq;
258     t_d2cs_client_gameinforeply d2cs_client_gameinforeply;
259     t_client_d2cs_charloginreq client_d2cs_charloginreq;
260     t_d2cs_client_charloginreply d2cs_client_charloginreply;
261     t_client_d2cs_deletecharreq client_d2cs_deletecharreq;
262     t_d2cs_client_deletecharreply d2cs_client_deletecharreply;
263     t_client_d2cs_ladderreq client_d2cs_ladderreq;
264     t_d2cs_client_ladderreply d2cs_client_ladderreply;
265     t_client_d2cs_motdreq client_d2cs_motdreq;
266     t_d2cs_client_motdreply d2cs_client_motdreply;
267     t_client_d2cs_cancelcreategame client_d2cs_cancelcreategame;
268     t_d2cs_client_creategamewait d2cs_client_creategamewait;
269     t_client_d2cs_charladderreq client_d2cs_charladderreq;
270     t_client_d2cs_charlistreq client_d2cs_charlistreq;
271     t_d2cs_client_charlistreply d2cs_client_charlistreply;
272     t_client_d2cs_charlistreq_110 client_d2cs_charlistreq_110;
273     t_d2cs_client_charlistreply_110 d2cs_client_charlistreply_110;
274     t_client_d2cs_convertcharreq client_d2cs_convertcharreq;
275     t_d2cs_client_convertcharreply d2cs_client_convertcharreply;
276     // 5/14/02 - THEUNDYING - USED FOR THE FRIENDS LIST
277     // [zap-zero] 20020516
278    
279     t_client_friendslistreq client_friendslistreq;
280     t_server_friendslistreply server_friendslistreply;
281     t_client_friendinforeq client_friendinforeq;
282     t_server_friendinforeply server_friendinforeply;
283     t_server_friendadd_ack server_friendadd_ack;
284     t_server_frienddel_ack server_frienddel_ack;
285     t_server_friendmove_ack server_friendmove_ack;
286    
287     // 5/19/02 - THEUNDYING - used for arranged teams
288     t_client_arrangedteam_friendscreen client_arrangedteam_friendscreen;
289     t_server_arrangedteam_friendscreen server_arrangedteam_friendscreen;
290     t_client_arrangedteam_invite_friend client_arrangedteam_invite_friend;
291     t_server_arrangedteam_invite_friend_ack server_arrangedteam_invite_friend_ack;
292     t_server_arrangedteam_send_invite server_arrangedteam_send_invite;
293     t_client_arrangedteam_accept_invite client_arrangedteam_accept_invite;
294     t_client_arrangedteam_accept_decline_invite client_arrangedteam_accept_decline_invite;
295     t_server_arrangedteam_member_decline server_arrangedteam_member_decline;
296     // 5/24/02 - THEUNDYING - updates for ANONGAME PROFILE PACKET
297     t_client_findanongame_profile client_findanongame_profile;
298    
299     /* dizzy : war3 1.03 has changed format */
300     t_server_findanongame_profile2 server_findanongame_profile2;
301    
302     // [zap-zero] 20020529
303     t_client_w3route_req client_w3route_req;
304     t_server_w3route_ack server_w3route_ack;
305     t_server_w3route_playerinfo server_w3route_playerinfo;
306     t_server_w3route_levelinfo server_w3route_levelinfo;
307     t_server_w3route_startgame1 server_w3route_startgame1;
308     t_server_w3route_startgame2 server_w3route_startgame2;
309     t_client_w3route_loadingdone client_w3route_loadingdone;
310     t_server_w3route_loadingack server_w3route_loadingack;
311     t_client_w3route_connected client_w3route_connected;
312     t_server_w3route_echoreq server_w3route_echoreq;
313     t_client_w3route_abort client_w3route_abort;
314     t_server_w3route_ready server_w3route_host;
315     t_client_w3route_gameresult client_w3route_gameresult;
316    
317     t_client_findanongame_inforeq client_findanongame_inforeq;
318     t_server_findanongame_inforeply server_findanongame_inforeply;
319    
320     t_client_w3xp_clan_invitereq client_w3xp_clan_invitereq;
321     t_server_w3xp_clan_invitereply server_w3xp_clan_invitereply;
322     t_server_w3xp_clan_invitereq server_w3xp_clan_invitereq;
323     t_client_w3xp_clan_invitereply client_w3xp_clan_invitereply;
324     t_client_w3xp_clan_disbandreq client_w3xp_clan_disbandreq;
325     t_server_w3xp_clan_disbandreply server_w3xp_clan_disbandreply;
326     t_client_w3xp_clan_motdchg client_w3xp_clan_motdchg;
327     t_client_w3xp_clan_motdreq client_w3xp_clan_motdreq;
328     t_server_w3xp_clan_motdreply server_w3xp_clan_motdreply;
329     t_client_w3xp_clanmemberlist_req client_w3xp_clanmemberlist_req;
330     t_server_w3xp_clanmemberlist_reply server_w3xp_clanmemberlist_reply;
331     t_client_w3xp_clan_createreq client_w3xp_clan_createreq;
332     t_server_w3xp_clan_createreply server_w3xp_clan_createreply;
333     t_client_w3xp_clan_createinvitereq client_w3xp_clan_createinvitereq;
334     t_server_w3xp_clan_createinvitereply server_w3xp_clan_createinvitereply;
335     t_server_w3xp_clan_createinvitereq server_w3xp_clan_createinvitereq;
336     t_client_w3xp_clan_createinvitereply client_w3xp_clan_createinvitereply;
337     t_server_w3xp_clan_clanack server_w3xp_clan_clanack;
338     t_server_w3xp_clanmemberupdate server_w3xp_clanmemberupdate;
339     t_client_w3xp_clanmember_rankupdate_req client_w3xp_clanmember_rankupdate_req;
340     t_server_w3xp_clanmember_rankupdate_reply server_w3xp_clanmember_rankupdate_reply;
341     t_client_w3xp_clanmember_remove_req client_w3xp_clanmember_remove_req;
342     t_server_w3xp_clanmember_remove_reply server_w3xp_clanmember_remove_reply;
343     t_client_w3xp_clan_membernewchiefreq client_w3xp_clan_membernewchiefreq;
344     t_server_w3xp_clan_membernewchiefreply server_w3xp_clan_membernewchiefreply;
345     t_server_w3xp_clanquitnotify server_w3xp_clanquitnotify;
346     t_server_w3xp_clanmember_removed_notify server_w3xp_clanmember_removed_notify;
347    
348     t_server_findanongame_iconreply server_findanongame_iconreply;
349     t_client_changeclient client_changeclient;
350     /* restructure anongame [Omega] */
351     t_client_anongame client_anongame;
352     t_server_anongame_search_reply server_anongame_search_reply;
353     t_client_anongame_tournament_request client_anongame_tournament_request;
354     t_server_anongame_tournament_reply server_anongame_tournament_reply;
355    
356     /* new packets supporting D2 1.10 & War3 1.13 */
357     t_client_setemailreply client_setemailreq;
358     t_server_setemailreq server_setemailreply;
359     t_client_getpasswordreq client_getpasswordreq;
360     t_client_changeemailreq client_changeemailreq;
361     t_client_crashdump client_crashdump;
362     t_client_claninforeq client_claninforeq;
363     t_server_claninforeply server_claninforeply;
364     t_client_findanongame_profile_clan client_findanongame_profile_clan;
365     t_server_findanongame_profile_clan server_findanongame_profile_clan;
366     } u;
367     } t_packet;
368    
369     #endif
370    
371     /*****/
372     #ifndef JUST_NEED_TYPES
373     #ifndef INCLUDED_PACKET_PROTOS
374     #define INCLUDED_PACKET_PROTOS
375    
376     #include "common/lstr.h"
377    
378     extern t_packet * packet_create(t_packet_class class) ;
379     extern void packet_destroy(t_packet const * packet);
380     extern t_packet * packet_add_ref(t_packet * packet);
381     extern void packet_del_ref(t_packet * packet);
382     extern t_packet_class packet_get_class(t_packet const * packet);
383     extern char const * packet_get_class_str(t_packet const * packet);
384     extern int packet_set_class(t_packet * packet, t_packet_class class);
385     extern unsigned int packet_get_type(t_packet const * packet);
386     extern char const * packet_get_type_str(t_packet const * packet, t_packet_dir dir);
387     extern int packet_set_type(t_packet * packet, unsigned int type);
388     extern unsigned int packet_get_size(t_packet const * packet);
389     extern int packet_set_size(t_packet * packet, unsigned int size);
390     extern unsigned int packet_get_header_size(t_packet const * packet);
391     extern unsigned int packet_get_flags(t_packet const * packet);
392     extern int packet_set_flags(t_packet * packet, unsigned int flags);
393     extern int packet_append_string(t_packet * packet, char const * str);
394     extern int packet_append_ntstring(t_packet * packet, char const * str);
395     extern int packet_append_lstr(t_packet * packet, t_lstr *lstr);
396     extern int packet_append_data(t_packet * packet, void const * data, unsigned int len);
397     extern void const * packet_get_raw_data_const(t_packet const * packet, unsigned int offset);
398     extern void * packet_get_raw_data(t_packet * packet, unsigned int offset);
399     extern void * packet_get_raw_data_build(t_packet * packet, unsigned int offset);
400     extern char const * packet_get_str_const(t_packet const * packet, unsigned int offset, unsigned int maxlen);
401     extern void const * packet_get_data_const(t_packet const * packet, unsigned int offset, unsigned int len);
402     extern t_packet * packet_duplicate(t_packet const * src);
403    
404     #endif
405     #endif

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1