TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
WorldSession::DosProtection Class Reference

#include <WorldSession.h>

Public Member Functions

 DosProtection (WorldSession *s)
 
bool EvaluateOpcode (WorldPacket &p, time_t time) const
 

Protected Types

enum  Policy { POLICY_LOG, POLICY_KICK, POLICY_BAN }
 

Protected Member Functions

uint32 GetMaxPacketCounterAllowed (uint16 opcode) const
 

Protected Attributes

WorldSessionSession
 

Private Types

typedef std::unordered_map
< uint16, PacketCounter
PacketThrottlingMap
 

Private Member Functions

 DosProtection (DosProtection const &right)=delete
 
DosProtectionoperator= (DosProtection const &right)=delete
 

Private Attributes

Policy _policy
 
PacketThrottlingMap _PacketThrottlingMap
 

Friends

class World
 

Member Typedef Documentation

Constructor & Destructor Documentation

WorldSession::DosProtection::DosProtection ( WorldSession s)
inline
1752 : Session(s), _policy((Policy)sWorld->getIntConfig(CONFIG_PACKET_SPOOF_POLICY)) { }
Definition: World.h:358
WorldSession * Session
Definition: WorldSession.h:1764
#define sWorld
Definition: World.h:887
Policy _policy
Definition: WorldSession.h:1767
Policy
Definition: WorldSession.h:1755
WorldSession::DosProtection::DosProtection ( DosProtection const right)
privatedelete

Member Function Documentation

bool WorldSession::DosProtection::EvaluateOpcode ( WorldPacket p,
time_t  time 
) const
1280 {
1281  uint32 maxPacketCounterAllowed = GetMaxPacketCounterAllowed(p.GetOpcode());
1282 
1283  // Return true if there no limit for the opcode
1284  if (!maxPacketCounterAllowed)
1285  return true;
1286 
1287  PacketCounter& packetCounter = _PacketThrottlingMap[p.GetOpcode()];
1288  if (packetCounter.lastReceiveTime != time)
1289  {
1290  packetCounter.lastReceiveTime = time;
1291  packetCounter.amountCounter = 0;
1292  }
1293 
1294  // Check if player is flooding some packets
1295  if (++packetCounter.amountCounter <= maxPacketCounterAllowed)
1296  return true;
1297 
1298  TC_LOG_WARN("network", "AntiDOS: Account %u, IP: %s, Ping: %u, Character: %s, flooding packet (opc: %s (0x%X), count: %u)",
1300  opcodeTable[static_cast<OpcodeClient>(p.GetOpcode())]->Name, p.GetOpcode(), packetCounter.amountCounter);
1301 
1302  switch (_policy)
1303  {
1304  case POLICY_LOG:
1305  return true;
1306  case POLICY_KICK:
1307  {
1308  TC_LOG_WARN("network", "AntiDOS: Player kicked!");
1309  Session->KickPlayer();
1310  return false;
1311  }
1312  case POLICY_BAN:
1313  {
1314  BanMode bm = (BanMode)sWorld->getIntConfig(CONFIG_PACKET_SPOOF_BANMODE);
1315  uint32 duration = sWorld->getIntConfig(CONFIG_PACKET_SPOOF_BANDURATION); // in seconds
1316  std::string nameOrIp = "";
1317  switch (bm)
1318  {
1319  case BAN_CHARACTER: // not supported, ban account
1320  case BAN_ACCOUNT: (void)sAccountMgr->GetName(Session->GetAccountId(), nameOrIp); break;
1321  case BAN_IP: nameOrIp = Session->GetRemoteAddress(); break;
1322  }
1323  sWorld->BanAccount(bm, nameOrIp, duration, "DOS (Packet Flooding/Spoofing", "Server: AutoDOS");
1324  TC_LOG_WARN("network", "AntiDOS: Player automatically banned for %u seconds.", duration);
1325  Session->KickPlayer();
1326  return false;
1327  }
1328  default: // invalid policy
1329  return true;
1330  }
1331 }
Definition: WorldSession.h:1757
Definition: WorldSession.h:1759
uint32 GetMaxPacketCounterAllowed(uint16 opcode) const
Definition: WorldSession.cpp:1334
OpcodeTable opcodeTable
Definition: Opcodes.cpp:49
Definition: WorldSession.h:875
std::string const & GetPlayerName() const
Definition: WorldSession.cpp:190
WorldSession * Session
Definition: WorldSession.h:1764
uint32 amountCounter
Definition: WorldSession.h:878
uint32 GetOpcode() const
Definition: WorldPacket.h:79
BanMode
Ban function modes.
Definition: SharedDefines.h:4533
Definition: SharedDefines.h:4537
uint32 GetAccountId() const
Definition: WorldSession.h:922
#define sWorld
Definition: World.h:887
Definition: WorldSession.h:1758
void KickPlayer()
Kick a player out of the World.
Definition: WorldSession.cpp:646
Definition: SharedDefines.h:4535
Policy _policy
Definition: WorldSession.h:1767
PacketThrottlingMap _PacketThrottlingMap
Definition: WorldSession.h:1770
std::string const & GetRemoteAddress() const
Definition: WorldSession.h:932
uint32_t uint32
Definition: Define.h:150
Definition: SharedDefines.h:4536
#define sAccountMgr
Definition: AccountMgr.h:98
uint32 GetLatency() const
Definition: WorldSession.h:1063
time_t lastReceiveTime
Definition: WorldSession.h:877
#define TC_LOG_WARN(filterType__,...)
Definition: Log.h:204
OpcodeClient
Definition: Opcodes.h:46
Definition: World.h:359
Definition: World.h:360

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed ( uint16  opcode) const
protected
1335 {
1336  uint32 maxPacketCounterAllowed;
1337  switch (opcode)
1338  {
1339  // CPU usage sending 2000 packets/second on a 3.70 GHz 4 cores on Win x64
1340  // [% CPU mysqld] [%CPU worldserver RelWithDebInfo]
1341  case CMSG_PLAYER_LOGIN: // 0 0.5
1342  case CMSG_QUERY_PLAYER_NAME: // 0 1
1343  case CMSG_QUERY_PET_NAME: // 0 1
1344  case CMSG_QUERY_NPC_TEXT: // 0 1
1345  case CMSG_ATTACK_STOP: // 0 1
1346  case CMSG_QUERY_TIME: // 0 1
1347  case CMSG_QUERY_CORPSE_TRANSPORT: // 0 1
1348  case CMSG_MOVE_TIME_SKIPPED: // 0 1
1349  case CMSG_QUERY_NEXT_MAIL_TIME: // 0 1
1350  case CMSG_SET_SHEATHED: // 0 1
1351  case CMSG_UPDATE_RAID_TARGET: // 0 1
1352  case CMSG_LOGOUT_REQUEST: // 0 1
1353  case CMSG_PET_RENAME: // 0 1
1354  case CMSG_QUEST_GIVER_REQUEST_REWARD: // 0 1
1355  case CMSG_COMPLETE_CINEMATIC: // 0 1
1356  case CMSG_BANKER_ACTIVATE: // 0 1
1357  case CMSG_BUY_BANK_SLOT: // 0 1
1358  case CMSG_OPT_OUT_OF_LOOT: // 0 1
1359  case CMSG_DUEL_RESPONSE: // 0 1
1360  case CMSG_CALENDAR_COMPLAIN: // 0 1
1361  case CMSG_QUERY_QUEST_INFO: // 0 1.5
1362  case CMSG_QUERY_GAME_OBJECT: // 0 1.5
1363  case CMSG_QUERY_CREATURE: // 0 1.5
1364  case CMSG_QUEST_GIVER_STATUS_QUERY: // 0 1.5
1365  case CMSG_QUERY_GUILD_INFO: // 0 1.5
1366  case CMSG_TAXI_NODE_STATUS_QUERY: // 0 1.5
1367  case CMSG_TAXI_QUERY_AVAILABLE_NODES: // 0 1.5
1368  case CMSG_QUEST_GIVER_QUERY_QUEST: // 0 1.5
1369  case CMSG_QUERY_PAGE_TEXT: // 0 1.5
1370  case CMSG_GUILD_BANK_TEXT_QUERY: // 0 1.5
1372  case CMSG_MOVE_SET_FACING: // 0 1.5
1373  case CMSG_REQUEST_PARTY_MEMBER_STATS: // 0 1.5
1374  case CMSG_QUEST_GIVER_COMPLETE_QUEST: // 0 1.5
1375  case CMSG_SET_ACTION_BUTTON: // 0 1.5
1376  case CMSG_RESET_INSTANCES: // 0 1.5
1377  case CMSG_HEARTH_AND_RESURRECT: // 0 1.5
1378  case CMSG_TOGGLE_PVP: // 0 1.5
1379  case CMSG_PET_ABANDON: // 0 1.5
1380  case CMSG_ACTIVATE_TAXI: // 0 1.5
1381  case CMSG_SELF_RES: // 0 1.5
1382  case CMSG_UNLEARN_SKILL: // 0 1.5
1383  case CMSG_SAVE_EQUIPMENT_SET: // 0 1.5
1384  case CMSG_DELETE_EQUIPMENT_SET: // 0 1.5
1385  case CMSG_DISMISS_CRITTER: // 0 1.5
1386  case CMSG_REPOP_REQUEST: // 0 1.5
1387  case CMSG_PARTY_INVITE: // 0 1.5
1388  case CMSG_PARTY_INVITE_RESPONSE: // 0 1.5
1389  case CMSG_PARTY_UNINVITE: // 0 1.5
1390  case CMSG_LEAVE_GROUP: // 0 1.5
1391  case CMSG_BATTLEMASTER_JOIN_ARENA: // 0 1.5
1392  case CMSG_BATTLEFIELD_LEAVE: // 0 1.5
1393  case CMSG_GUILD_BANK_LOG_QUERY: // 0 2
1394  case CMSG_LOGOUT_CANCEL: // 0 2
1395  case CMSG_ALTER_APPEARANCE: // 0 2
1396  case CMSG_QUEST_CONFIRM_ACCEPT: // 0 2
1397  case CMSG_GUILD_EVENT_LOG_QUERY: // 0 2.5
1399  case CMSG_BEGIN_TRADE: // 0 2.5
1400  case CMSG_INITIATE_TRADE: // 0 3
1401  case CMSG_CHAT_ADDON_MESSAGE_GUILD: // 0 3.5
1402  case CMSG_CHAT_ADDON_MESSAGE_OFFICER: // 0 3.5
1403  case CMSG_CHAT_ADDON_MESSAGE_PARTY: // 0 3.5
1404  case CMSG_CHAT_ADDON_MESSAGE_RAID: // 0 3.5
1405  case CMSG_CHAT_ADDON_MESSAGE_WHISPER: // 0 3.5
1406  case CMSG_CHAT_MESSAGE_AFK: // 0 3.5
1407  case CMSG_CHAT_MESSAGE_CHANNEL: // 0 3.5
1408  case CMSG_CHAT_MESSAGE_DND: // 0 3.5
1409  case CMSG_CHAT_MESSAGE_EMOTE: // 0 3.5
1410  case CMSG_CHAT_MESSAGE_GUILD: // 0 3.5
1411  case CMSG_CHAT_MESSAGE_OFFICER: // 0 3.5
1412  case CMSG_CHAT_MESSAGE_PARTY: // 0 3.5
1413  case CMSG_CHAT_MESSAGE_RAID: // 0 3.5
1414  case CMSG_CHAT_MESSAGE_RAID_WARNING: // 0 3.5
1415  case CMSG_CHAT_MESSAGE_SAY: // 0 3.5
1416  case CMSG_CHAT_MESSAGE_WHISPER: // 0 3.5
1417  case CMSG_CHAT_MESSAGE_YELL: // 0 3.5
1418  case CMSG_INSPECT: // 0 3.5
1419  case CMSG_AREA_SPIRIT_HEALER_QUERY: // not profiled
1420  case CMSG_STAND_STATE_CHANGE: // not profiled
1421  case CMSG_RANDOM_ROLL: // not profiled
1422  case CMSG_TIME_SYNC_RESPONSE: // not profiled
1423  case CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK: // not profiled
1424  {
1425  // "0" is a magic number meaning there's no limit for the opcode.
1426  // All the opcodes above must cause little CPU usage and no sync/async database queries at all
1427  maxPacketCounterAllowed = 0;
1428  break;
1429  }
1430 
1431  case CMSG_QUEST_GIVER_ACCEPT_QUEST: // 0 4
1432  case CMSG_QUEST_LOG_REMOVE_QUEST: // 0 4
1433  case CMSG_QUEST_GIVER_CHOOSE_REWARD: // 0 4
1434  case CMSG_SEND_CONTACT_LIST: // 0 5
1435  case CMSG_AUTOBANK_ITEM: // 0 6
1436  case CMSG_AUTOSTORE_BANK_ITEM: // 0 6
1437  case CMSG_WHO: // 0 7
1438  case CMSG_RIDE_VEHICLE_INTERACT: // 0 8
1439  case CMSG_MOVE_HEARTBEAT:
1440  {
1441  maxPacketCounterAllowed = 200;
1442  break;
1443  }
1444 
1445  case CMSG_GUILD_SET_MEMBER_NOTE: // 1 2 1 async db query
1446  case CMSG_SET_CONTACT_NOTES: // 1 2.5 1 async db query
1447  case CMSG_CALENDAR_GET: // 0 1.5 medium upload bandwidth usage
1448  case CMSG_GUILD_BANK_QUERY_TAB: // 0 3.5 medium upload bandwidth usage
1449  case CMSG_QUERY_INSPECT_ACHIEVEMENTS: // 0 13 high upload bandwidth usage
1450  case CMSG_GAME_OBJ_REPORT_USE: // not profiled
1451  case CMSG_GAME_OBJ_USE: // not profiled
1452  case CMSG_DECLINE_PETITION: // not profiled
1453  {
1454  maxPacketCounterAllowed = 50;
1455  break;
1456  }
1457 
1458  case CMSG_QUEST_POI_QUERY: // 0 25 very high upload bandwidth usage
1459  {
1460  maxPacketCounterAllowed = MAX_QUEST_LOG_SIZE;
1461  break;
1462  }
1463 
1464  case CMSG_SPELL_CLICK: // not profiled
1465  case CMSG_MOVE_DISMISS_VEHICLE: // not profiled
1466  {
1467  maxPacketCounterAllowed = 20;
1468  break;
1469  }
1470 
1471  case CMSG_SIGN_PETITION: // 9 4 2 sync 1 async db queries
1472  case CMSG_TURN_IN_PETITION: // 8 5.5 2 sync db query
1473  case CMSG_CHANGE_SUB_GROUP: // 6 5 1 sync 1 async db queries
1474  case CMSG_QUERY_PETITION: // 4 3.5 1 sync db query
1475  case CMSG_CHAR_CUSTOMIZE: // 5 5 1 sync db query
1476  case CMSG_CHAR_RACE_OR_FACTION_CHANGE: // 5 5 1 sync db query
1477  case CMSG_CHAR_DELETE: // 4 4 1 sync db query
1478  case CMSG_DEL_FRIEND: // 7 5 1 async db query
1479  case CMSG_ADD_FRIEND: // 6 4 1 async db query
1480  case CMSG_CHARACTER_RENAME_REQUEST: // 5 3 1 async db query
1481  case CMSG_BUG_REPORT: // 1 1 1 async db query
1482  case CMSG_SET_PARTY_LEADER: // 1 2 1 async db query
1483  case CMSG_CONVERT_RAID: // 1 5 1 async db query
1484  case CMSG_SET_ASSISTANT_LEADER: // 1 2 1 async db query
1485  case CMSG_CALENDAR_ADD_EVENT: // 21 10 2 async db query
1486  case CMSG_MOVE_CHANGE_VEHICLE_SEATS: // not profiled
1487  case CMSG_PETITION_BUY: // not profiled 1 sync 1 async db queries
1488  case CMSG_REQUEST_VEHICLE_PREV_SEAT: // not profiled
1489  case CMSG_REQUEST_VEHICLE_NEXT_SEAT: // not profiled
1490  case CMSG_REQUEST_VEHICLE_SWITCH_SEAT: // not profiled
1491  case CMSG_REQUEST_VEHICLE_EXIT: // not profiled
1492  case CMSG_EJECT_PASSENGER: // not profiled
1493  case CMSG_ITEM_PURCHASE_REFUND: // not profiled
1494  case CMSG_SOCKET_GEMS: // not profiled
1495  case CMSG_WRAP_ITEM: // not profiled
1496  case CMSG_REPORT_PVP_PLAYER_AFK: // not profiled
1497  {
1498  maxPacketCounterAllowed = 10;
1499  break;
1500  }
1501 
1502  case CMSG_CREATE_CHARACTER: // 7 5 3 async db queries
1503  case CMSG_ENUM_CHARACTERS: // 22 3 2 async db queries
1504  case CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT: // 22 3 2 async db queries
1505  case CMSG_SUPPORT_TICKET_SUBMIT_BUG: // not profiled 1 async db query
1506  case CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION: // not profiled 1 async db query
1507  case CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT: // not profiled 1 async db query
1508  case CMSG_CALENDAR_UPDATE_EVENT: // not profiled
1509  case CMSG_CALENDAR_REMOVE_EVENT: // not profiled
1510  case CMSG_CALENDAR_COPY_EVENT: // not profiled
1511  case CMSG_CALENDAR_EVENT_INVITE: // not profiled
1512  case CMSG_CALENDAR_EVENT_SIGN_UP: // not profiled
1513  case CMSG_CALENDAR_EVENT_RSVP: // not profiled
1514  case CMSG_CALENDAR_EVENT_MODERATOR_STATUS: // not profiled
1515  case CMSG_CALENDAR_REMOVE_INVITE: // not profiled
1516  case CMSG_SET_LOOT_METHOD: // not profiled
1517  case CMSG_GUILD_INVITE_BY_NAME: // not profiled
1518  case CMSG_ACCEPT_GUILD_INVITE: // not profiled
1519  case CMSG_GUILD_DECLINE_INVITATION: // not profiled
1520  case CMSG_GUILD_LEAVE: // not profiled
1521  case CMSG_GUILD_DELETE: // not profiled
1522  case CMSG_GUILD_SET_GUILD_MASTER: // not profiled
1523  case CMSG_GUILD_UPDATE_MOTD_TEXT: // not profiled
1524  case CMSG_GUILD_SET_RANK_PERMISSIONS: // not profiled
1525  case CMSG_GUILD_ADD_RANK: // not profiled
1526  case CMSG_GUILD_DELETE_RANK: // not profiled
1527  case CMSG_GUILD_UPDATE_INFO_TEXT: // not profiled
1528  case CMSG_GUILD_BANK_DEPOSIT_MONEY: // not profiled
1529  case CMSG_GUILD_BANK_WITHDRAW_MONEY: // not profiled
1530  case CMSG_GUILD_BANK_BUY_TAB: // not profiled
1531  case CMSG_GUILD_BANK_UPDATE_TAB: // not profiled
1532  case CMSG_GUILD_BANK_SET_TAB_TEXT: // not profiled
1533  case CMSG_SAVE_GUILD_EMBLEM: // not profiled
1534  case CMSG_PETITION_RENAME_GUILD: // not profiled
1535  case CMSG_CONFIRM_RESPEC_WIPE: // not profiled
1536  case CMSG_SET_DUNGEON_DIFFICULTY: // not profiled
1537  case CMSG_SET_RAID_DIFFICULTY: // not profiled
1538  case CMSG_SET_PARTY_ASSIGNMENT: // not profiled
1539  case CMSG_DO_READY_CHECK: // not profiled
1540  {
1541  maxPacketCounterAllowed = 3;
1542  break;
1543  }
1544 
1545  case CMSG_GET_ITEM_PURCHASE_DATA: // not profiled
1546  {
1547  maxPacketCounterAllowed = PLAYER_SLOTS_COUNT;
1548  break;
1549  }
1550  default:
1551  {
1552  maxPacketCounterAllowed = 100;
1553  break;
1554  }
1555  }
1556 
1557  return maxPacketCounterAllowed;
1558 }
Definition: Opcodes.h:590
Definition: Opcodes.h:228
Definition: Opcodes.h:140
Definition: Opcodes.h:579
Definition: Opcodes.h:718
Definition: Opcodes.h:346
Definition: Opcodes.h:313
Definition: Opcodes.h:598
Definition: Opcodes.h:204
Definition: Opcodes.h:520
Definition: Opcodes.h:311
Definition: Opcodes.h:415
Definition: Opcodes.h:485
Definition: Opcodes.h:543
Definition: Opcodes.h:309
Definition: Opcodes.h:615
Definition: Opcodes.h:521
Definition: Opcodes.h:535
Definition: Opcodes.h:660
Definition: Opcodes.h:612
Definition: Opcodes.h:344
Definition: Opcodes.h:389
Definition: Opcodes.h:59
#define MAX_QUEST_LOG_SIZE
Definition: QuestDef.h:43
Definition: Opcodes.h:162
Definition: Opcodes.h:647
Definition: Opcodes.h:207
Definition: Opcodes.h:48
Definition: Opcodes.h:324
Definition: Opcodes.h:527
Definition: Opcodes.h:235
Definition: Opcodes.h:536
Definition: Opcodes.h:139
Definition: Opcodes.h:263
Definition: Opcodes.h:589
Definition: Opcodes.h:343
Definition: Opcodes.h:547
Definition: Opcodes.h:168
Definition: Opcodes.h:308
Definition: Opcodes.h:517
Definition: Opcodes.h:141
Definition: Opcodes.h:653
Definition: Opcodes.h:353
Definition: Opcodes.h:509
Definition: Opcodes.h:608
Definition: Opcodes.h:88
Definition: Opcodes.h:237
Definition: Opcodes.h:342
Definition: Opcodes.h:127
Definition: Opcodes.h:159
Definition: Opcodes.h:236
Definition: Opcodes.h:310
Definition: Opcodes.h:55
Definition: Opcodes.h:671
Definition: Opcodes.h:58
Definition: Opcodes.h:118
Definition: Opcodes.h:523
Definition: Opcodes.h:257
Definition: Opcodes.h:695
Definition: Opcodes.h:129
Definition: Opcodes.h:130
Definition: Opcodes.h:83
Definition: Opcodes.h:231
Definition: Opcodes.h:75
Definition: Opcodes.h:662
Definition: Opcodes.h:320
Definition: Opcodes.h:329
Definition: Opcodes.h:304
Definition: Opcodes.h:570
Definition: Opcodes.h:433
Definition: Opcodes.h:202
Definition: Opcodes.h:584
Definition: Opcodes.h:258
Definition: Opcodes.h:256
Definition: Opcodes.h:121
Definition: Opcodes.h:161
Definition: Opcodes.h:163
Definition: Opcodes.h:315
Definition: Opcodes.h:540
Definition: Opcodes.h:198
Definition: Opcodes.h:109
Definition: Opcodes.h:544
Definition: Opcodes.h:587
Definition: Opcodes.h:604
Definition: Opcodes.h:515
Definition: Opcodes.h:356
Definition: Opcodes.h:348
Definition: Opcodes.h:518
Definition: Opcodes.h:522
Definition: Opcodes.h:558
Definition: Opcodes.h:135
Definition: Opcodes.h:532
Definition: Opcodes.h:226
Definition: Opcodes.h:622
Definition: Opcodes.h:649
Definition: Opcodes.h:197
Definition: Opcodes.h:491
uint32_t uint32
Definition: Define.h:150
Definition: Opcodes.h:77
Definition: Opcodes.h:52
Definition: Opcodes.h:62
Definition: Opcodes.h:686
Definition: Opcodes.h:529
Definition: Opcodes.h:128
Definition: Opcodes.h:167
Definition: Opcodes.h:486
Definition: Opcodes.h:676
Definition: Opcodes.h:170
Definition: Opcodes.h:203
Definition: Opcodes.h:701
Definition: Opcodes.h:557
Definition: Opcodes.h:630
Definition: Opcodes.h:483
Definition: Opcodes.h:266
Definition: Opcodes.h:254
Definition: Opcodes.h:364
Definition: Opcodes.h:625
Definition: Opcodes.h:322
Definition: Opcodes.h:321
Definition: Opcodes.h:578
Definition: Opcodes.h:470
Definition: Opcodes.h:352
Definition: Opcodes.h:672
Definition: Opcodes.h:132
Definition: Opcodes.h:317
Definition: Opcodes.h:267
Definition: Opcodes.h:196
Definition: Opcodes.h:594
Definition: Opcodes.h:199
Definition: Opcodes.h:504
Definition: Opcodes.h:442
Definition: Opcodes.h:537
Definition: Opcodes.h:205
Definition: Opcodes.h:206
Definition: Opcodes.h:680
Definition: Opcodes.h:525
Definition: Opcodes.h:534
Definition: Opcodes.h:634
Definition: Opcodes.h:580
Definition: Opcodes.h:292
Definition: Opcodes.h:542
Definition: Opcodes.h:661
Definition: Opcodes.h:387
Definition: Opcodes.h:484
Definition: Opcodes.h:347
Definition: Opcodes.h:201
Definition: Opcodes.h:328
Definition: Opcodes.h:526
Definition: Opcodes.h:133
Definition: Opcodes.h:624
Definition: Opcodes.h:195
Definition: Opcodes.h:539
Definition: Opcodes.h:722
Definition: Opcodes.h:656
Definition: Opcodes.h:413
Definition: Opcodes.h:581
Definition: Opcodes.h:131
Definition: Opcodes.h:425
Definition: Opcodes.h:160
Definition: Opcodes.h:230
Definition: Opcodes.h:169
Definition: Opcodes.h:316
Definition: Opcodes.h:82
Definition: Opcodes.h:487
Definition: Opcodes.h:165
Definition: Opcodes.h:524
Definition: Opcodes.h:488

+ Here is the caller graph for this function:

DosProtection& WorldSession::DosProtection::operator= ( DosProtection const right)
privatedelete

Friends And Related Function Documentation

friend class World
friend

Member Data Documentation

PacketThrottlingMap WorldSession::DosProtection::_PacketThrottlingMap
mutableprivate
Policy WorldSession::DosProtection::_policy
private
WorldSession* WorldSession::DosProtection::Session
protected

The documentation for this class was generated from the following files: