Пример #1
0
static void
dissect_operation_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, gint length_count)
{
    proto_item *ti;
    proto_tree *oper_tree;
    guint       type, length;

    while (tvb_reported_length_remaining(tvb, offset) >= TLV_TL_LENGTH)
    {
        oper_tree = proto_tree_add_subtree(tree, tvb, offset, length_count,
            ett_forces_lfbselect_tlv_type_operation, &ti, "Operation TLV");

        type = tvb_get_ntohs(tvb,offset);
        ti = proto_tree_add_item(oper_tree, hf_forces_lfbselect_tlv_type_operation_type,
                                 tvb, offset, 2, ENC_BIG_ENDIAN);
        if (try_val_to_str(type, operation_type_vals) == NULL)
            expert_add_info_format(pinfo, ti, &ei_forces_lfbselect_tlv_type_operation_type,
                "Bogus: ForCES Operation TLV (Type:0x%04x) is not supported", type);

        proto_tree_add_item_ret_uint(oper_tree, hf_forces_lfbselect_tlv_type_operation_length,
                                   tvb, offset+2, 2, ENC_BIG_ENDIAN, &length);

        dissect_path_data_tlv(tvb, pinfo, oper_tree, offset+TLV_TL_LENGTH);
        if (length == 0)
            break;
        offset += length;
    }
}
Пример #2
0
static void
dissect_operation_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset, gint length_count)
{
    proto_item *ti;
    proto_tree *oper_tree;
    guint       type, length;

    while (tvb_reported_length_remaining(tvb, offset) >= TLV_TL_LENGTH)
    {
        ti = proto_tree_add_text(tree, tvb, offset, length_count, "Operation TLV");
        oper_tree = proto_item_add_subtree(ti, ett_forces_lfbselect_tlv_type_operation);

        type = tvb_get_ntohs(tvb,offset);
        ti = proto_tree_add_item(oper_tree, hf_forces_lfbselect_tlv_type_operation_type,
                                 tvb, offset, 2, ENC_BIG_ENDIAN);
        if (match_strval(type, operation_type_vals) == NULL)
            expert_add_info_format(pinfo, ti, PI_PROTOCOL, PI_WARN,
                                   "Bogus: ForCES Operation TLV (Type:0x%04x) is not supported", type);

        length = tvb_get_ntohs(tvb, offset+2);
        proto_tree_add_uint_format(oper_tree, hf_forces_lfbselect_tlv_type_operation_length,
                                   tvb, offset+2, 2, length, "Length: %u Bytes", length);

        dissect_path_data_tlv(tvb, pinfo, oper_tree, offset+TLV_TL_LENGTH);
        if (length == 0)
            break;
        offset += length;
    }
}