Minor whitespace, formatting & etc changes.
svn path=/trunk/; revision=52588
This commit is contained in:
parent
ee6916b838
commit
76d4b43a29
|
@ -136,8 +136,8 @@ dissect_mp4_mvhd_body(tvbuff_t *tvb, gint offset, gint len _U_,
|
|||
offset_start = offset;
|
||||
proto_tree_add_item(tree, hf_mp4_full_box_ver,
|
||||
tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset+=3;
|
||||
offset += 1;
|
||||
offset += 3;
|
||||
|
||||
return offset-offset_start;
|
||||
}
|
||||
|
@ -151,12 +151,12 @@ dissect_mp4_mfhd_body(tvbuff_t *tvb, gint offset, gint len _U_,
|
|||
offset_start = offset;
|
||||
proto_tree_add_item(tree, hf_mp4_full_box_ver,
|
||||
tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset+=3;
|
||||
offset += 1;
|
||||
offset += 3;
|
||||
|
||||
proto_tree_add_item(tree, hf_mp4_mfhd_seq_num,
|
||||
tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
offset+=4;
|
||||
offset += 4;
|
||||
|
||||
return offset-offset_start;
|
||||
}
|
||||
|
@ -176,13 +176,13 @@ dissect_mp4_ftyp_body(tvbuff_t *tvb, gint offset, gint len,
|
|||
tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
offset += 4;
|
||||
|
||||
while (offset-offset_start<len) {
|
||||
while ((offset-offset_start) < len) {
|
||||
proto_tree_add_item(tree, hf_mp4_ftyp_add_brand,
|
||||
tvb, offset, 4, ENC_ASCII|ENC_NA);
|
||||
offset += 4;
|
||||
}
|
||||
|
||||
return offset-offset_start;
|
||||
return offset - offset_start;
|
||||
}
|
||||
|
||||
/* dissect a box, return its (standard or extended) length or 0 for error */
|
||||
|
@ -207,7 +207,7 @@ dissect_mp4_box(guint32 parent_box_type _U_,
|
|||
- extended box types */
|
||||
|
||||
box_size = (guint64)tvb_get_ntohl(tvb, offset);
|
||||
if (box_size!=BOX_SIZE_EXTENDED && box_size<MIN_BOX_SIZE)
|
||||
if ((box_size != BOX_SIZE_EXTENDED) && (box_size < MIN_BOX_SIZE))
|
||||
return -1;
|
||||
|
||||
box_type = tvb_get_ntohl(tvb, offset+4);
|
||||
|
@ -219,7 +219,7 @@ dissect_mp4_box(guint32 parent_box_type _U_,
|
|||
|
||||
size_pi = proto_tree_add_item(box_tree, hf_mp4_box_size,
|
||||
tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
if (box_size==BOX_SIZE_EXTENDED)
|
||||
if (box_size == BOX_SIZE_EXTENDED)
|
||||
proto_item_append_text(size_pi, " (actual size is in largesize)");
|
||||
|
||||
offset += 4;
|
||||
|
@ -227,7 +227,7 @@ dissect_mp4_box(guint32 parent_box_type _U_,
|
|||
tvb, offset, 4, ENC_ASCII|ENC_NA);
|
||||
offset += 4;
|
||||
|
||||
if (box_size==BOX_SIZE_EXTENDED) {
|
||||
if (box_size == BOX_SIZE_EXTENDED) {
|
||||
box_size = tvb_get_ntoh64(tvb, offset);
|
||||
ext_size_pi = proto_tree_add_item(box_tree, hf_mp4_box_largesize,
|
||||
tvb, offset, 8, ENC_BIG_ENDIAN);
|
||||
|
@ -263,9 +263,9 @@ dissect_mp4_box(guint32 parent_box_type _U_,
|
|||
case BOX_TYPE_MVEX:
|
||||
case BOX_TYPE_DINF:
|
||||
case BOX_TYPE_UDTA:
|
||||
while (offset-offset_start<(gint)box_size) {
|
||||
while (offset-offset_start < (gint)box_size) {
|
||||
ret = dissect_mp4_box(box_type, tvb, offset, pinfo, box_tree);
|
||||
if (ret<=0)
|
||||
if (ret <= 0)
|
||||
break;
|
||||
offset += ret;
|
||||
}
|
||||
|
@ -293,7 +293,7 @@ dissect_mp4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
|
|||
this detection should be safe as long as the dissector is only called for
|
||||
the video/mp4 mime type
|
||||
when we read mp4 files directly, we might need stricter checks here */
|
||||
if (tvb_reported_length(tvb)<MIN_BOX_SIZE)
|
||||
if (tvb_reported_length(tvb) < MIN_BOX_SIZE)
|
||||
return 0;
|
||||
box_type = tvb_get_ntohl(tvb, 4);
|
||||
if (try_val_to_str(box_type, box_types) == NULL)
|
||||
|
@ -308,7 +308,7 @@ dissect_mp4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
|
|||
|
||||
while (tvb_reported_length_remaining(tvb, offset) > 0) {
|
||||
ret = dissect_mp4_box(BOX_TYPE_NONE, tvb, offset, pinfo, mp4_tree);
|
||||
if (ret<=0)
|
||||
if (ret <= 0)
|
||||
break;
|
||||
offset += ret;
|
||||
}
|
||||
|
@ -357,8 +357,8 @@ proto_register_mp4(void)
|
|||
"box size too large, dissection of this box is not supported", EXPFILL }}
|
||||
};
|
||||
|
||||
expert_module_t* expert_mp4;
|
||||
|
||||
expert_module_t *expert_mp4;
|
||||
|
||||
proto_mp4 = proto_register_protocol("MP4 / ISOBMFF file format", "mp4", "mp4");
|
||||
|
||||
proto_register_field_array(proto_mp4, hf, array_length(hf));
|
||||
|
|
|
@ -252,7 +252,7 @@ static const value_string a11_types[] = {
|
|||
{SESSION_ACK, "Session Update Ack"},
|
||||
{CAPABILITIES_INFO, "Capabilities Info"},
|
||||
{CAPABILITIES_INFO_ACK, "Capabilities Info Ack"},
|
||||
{BC_SERVICE_REQUEST, "BC Service Request"},
|
||||
{BC_SERVICE_REQUEST, "BC Service Request"},
|
||||
{BC_SERVICE_REPLY, "BC Service Response"},
|
||||
{BC_REGISTRATION_REQUEST, "BC Registration RequestT"},
|
||||
{BC_REGISTRATION_REPLY, "BC Registration Reply"},
|
||||
|
@ -343,7 +343,7 @@ typedef enum {
|
|||
MF_CHALLENGE_EXT = 132, /* RFC 3012 */
|
||||
OLD_NVSE_EXT = 133, /* RFC 3115 */
|
||||
NVSE_EXT = 134, /* RFC 3115 */
|
||||
BCMCS_EXT = 0xb0 /* 3GPP2 A.S0019-A v2.0 */
|
||||
BCMCS_EXT = 0xb0 /* 3GPP2 A.S0019-A v2.0 */
|
||||
} MIP_EXTS;
|
||||
|
||||
|
||||
|
@ -406,8 +406,8 @@ static const value_string a11_ext_dormant[]= {
|
|||
|
||||
|
||||
static const true_false_string a11_tfs_ehrpd_mode = {
|
||||
"eAT is operating in evolved mode",
|
||||
"eAT is operating in legacy mode"
|
||||
"eAT is operating in evolved mode",
|
||||
"eAT is operating in legacy mode"
|
||||
};
|
||||
|
||||
/* 3GPP2 A.S0022-0 v2.0, section 4.2.14 */
|
||||
|
@ -550,78 +550,71 @@ decode_sse(proto_tree *ext_tree, tvbuff_t *tvb, int offset, guint ext_len)
|
|||
gboolean odd_even_ind;
|
||||
|
||||
/* Decode Protocol Type */
|
||||
if (ext_len < 2)
|
||||
{
|
||||
if (ext_len < 2) {
|
||||
proto_tree_add_text(ext_tree, tvb, offset, 0,
|
||||
"Cannot decode Protocol Type - SSE too short");
|
||||
return;
|
||||
}
|
||||
proto_tree_add_item(ext_tree, hf_a11_ses_ptype, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset += 2;
|
||||
offset += 2;
|
||||
ext_len -= 2;
|
||||
|
||||
/* Decode Session Key */
|
||||
if (ext_len < 4)
|
||||
{
|
||||
if (ext_len < 4) {
|
||||
proto_tree_add_text(ext_tree, tvb, offset, 0,
|
||||
"Cannot decode Session Key - SSE too short");
|
||||
return;
|
||||
}
|
||||
proto_tree_add_item(ext_tree, hf_a11_ses_key, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
offset += 4;
|
||||
offset += 4;
|
||||
ext_len -= 4;
|
||||
|
||||
|
||||
/* Decode Session Id Version */
|
||||
if (ext_len < 2)
|
||||
{
|
||||
if (ext_len < 2) {
|
||||
proto_tree_add_text(ext_tree, tvb, offset, 0,
|
||||
"Cannot decode Session Id Version - SSE too short");
|
||||
return;
|
||||
}
|
||||
proto_tree_add_item(ext_tree, hf_a11_ses_sidver, tvb, offset+1, 1, ENC_BIG_ENDIAN);
|
||||
offset += 2;
|
||||
offset += 2;
|
||||
ext_len -= 2;
|
||||
|
||||
|
||||
/* Decode SRID */
|
||||
if (ext_len < 2)
|
||||
{
|
||||
if (ext_len < 2) {
|
||||
proto_tree_add_text(ext_tree, tvb, offset, 0,
|
||||
"Cannot decode SRID - SSE too short");
|
||||
return;
|
||||
}
|
||||
proto_tree_add_item(ext_tree, hf_a11_ses_mnsrid, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset += 2;
|
||||
offset += 2;
|
||||
ext_len -= 2;
|
||||
|
||||
/* MSID Type */
|
||||
if (ext_len < 2)
|
||||
{
|
||||
if (ext_len < 2) {
|
||||
proto_tree_add_text(ext_tree, tvb, offset, 0,
|
||||
"Cannot decode MSID Type - SSE too short");
|
||||
return;
|
||||
}
|
||||
proto_tree_add_item(ext_tree, hf_a11_ses_msid_type, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset += 2;
|
||||
offset += 2;
|
||||
ext_len -= 2;
|
||||
|
||||
|
||||
/* MSID Len */
|
||||
if (ext_len < 1)
|
||||
{
|
||||
if (ext_len < 1) {
|
||||
proto_tree_add_text(ext_tree, tvb, offset, 0,
|
||||
"Cannot decode MSID Length - SSE too short");
|
||||
return;
|
||||
}
|
||||
msid_len = tvb_get_guint8(tvb, offset);
|
||||
proto_tree_add_item(ext_tree, hf_a11_ses_msid_len, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset += 1;
|
||||
offset += 1;
|
||||
ext_len -= 1;
|
||||
|
||||
/* Decode MSID */
|
||||
if (ext_len < msid_len)
|
||||
{
|
||||
if (ext_len < msid_len) {
|
||||
proto_tree_add_text(ext_tree, tvb, offset, 0,
|
||||
"Cannot decode MSID - SSE too short");
|
||||
return;
|
||||
|
@ -630,19 +623,15 @@ decode_sse(proto_tree *ext_tree, tvbuff_t *tvb, int offset, guint ext_len)
|
|||
msid_digits = (char *)wmem_alloc(wmem_packet_scope(), A11_MSG_MSID_LEN_MAX+2);
|
||||
msid_start_offset = offset;
|
||||
|
||||
if (msid_len > A11_MSG_MSID_ELEM_LEN_MAX)
|
||||
{
|
||||
if (msid_len > A11_MSG_MSID_ELEM_LEN_MAX) {
|
||||
p_msid = "MSID is too long";
|
||||
}else if (msid_len == 0)
|
||||
{
|
||||
} else if (msid_len == 0) {
|
||||
p_msid = "MSID is too short";
|
||||
}else
|
||||
{
|
||||
} else {
|
||||
/* Decode the BCD digits */
|
||||
for(msid_index=0; msid_index<msid_len; msid_index++)
|
||||
{
|
||||
for (msid_index=0; msid_index<msid_len; msid_index++) {
|
||||
guint8 msid_digit = tvb_get_guint8(tvb, offset);
|
||||
offset += 1;
|
||||
offset += 1;
|
||||
ext_len -= 1;
|
||||
|
||||
msid_digits[msid_index*2] = (msid_digit & 0x0F) + '0';
|
||||
|
@ -651,11 +640,9 @@ decode_sse(proto_tree *ext_tree, tvbuff_t *tvb, int offset, guint ext_len)
|
|||
|
||||
odd_even_ind = (msid_digits[0] == '1');
|
||||
|
||||
if (odd_even_ind)
|
||||
{
|
||||
if (odd_even_ind) {
|
||||
msid_num_digits = ((msid_len-1) * 2) + 1;
|
||||
}else
|
||||
{
|
||||
} else {
|
||||
msid_num_digits = (msid_len-1) * 2;
|
||||
}
|
||||
|
||||
|
@ -674,50 +661,49 @@ static void
|
|||
decode_bcmcs(proto_tree* ext_tree, tvbuff_t* tvb, int offset, guint ext_len)
|
||||
{
|
||||
|
||||
guint8 bc_stype, entry_len;
|
||||
guint8 bc_stype, entry_len;
|
||||
|
||||
/* Decode Protocol Type */
|
||||
if (ext_len < 2)
|
||||
{
|
||||
/* Decode Protocol Type */
|
||||
if (ext_len < 2) {
|
||||
proto_tree_add_text(ext_tree, tvb, offset, 0,
|
||||
"Cannot decode Protocol Type - BCMCS too short");
|
||||
"Cannot decode Protocol Type - BCMCS too short");
|
||||
return;
|
||||
}
|
||||
|
||||
bc_stype=tvb_get_guint8(tvb, offset);
|
||||
proto_tree_add_item(ext_tree, hf_a11_bcmcs_stype, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset += 1;
|
||||
offset += 1;
|
||||
ext_len -= 1;
|
||||
|
||||
switch(bc_stype) {
|
||||
case 1:
|
||||
{
|
||||
int i = 0;
|
||||
proto_item *ti;
|
||||
proto_tree *entry_tree;
|
||||
while (ext_len > 0){
|
||||
i++;
|
||||
entry_len = tvb_get_guint8(tvb, offset);
|
||||
if(entry_len == 0){
|
||||
ext_len -= 1;
|
||||
entry_len = 1;
|
||||
}else{
|
||||
ext_len = ext_len - entry_len;
|
||||
}
|
||||
ti = proto_tree_add_text(ext_tree, tvb, offset, entry_len, "BCMCS Information Entry %u", i);
|
||||
entry_tree = proto_item_add_subtree(ti, ett_a11_bcmcs_entry);
|
||||
proto_tree_add_item(entry_tree, hf_a11_bcmcs_entry_len, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
switch (bc_stype) {
|
||||
case 1:
|
||||
{
|
||||
int i = 0;
|
||||
proto_item *ti;
|
||||
proto_tree *entry_tree;
|
||||
while (ext_len > 0) {
|
||||
i++;
|
||||
entry_len = tvb_get_guint8(tvb, offset);
|
||||
if (entry_len == 0) {
|
||||
ext_len -= 1;
|
||||
entry_len = 1;
|
||||
} else {
|
||||
ext_len = ext_len - entry_len;
|
||||
}
|
||||
ti = proto_tree_add_text(ext_tree, tvb, offset, entry_len, "BCMCS Information Entry %u", i);
|
||||
entry_tree = proto_item_add_subtree(ti, ett_a11_bcmcs_entry);
|
||||
proto_tree_add_item(entry_tree, hf_a11_bcmcs_entry_len, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
|
||||
proto_tree_add_text(ext_tree, tvb, offset, entry_len -1, "Entry Data, Not dissected yet");
|
||||
offset = offset+entry_len;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
proto_tree_add_text(ext_tree, tvb, offset, -1, "Session Data Type %u Not dissected yet",bc_stype);
|
||||
return;
|
||||
break;
|
||||
}
|
||||
proto_tree_add_text(ext_tree, tvb, offset, entry_len -1, "Entry Data, Not dissected yet");
|
||||
offset = offset+entry_len;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
proto_tree_add_text(ext_tree, tvb, offset, -1, "Session Data Type %u Not dissected yet",bc_stype);
|
||||
return;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -759,27 +745,27 @@ dissect_3gpp2_service_option_profile(proto_tree *tree, tvbuff_t *tvb, packet_i
|
|||
proto_tree_add_item(tree, hf_a11_serv_opt_prof_max_serv, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
offset+=4;
|
||||
|
||||
while (tvb_length_remaining(tvb,offset)>0){
|
||||
while (tvb_length_remaining(tvb,offset) > 0) {
|
||||
sub_type_length = tvb_get_guint8(tvb,offset+1);
|
||||
|
||||
sub_type = tvb_get_guint8(tvb,offset);
|
||||
proto_tree_add_item(tree, hf_a11_sub_type, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
pi = proto_tree_add_item(tree, hf_a11_sub_type_length, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
if (sub_type_length < 2) {
|
||||
expert_add_info(pinfo, pi, &ei_a11_sub_type_length_not2);
|
||||
sub_type_length = 2;
|
||||
}
|
||||
if (sub_type==1){
|
||||
if (sub_type == 1) {
|
||||
proto_tree_add_item(tree, hf_a11_serv_opt, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
/* Max number of service instances of Service Option n */
|
||||
proto_tree_add_item(tree, hf_a11_max_num_serv_opt, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
}
|
||||
|
||||
offset = offset+sub_type_length-2;
|
||||
offset = offset + sub_type_length-2;
|
||||
}
|
||||
|
||||
return "";
|
||||
|
@ -803,7 +789,7 @@ dissect_3gpp2_radius_aut_flow_profile_ids(proto_tree *tree, tvbuff_t *tvb, pac
|
|||
guint8 sub_type, sub_type_length;
|
||||
guint32 value;
|
||||
|
||||
while (tvb_length_remaining(tvb,offset)>0){
|
||||
while (tvb_length_remaining(tvb,offset) > 0) {
|
||||
sub_type = tvb_get_guint8(tvb,offset);
|
||||
sub_type_length = tvb_get_guint8(tvb,offset+1);
|
||||
/* value is 2 octets */
|
||||
|
@ -813,16 +799,16 @@ dissect_3gpp2_radius_aut_flow_profile_ids(proto_tree *tree, tvbuff_t *tvb, pac
|
|||
sub_tree = proto_item_add_subtree(item, ett_a11_aut_flow_profile_ids);
|
||||
|
||||
proto_tree_add_item(sub_tree, hf_a11_aut_flow_prof_sub_type, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
item = proto_tree_add_item(sub_tree, hf_a11_aut_flow_prof_sub_type_len, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
if (sub_type_length < 2) {
|
||||
expert_add_info(pinfo, item, &ei_a11_sub_type_length_not2);
|
||||
sub_type_length = 2;
|
||||
}
|
||||
offset++;
|
||||
offset += 1;
|
||||
proto_tree_add_item(sub_tree, hf_a11_aut_flow_prof_sub_type_value, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
|
||||
offset = offset+sub_type_length-2;
|
||||
offset = offset+sub_type_length - 2;
|
||||
}
|
||||
|
||||
return "";
|
||||
|
@ -834,8 +820,7 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
|
|||
{
|
||||
guint clen = 0; /* consumed length */
|
||||
|
||||
while (clen < ase_len)
|
||||
{
|
||||
while (clen < ase_len) {
|
||||
proto_tree *exts_tree;
|
||||
guint8 srid = tvb_get_guint8(tvb, offset+1);
|
||||
guint16 service_option = tvb_get_ntohs(tvb, offset+2);
|
||||
|
@ -847,7 +832,7 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
|
|||
entry_start_offset = offset;
|
||||
entry_lenght = tvb_get_guint8(tvb, offset);
|
||||
|
||||
if (registration_request_msg && (service_option==64 || service_option==67))
|
||||
if (registration_request_msg && ((service_option == 64) || (service_option == 67)))
|
||||
ti = proto_tree_add_text(ext_tree, tvb, offset, entry_lenght+1, "GRE Key Entry (SRID: %d)", srid);
|
||||
else
|
||||
ti = proto_tree_add_text(ext_tree, tvb, offset, entry_lenght, "GRE Key Entry (SRID: %d)", srid);
|
||||
|
@ -855,60 +840,60 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
|
|||
exts_tree = proto_item_add_subtree(ti, ett_a11_ase);
|
||||
|
||||
proto_tree_add_item(exts_tree, hf_a11_ase_len_type, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* SRID */
|
||||
proto_tree_add_item(exts_tree, hf_a11_ase_srid_type, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Service Option */
|
||||
proto_tree_add_item(exts_tree, hf_a11_ase_servopt_type, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
|
||||
/* GRE Protocol Type*/
|
||||
proto_tree_add_item(exts_tree, hf_a11_ase_gre_proto_type, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
|
||||
/* GRE Key */
|
||||
proto_tree_add_item(exts_tree, hf_a11_ase_gre_key, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
offset+=4;
|
||||
offset += 4;
|
||||
|
||||
/* PCF IP Address */
|
||||
proto_tree_add_item(exts_tree, hf_a11_ase_pcf_addr_key, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
offset+=4;
|
||||
offset += 4;
|
||||
|
||||
if ((entry_lenght>14)&&(registration_request_msg)){
|
||||
if (service_option == 0x0043){
|
||||
if ((entry_lenght>14)&&(registration_request_msg)) {
|
||||
if (service_option == 0x0043) {
|
||||
proto_item *tl;
|
||||
proto_tree *extv_tree;
|
||||
guint8 profile_count=tvb_get_guint8(tvb, offset+6);
|
||||
guint8 profile_index=0;
|
||||
guint8 reverse_profile_count;
|
||||
guint8 profile_count = tvb_get_guint8(tvb, offset+6);
|
||||
guint8 profile_index = 0;
|
||||
guint8 reverse_profile_count;
|
||||
|
||||
proto_item *tj = proto_tree_add_text(exts_tree, tvb, offset,6+(profile_count*2)+1, "Forward ROHC Info");
|
||||
|
||||
proto_tree *extt_tree = proto_item_add_subtree(tj, ett_a11_forward_rohc);
|
||||
|
||||
proto_tree_add_item(extt_tree, hf_a11_ase_forward_rohc_info_len, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
proto_tree_add_item(extt_tree, hf_a11_ase_forward_maxcid, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
proto_tree_add_item(extt_tree, hf_a11_ase_forward_mrru, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
proto_tree_add_item(extt_tree, hf_a11_ase_forward_large_cids, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
profile_count=tvb_get_guint8(tvb, offset);
|
||||
|
||||
proto_tree_add_item(extt_tree, hf_a11_ase_forward_profile_count, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
|
||||
for(profile_index=0; profile_index<profile_count; profile_index++){
|
||||
for (profile_index=0; profile_index<profile_count; profile_index++) {
|
||||
proto_item *tk = proto_tree_add_text (extt_tree, tvb, offset, (2*profile_count), "Forward Profile : %d", profile_index);
|
||||
proto_tree *extu_tree = proto_item_add_subtree(tk, ett_a11_forward_profile);
|
||||
proto_tree_add_item(extu_tree, hf_a11_ase_forward_profile, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
}/*for*/
|
||||
|
||||
|
||||
|
@ -919,36 +904,34 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
|
|||
extv_tree = proto_item_add_subtree(tl, ett_a11_reverse_rohc);
|
||||
|
||||
proto_tree_add_item(extv_tree, hf_a11_ase_reverse_rohc_info_len, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
|
||||
proto_tree_add_item(extv_tree, hf_a11_ase_reverse_maxcid, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
proto_tree_add_item(extv_tree, hf_a11_ase_reverse_mrru, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
proto_tree_add_item(extv_tree, hf_a11_ase_reverse_large_cids, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
profile_count=tvb_get_guint8(tvb, offset);
|
||||
|
||||
proto_tree_add_item(extv_tree, hf_a11_ase_reverse_profile_count, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
|
||||
for(profile_index=0; profile_index<reverse_profile_count; profile_index++){
|
||||
for (profile_index=0; profile_index<reverse_profile_count; profile_index++) {
|
||||
proto_item *tm = proto_tree_add_text(extv_tree, tvb, offset, (2*profile_count), "Reverse Profile : %d", profile_index);
|
||||
|
||||
proto_tree *extw_tree = proto_item_add_subtree(tm, ett_a11_reverse_profile);
|
||||
|
||||
proto_tree_add_item(extw_tree, hf_a11_ase_reverse_profile, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset+=2;
|
||||
|
||||
|
||||
offset += 2;
|
||||
}/*for*/
|
||||
}/* Service option */
|
||||
|
||||
}/* if */
|
||||
clen+=entry_lenght+1;
|
||||
clen += entry_lenght + 1;
|
||||
/* Set offset = start of next entry in case of padding */
|
||||
offset = entry_start_offset + entry_lenght+1;
|
||||
|
||||
|
@ -972,11 +955,9 @@ dissect_fwd_qosinfo_flags(tvbuff_t *tvb, int offset, proto_tree *ext_tree, guint
|
|||
proto_tree_add_item(flags_tree, hf_a11_fqi_flags_ip_flow, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(flags_tree, hf_a11_fqi_flags_dscp, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
|
||||
if (flags & A11_FQI_DSCP_INCLUDED)
|
||||
{
|
||||
if (flags & A11_FQI_DSCP_INCLUDED) {
|
||||
*p_dscp_included = 1;
|
||||
}else
|
||||
{
|
||||
} else {
|
||||
*p_dscp_included = 0;
|
||||
}
|
||||
}
|
||||
|
@ -987,8 +968,7 @@ dissect_fqi_entry_flags(tvbuff_t *tvb, int offset, proto_tree *ext_tree, guint8
|
|||
proto_item *ti = proto_tree_add_item(ext_tree, hf_a11_fqi_entry_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree *flags_tree = proto_item_add_subtree(ti, ett_a11_fqi_entry_flags);
|
||||
|
||||
if (dscp_enabled)
|
||||
{
|
||||
if (dscp_enabled) {
|
||||
proto_tree_add_item(flags_tree, hf_a11_fqi_entry_flag_dscp, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
}
|
||||
|
||||
|
@ -1027,13 +1007,12 @@ dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
|
|||
proto_tree_add_item(ext_tree, hf_a11_fqi_flowcount, tvb, offset+clen, 1, ENC_BIG_ENDIAN);
|
||||
clen++;
|
||||
|
||||
for(flow_index=0; flow_index<flow_count; flow_index++)
|
||||
{
|
||||
for (flow_index=0; flow_index<flow_count; flow_index++) {
|
||||
guint8 requested_qos_len = 0;
|
||||
guint8 granted_qos_len = 0;
|
||||
guint8 granted_qos_len = 0;
|
||||
|
||||
guint8 entry_len = tvb_get_guint8(tvb, offset+clen);
|
||||
guint8 flow_id = tvb_get_guint8(tvb, offset+clen+1);
|
||||
guint8 flow_id = tvb_get_guint8(tvb, offset+clen+1);
|
||||
|
||||
proto_item *ti = proto_tree_add_text
|
||||
(ext_tree, tvb, offset+clen, entry_len+1, "Forward Flow Entry (Flow Id: %d)", flow_id);
|
||||
|
@ -1059,8 +1038,7 @@ dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
|
|||
clen++;
|
||||
|
||||
/* Requested QoS Blob */
|
||||
if (requested_qos_len)
|
||||
{
|
||||
if (requested_qos_len) {
|
||||
proto_item *ti2;
|
||||
proto_tree *exts_tree2;
|
||||
|
||||
|
@ -1102,8 +1080,7 @@ dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
|
|||
clen++;
|
||||
|
||||
/* Granted QoS Blob */
|
||||
if (granted_qos_len)
|
||||
{
|
||||
if (granted_qos_len) {
|
||||
proto_item *ti3;
|
||||
proto_tree *exts_tree3;
|
||||
|
||||
|
@ -1117,7 +1094,7 @@ dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
|
|||
proto_tree_add_item(exts_tree3, hf_a11_fqi_qos_granted_attribute_setid, tvb, offset+clen, 1, ENC_BIG_ENDIAN);
|
||||
clen++;
|
||||
}
|
||||
}/*for(flow_index...) */
|
||||
} /* for (flow_index...) */
|
||||
}
|
||||
|
||||
/* Code to dissect Reverse QoS Info */
|
||||
|
@ -1138,13 +1115,12 @@ dissect_rev_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
|
|||
proto_tree_add_item(ext_tree, hf_a11_rqi_flowcount, tvb, offset+clen, 1, ENC_BIG_ENDIAN);
|
||||
clen++;
|
||||
|
||||
for(flow_index=0; flow_index<flow_count; flow_index++)
|
||||
{
|
||||
for (flow_index=0; flow_index<flow_count; flow_index++) {
|
||||
guint8 requested_qos_len;
|
||||
guint8 granted_qos_len;
|
||||
|
||||
guint8 entry_len = tvb_get_guint8(tvb, offset+clen);
|
||||
guint8 flow_id = tvb_get_guint8(tvb, offset+clen+1);
|
||||
guint8 flow_id = tvb_get_guint8(tvb, offset+clen+1);
|
||||
|
||||
proto_item *ti = proto_tree_add_text
|
||||
(ext_tree, tvb, offset+clen, entry_len+1, "Reverse Flow Entry (Flow Id: %d)", flow_id);
|
||||
|
@ -1169,8 +1145,7 @@ dissect_rev_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
|
|||
clen++;
|
||||
|
||||
/* Requested QoS Blob */
|
||||
if (requested_qos_len)
|
||||
{
|
||||
if (requested_qos_len) {
|
||||
proto_item *ti1, *ti2;
|
||||
proto_tree *exts_tree1, *exts_tree2;
|
||||
|
||||
|
@ -1212,8 +1187,7 @@ dissect_rev_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
|
|||
clen++;
|
||||
|
||||
/* Granted QoS Blob */
|
||||
if (granted_qos_len)
|
||||
{
|
||||
if (granted_qos_len) {
|
||||
proto_item *ti3;
|
||||
proto_tree *exts_tree3;
|
||||
|
||||
|
@ -1246,8 +1220,7 @@ dissect_subscriber_qos_profile(tvbuff_t *tvb, packet_info *pinfo, int offset, in
|
|||
exts_tree = proto_item_add_subtree(ti, ett_a11_subscriber_profile);
|
||||
|
||||
/* Subscriber QoS profile */
|
||||
if (qos_profile_len)
|
||||
{
|
||||
if (qos_profile_len) {
|
||||
proto_tree_add_item
|
||||
(exts_tree, hf_a11_subsciber_profile, tvb, offset,
|
||||
qos_profile_len, ENC_NA);
|
||||
|
@ -1269,8 +1242,7 @@ dissect_fwd_qosupdate_info(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
|
|||
proto_tree_add_item(ext_tree, hf_a11_fqui_flowcount, tvb, offset+clen, 1, ENC_BIG_ENDIAN);
|
||||
clen++;
|
||||
|
||||
for(flow_index=0; flow_index<flow_count; flow_index++)
|
||||
{
|
||||
for (flow_index=0; flow_index<flow_count; flow_index++) {
|
||||
proto_tree *exts_tree;
|
||||
guint8 granted_qos_len;
|
||||
|
||||
|
@ -1289,8 +1261,7 @@ dissect_fwd_qosupdate_info(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
|
|||
clen++;
|
||||
|
||||
/* Forward QoS Sub Blob */
|
||||
if (granted_qos_len)
|
||||
{
|
||||
if (granted_qos_len) {
|
||||
proto_tree_add_item
|
||||
(exts_tree, hf_a11_fqui_updated_qos, tvb, offset+clen,
|
||||
granted_qos_len, ENC_NA);
|
||||
|
@ -1313,8 +1284,7 @@ dissect_rev_qosupdate_info(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
|
|||
proto_tree_add_item(ext_tree, hf_a11_rqui_flowcount, tvb, offset+clen, 1, ENC_BIG_ENDIAN);
|
||||
clen++;
|
||||
|
||||
for(flow_index=0; flow_index<flow_count; flow_index++)
|
||||
{
|
||||
for (flow_index=0; flow_index<flow_count; flow_index++) {
|
||||
proto_tree *exts_tree;
|
||||
guint8 granted_qos_len;
|
||||
|
||||
|
@ -1332,8 +1302,7 @@ dissect_rev_qosupdate_info(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
|
|||
clen++;
|
||||
|
||||
/* Reverse QoS Sub Blob */
|
||||
if (granted_qos_len)
|
||||
{
|
||||
if (granted_qos_len) {
|
||||
proto_tree_add_item
|
||||
(exts_tree, hf_a11_rqui_updated_qos, tvb, offset+clen,
|
||||
granted_qos_len, ENC_NA);
|
||||
|
@ -1389,24 +1358,24 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre
|
|||
ext_tree = proto_item_add_subtree(ti, ett_a11_ext);
|
||||
|
||||
proto_tree_add_uint(ext_tree, hf_a11_ext_type, tvb, offset, 1, ext_type);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
if (ext_type == SS_EXT) {
|
||||
proto_tree_add_uint(ext_tree, hf_a11_ext_len, tvb, offset, 1, ext_len);
|
||||
offset++;
|
||||
offset += 1;
|
||||
}
|
||||
else if ((ext_type == CVSE_EXT) || (ext_type == OLD_CVSE_EXT)) {
|
||||
offset++;
|
||||
offset += 1;
|
||||
proto_tree_add_uint(ext_tree, hf_a11_ext_len, tvb, offset, 2, ext_len);
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
}
|
||||
else if (ext_type != GEN_AUTH_EXT) {
|
||||
/* Another nasty hack since GEN_AUTH_EXT broke everything */
|
||||
proto_tree_add_uint(ext_tree, hf_a11_ext_len, tvb, offset, 1, ext_len);
|
||||
offset++;
|
||||
offset += 1;
|
||||
}
|
||||
|
||||
switch(ext_type) {
|
||||
switch (ext_type) {
|
||||
case SS_EXT:
|
||||
decode_sse(ext_tree, tvb, offset, ext_len);
|
||||
offset += ext_len;
|
||||
|
@ -1445,9 +1414,9 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre
|
|||
* in the wrong place :(
|
||||
*/
|
||||
proto_tree_add_uint(ext_tree, hf_a11_ext_stype, tvb, offset, 1, ext_subtype);
|
||||
offset++;
|
||||
offset += 1;
|
||||
proto_tree_add_uint(ext_tree, hf_a11_ext_len, tvb, offset, 2, ext_len);
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
/* SPI */
|
||||
if (ext_len < 4)
|
||||
break;
|
||||
|
@ -1494,7 +1463,7 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre
|
|||
apptype = tvb_get_ntohs(tvb, offset);
|
||||
offset += 2;
|
||||
ext_len -= 2;
|
||||
switch(apptype) {
|
||||
switch (apptype) {
|
||||
case 0x0401:
|
||||
if (ext_len < 5)
|
||||
break;
|
||||
|
@ -1633,7 +1602,7 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
|
||||
/* type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* flags */
|
||||
flags = tvb_get_guint8(tvb, offset);
|
||||
|
@ -1647,7 +1616,7 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
proto_tree_add_boolean(flags_tree, hf_a11_g, tvb, offset, 1, flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_a11_v, tvb, offset, 1, flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_a11_t, tvb, offset, 1, flags);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* lifetime */
|
||||
proto_tree_add_item(a11_tree, hf_a11_life, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
|
@ -1682,11 +1651,11 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
|
||||
/* Type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Reply Code */
|
||||
proto_tree_add_item(a11_tree, hf_a11_code, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Registration Lifetime */
|
||||
proto_tree_add_item(a11_tree, hf_a11_life, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
|
@ -1716,10 +1685,10 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
|
||||
/* Type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Reserved */
|
||||
offset+=3;
|
||||
offset += 3;
|
||||
|
||||
/* Home address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_homeaddr, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
|
@ -1746,14 +1715,14 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
|
||||
/* Type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Reserved */
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
|
||||
/* Ack Status */
|
||||
proto_tree_add_item(a11_tree, hf_a11_status, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Home address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_homeaddr, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
|
@ -1779,10 +1748,10 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
|
||||
/* Type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Reserved */
|
||||
offset+=3;
|
||||
offset += 3;
|
||||
|
||||
/* Home address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_homeaddr, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
|
@ -1809,14 +1778,14 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
|
||||
/* Type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Reserved */
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
|
||||
/* Ack Status */
|
||||
proto_tree_add_item(a11_tree, hf_a11_status, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Home address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_homeaddr, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
|
@ -1843,10 +1812,10 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
|
||||
/* Type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Reserved */
|
||||
offset+=3;
|
||||
offset += 3;
|
||||
|
||||
/* Home address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_homeaddr, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
|
@ -1876,10 +1845,10 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
|
||||
/* Type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Reserved */
|
||||
offset+=3;
|
||||
offset += 3;
|
||||
|
||||
/* Home address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_homeaddr, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
|
@ -1896,74 +1865,74 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
} /* if tree */
|
||||
break;
|
||||
case BC_SERVICE_REQUEST:
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "Service Request: PCF=%s ",
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "Service Request: PCF=%s ",
|
||||
tvb_ip_to_str(tvb, offset + 8));
|
||||
|
||||
|
||||
if (tree) {
|
||||
ti = proto_tree_add_item(tree, proto_a11, tvb, offset, -1, FALSE);
|
||||
a11_tree = proto_item_add_subtree(ti, ett_a11);
|
||||
|
||||
|
||||
/* type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset+=4;
|
||||
|
||||
offset += 4;
|
||||
|
||||
/* home address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_homeaddr, tvb, offset, 4, FALSE);
|
||||
offset += 4;
|
||||
|
||||
|
||||
/* Care-of-Address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_coa, tvb, offset, 4, FALSE);
|
||||
offset += 4;
|
||||
|
||||
|
||||
/* Identifier - assumed to be an NTP time here */
|
||||
proto_tree_add_item(a11_tree, hf_a11_ident, tvb, offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
|
||||
offset += 8;
|
||||
|
||||
|
||||
} /* if tree */
|
||||
break;
|
||||
|
||||
case BC_SERVICE_REPLY:
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "Service Response: BSN=%s ",
|
||||
tvb_ip_to_str(tvb, offset + 8));
|
||||
|
||||
|
||||
if (tree) {
|
||||
ti = proto_tree_add_item(tree, proto_a11, tvb, offset, -1, FALSE);
|
||||
a11_tree = proto_item_add_subtree(ti, ett_a11);
|
||||
|
||||
|
||||
/* type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset+=3;
|
||||
|
||||
offset += 3;
|
||||
|
||||
/* Reply Code */
|
||||
proto_tree_add_item(a11_tree, hf_a11_code, tvb, offset, 1, FALSE);
|
||||
offset++;
|
||||
|
||||
offset += 1;
|
||||
|
||||
/* home address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_homeaddr, tvb, offset, 4, FALSE);
|
||||
offset += 4;
|
||||
|
||||
|
||||
/* Home Agent */
|
||||
proto_tree_add_item(a11_tree, hf_a11_haaddr, tvb, offset, 4, FALSE);
|
||||
offset += 4;
|
||||
|
||||
|
||||
/* Identifier - assumed to be an NTP time here */
|
||||
proto_tree_add_item(a11_tree, hf_a11_ident, tvb, offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
|
||||
offset += 8;
|
||||
|
||||
|
||||
} /* if tree */
|
||||
break;
|
||||
case BC_REGISTRATION_REQUEST:
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "BC Reg Request: BSN=%s ",
|
||||
tvb_ip_to_str(tvb, offset + 8));
|
||||
|
||||
|
||||
if (tree) {
|
||||
ti = proto_tree_add_item(tree, proto_a11, tvb, offset, -1, FALSE);
|
||||
a11_tree = proto_item_add_subtree(ti, ett_a11);
|
||||
|
||||
|
||||
/* type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset+=1;
|
||||
|
||||
offset += 1;
|
||||
|
||||
/* flags */
|
||||
flags = tvb_get_guint8(tvb, offset);
|
||||
tf = proto_tree_add_uint(a11_tree, hf_a11_flags, tvb,
|
||||
|
@ -1976,29 +1945,29 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
proto_tree_add_boolean(flags_tree, hf_a11_g, tvb, offset, 1, flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_a11_v, tvb, offset, 1, flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_a11_t, tvb, offset, 1, flags);
|
||||
offset++;
|
||||
|
||||
offset += 1;
|
||||
|
||||
/* lifetime */
|
||||
proto_tree_add_item(a11_tree, hf_a11_life, tvb, offset, 2, FALSE);
|
||||
offset +=2;
|
||||
|
||||
|
||||
/* home address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_homeaddr, tvb, offset, 4, FALSE);
|
||||
offset += 4;
|
||||
|
||||
|
||||
/* Home Agent */
|
||||
proto_tree_add_item(a11_tree, hf_a11_haaddr, tvb, offset, 4, FALSE);
|
||||
offset += 4;
|
||||
|
||||
|
||||
/* Care-of-Address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_coa, tvb, offset, 4, FALSE);
|
||||
offset += 4;
|
||||
|
||||
|
||||
/* Identifier - assumed to be an NTP time here */
|
||||
proto_tree_add_item(a11_tree, hf_a11_ident, tvb, offset, 8, ENC_TIME_NTP|ENC_BIG_ENDIAN);
|
||||
|
||||
offset += 8;
|
||||
|
||||
|
||||
} /* if tree */
|
||||
break;
|
||||
|
||||
|
@ -2015,11 +1984,11 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
|
||||
/* Type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Reply Code */
|
||||
proto_tree_add_item(a11_tree, hf_a11_code, tvb, offset, 1, FALSE);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Registration Lifetime */
|
||||
proto_tree_add_item(a11_tree, hf_a11_life, tvb, offset, 2, FALSE);
|
||||
|
@ -2050,10 +2019,10 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
|
||||
/* Type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Reserved */
|
||||
offset+=3;
|
||||
offset += 3;
|
||||
|
||||
/* Home address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_homeaddr, tvb, offset, 4, FALSE);
|
||||
|
@ -2080,14 +2049,14 @@ dissect_a11( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
|
|||
|
||||
/* Type */
|
||||
proto_tree_add_uint(a11_tree, hf_a11_type, tvb, offset, 1, type);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Reserved */
|
||||
offset+=2;
|
||||
offset += 2;
|
||||
|
||||
/* Ack Status */
|
||||
proto_tree_add_item(a11_tree, hf_a11_status, tvb, offset, 1, FALSE);
|
||||
offset++;
|
||||
offset += 1;
|
||||
|
||||
/* Home address */
|
||||
proto_tree_add_item(a11_tree, hf_a11_homeaddr, tvb, offset, 4, FALSE);
|
||||
|
|
|
@ -23,14 +23,14 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
|
||||
/* Container for tapping relevant data */
|
||||
typedef struct _actrace_info_t
|
||||
{
|
||||
int type; /* ACTRACE_CAS=1 ACTRACE_ISDN=2 */
|
||||
int direction; /* direction BLADE_TO_PSTN=0 PSTN_TO_BLADE=1 */
|
||||
int trunk;
|
||||
gint32 cas_bchannel;
|
||||
const gchar *cas_frame_label;
|
||||
int type; /* ACTRACE_CAS=1 ACTRACE_ISDN=2 */
|
||||
int direction; /* direction BLADE_TO_PSTN=0 PSTN_TO_BLADE=1 */
|
||||
int trunk;
|
||||
gint32 cas_bchannel;
|
||||
const gchar *cas_frame_label;
|
||||
} actrace_info_t;
|
||||
|
||||
|
|
|
@ -60,13 +60,13 @@ static gint ett_aim_buddylist = -1;
|
|||
static int dissect_aim_buddylist_buddylist(tvbuff_t *tvb, packet_info *pinfo, proto_tree *buddy_tree)
|
||||
{
|
||||
int offset = 0;
|
||||
while(tvb_length_remaining(tvb, offset) > 0) {
|
||||
while (tvb_length_remaining(tvb, offset) > 0) {
|
||||
offset = dissect_aim_buddyname( tvb, pinfo, offset, buddy_tree);
|
||||
}
|
||||
return offset;
|
||||
}
|
||||
|
||||
static int dissect_aim_buddylist_rights_repl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *buddy_tree)
|
||||
static int dissect_aim_buddylist_rights_repl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *buddy_tree)
|
||||
{
|
||||
return dissect_aim_tlv_sequence(tvb, pinfo, 0, buddy_tree, aim_buddylist_tlvs);
|
||||
}
|
||||
|
@ -79,8 +79,8 @@ static int dissect_aim_buddylist_reject(tvbuff_t *tvb, packet_info *pinfo, proto
|
|||
static int dissect_aim_buddylist_oncoming(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 );
|
||||
int offset = 0;
|
||||
int buddyname_length = aim_get_buddyname( buddyname, tvb, offset, offset + 1 );
|
||||
|
||||
col_set_str(pinfo->cinfo, COL_INFO, "Oncoming Buddy");
|
||||
col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
|
||||
|
@ -89,7 +89,7 @@ static int dissect_aim_buddylist_oncoming(tvbuff_t *tvb, packet_info *pinfo, pro
|
|||
offset += dissect_aim_buddyname(tvb, pinfo, offset, buddy_tree);
|
||||
|
||||
/* Warning level */
|
||||
proto_tree_add_item(buddy_tree, hf_aim_userinfo_warninglevel, tvb, offset,
|
||||
proto_tree_add_item(buddy_tree, hf_aim_userinfo_warninglevel, tvb, offset,
|
||||
2, ENC_BIG_ENDIAN);
|
||||
offset += 2;
|
||||
|
||||
|
@ -98,12 +98,12 @@ static int dissect_aim_buddylist_oncoming(tvbuff_t *tvb, packet_info *pinfo, pro
|
|||
return offset;
|
||||
}
|
||||
|
||||
static int dissect_aim_buddylist_offgoing(tvbuff_t *tvb, packet_info *pinfo, proto_tree *buddy_tree)
|
||||
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 );
|
||||
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",
|
||||
|
@ -112,7 +112,7 @@ static int dissect_aim_buddylist_offgoing(tvbuff_t *tvb, packet_info *pinfo, pro
|
|||
offset += dissect_aim_buddyname(tvb, pinfo, offset, buddy_tree);
|
||||
|
||||
/* Warning level */
|
||||
proto_tree_add_item(buddy_tree, hf_aim_userinfo_warninglevel, tvb, offset,
|
||||
proto_tree_add_item(buddy_tree, hf_aim_userinfo_warninglevel, tvb, offset,
|
||||
2, ENC_BIG_ENDIAN);
|
||||
offset += 2;
|
||||
|
||||
|
@ -127,7 +127,7 @@ static const aim_subtype aim_fnac_family_buddylist[] = {
|
|||
{ 0x0005, "Remove Buddy", dissect_aim_buddylist_buddylist },
|
||||
{ 0x0006, "Watchers List Request", NULL },
|
||||
{ 0x0007, "Watchers List Reply", dissect_aim_buddylist_buddylist },
|
||||
{ 0x000a, "Reject Buddy", dissect_aim_buddylist_reject },
|
||||
{ 0x000a, "Reject Buddy", dissect_aim_buddylist_reject },
|
||||
{ 0x000b, "Oncoming Buddy", dissect_aim_buddylist_oncoming },
|
||||
{ 0x000c, "Offgoing Buddy", dissect_aim_buddylist_offgoing },
|
||||
{ 0, NULL, NULL }
|
||||
|
@ -141,7 +141,7 @@ proto_register_aim_buddylist(void)
|
|||
/* Setup list of header fields */
|
||||
static hf_register_info hf[] = {
|
||||
{ &hf_aim_userinfo_warninglevel,
|
||||
{ "Warning Level", "aim_buddylist.userinfo.warninglevel", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL },
|
||||
{ "Warning Level", "aim_buddylist.userinfo.warninglevel", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL },
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -47,11 +47,11 @@ void proto_reg_handoff_aim_icq(void);
|
|||
|
||||
static const value_string aim_icq_data_types[] = {
|
||||
{ ICQ_CLI_OFFLINE_MESSAGE_REQ, "Offline Message Request" },
|
||||
{ ICQ_SRV_OFFLINE_MSGS, "Offline Messages Reply" },
|
||||
{ ICQ_SRV_OFFLINE_MSGS, "Offline Messages Reply" },
|
||||
{ ICQ_SRV_END_OF_OFFLINE_MSGS, "End Of Offline Messages Reply" },
|
||||
{ ICQ_CLI_DELETE_OFFLINE_MSGS, "Delete Offline Messages Request" },
|
||||
{ ICQ_CLI_META_INFO_REQ, "Metainfo Request" },
|
||||
{ ICQ_SRV_META_INFO_REPL, "Metainfo Reply" },
|
||||
{ ICQ_CLI_META_INFO_REQ, "Metainfo Request" },
|
||||
{ ICQ_SRV_META_INFO_REPL, "Metainfo Reply" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
|
@ -143,15 +143,15 @@ static struct
|
|||
|
||||
static int dissect_aim_tlv_value_icq(proto_item *ti _U_, guint16 subtype _U_, tvbuff_t *tvb _U_, packet_info *pinfo)
|
||||
{
|
||||
int offset = 0;
|
||||
int i;
|
||||
int offset = 0;
|
||||
int i;
|
||||
proto_item *subtype_item;
|
||||
guint16 req_type, req_subtype;
|
||||
proto_tree *t = proto_item_add_subtree(ti, ett_aim_icq_tlv);
|
||||
guint16 req_type, req_subtype;
|
||||
proto_tree *t = proto_item_add_subtree(ti, ett_aim_icq_tlv);
|
||||
|
||||
proto_tree_add_item(t, hf_icq_tlv_data_chunk_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
|
||||
|
||||
proto_tree_add_item(t, hf_icq_tlv_request_owner_uid, tvb, offset, 4, ENC_LITTLE_ENDIAN);
|
||||
offset += 4;
|
||||
|
||||
|
@ -162,29 +162,29 @@ static int dissect_aim_tlv_value_icq(proto_item *ti _U_, guint16 subtype _U_, tv
|
|||
proto_tree_add_item(t, hf_icq_tlv_request_seq_num, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
|
||||
switch(req_type) {
|
||||
switch (req_type) {
|
||||
case ICQ_CLI_OFFLINE_MESSAGE_REQ: return offset;
|
||||
case ICQ_CLI_DELETE_OFFLINE_MSGS: return offset;
|
||||
case ICQ_SRV_OFFLINE_MSGS:
|
||||
/* FIXME */
|
||||
break;
|
||||
case ICQ_SRV_END_OF_OFFLINE_MSGS:
|
||||
case ICQ_SRV_END_OF_OFFLINE_MSGS:
|
||||
proto_tree_add_item(t, hf_icq_dropped_msg_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
return offset+1;
|
||||
case ICQ_CLI_META_INFO_REQ:
|
||||
case ICQ_SRV_META_INFO_REPL:
|
||||
req_subtype = tvb_get_letohs(tvb, offset);
|
||||
subtype_item = proto_tree_add_item(t, hf_icq_meta_subtype, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset+=2;
|
||||
|
||||
for(i = 0; icq_calls[i].name; i++) {
|
||||
if(icq_calls[i].subtype == req_subtype) break;
|
||||
|
||||
for (i = 0; icq_calls[i].name; i++) {
|
||||
if (icq_calls[i].subtype == req_subtype) break;
|
||||
}
|
||||
|
||||
col_set_str(pinfo->cinfo, COL_INFO, icq_calls[i].name?icq_calls[i].name:"Unknown ICQ Meta Call");
|
||||
|
||||
proto_item_append_text(subtype_item, " (%s)", icq_calls[i].name?icq_calls[i].name:"Unknown");
|
||||
|
||||
if(icq_calls[i].dissector)
|
||||
if (icq_calls[i].dissector)
|
||||
return icq_calls[i].dissector(tvb_new_subset_remaining(tvb, offset), pinfo, t);
|
||||
|
||||
default:
|
||||
|
|
|
@ -43,9 +43,9 @@ void proto_reg_handoff_aim_location(void);
|
|||
#define AIM_LOCATION_RIGHTS_TLV_MAX_CAPABILITIES 0x0002
|
||||
|
||||
static const aim_tlv aim_location_rights_tlvs[] = {
|
||||
{ AIM_LOCATION_RIGHTS_TLV_MAX_PROFILE_LENGTH, "Max Profile Length", dissect_aim_tlv_value_uint16 },
|
||||
{ AIM_LOCATION_RIGHTS_TLV_MAX_CAPABILITIES, "Max capabilities", dissect_aim_tlv_value_uint16 },
|
||||
{ 0, NULL, NULL }
|
||||
{ AIM_LOCATION_RIGHTS_TLV_MAX_PROFILE_LENGTH, "Max Profile Length", dissect_aim_tlv_value_uint16 },
|
||||
{ AIM_LOCATION_RIGHTS_TLV_MAX_CAPABILITIES, "Max capabilities", dissect_aim_tlv_value_uint16 },
|
||||
{ 0, NULL, NULL }
|
||||
};
|
||||
|
||||
#define AIM_LOCATE_TAG_TLV_SIG_TYPE 0x0001
|
||||
|
@ -60,16 +60,16 @@ static const aim_tlv aim_location_rights_tlvs[] = {
|
|||
#define AIM_LOCATE_TAG_TLV_HTML_INFO_DATA 0x000E
|
||||
|
||||
static const aim_tlv aim_locate_tags_tlvs[] = {
|
||||
{ AIM_LOCATE_TAG_TLV_SIG_TYPE, "Signature MIME Type", dissect_aim_tlv_value_string },
|
||||
{ AIM_LOCATE_TAG_TLV_SIG_DATA, "Signature Data", dissect_aim_tlv_value_string },
|
||||
{ AIM_LOCATE_TAG_TLV_UNAVAILABLE_TYPE, "Away Message MIME Type", dissect_aim_tlv_value_string },
|
||||
{ AIM_LOCATE_TAG_TLV_UNAVAILABLE_DATA, "Away Message Data", dissect_aim_tlv_value_string },
|
||||
{ AIM_LOCATE_TAG_TLV_CAPABILITIES, "Client Capabilities", dissect_aim_tlv_value_client_capabilities },
|
||||
{ AIM_LOCATE_TAG_TLV_SIG_TIME, "Signature Time", dissect_aim_tlv_value_time },
|
||||
{ AIM_LOCATE_TAG_TLV_UNAVAILABLE_TIME, "Away Message Time", dissect_aim_tlv_value_time },
|
||||
{ AIM_LOCATE_TAG_TLV_SUPPORT_HOST_SIG, "Enable Server Based Profiles", dissect_aim_tlv_value_uint8 },
|
||||
{ AIM_LOCATE_TAG_TLV_HTML_INFO_TYPE, "Host Based Buddy MIME Type", dissect_aim_tlv_value_string },
|
||||
{ AIM_LOCATE_TAG_TLV_HTML_INFO_DATA, "Host Bases Buddy Data", dissect_aim_tlv_value_string },
|
||||
{ AIM_LOCATE_TAG_TLV_SIG_TYPE, "Signature MIME Type" , dissect_aim_tlv_value_string },
|
||||
{ AIM_LOCATE_TAG_TLV_SIG_DATA, "Signature Data" , dissect_aim_tlv_value_string },
|
||||
{ AIM_LOCATE_TAG_TLV_UNAVAILABLE_TYPE, "Away Message MIME Type" , dissect_aim_tlv_value_string },
|
||||
{ AIM_LOCATE_TAG_TLV_UNAVAILABLE_DATA, "Away Message Data" , dissect_aim_tlv_value_string },
|
||||
{ AIM_LOCATE_TAG_TLV_CAPABILITIES, "Client Capabilities" , dissect_aim_tlv_value_client_capabilities },
|
||||
{ AIM_LOCATE_TAG_TLV_SIG_TIME, "Signature Time" , dissect_aim_tlv_value_time },
|
||||
{ AIM_LOCATE_TAG_TLV_UNAVAILABLE_TIME, "Away Message Time" , dissect_aim_tlv_value_time },
|
||||
{ AIM_LOCATE_TAG_TLV_SUPPORT_HOST_SIG, "Enable Server Based Profiles" , dissect_aim_tlv_value_uint8 },
|
||||
{ AIM_LOCATE_TAG_TLV_HTML_INFO_TYPE, "Host Based Buddy MIME Type" , dissect_aim_tlv_value_string },
|
||||
{ AIM_LOCATE_TAG_TLV_HTML_INFO_DATA, "Host Bases Buddy Data" , dissect_aim_tlv_value_string },
|
||||
{ 0, NULL, NULL }
|
||||
};
|
||||
|
||||
|
@ -78,10 +78,10 @@ static const aim_tlv aim_locate_tags_tlvs[] = {
|
|||
#define FAMILY_LOCATION_USERINFO_INFOTYPE_CAPS 0x0005
|
||||
|
||||
static const value_string aim_snac_location_request_user_info_infotypes[] = {
|
||||
{ FAMILY_LOCATION_USERINFO_INFOTYPE_GENERALINFO, "Request General Info" },
|
||||
{ FAMILY_LOCATION_USERINFO_INFOTYPE_AWAYMSG, "Request Away Message" },
|
||||
{ FAMILY_LOCATION_USERINFO_INFOTYPE_CAPS, "Request Capabilities" },
|
||||
{ 0, NULL }
|
||||
{ FAMILY_LOCATION_USERINFO_INFOTYPE_GENERALINFO, "Request General Info" },
|
||||
{ FAMILY_LOCATION_USERINFO_INFOTYPE_AWAYMSG, "Request Away Message" },
|
||||
{ FAMILY_LOCATION_USERINFO_INFOTYPE_CAPS, "Request Capabilities" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
/* Initialize the protocol and registered fields */
|
||||
|
@ -107,7 +107,7 @@ static int dissect_aim_location_setuserinfo(tvbuff_t *tvb, packet_info *pinfo, p
|
|||
static int dissect_aim_location_watcher_notification(tvbuff_t *tvb, packet_info *pinfo, proto_tree *loc_tree)
|
||||
{
|
||||
int offset = 0;
|
||||
while(tvb_length_remaining(tvb, offset) > 0) {
|
||||
while (tvb_length_remaining(tvb, offset) > 0) {
|
||||
offset = dissect_aim_buddyname(tvb, pinfo, offset, loc_tree);
|
||||
}
|
||||
return offset;
|
||||
|
@ -118,15 +118,13 @@ static int dissect_aim_location_user_info_query(tvbuff_t *tvb, packet_info *pinf
|
|||
return dissect_aim_buddyname(tvb, pinfo, 4, loc_tree);
|
||||
}
|
||||
|
||||
static int dissect_aim_snac_location_request_user_information(tvbuff_t *tvb,
|
||||
packet_info *pinfo _U_,
|
||||
proto_tree *tree)
|
||||
static int dissect_aim_snac_location_request_user_information(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
|
||||
{
|
||||
int offset = 0;
|
||||
int offset = 0;
|
||||
guint8 buddyname_length = 0;
|
||||
|
||||
/* Info Type */
|
||||
proto_tree_add_item(tree, hf_aim_snac_location_request_user_info_infotype,
|
||||
proto_tree_add_item(tree, hf_aim_snac_location_request_user_info_infotype,
|
||||
tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset += 2;
|
||||
|
||||
|
@ -142,11 +140,9 @@ static int dissect_aim_snac_location_request_user_information(tvbuff_t *tvb,
|
|||
return offset;
|
||||
}
|
||||
|
||||
static int dissect_aim_snac_location_user_information(tvbuff_t *tvb,
|
||||
packet_info *pinfo _U_,
|
||||
proto_tree *tree)
|
||||
static int dissect_aim_snac_location_user_information(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
|
||||
{
|
||||
int offset = 0;
|
||||
int offset = 0;
|
||||
guint8 buddyname_length = 0;
|
||||
|
||||
/* Buddy Name length */
|
||||
|
@ -168,15 +164,15 @@ static int dissect_aim_snac_location_user_information(tvbuff_t *tvb,
|
|||
}
|
||||
|
||||
static const aim_subtype aim_fnac_family_location[] = {
|
||||
{ 0x0001, "Error", dissect_aim_snac_error },
|
||||
{ 0x0002, "Request Rights", NULL },
|
||||
{ 0x0003, "Rights Info", dissect_aim_location_rightsinfo },
|
||||
{ 0x0004, "Set User Info", dissect_aim_location_setuserinfo },
|
||||
{ 0x0005, "Request User Info", dissect_aim_snac_location_request_user_information },
|
||||
{ 0x0006, "User Info", dissect_aim_snac_location_user_information },
|
||||
{ 0x0007, "Watcher Subrequest", NULL },
|
||||
{ 0x0008, "Watcher Notification", dissect_aim_location_watcher_notification },
|
||||
{ 0x0015, "User Info Query", dissect_aim_location_user_info_query },
|
||||
{ 0x0001, "Error" , dissect_aim_snac_error },
|
||||
{ 0x0002, "Request Rights" , NULL },
|
||||
{ 0x0003, "Rights Info" , dissect_aim_location_rightsinfo },
|
||||
{ 0x0004, "Set User Info" , dissect_aim_location_setuserinfo },
|
||||
{ 0x0005, "Request User Info" , dissect_aim_snac_location_request_user_information },
|
||||
{ 0x0006, "User Info" , dissect_aim_snac_location_user_information },
|
||||
{ 0x0007, "Watcher Subrequest" , NULL },
|
||||
{ 0x0008, "Watcher Notification" , dissect_aim_location_watcher_notification },
|
||||
{ 0x0015, "User Info Query" , dissect_aim_location_user_info_query },
|
||||
{ 0, NULL, NULL }
|
||||
};
|
||||
|
||||
|
@ -189,16 +185,16 @@ proto_register_aim_location(void)
|
|||
/* Setup list of header fields */
|
||||
static hf_register_info hf[] = {
|
||||
{ &hf_aim_buddyname_len,
|
||||
{ "Buddyname len", "aim_location.buddynamelen", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
||||
{ "Buddyname len", "aim_location.buddynamelen", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
|
||||
},
|
||||
{ &hf_aim_buddyname,
|
||||
{ "Buddy Name", "aim_location.buddyname", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
||||
{ "Buddy Name", "aim_location.buddyname", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
|
||||
},
|
||||
{ &hf_aim_userinfo_warninglevel,
|
||||
{ "Warning Level", "aim_location.userinfo.warninglevel", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL },
|
||||
{ "Warning Level", "aim_location.userinfo.warninglevel", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL },
|
||||
},
|
||||
{ &hf_aim_snac_location_request_user_info_infotype,
|
||||
{ "Infotype", "aim_location.snac.request_user_info.infotype", FT_UINT16, BASE_HEX, VALS(aim_snac_location_request_user_info_infotypes), 0x0,
|
||||
{ "Infotype", "aim_location.snac.request_user_info.infotype", FT_UINT16, BASE_HEX, VALS(aim_snac_location_request_user_info_infotypes), 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
};
|
||||
|
|
|
@ -43,7 +43,7 @@ static int proto_aim_oft = -1;
|
|||
/*static int ett_aim_recvfile = -1;
|
||||
static int ett_aim_sendfile = -1;*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* cookie (8 chars)
|
||||
* encrypt (uint16)
|
||||
* compress (uint16)
|
||||
|
@ -70,7 +70,7 @@ static int ett_aim_sendfile = -1;*/
|
|||
* nencode (uint16)
|
||||
* nlanguage (uint16)
|
||||
* filename (raw, 64 chars)
|
||||
*
|
||||
*
|
||||
* length of file (uint16)
|
||||
* file data
|
||||
*/
|
||||
|
@ -102,7 +102,7 @@ proto_reg_handoff_aim_oft(void)
|
|||
{
|
||||
/* dissector_handle_t aim_handle;*/
|
||||
|
||||
/* FIXME
|
||||
/* FIXME
|
||||
aim_handle = new_create_dissector_handle(dissect_aim, proto_aim);
|
||||
dissector_add_uint("tcp.port", TCP_PORT_AIM, aim_handle);*/
|
||||
}
|
||||
|
|
|
@ -395,7 +395,7 @@ dissect_amr_be(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint amr
|
|||
|
||||
/* Check if we have enough data available for our frames */
|
||||
if (tvb_reported_length_remaining(tvb, bitcount/8) < bytes_needed_for_frames) {
|
||||
item = proto_tree_add_text(tree, tvb, bitcount/8, bytes_needed_for_frames,
|
||||
item = proto_tree_add_text(tree, tvb, bitcount/8, bytes_needed_for_frames,
|
||||
"Error: %d Bytes available, %d would be needed!",
|
||||
tvb_reported_length_remaining(tvb, bitcount/8),
|
||||
bytes_needed_for_frames);
|
||||
|
@ -596,7 +596,7 @@ dissect_amr_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
actx = get_asn1_ctx(pinfo->private_data);
|
||||
DISSECTOR_ASSERT(actx != NULL);
|
||||
if (tree && actx != NULL) {
|
||||
if (tree && (actx != NULL)) {
|
||||
amr_capability_t *ftr;
|
||||
ftr = find_cap(pinfo->match_string);
|
||||
if (ftr) {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -6262,7 +6262,7 @@ static const value_string ansi_a_ms_info_rec_signal_type_vals[] = {
|
|||
{ 0x3, "Reserved"},
|
||||
{ 0, NULL}
|
||||
};
|
||||
|
||||
|
||||
static const value_string ansi_a_ms_info_rec_signal_alert_pitch_vals[] = {
|
||||
{ 0x0, "Medium pitch (standard alert)"},
|
||||
{ 0x1, "High pitch"},
|
||||
|
@ -12426,8 +12426,8 @@ proto_reg_handoff_ansi_a(void)
|
|||
|
||||
dissector_add_uint("bsap.pdu_type", BSSAP_PDU_TYPE_BSMAP, bsmap_handle);
|
||||
dissector_add_uint("bsap.pdu_type", BSSAP_PDU_TYPE_DTAP, dtap_handle);
|
||||
dissector_add_string("media_type", "application/femtointerfacemsg", sip_dtap_bsmap_handle);
|
||||
dissector_add_string("media_type", "application/vnd.3gpp2.femtointerfacemsg", sip_dtap_bsmap_handle);
|
||||
dissector_add_string("media_type", "application/femtointerfacemsg", sip_dtap_bsmap_handle);
|
||||
dissector_add_string("media_type", "application/vnd.3gpp2.femtointerfacemsg", sip_dtap_bsmap_handle);
|
||||
|
||||
ansi_a_prefs_initialized = TRUE;
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ ext_value_string_t;
|
|||
|
||||
/*
|
||||
* the following allows TAP code access to the messages
|
||||
* without having to duplicate it. With MSVC and a
|
||||
* without having to duplicate it. With MSVC and a
|
||||
* libwireshark.dll, we need a special declaration.
|
||||
*/
|
||||
WS_DLL_PUBLIC const ext_value_string_t *ansi_a_bsmap_strings;
|
||||
|
|
|
@ -111,8 +111,6 @@ static guint32 arp_request_count = 0;
|
|||
static nstime_t time_at_start_of_count;
|
||||
|
||||
|
||||
|
||||
|
||||
/* Map of (IP address -> MAC address) to detect duplicate IP addresses
|
||||
Key is unsigned32 */
|
||||
static GHashTable *address_hash_table = NULL;
|
||||
|
@ -227,7 +225,7 @@ typedef struct duplicate_result_key {
|
|||
#endif
|
||||
|
||||
#ifndef ARPOP_MAPOS_UNARP
|
||||
#define ARPOP_MAPOS_UNARP 23 /*MAPOS UNARP*/
|
||||
#define ARPOP_MAPOS_UNARP 23 /*MAPOS UNARP*/
|
||||
#endif
|
||||
|
||||
#ifndef ARPOP_EXP1
|
||||
|
@ -237,16 +235,16 @@ typedef struct duplicate_result_key {
|
|||
#define ARPOP_EXP2 25 /* Experimental 2 */
|
||||
#endif
|
||||
|
||||
#ifndef ARPOP_RESERVED1
|
||||
#define ARPOP_RESERVED1 0 /*Reserved opcode 1*/
|
||||
#ifndef ARPOP_RESERVED1
|
||||
#define ARPOP_RESERVED1 0 /*Reserved opcode 1*/
|
||||
#endif
|
||||
|
||||
#ifndef ARPOP_RESERVED2
|
||||
#ifndef ARPOP_RESERVED2
|
||||
#define ARPOP_RESERVED2 65535 /*Reserved opcode 2*/
|
||||
#endif
|
||||
|
||||
#ifndef DRARPERR_RESTRICTED
|
||||
#define DRARPERR_RESTRICTED 1
|
||||
#define DRARPERR_RESTRICTED 1
|
||||
#endif
|
||||
|
||||
#ifndef DRARPERR_NOADDRESSES
|
||||
|
@ -268,66 +266,66 @@ typedef struct duplicate_result_key {
|
|||
|
||||
|
||||
static const value_string op_vals[] = {
|
||||
{ARPOP_REQUEST, "request" },
|
||||
{ARPOP_REPLY, "reply" },
|
||||
{ARPOP_RREQUEST, "reverse request"},
|
||||
{ARPOP_RREPLY, "reverse reply" },
|
||||
{ARPOP_DRARPREQUEST, "drarp request"},
|
||||
{ARPOP_DRARPREPLY, "drarp reply"},
|
||||
{ARPOP_DRARPERROR, "drarp error"},
|
||||
{ARPOP_IREQUEST, "inverse request"},
|
||||
{ARPOP_IREPLY, "inverse reply" },
|
||||
{ATMARPOP_NAK, "arp nak" },
|
||||
{ARPOP_MARS_REQUEST, "mars request"},
|
||||
{ARPOP_MARS_MULTI, "mars multi"},
|
||||
{ARPOP_MARS_MSERV, "mars mserv"},
|
||||
{ARPOP_MARS_JOIN, "mars join"},
|
||||
{ARPOP_MARS_LEAVE, "mars leave"},
|
||||
{ARPOP_MARS_NAK, "mars nak"},
|
||||
{ARPOP_MARS_UNSERV, "mars unserv"},
|
||||
{ARPOP_MARS_SJOIN, "mars sjoin"},
|
||||
{ARPOP_MARS_SLEAVE, "mars sleave"},
|
||||
{ARPOP_MARS_GROUPLIST_REQUEST, "mars grouplist request"},
|
||||
{ARPOP_MARS_GROUPLIST_REPLY, "mars gruoplist reply"},
|
||||
{ARPOP_MARS_REDIRECT_MAP, "mars redirect map"},
|
||||
{ARPOP_MAPOS_UNARP, "mapos unarp"},
|
||||
{ARPOP_EXP1, "experimental 1" },
|
||||
{ARPOP_EXP2, "experimental 2" },
|
||||
{ARPOP_RESERVED1, "reserved"},
|
||||
{ARPOP_RESERVED2, "reserved"},
|
||||
{ARPOP_REQUEST, "request" },
|
||||
{ARPOP_REPLY, "reply" },
|
||||
{ARPOP_RREQUEST, "reverse request" },
|
||||
{ARPOP_RREPLY, "reverse reply" },
|
||||
{ARPOP_DRARPREQUEST, "drarp request" },
|
||||
{ARPOP_DRARPREPLY, "drarp reply" },
|
||||
{ARPOP_DRARPERROR, "drarp error" },
|
||||
{ARPOP_IREQUEST, "inverse request" },
|
||||
{ARPOP_IREPLY, "inverse reply" },
|
||||
{ATMARPOP_NAK, "arp nak" },
|
||||
{ARPOP_MARS_REQUEST, "mars request" },
|
||||
{ARPOP_MARS_MULTI, "mars multi" },
|
||||
{ARPOP_MARS_MSERV, "mars mserv" },
|
||||
{ARPOP_MARS_JOIN, "mars join" },
|
||||
{ARPOP_MARS_LEAVE, "mars leave" },
|
||||
{ARPOP_MARS_NAK, "mars nak" },
|
||||
{ARPOP_MARS_UNSERV, "mars unserv" },
|
||||
{ARPOP_MARS_SJOIN, "mars sjoin" },
|
||||
{ARPOP_MARS_SLEAVE, "mars sleave" },
|
||||
{ARPOP_MARS_GROUPLIST_REQUEST, "mars grouplist request" },
|
||||
{ARPOP_MARS_GROUPLIST_REPLY, "mars gruoplist reply" },
|
||||
{ARPOP_MARS_REDIRECT_MAP, "mars redirect map" },
|
||||
{ARPOP_MAPOS_UNARP, "mapos unarp" },
|
||||
{ARPOP_EXP1, "experimental 1" },
|
||||
{ARPOP_EXP2, "experimental 2" },
|
||||
{ARPOP_RESERVED1, "reserved" },
|
||||
{ARPOP_RESERVED2, "reserved" },
|
||||
{0, NULL}};
|
||||
|
||||
static const value_string drarp_status[]={
|
||||
{DRARPERR_RESTRICTED, "restricted"},
|
||||
{DRARPERR_NOADDRESSES, "no address"},
|
||||
{DRARPERR_SERVERDOWN, "serverdown"},
|
||||
{DRARPERR_MOVED, "moved"},
|
||||
{DRARPERR_FAILURE, "failure"},
|
||||
{DRARPERR_RESTRICTED, "restricted" },
|
||||
{DRARPERR_NOADDRESSES, "no address" },
|
||||
{DRARPERR_SERVERDOWN, "serverdown" },
|
||||
{DRARPERR_MOVED, "moved" },
|
||||
{DRARPERR_FAILURE, "failure" },
|
||||
{0, NULL}};
|
||||
|
||||
static const value_string atmop_vals[] = {
|
||||
{ARPOP_REQUEST, "request" },
|
||||
{ARPOP_REPLY, "reply" },
|
||||
{ARPOP_IREQUEST, "inverse request"},
|
||||
{ARPOP_IREPLY, "inverse reply" },
|
||||
{ATMARPOP_NAK, "nak" },
|
||||
{ARPOP_MARS_REQUEST, "mars request"},
|
||||
{ARPOP_MARS_MULTI, "mars multi"},
|
||||
{ARPOP_MARS_MSERV, "mars mserv"},
|
||||
{ARPOP_MARS_JOIN, "mars join"},
|
||||
{ARPOP_MARS_LEAVE, "mars leave"},
|
||||
{ARPOP_MARS_NAK, "mars nak"},
|
||||
{ARPOP_MARS_UNSERV, "mars unserv"},
|
||||
{ARPOP_MARS_SJOIN, "mars sjoin"},
|
||||
{ARPOP_MARS_SLEAVE, "mars sleave"},
|
||||
{ARPOP_MARS_GROUPLIST_REQUEST, "mars grouplist request"},
|
||||
{ARPOP_MARS_GROUPLIST_REPLY, "mars gruoplist reply"},
|
||||
{ARPOP_MARS_REDIRECT_MAP, "mars redirect map"},
|
||||
{ARPOP_MAPOS_UNARP, "mapos unarp"},
|
||||
{ARPOP_EXP1, "experimental 1" },
|
||||
{ARPOP_EXP2, "experimental 2" },
|
||||
{ARPOP_RESERVED1, "reserved"},
|
||||
{ARPOP_RESERVED2, "reserved"},
|
||||
{ARPOP_REQUEST, "request" },
|
||||
{ARPOP_REPLY, "reply" },
|
||||
{ARPOP_IREQUEST, "inverse request" },
|
||||
{ARPOP_IREPLY, "inverse reply" },
|
||||
{ATMARPOP_NAK, "nak" },
|
||||
{ARPOP_MARS_REQUEST, "mars request" },
|
||||
{ARPOP_MARS_MULTI, "mars multi" },
|
||||
{ARPOP_MARS_MSERV, "mars mserv" },
|
||||
{ARPOP_MARS_JOIN, "mars join" },
|
||||
{ARPOP_MARS_LEAVE, "mars leave" },
|
||||
{ARPOP_MARS_NAK, "mars nak" },
|
||||
{ARPOP_MARS_UNSERV, "mars unserv" },
|
||||
{ARPOP_MARS_SJOIN, "mars sjoin" },
|
||||
{ARPOP_MARS_SLEAVE, "mars sleave" },
|
||||
{ARPOP_MARS_GROUPLIST_REQUEST, "mars grouplist request" },
|
||||
{ARPOP_MARS_GROUPLIST_REPLY, "mars gruoplist reply" },
|
||||
{ARPOP_MARS_REDIRECT_MAP, "mars redirect map" },
|
||||
{ARPOP_MAPOS_UNARP, "mapos unarp" },
|
||||
{ARPOP_EXP1, "experimental 1" },
|
||||
{ARPOP_EXP2, "experimental 2" },
|
||||
{ARPOP_RESERVED1, "reserved" },
|
||||
{ARPOP_RESERVED2, "reserved" },
|
||||
{0, NULL} };
|
||||
|
||||
#define ATMARP_IS_E164 0x40 /* bit in type/length for E.164 format */
|
||||
|
@ -393,8 +391,8 @@ arpproaddr_to_str(const guint8 *ad, int ad_len, guint16 type)
|
|||
static const gchar *
|
||||
atmarpnum_to_str(const guint8 *ad, int ad_tl)
|
||||
{
|
||||
int ad_len = ad_tl & ATMARP_LEN_MASK;
|
||||
gchar *cur;
|
||||
int ad_len = ad_tl & ATMARP_LEN_MASK;
|
||||
gchar *cur;
|
||||
|
||||
if (ad_len == 0)
|
||||
return "<No address>";
|
||||
|
@ -426,7 +424,7 @@ atmarpnum_to_str(const guint8 *ad, int ad_tl)
|
|||
static const gchar *
|
||||
atmarpsubaddr_to_str(const guint8 *ad, int ad_tl)
|
||||
{
|
||||
int ad_len = ad_tl & ATMARP_LEN_MASK;
|
||||
int ad_len = ad_tl & ATMARP_LEN_MASK;
|
||||
|
||||
if (ad_len == 0)
|
||||
return "<No address>";
|
||||
|
@ -444,46 +442,46 @@ atmarpsubaddr_to_str(const guint8 *ad, int ad_tl)
|
|||
}
|
||||
|
||||
const value_string arp_hrd_vals[] = {
|
||||
{ARPHRD_NETROM, "NET/ROM pseudo" },
|
||||
{ARPHRD_ETHER, "Ethernet" },
|
||||
{ARPHRD_EETHER, "Experimental Ethernet"},
|
||||
{ARPHRD_AX25, "AX.25" },
|
||||
{ARPHRD_PRONET, "ProNET" },
|
||||
{ARPHRD_CHAOS, "Chaos" },
|
||||
{ARPHRD_IEEE802, "IEEE 802" },
|
||||
{ARPHRD_ARCNET, "ARCNET" },
|
||||
{ARPHRD_HYPERCH, "Hyperchannel" },
|
||||
{ARPHRD_LANSTAR, "Lanstar" },
|
||||
{ARPHRD_AUTONET, "Autonet Short Address"},
|
||||
{ARPHRD_LOCALTLK, "Localtalk" },
|
||||
{ARPHRD_LOCALNET, "LocalNet" },
|
||||
{ARPHRD_ULTRALNK, "Ultra link" },
|
||||
{ARPHRD_SMDS, "SMDS" },
|
||||
{ARPHRD_DLCI, "Frame Relay DLCI" },
|
||||
{ARPHRD_ATM, "ATM" },
|
||||
{ARPHRD_HDLC, "HDLC" },
|
||||
{ARPHRD_FIBREC, "Fibre Channel" },
|
||||
{ARPHRD_ATM2225, "ATM (RFC 2225)" },
|
||||
{ARPHRD_SERIAL, "Serial Line" },
|
||||
{ARPHRD_ATM2, "ATM" },
|
||||
{ARPHRD_MS188220, "MIL-STD-188-220" },
|
||||
{ARPHRD_METRICOM, "Metricom STRIP" },
|
||||
{ARPHRD_IEEE1394, "IEEE 1394.1995" },
|
||||
{ARPHRD_MAPOS, "MAPOS" },
|
||||
{ARPHRD_TWINAX, "Twinaxial" },
|
||||
{ARPHRD_EUI_64, "EUI-64" },
|
||||
{ARPHRD_HIPARP, "HIPARP" },
|
||||
{ARPHRD_IP_ARP_ISO_7816_3, "IP and ARP over ISO 7816-3"},
|
||||
{ARPHRD_ARPSEC, "ARPSec" },
|
||||
{ARPHRD_IPSEC_TUNNEL, "IPsec tunnel"},
|
||||
{ARPHRD_INFINIBAND, "InfiniBand" },
|
||||
{ARPHRD_TIA_102_PRJ_25_CAI, "TIA-102 Project 25 CAI"},
|
||||
{ARPHRD_WIEGAND_INTERFACE, "Wiegand Interface"},
|
||||
{ARPHRD_PURE_IP, "Pure IP" },
|
||||
{ARPHDR_HW_EXP1, "Experimental 1"},
|
||||
{ARPHDR_HFI, "HFI" },
|
||||
{ARPHDR_HW_EXP2, "Experimental 2"},
|
||||
{0, NULL } };
|
||||
{ARPHRD_NETROM, "NET/ROM pseudo" },
|
||||
{ARPHRD_ETHER, "Ethernet" },
|
||||
{ARPHRD_EETHER, "Experimental Ethernet" },
|
||||
{ARPHRD_AX25, "AX.25" },
|
||||
{ARPHRD_PRONET, "ProNET" },
|
||||
{ARPHRD_CHAOS, "Chaos" },
|
||||
{ARPHRD_IEEE802, "IEEE 802" },
|
||||
{ARPHRD_ARCNET, "ARCNET" },
|
||||
{ARPHRD_HYPERCH, "Hyperchannel" },
|
||||
{ARPHRD_LANSTAR, "Lanstar" },
|
||||
{ARPHRD_AUTONET, "Autonet Short Address" },
|
||||
{ARPHRD_LOCALTLK, "Localtalk" },
|
||||
{ARPHRD_LOCALNET, "LocalNet" },
|
||||
{ARPHRD_ULTRALNK, "Ultra link" },
|
||||
{ARPHRD_SMDS, "SMDS" },
|
||||
{ARPHRD_DLCI, "Frame Relay DLCI" },
|
||||
{ARPHRD_ATM, "ATM" },
|
||||
{ARPHRD_HDLC, "HDLC" },
|
||||
{ARPHRD_FIBREC, "Fibre Channel" },
|
||||
{ARPHRD_ATM2225, "ATM (RFC 2225)" },
|
||||
{ARPHRD_SERIAL, "Serial Line" },
|
||||
{ARPHRD_ATM2, "ATM" },
|
||||
{ARPHRD_MS188220, "MIL-STD-188-220" },
|
||||
{ARPHRD_METRICOM, "Metricom STRIP" },
|
||||
{ARPHRD_IEEE1394, "IEEE 1394.1995" },
|
||||
{ARPHRD_MAPOS, "MAPOS" },
|
||||
{ARPHRD_TWINAX, "Twinaxial" },
|
||||
{ARPHRD_EUI_64, "EUI-64" },
|
||||
{ARPHRD_HIPARP, "HIPARP" },
|
||||
{ARPHRD_IP_ARP_ISO_7816_3, "IP and ARP over ISO 7816-3" },
|
||||
{ARPHRD_ARPSEC, "ARPSec" },
|
||||
{ARPHRD_IPSEC_TUNNEL, "IPsec tunnel" },
|
||||
{ARPHRD_INFINIBAND, "InfiniBand" },
|
||||
{ARPHRD_TIA_102_PRJ_25_CAI, "TIA-102 Project 25 CAI" },
|
||||
{ARPHRD_WIEGAND_INTERFACE, "Wiegand Interface" },
|
||||
{ARPHRD_PURE_IP, "Pure IP" },
|
||||
{ARPHDR_HW_EXP1, "Experimental 1" },
|
||||
{ARPHDR_HFI, "HFI" },
|
||||
{ARPHDR_HW_EXP2, "Experimental 2" },
|
||||
{0, NULL } };
|
||||
|
||||
/* Offsets of fields within an ARP packet. */
|
||||
#define AR_HRD 0
|
||||
|
@ -494,13 +492,13 @@ const value_string arp_hrd_vals[] = {
|
|||
#define MIN_ARP_HEADER_SIZE 8
|
||||
|
||||
/* Offsets of fields within an ATMARP packet. */
|
||||
#define ATM_AR_HRD 0
|
||||
#define ATM_AR_PRO 2
|
||||
#define ATM_AR_SHTL 4
|
||||
#define ATM_AR_SSTL 5
|
||||
#define ATM_AR_OP 6
|
||||
#define ATM_AR_SPLN 8
|
||||
#define ATM_AR_THTL 9
|
||||
#define ATM_AR_HRD 0
|
||||
#define ATM_AR_PRO 2
|
||||
#define ATM_AR_SHTL 4
|
||||
#define ATM_AR_SSTL 5
|
||||
#define ATM_AR_OP 6
|
||||
#define ATM_AR_SPLN 8
|
||||
#define ATM_AR_THTL 9
|
||||
#define ATM_AR_TSTL 10
|
||||
#define ATM_AR_TPLN 11
|
||||
#define MIN_ATMARP_HEADER_SIZE 12
|
||||
|
@ -509,7 +507,7 @@ static void
|
|||
dissect_atm_number(tvbuff_t *tvb, int offset, int tl, int hf_e164,
|
||||
int hf_nsap, proto_tree *tree)
|
||||
{
|
||||
int len = tl & ATMARP_LEN_MASK;
|
||||
int len = tl & ATMARP_LEN_MASK;
|
||||
proto_item *ti;
|
||||
proto_tree *nsap_tree;
|
||||
|
||||
|
@ -636,9 +634,9 @@ check_for_duplicate_addresses(packet_info *pinfo, proto_tree *tree,
|
|||
const guint8 *mac, guint32 ip,
|
||||
guint32 *duplicate_ip)
|
||||
{
|
||||
address_hash_value *value;
|
||||
address_hash_value *result = NULL;
|
||||
duplicate_result_key result_key = {pinfo->fd->num, ip};
|
||||
address_hash_value *value;
|
||||
address_hash_value *result = NULL;
|
||||
duplicate_result_key result_key = {pinfo->fd->num, ip};
|
||||
|
||||
/* Look up existing result */
|
||||
if (pinfo->fd->flags.visited) {
|
||||
|
@ -830,31 +828,31 @@ check_for_storm_count(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
static void
|
||||
dissect_atmarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
guint16 ar_hrd;
|
||||
guint16 ar_pro;
|
||||
guint8 ar_shtl;
|
||||
guint8 ar_shl;
|
||||
guint8 ar_sstl;
|
||||
guint8 ar_ssl;
|
||||
guint16 ar_op;
|
||||
guint8 ar_spln;
|
||||
guint8 ar_thtl;
|
||||
guint8 ar_thl;
|
||||
guint8 ar_tstl;
|
||||
guint8 ar_tsl;
|
||||
guint8 ar_tpln;
|
||||
int tot_len;
|
||||
proto_tree *arp_tree;
|
||||
proto_item *ti;
|
||||
const gchar *op_str;
|
||||
int sha_offset, ssa_offset, spa_offset;
|
||||
int tha_offset, tsa_offset, tpa_offset;
|
||||
const guint8 *sha_val, *ssa_val, *spa_val;
|
||||
const guint8 *tha_val, *tsa_val, *tpa_val;
|
||||
const gchar *sha_str, *ssa_str, *spa_str;
|
||||
const gchar *tha_str, *tsa_str, *tpa_str;
|
||||
proto_tree *tl_tree;
|
||||
proto_item *tl;
|
||||
guint16 ar_hrd;
|
||||
guint16 ar_pro;
|
||||
guint8 ar_shtl;
|
||||
guint8 ar_shl;
|
||||
guint8 ar_sstl;
|
||||
guint8 ar_ssl;
|
||||
guint16 ar_op;
|
||||
guint8 ar_spln;
|
||||
guint8 ar_thtl;
|
||||
guint8 ar_thl;
|
||||
guint8 ar_tstl;
|
||||
guint8 ar_tsl;
|
||||
guint8 ar_tpln;
|
||||
int tot_len;
|
||||
proto_tree *arp_tree;
|
||||
proto_item *ti;
|
||||
const gchar *op_str;
|
||||
int sha_offset, ssa_offset, spa_offset;
|
||||
int tha_offset, tsa_offset, tpa_offset;
|
||||
const guint8 *sha_val, *ssa_val, *spa_val;
|
||||
const guint8 *tha_val, *tsa_val, *tpa_val;
|
||||
const gchar *sha_str, *ssa_str, *spa_str;
|
||||
const gchar *tha_str, *tsa_str, *tpa_str;
|
||||
proto_tree *tl_tree;
|
||||
proto_item *tl;
|
||||
|
||||
/* Override the setting to "ARP/RARP". */
|
||||
pinfo->current_proto = "ATMARP";
|
||||
|
@ -998,14 +996,14 @@ dissect_atmarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case ARPOP_MARS_REQUEST:
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "MARS request from %s%s%s at %s",
|
||||
sha_str,
|
||||
((ssa_str != NULL) ? "," : ""),
|
||||
((ssa_str != NULL) ? "," : ""),
|
||||
((ssa_str != NULL) ? ssa_str : ""),
|
||||
spa_str);
|
||||
break;
|
||||
|
||||
case ARPOP_MARS_MULTI:
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "MARS MULTI request from %s%s%s at %s",
|
||||
sha_str,
|
||||
sha_str,
|
||||
((ssa_str != NULL) ? "," : ""),
|
||||
((ssa_str != NULL) ? ssa_str : ""),
|
||||
spa_str);
|
||||
|
@ -1013,7 +1011,7 @@ dissect_atmarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case ARPOP_MARS_MSERV:
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "MARS MSERV request from %s%s%s at %s",
|
||||
sha_str,
|
||||
sha_str,
|
||||
((ssa_str != NULL) ? "," : ""),
|
||||
((ssa_str != NULL) ? ssa_str : ""),
|
||||
spa_str);
|
||||
|
@ -1021,7 +1019,7 @@ dissect_atmarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case ARPOP_MARS_JOIN:
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "MARS JOIN request from %s%s%s at %s",
|
||||
sha_str,
|
||||
sha_str,
|
||||
((ssa_str != NULL) ? "," : ""),
|
||||
((ssa_str != NULL) ? ssa_str : ""),
|
||||
spa_str);
|
||||
|
@ -1029,7 +1027,7 @@ dissect_atmarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case ARPOP_MARS_LEAVE:
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "MARS LEAVE from %s%s%s at %s",
|
||||
sha_str,
|
||||
sha_str,
|
||||
((ssa_str != NULL) ? "," : ""),
|
||||
((ssa_str != NULL) ? ssa_str : ""),
|
||||
spa_str);
|
||||
|
@ -1220,20 +1218,20 @@ dissect_atmarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
static void
|
||||
dissect_ax25arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
#define ARP_AX25 204
|
||||
#define ARP_AX25 204
|
||||
|
||||
guint16 ar_hrd;
|
||||
guint16 ar_pro;
|
||||
guint8 ar_hln;
|
||||
guint8 ar_pln;
|
||||
guint16 ar_op;
|
||||
int tot_len;
|
||||
guint16 ar_hrd;
|
||||
guint16 ar_pro;
|
||||
guint8 ar_hln;
|
||||
guint8 ar_pln;
|
||||
guint16 ar_op;
|
||||
int tot_len;
|
||||
proto_tree *arp_tree = NULL;
|
||||
proto_item *ti;
|
||||
const gchar *op_str;
|
||||
int sha_offset, spa_offset, tha_offset, tpa_offset;
|
||||
const guint8 /* *sha_val, */ *spa_val, /* *tha_val, */ *tpa_val;
|
||||
gboolean is_gratuitous;
|
||||
int sha_offset, spa_offset, tha_offset, tpa_offset;
|
||||
const guint8 /* *sha_val, */ *spa_val, /* *tha_val, */ *tpa_val;
|
||||
gboolean is_gratuitous;
|
||||
|
||||
/* Hardware Address Type */
|
||||
ar_hrd = tvb_get_ntohs(tvb, AR_HRD);
|
||||
|
@ -1293,9 +1291,9 @@ dissect_ax25arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
/* ARP requests/replies with the same sender and target protocol
|
||||
address are flagged as "gratuitous ARPs", i.e. ARPs sent out as,
|
||||
in effect, an announcement that the machine has MAC address
|
||||
XX:XX:XX:XX:XX:XX and IPv4 address YY.YY.YY.YY. Requests are to
|
||||
XX:XX:XX:XX:XX:XX and IPv4 address YY.YY.YY.YY. Requests are to
|
||||
provoke complaints if some other machine has the same IPv4 address,
|
||||
replies are used to announce relocation of network address, like
|
||||
replies are used to announce relocation of network address, like
|
||||
in failover solutions. */
|
||||
if (((ar_op == ARPOP_REQUEST) || (ar_op == ARPOP_REPLY)) && (memcmp(spa_val, tpa_val, ar_pln) == 0))
|
||||
is_gratuitous = TRUE;
|
||||
|
@ -1304,10 +1302,10 @@ dissect_ax25arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
switch (ar_op) {
|
||||
case ARPOP_REQUEST:
|
||||
if (is_gratuitous)
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "Gratuitous ARP for %s (Request)",
|
||||
arpproaddr_to_str(tpa_val, ar_pln, ar_pro));
|
||||
else
|
||||
if (is_gratuitous)
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "Gratuitous ARP for %s (Request)",
|
||||
arpproaddr_to_str(tpa_val, ar_pln, ar_pro));
|
||||
else
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "Who has %s? Tell %s",
|
||||
arpproaddr_to_str(tpa_val, ar_pln, ar_pro),
|
||||
arpproaddr_to_str(spa_val, ar_pln, ar_pro));
|
||||
|
@ -1348,16 +1346,16 @@ dissect_ax25arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
}
|
||||
|
||||
if (tree) {
|
||||
if ((op_str = try_val_to_str(ar_op, op_vals))) {
|
||||
if ((op_str = try_val_to_str(ar_op, op_vals))) {
|
||||
if (is_gratuitous && (ar_op == ARPOP_REQUEST))
|
||||
op_str = "request/gratuitous ARP";
|
||||
if (is_gratuitous && (ar_op == ARPOP_REPLY))
|
||||
op_str = "reply/gratuitous ARP";
|
||||
ti = proto_tree_add_protocol_format(tree, proto_arp, tvb, 0, tot_len,
|
||||
"Address Resolution Protocol (%s)", op_str);
|
||||
"Address Resolution Protocol (%s)", op_str);
|
||||
} else
|
||||
ti = proto_tree_add_protocol_format(tree, proto_arp, tvb, 0, tot_len,
|
||||
"Address Resolution Protocol (opcode 0x%04x)", ar_op);
|
||||
"Address Resolution Protocol (opcode 0x%04x)", ar_op);
|
||||
arp_tree = proto_item_add_subtree(ti, ett_arp);
|
||||
proto_tree_add_uint(arp_tree, hf_arp_hard_type, tvb, AR_HRD, 2, ar_hrd);
|
||||
proto_tree_add_uint(arp_tree, hf_arp_proto_type, tvb, AR_PRO, 2, ar_pro);
|
||||
|
@ -1366,25 +1364,25 @@ dissect_ax25arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
proto_tree_add_uint(arp_tree, hf_arp_opcode, tvb, AR_OP, 2, ar_op);
|
||||
if (ar_hln != 0) {
|
||||
proto_tree_add_item(arp_tree,
|
||||
ARP_HW_IS_AX25(ar_hrd, ar_hln) ? hf_arp_src_hw_ax25 : hf_arp_src_hw,
|
||||
tvb, sha_offset, ar_hln, FALSE);
|
||||
ARP_HW_IS_AX25(ar_hrd, ar_hln) ? hf_arp_src_hw_ax25 : hf_arp_src_hw,
|
||||
tvb, sha_offset, ar_hln, FALSE);
|
||||
}
|
||||
if (ar_pln != 0) {
|
||||
proto_tree_add_item(arp_tree,
|
||||
ARP_PRO_IS_IPv4(ar_pro, ar_pln) ? hf_arp_src_proto_ipv4
|
||||
: hf_arp_src_proto,
|
||||
tvb, spa_offset, ar_pln, FALSE);
|
||||
ARP_PRO_IS_IPv4(ar_pro, ar_pln) ? hf_arp_src_proto_ipv4
|
||||
: hf_arp_src_proto,
|
||||
tvb, spa_offset, ar_pln, FALSE);
|
||||
}
|
||||
if (ar_hln != 0) {
|
||||
proto_tree_add_item(arp_tree,
|
||||
ARP_HW_IS_AX25(ar_hrd, ar_hln) ? hf_arp_dst_hw_ax25 : hf_arp_dst_hw,
|
||||
tvb, tha_offset, ar_hln, FALSE);
|
||||
ARP_HW_IS_AX25(ar_hrd, ar_hln) ? hf_arp_dst_hw_ax25 : hf_arp_dst_hw,
|
||||
tvb, tha_offset, ar_hln, FALSE);
|
||||
}
|
||||
if (ar_pln != 0) {
|
||||
proto_tree_add_item(arp_tree,
|
||||
ARP_PRO_IS_IPv4(ar_pro, ar_pln) ? hf_arp_dst_proto_ipv4
|
||||
: hf_arp_dst_proto,
|
||||
tvb, tpa_offset, ar_pln, FALSE);
|
||||
ARP_PRO_IS_IPv4(ar_pro, ar_pln) ? hf_arp_dst_proto_ipv4
|
||||
: hf_arp_dst_proto,
|
||||
tvb, tpa_offset, ar_pln, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1399,20 +1397,20 @@ static const guint8 mac_allzero[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|||
static void
|
||||
dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
guint16 ar_hrd;
|
||||
guint16 ar_pro;
|
||||
guint8 ar_hln;
|
||||
guint8 ar_pln;
|
||||
guint16 ar_op;
|
||||
int tot_len;
|
||||
proto_tree *arp_tree = NULL;
|
||||
proto_item *ti, *item;
|
||||
const gchar *op_str;
|
||||
int sha_offset, spa_offset, tha_offset, tpa_offset;
|
||||
const guint8 *spa_val, *tpa_val;
|
||||
gboolean is_gratuitous;
|
||||
gboolean duplicate_detected = FALSE;
|
||||
guint32 duplicate_ip = 0;
|
||||
guint16 ar_hrd;
|
||||
guint16 ar_pro;
|
||||
guint8 ar_hln;
|
||||
guint8 ar_pln;
|
||||
guint16 ar_op;
|
||||
int tot_len;
|
||||
proto_tree *arp_tree = NULL;
|
||||
proto_item *ti, *item;
|
||||
const gchar *op_str;
|
||||
int sha_offset, spa_offset, tha_offset, tpa_offset;
|
||||
const guint8 *spa_val, *tpa_val;
|
||||
gboolean is_gratuitous;
|
||||
gboolean duplicate_detected = FALSE;
|
||||
guint32 duplicate_ip = 0;
|
||||
|
||||
/* Call it ARP, for now, so that if we throw an exception before
|
||||
we decide whether it's ARP or RARP or IARP or ATMARP, it shows
|
||||
|
@ -1477,7 +1475,7 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case ARPOP_IREPLY:
|
||||
col_set_str(pinfo->cinfo, COL_PROTOCOL, "Inverse ARP");
|
||||
break;
|
||||
|
||||
|
||||
case ARPOP_MARS_REQUEST:
|
||||
case ARPOP_MARS_MULTI:
|
||||
case ARPOP_MARS_MSERV:
|
||||
|
@ -1491,7 +1489,7 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case ARPOP_MARS_GROUPLIST_REPLY:
|
||||
case ARPOP_MARS_REDIRECT_MAP:
|
||||
col_set_str(pinfo->cinfo, COL_PROTOCOL, "MARS");
|
||||
break;
|
||||
break;
|
||||
|
||||
case ARPOP_MAPOS_UNARP:
|
||||
col_set_str(pinfo->cinfo, COL_PROTOCOL, "MAPOS");
|
||||
|
@ -1609,7 +1607,7 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
case ARPOP_DRARPERROR:
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "DRARP Error");
|
||||
break;
|
||||
break;
|
||||
|
||||
case ARPOP_IREPLY:
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "%s is at %s",
|
||||
|
@ -1696,7 +1694,7 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
case ARPOP_MAPOS_UNARP:
|
||||
col_add_fstr(pinfo->cinfo, COL_INFO, "MAPOS UNARP request from %s at %s",
|
||||
tvb_arphrdaddr_to_str(tvb, sha_offset, ar_hln, ar_hrd),
|
||||
arpproaddr_to_str(spa_val, ar_pln, ar_pro));
|
||||
arpproaddr_to_str(spa_val, ar_pln, ar_pro));
|
||||
break;
|
||||
|
||||
case ARPOP_EXP1:
|
||||
|
@ -1734,11 +1732,11 @@ dissect_arp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
proto_tree_add_uint(arp_tree, hf_arp_hard_size, tvb, AR_HLN, 1, ar_hln);
|
||||
proto_tree_add_uint(arp_tree, hf_arp_proto_size, tvb, AR_PLN, 1, ar_pln);
|
||||
proto_tree_add_uint(arp_tree, hf_arp_opcode, tvb, AR_OP, 2, ar_op);
|
||||
if(is_gratuitous)
|
||||
if (is_gratuitous)
|
||||
{
|
||||
item = proto_tree_add_boolean(arp_tree, hf_arp_isgratuitous, tvb, 0, 0, is_gratuitous);
|
||||
PROTO_ITEM_SET_GENERATED(item);
|
||||
}
|
||||
}
|
||||
if (ar_hln != 0) {
|
||||
proto_tree_add_item(arp_tree,
|
||||
ARP_HW_IS_ETHER(ar_hrd, ar_hln) ?
|
||||
|
@ -1882,9 +1880,9 @@ proto_register_arp(void)
|
|||
NULL, HFILL }},
|
||||
|
||||
{ &hf_arp_src_hw_ax25,
|
||||
{ "Sender AX.25 address", "arp.src.hw_ax25",
|
||||
FT_AX25, BASE_NONE, NULL, 0x0,
|
||||
"", HFILL }},
|
||||
{ "Sender AX.25 address", "arp.src.hw_ax25",
|
||||
FT_AX25, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_atmarp_src_atm_num_e164,
|
||||
{ "Sender ATM number (E.164)", "arp.src.atm_num_e164",
|
||||
|
@ -1922,9 +1920,9 @@ proto_register_arp(void)
|
|||
NULL, HFILL }},
|
||||
|
||||
{ &hf_arp_dst_hw_ax25,
|
||||
{ "Target AX.25 address", "arp.dst.hw_ax25",
|
||||
FT_AX25, BASE_NONE, NULL, 0x0,
|
||||
"", HFILL }},
|
||||
{ "Target AX.25 address", "arp.dst.hw_ax25",
|
||||
FT_AX25, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_atmarp_dst_atm_num_e164,
|
||||
{ "Target ATM number (E.164)", "arp.dst.atm_num_e164",
|
||||
|
|
Loading…
Reference in New Issue