static int dissect_aim_snac_signon_signon(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { guint8 buddyname_length = 0; int offset = 0; guchar buddyname[MAX_BUDDYNAME_LENGTH + 1]; /* Info Type */ proto_tree_add_item(tree, hf_aim_infotype, tvb, offset, 2, FALSE); offset += 2; /* Unknown */ offset += 1; /* Buddy Name */ buddyname_length = aim_get_buddyname( buddyname, tvb, offset, offset + 1 ); if (check_col(pinfo->cinfo, COL_INFO)) { col_append_fstr(pinfo->cinfo, COL_INFO, " Username: %s", format_text(buddyname, buddyname_length)); } if(tree) { offset+=dissect_aim_buddyname(tvb, pinfo, offset, tree); } return offset; }
static int dissect_aim_msg_outgoing(tvbuff_t *tvb, packet_info *pinfo, proto_tree *msg_tree) { int offset = 0; const aim_tlv *aim_ch_tlvs = NULL; guint16 channel_id; guchar buddyname[MAX_BUDDYNAME_LENGTH+1]; int buddyname_length; /* ICBM Cookie */ proto_tree_add_item(msg_tree, hf_aim_icbm_cookie, tvb, offset, 8, ENC_NA); offset += 8; /* Message Channel ID */ channel_id = tvb_get_ntohs(tvb, offset); proto_tree_add_item(msg_tree, hf_aim_message_channel_id, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; /* Add the outgoing username to the info column */ buddyname_length = aim_get_buddyname(buddyname, tvb, offset, offset + 1); col_append_fstr(pinfo->cinfo, COL_INFO, " to: %s", format_text(buddyname, buddyname_length)); offset = dissect_aim_buddyname(tvb, pinfo, offset, msg_tree); switch(channel_id) { case ICBM_CHANNEL_IM: aim_ch_tlvs = aim_messaging_incoming_ch1_tlvs; break; case ICBM_CHANNEL_RENDEZVOUS: aim_ch_tlvs = aim_messaging_incoming_ch2_tlvs; break; default: return offset; } return dissect_aim_tlv_sequence(tvb, pinfo, offset, msg_tree, aim_ch_tlvs); }
static int dissect_aim_buddylist_offgoing(tvbuff_t *tvb, packet_info *pinfo, proto_tree *buddy_tree) { guchar buddyname[MAX_BUDDYNAME_LENGTH+1]; int offset = 0; int buddyname_length = aim_get_buddyname( buddyname, tvb, offset, offset + 1 ); col_set_str(pinfo->cinfo, COL_INFO, "Offgoing Buddy"); col_append_fstr(pinfo->cinfo, COL_INFO, ": %s", format_text(buddyname, buddyname_length)); offset += dissect_aim_buddyname(tvb, pinfo, offset, buddy_tree); /* Warning level */ proto_tree_add_item(buddy_tree, hf_aim_userinfo_warninglevel, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; return dissect_aim_tlv_list(tvb, pinfo, offset, buddy_tree, aim_onlinebuddy_tlvs); }
int offset = 0; while(tvb_length_remaining(tvb, offset) > 0) { offset = dissect_aim_userinfo(tvb, pinfo, offset, chat_tree); } return offset; } static int dissect_aim_chat_outgoing_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *chat_tree _U_) { guchar *buddyname; guchar *msg; int buddyname_length; buddyname=(guchar *)ep_alloc(MAX_BUDDYNAME_LENGTH+1); msg=(guchar *)ep_alloc(1000); buddyname_length = aim_get_buddyname( buddyname, tvb, 30, 31 ); /* channel message from client */ aim_get_message( msg, tvb, 40 + buddyname_length, tvb_length(tvb) - 40 - buddyname_length ); col_append_fstr(pinfo->cinfo, COL_INFO, " -> %s", msg); return tvb_length(tvb); } static int dissect_aim_chat_incoming_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *chat_tree) { guchar *buddyname; guchar *msg;