diff --git a/epan/dissectors/packet-woww.c b/epan/dissectors/packet-woww.c index 6c94d856ef..327581f85c 100644 --- a/epan/dissectors/packet-woww.c +++ b/epan/dissectors/packet-woww.c @@ -69,6 +69,9 @@ static int hf_woww_opcode = -1; static int hf_woww_string_length = -1; +static int hf_woww_aura_mask = -1; +static int hf_woww_aura = -1; + /* AUTOGENERATED_START_HF */ static int hf_woww_absorb = -1; static int hf_woww_absorbed = -1; @@ -9010,6 +9013,18 @@ add_sized_cstring(ptvcursor_t* ptv, const int* hf) { ptvcursor_add(ptv, *hf, len, ENC_UTF_8); } +static void +add_aura_mask(ptvcursor_t* ptv) { + guint32 mask = 0; + ptvcursor_add_ret_uint(ptv, hf_woww_aura_mask, 4, ENC_LITTLE_ENDIAN, &mask); + + for (gint i = 0; i < 32; ++i) { + if (mask & (1 << i)) { + ptvcursor_add(ptv, hf_woww_aura, 4, ENC_LITTLE_ENDIAN); + } + } +} + static void add_packed_guid(ptvcursor_t* ptv, packet_info* pinfo) { tvbuff_t* tvb = ptvcursor_tvbuff(ptv); @@ -13669,6 +13684,7 @@ add_body_fields(guint32 opcode, ptvcursor_add(ptv, hf_woww_position_y_int, 2, ENC_LITTLE_ENDIAN); } if (mask & GROUP_UPDATE_FLAGS_FLAG_AURAS) { + add_aura_mask(ptv); } if (mask & GROUP_UPDATE_FLAGS_FLAG_PET_NAME) { add_cstring(ptv, &hf_woww_pet_name); @@ -13692,6 +13708,7 @@ add_body_fields(guint32 opcode, ptvcursor_add(ptv, hf_woww_pet_max_power, 2, ENC_LITTLE_ENDIAN); } if (mask & GROUP_UPDATE_FLAGS_FLAG_PET_AURAS) { + add_aura_mask(ptv); } break; case SMSG_PARTY_MEMBER_STATS_FULL: @@ -13726,6 +13743,7 @@ add_body_fields(guint32 opcode, ptvcursor_add(ptv, hf_woww_position_y_int, 2, ENC_LITTLE_ENDIAN); } if (mask & GROUP_UPDATE_FLAGS_FLAG_AURAS) { + add_aura_mask(ptv); } if (mask & GROUP_UPDATE_FLAGS_FLAG_PET_NAME) { add_cstring(ptv, &hf_woww_pet_name); @@ -13749,6 +13767,7 @@ add_body_fields(guint32 opcode, ptvcursor_add(ptv, hf_woww_pet_max_power, 2, ENC_LITTLE_ENDIAN); } if (mask & GROUP_UPDATE_FLAGS_FLAG_PET_AURAS) { + add_aura_mask(ptv); } break; case SMSG_PAUSE_MIRROR_TIMER: @@ -15114,6 +15133,16 @@ proto_register_woww(void) FT_UINT32, BASE_DEC_HEX, NULL, 0, NULL, HFILL } }, + { &hf_woww_aura_mask, + { "Aura Mask", "woww.aura_mask", + FT_UINT32, BASE_DEC_HEX, NULL, 0, + NULL, HFILL } + }, + { &hf_woww_aura, + { "Aura", "woww.aura", + FT_UINT32, BASE_DEC_HEX, NULL, 0, + NULL, HFILL } + }, /* AUTOGENERATED_START_REGISTER */ { &hf_woww_absorb, { "Absorb", "woww.absorb",