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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (vendor branch)
Tue Jun 6 03:41:38 2006 UTC (19 years, 9 months ago) by sysadm
Branch: GNU, MAIN
CVS Tags: arelease, HEAD
Changes since 1.1: +0 -0 lines
Content type: text/x-chdr
Error occurred while calculating annotation data.
no message

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