aboutsummaryrefslogtreecommitdiffstats
path: root/packet-aim-generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'packet-aim-generic.c')
-rw-r--r--packet-aim-generic.c66
1 files changed, 52 insertions, 14 deletions
diff --git a/packet-aim-generic.c b/packet-aim-generic.c
index 6f7202a93b..c4b557b31e 100644
--- a/packet-aim-generic.c
+++ b/packet-aim-generic.c
@@ -2,7 +2,7 @@
* Routines for AIM Instant Messenger (OSCAR) dissection, SNAC Family Generic
* Copyright 2004, Jelmer Vernooij <jelmer@samba.org>
*
- * $Id: packet-aim-generic.c,v 1.2 2004/04/20 04:48:31 guy Exp $
+ * $Id: packet-aim-generic.c,v 1.3 2004/04/26 18:21:09 obiot Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -54,7 +54,6 @@
#define FAMILY_GENERIC_RATEINFOREQ 0x0006
#define FAMILY_GENERIC_RATEINFO 0x0007
#define FAMILY_GENERIC_RATEINFOACK 0x0008
-#define FAMILY_GENERIC_UNKNOWNx09 0x0009
#define FAMILY_GENERIC_RATECHANGE 0x000a
#define FAMILY_GENERIC_SERVERPAUSE 0x000b
#define FAMILY_GENERIC_CLIENTPAUSEACK 0x000c
@@ -84,7 +83,6 @@ static const value_string aim_fnac_family_generic[] = {
{ FAMILY_GENERIC_RATEINFOREQ, "Rate Info Request" },
{ FAMILY_GENERIC_RATEINFO, "Rate Info" },
{ FAMILY_GENERIC_RATEINFOACK, "Rate Info Ack" },
- { FAMILY_GENERIC_UNKNOWNx09, "Unknown" },
{ FAMILY_GENERIC_RATECHANGE, "Rate Change" },
{ FAMILY_GENERIC_SERVERPAUSE, "Server Pause" },
{ FAMILY_GENERIC_CLIENTPAUSEACK, "Client Pause Ack" },
@@ -98,8 +96,8 @@ static const value_string aim_fnac_family_generic[] = {
{ FAMILY_GENERIC_SETPRIVFLAGS, "Set Privilege Flags" },
{ FAMILY_GENERIC_WELLKNOWNURL, "Well Known URL" },
{ FAMILY_GENERIC_NOP, "noop" },
- { FAMILY_GENERIC_CAPABILITIES, "Capabilities (ICQ specific)" },
- { FAMILY_GENERIC_CAPACK, "Capabilities Ack (ICQ specific)" },
+ { FAMILY_GENERIC_CAPABILITIES, "Capabilities" },
+ { FAMILY_GENERIC_CAPACK, "Capabilities Ack" },
{ FAMILY_GENERIC_SETSTATUS, "Set Status (ICQ specific)" },
{ FAMILY_GENERIC_CLIENTVERREQ, "Client Verification Requst" },
{ FAMILY_GENERIC_CLIENTVERREPL, "Client Verification Reply" },
@@ -171,6 +169,12 @@ static int hf_generic_migration_numfams = -1;
static int hf_generic_priv_flags = -1;
static int hf_generic_allow_idle_see = -1;
static int hf_generic_allow_member_see = -1;
+static int hf_generic_selfinfo_warninglevel = -1;
+static int hf_generic_evil_new_warn_level = -1;
+static int hf_generic_idle_time = -1;
+static int hf_generic_client_ver_req_offset = -1;
+static int hf_generic_client_ver_req_length = -1;
+static int hf_generic_client_ver_req_hash = -1;
/* Initialize the subtree pointers */
static gint ett_generic_clientready = -1;
@@ -310,7 +314,7 @@ static int dissect_aim_snac_generic(tvbuff_t *tvb, packet_info *pinfo,
return offset;
case FAMILY_GENERIC_REDIRECT:
while(tvb_length_remaining(tvb, offset) > 0) {
- offset = dissect_aim_tlv(tvb, pinfo, offset, gen_tree);
+ offset = dissect_aim_tlv(tvb, pinfo, offset, gen_tree, client_tlvs);
}
return offset;
case FAMILY_GENERIC_CAPABILITIES:
@@ -340,7 +344,7 @@ static int dissect_aim_snac_generic(tvbuff_t *tvb, packet_info *pinfo,
2, tvb_get_ntohs(tvb, offset));
offset+=2;
while(tvb_length_remaining(tvb, offset) > 0) {
- offset = dissect_aim_tlv(tvb, pinfo, offset, gen_tree);
+ offset = dissect_aim_tlv(tvb, pinfo, offset, gen_tree, motd_tlvs);
}
return offset;
@@ -352,9 +356,6 @@ static int dissect_aim_snac_generic(tvbuff_t *tvb, packet_info *pinfo,
offset+=2;
}
return offset;
- case FAMILY_GENERIC_UNKNOWNx09:
- /* Unknown: FIXME: */
- return offset;
case FAMILY_GENERIC_RATECHANGE:
proto_tree_add_uint(gen_tree, hf_generic_ratechange_msg, tvb, offset, 2, tvb_get_ntohs(tvb, offset));
offset+=2;
@@ -390,7 +391,7 @@ static int dissect_aim_snac_generic(tvbuff_t *tvb, packet_info *pinfo,
}
while(tvb_length_remaining(tvb, offset) > 0) {
- offset = dissect_aim_tlv(tvb, pinfo, offset, gen_tree);
+ offset = dissect_aim_tlv(tvb, pinfo, offset, gen_tree, client_tlvs);
}
return offset;
@@ -404,15 +405,34 @@ static int dissect_aim_snac_generic(tvbuff_t *tvb, packet_info *pinfo,
offset+=4;
}
return offset;
+ case FAMILY_GENERIC_SELFINFO:
+ offset = dissect_aim_buddyname(tvb, pinfo, offset, gen_tree);
+ proto_tree_add_item(gen_tree, hf_generic_selfinfo_warninglevel, tvb, offset, 2, FALSE);
+ offset += 2;
+ return dissect_aim_tlv_list(tvb, pinfo, offset, gen_tree, onlinebuddy_tlvs);
case FAMILY_GENERIC_EVIL:
- /* FIXME */
+ proto_tree_add_item(gen_tree, hf_generic_evil_new_warn_level, tvb, offset, 2, FALSE);
+ while(tvb_length_remaining(tvb, offset)) {
+ offset = dissect_aim_userinfo(tvb, pinfo, offset, gen_tree);
+ }
return offset;
- case FAMILY_GENERIC_SELFINFO:
case FAMILY_GENERIC_SETIDLE:
+ proto_tree_add_item(gen_tree, hf_generic_idle_time, tvb, offset, 2, FALSE);
+ return 4;
case FAMILY_GENERIC_SETSTATUS:
- case FAMILY_GENERIC_WELLKNOWNURL:
+ while(tvb_length_remaining(tvb, offset) > 0) {
+ offset = dissect_aim_tlv(tvb, pinfo, offset, gen_tree, onlinebuddy_tlvs);
+ }
+ return offset;
case FAMILY_GENERIC_CLIENTVERREQ:
+ proto_tree_add_item(gen_tree, hf_generic_client_ver_req_offset, tvb, offset, 4, FALSE);
+ offset+=4;
+ proto_tree_add_item(gen_tree, hf_generic_client_ver_req_length, tvb, offset, 4, FALSE);
+ return offset+4;
case FAMILY_GENERIC_CLIENTVERREPL:
+ proto_tree_add_item(gen_tree, hf_generic_client_ver_req_hash, tvb, offset, 16, FALSE);
+ return 16;
+ case FAMILY_GENERIC_WELLKNOWNURL:
/* FIXME */
return 0;
default: return 0;
@@ -489,6 +509,24 @@ proto_register_aim_generic(void)
{ &hf_generic_allow_member_see,
{ "Allow other users to see how long account has been a member", "aim.privilege_flags.allow_member", FT_BOOLEAN, 32, TFS(&flags_set_truth), 0x0002, "", HFILL },
},
+ { &hf_generic_selfinfo_warninglevel,
+ { "Warning level", "aim.selfinfo.warn_level", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL },
+ },
+ { &hf_generic_evil_new_warn_level,
+ { "New warning level", "aim.evil.new_warn_level", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL },
+ },
+ { &hf_generic_idle_time,
+ { "Idle time (seconds)", "aim.idle_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL },
+ },
+ { &hf_generic_client_ver_req_offset,
+ { "Client Verification Request Offset", "aim.client_verification.offset", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL },
+ },
+ { &hf_generic_client_ver_req_length,
+ { "Client Verification Request Length", "aim.client_verification.length", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL },
+ },
+ { &hf_generic_client_ver_req_hash,
+ { "Client Verification MD5 Hash", "aim.client_verification.hash", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL },
+ },
};
/* Setup protocol subtree array */