예제 #1
0
파일: stp.cpp 프로젝트: anju61188/ostinato
QVariant StpProtocol::fieldData(int index, FieldAttrib attrib,
                                int streamIndex) const
{
    QString str[] = {"Topology Change", "Topology Change Acknowledgment"};

    switch (index)
    {
        case stp_protocol_id:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Protocol Identifier");
                case FieldValue:
                    return data_.protocol_id();
                case FieldTextValue:
                    return QString("0x%1").arg(data_.protocol_id(),
                                               4, BASE_HEX, QChar('0'));
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data_.protocol_id(),
                                 (uchar*)fv.data());
                    return fv;
                }
                case FieldBitSize:
                    return BYTES_TO_BITS(2);
                default:
                    break;
            }
            break;
        }
        case stp_version_id:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Version Identifier");
                case FieldValue:
                    return data_.protocol_version_id();
                case FieldTextValue:
                    return QString("%1").arg(
                                data_.protocol_version_id());
                case FieldFrameValue:
                    return QByteArray(1,
                                      (char)data_.protocol_version_id());
                case FieldBitSize:
                    return BYTES_TO_BITS(1);
                default:
                    break;
            }
            break;
        }
        case stp_bpdu_type:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("BPDU Type");
                case FieldValue:
                    return data_.bpdu_type();
                case FieldTextValue:
                    return QString("0x%1").arg(data_.bpdu_type(),
                                               2, BASE_HEX, QChar('0'));
                case FieldFrameValue:
                    return QByteArray(1, (char)data_.bpdu_type());
                case FieldBitSize:
                    return BYTES_TO_BITS(1);
                default:
                    break;
            }
            break;
        }
        case stp_flags:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("BPDU Flags");
                case FieldValue:
                    return data_.flags();
                case FieldTextValue:
                {
                    QString strTemp = "(";
                    if((data_.flags() & ONE_BIT(0))) strTemp += str[0] + ", ";
                    if((data_.flags() & ONE_BIT(7))) strTemp += str[1] + ", ";
                    strTemp += ")";
                    strTemp.replace(", )", ")");
                    return strTemp;
                }
                case FieldFrameValue:
                    return QByteArray(1, (char)data_.flags());
                case FieldBitSize:
                    return BYTES_TO_BITS(1);
                default:
                    break;
            }
            break;
        }
        case stp_root_id:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Root Identifier");
                case FieldValue:
                    return (quint64) data_.root_id();
                case FieldTextValue:
                {
                    // Root ID contain two value:
                    // Root ID Priority(first 2 bytes)
                    // and Root ID MAC (last 6 bytes). (IEEE802.1D-2008)
                    quint16 priority = (
                        data_.root_id() & 0xFFFF000000000000ULL) >> (BYTES_TO_BITS(6));
                    quint64 mac = data_.root_id() & 0x0000FFFFFFFFFFFFULL;
                    return QString("Priority: %1 / MAC: %2")
                            .arg(QString::number(priority),
                        uintToMacStr(mac));
                }
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(8));
                    qToBigEndian((quint64)data_.root_id(), (uchar*)fv.data());
                    return fv;
                }
                case FieldBitSize:
                    return BYTES_TO_BITS(8);
                default:
                    break;
            }
            break;
        }
        case stp_root_path_cost:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Root Path Cost");
                case FieldValue:
                    return data_.root_path_cost();
                case FieldTextValue:
                    return QString("%1").arg(data_.root_path_cost());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(4));
                    qToBigEndian(data_.root_path_cost(), (uchar*)fv.data());
                    return fv;
                }
                case FieldBitSize:
                    return BYTES_TO_BITS(4);
                default:
                    break;
            }
            break;
        }
        case stp_bridge_id:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Bridge Identifier");
                case FieldValue:
                    return (quint64) data_.bridge_id();
                case FieldTextValue:
                {
                    // Bridge ID contain two value:
                    // Bridge ID Priority(first 2 bytes)
                    // and Bridge ID MAC (last 6 bytes). (IEEE802.1D-2008)
                    quint16 priority = (data_.bridge_id() & 0xFFFF000000000000ULL
                                        ) >> (BYTES_TO_BITS(6));
                    quint64 mac = data_.bridge_id() & 0x0000FFFFFFFFFFFFULL;
                    return QString("Priority: %1 / MAC: %2").arg(QString::number(priority),
                                                  uintToMacStr(mac));
                }
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(8));
                    qToBigEndian((quint64)data_.bridge_id(), (uchar*)fv.data());
                    return fv;
                }
                case FieldBitSize:
                    return BYTES_TO_BITS(8);
                default:
                    break;
            }
            break;
        }
        case stp_port_id:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Port Identifier");
                case FieldValue:
                    return data_.port_id();
                case FieldTextValue:
                    return QString("0x%1").arg(data_.port_id(), 4,
                                               BASE_HEX, QChar('0'));
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data_.port_id(), (uchar*)fv.data());
                    return fv;
                }
                case FieldBitSize:
                    return BYTES_TO_BITS(2);
                default:
                    break;
            }
            break;
        }
        case stp_message_age:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Message Age");
                case FieldValue:
                    return data_.message_age();
                case FieldTextValue:
                    return QString("%1").arg(data_.message_age());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)(data_.message_age()),
                                 (uchar*)fv.data());
                    return fv;
                }
                case FieldBitSize:
                    return BYTES_TO_BITS(2);
                default:
                    break;
            }
            break;
        }
        case stp_max_age:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Max Age");
                case FieldValue:
                    return data_.max_age();
                case FieldTextValue:
                    return QString("%1").arg(data_.max_age());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data_.max_age(), (uchar*)fv.data());
                    return fv;
                }
                case FieldBitSize:
                    return BYTES_TO_BITS(2);
                default:
                    break;
            }
            break;
        }
        case stp_hello_time:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Hello Time");
                case FieldValue:
                    return data_.hello_time();
                case FieldTextValue:
                    return QString("%1").arg(data_.hello_time());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data_.hello_time(), (uchar*)fv.data());
                    return fv;
                }
                case FieldBitSize:
                    return BYTES_TO_BITS(2);
                default:
                    break;
            }
            break;
        }
        case stp_forward_delay:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Forward Delay");
                case FieldValue:
                    return data_.forward_delay();
                case FieldTextValue:
                    return QString("%1").arg(data_.forward_delay());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data_.forward_delay(),
                                 (uchar*)fv.data());
                    return fv;
                }
                case FieldBitSize:
                    return BYTES_TO_BITS(2);
                default:
                    break;
            }
            break;
        }
        default:
            break;
    }
    return AbstractProtocol::fieldData(index, attrib, streamIndex);
}
예제 #2
0
파일: lacp.cpp 프로젝트: tpetriv/ostinato
QVariant LacpProtocol::fieldData(int index, FieldAttrib attrib,
                                 int streamIndex) const
{
    QString str[8]={"Activity", "Timeout", "Aggregation", "Synchronization",
                    "Collecting", "Distributing", "Defaulted", "Expired"};

    switch (index)
    {
        case lacp_subtype:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Subtype");
                case FieldValue:
                    return data.subtype();
                case FieldTextValue:
                    return QString("0x%1").arg(data.subtype(), 2, BASE_HEX,
                                               QChar('0'));
                case FieldFrameValue:
                    return QByteArray(1, (char)data.subtype());
                default:
                    break;
            }
            break;
        }
        case lacp_version_number:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Version Number");
                case FieldValue:
                    return data.version_number();
                case FieldTextValue:
                    return QString("0x%1").arg(data.version_number(), 2,
                                               BASE_HEX, QChar('0'));
                case FieldFrameValue:
                    return QByteArray(1, (char)data.version_number());
                default:
                    break;
            }
            break;
        }
//--------------------------------Actor-----------------------------------------
        case lacp_tlv_type_actor:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Actor Information");
                case FieldValue:
                    return data.tlv_type_actor();
                case FieldTextValue:
                    return QString("%1").arg(data.tlv_type_actor());
                case FieldFrameValue:
                    return QByteArray(1, (char)data.tlv_type_actor());
                default:
                    break;
            }
            break;
        }
        case lacp_actor_length:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Actor Information Length");
                case FieldValue:
                    return data.actor_info_length();
                case FieldTextValue:
                    return QString("%1").arg(data.actor_info_length());
                case FieldFrameValue:
                    return QByteArray(1, (char)data.actor_info_length());
                default:
                    break;
            }
            break;
        }
        case lacp_actor_system_priority:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Actor System Priority");
                case FieldValue:
                    return data.actor_system_priority();
                case FieldTextValue:
                    return QString("%1").arg(data.actor_system_priority());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data.actor_system_priority(),
                                 (uchar*)fv.data());
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
        case lacp_actor_system:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Actor System");
                case FieldValue:
                    return (quint64)data.actor_system();
                case FieldTextValue:
                    return uintToMacStr(data.actor_system());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    // 8 bytes because data.actor_system is UInt64
                    fv.resize(BYTES(8));
                    qToBigEndian(data.actor_system() , (uchar*)fv.data());
                    // remove first two bytes because actor system have 6 byte
                    // (IEEE802.1AX-2008)
                    fv.remove(0, 2);
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
        case lacp_actor_key:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Actor Key");
                case FieldValue:
                    return data.actor_key();
                case FieldTextValue:
                    return QString("%1").arg(data.actor_key());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data.actor_key(), (uchar*) fv.data());
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
        case lacp_actor_port_priority:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Actor Port Priority");
                case FieldValue:
                    return data.actor_port_priority();
                case FieldTextValue:
                    return QString("%1").arg(data.actor_port_priority());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data.actor_port_priority(),
                                 (uchar*)fv.data());
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
        case lacp_actor_port:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Actor Port");
                case FieldValue:
                    return data.actor_port();
                case FieldTextValue:
                    return QString("%1").arg(data.actor_port());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data.actor_port(), (uchar*)fv.data());
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
        case lacp_actor_state:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Actor State");
                case FieldValue:
                    return data.actor_state();
                case FieldTextValue:
                {
                    QString str_temp = "(";
                    if ((data.actor_state() & ONE_BIT(0)))
                        str_temp += str[0] + ", ";
                    if ((data.actor_state() & ONE_BIT(1)))
                        str_temp += str[1] + ", ";
                    if ((data.actor_state() & ONE_BIT(2)))
                        str_temp += str[2] + ", ";
                    if ((data.actor_state() & ONE_BIT(3)))
                        str_temp += str[3] + ", ";
                    if ((data.actor_state() & ONE_BIT(4)))
                        str_temp += str[4] + ", ";
                    if ((data.actor_state() & ONE_BIT(5)))
                        str_temp += str[5] + ", ";
                    if ((data.actor_state() & ONE_BIT(6)))
                        str_temp += str[6] + ", ";
                    if ((data.actor_state() & ONE_BIT(7)))
                        str_temp += str[7] + ", ";
                    str_temp += ")";
                    str_temp.replace(", )", ")");
                    return str_temp;
                }
                case FieldFrameValue:
                    return QByteArray(1, (char)data.actor_state());
                default:
                    break;
            }
            break;
        }
        case lacp_actor_reserved:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Reserved");
                case FieldValue:
                    return QString("%1").arg(data.actor_reserved(), 6,
                                             BASE_HEX, QChar('0'));
                case FieldTextValue:
                    return QString("0x%1").arg(data.actor_reserved(), 6,
                                               BASE_HEX, QChar('0'));
                case FieldFrameValue:
                {
                    QByteArray fv;
                    // must have 4 bytes because data.actor_reserved is int32
                    fv.resize(BYTES(4));
                    qToBigEndian(data.actor_reserved(), (uchar*)fv.data());
                     // remove first byte, because field actor reserved
                     // have 3 byte (IEEE802.1AX-2008)
                    fv.remove(0, 1);
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
//--------------------------------Partner---------------------------------------
        case lacp_tlv_type_partner:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Partner Information");
                case FieldValue:
                    return data.tlv_type_partner();
                case FieldTextValue:
                    return QString("%1").arg(data.tlv_type_partner());
                case FieldFrameValue:
                    return QByteArray(1, (char)data.tlv_type_partner());
                default:
                    break;
            }
            break;
        }
        case lacp_partner_length:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Partner Information Length");
                case FieldValue:
                    return data.partner_info_length();
                case FieldTextValue:
                    return QString("%1").arg(data.partner_info_length());
                case FieldFrameValue:
                    return QByteArray(1, (char)data.partner_info_length());
                default:
                    break;
            }
            break;
        }
        case lacp_partner_system_priority:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Partner System Priority");
                case FieldValue:
                    return data.partner_system_priority();
                case FieldTextValue:
                    return QString("%1").arg(data.partner_system_priority());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data.partner_system_priority(),
                                 (uchar*)fv.data());
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
        case lacp_partner_system:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Partner System");
                case FieldValue:
                    return (quint64)data.partner_system();
                case FieldTextValue:
                    return uintToMacStr(data.partner_system());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    // must have 8 bytes because data.partner_system is UInt64
                    fv.resize(BYTES(8));
                    qToBigEndian(data.partner_system() , (uchar*)fv.data());
                     // remove first byte, because field partner system
                     // have 6 byte (IEEE802.1AX-2008)
                    fv.remove(0, 2);
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
        case lacp_partner_key:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Partner Key");
                case FieldValue:
                    return (quint64)data.partner_key();
                case FieldTextValue:
                    return QString("%1").arg(data.partner_key());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data.partner_key(),
                                 (uchar*)fv.data());
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
        case lacp_partner_port_priority:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Partner Port Priority");
                case FieldValue:
                    return data.partner_port_priority();
                case FieldTextValue:
                    return QString("%1").arg(data.partner_port_priority());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data.partner_port_priority(),
                                 (uchar*)fv.data());
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
        case lacp_partner_port:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Partner Port");
                case FieldValue:
                    return data.partner_port();
                case FieldTextValue:
                    return QString("%1").arg(data.partner_port());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data.partner_port(),
                                 (uchar*)fv.data());
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
        case lacp_partner_state:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Partner State");
                case FieldValue:
                    return data.partner_state();
                case FieldTextValue:
                {
                    QString str_temp="(";
                    if ((data.partner_state() & ONE_BIT(0)))
                        str_temp += str[0] + ", ";
                    if ((data.partner_state() & ONE_BIT(1)))
                        str_temp += str[1] + ", ";
                    if ((data.partner_state() & ONE_BIT(2)))
                        str_temp += str[2] + ", ";
                    if ((data.partner_state() & ONE_BIT(3)))
                        str_temp += str[3] + ", ";
                    if ((data.partner_state() & ONE_BIT(4)))
                        str_temp += str[4] + ", ";
                    if ((data.partner_state() & ONE_BIT(5)))
                        str_temp += str[5] + ", ";
                    if ((data.partner_state() & ONE_BIT(6)))
                        str_temp += str[6] + ", ";
                    if ((data.partner_state() & ONE_BIT(7)))
                        str_temp += str[7] + ", ";
                    str_temp+=")";
                    str_temp.replace(", )", ")");
                    return str_temp;
                }
                case FieldFrameValue:
                    return QByteArray(1, (char)data.partner_state());
                default:
                    break;
            }
            break;
        }
        case lacp_partner_reserved:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Reserved");
                case FieldValue:
                    return data.partner_reserved();
                case FieldTextValue:
                    return QString("0x%1").arg(data.partner_reserved(), 6,
                                               BASE_HEX, QChar('0'));
               case FieldFrameValue:
                {
                    QByteArray fv;
                    // must have 4 bytes because data.partner_reserved is UInt32
                    fv.resize(4);
                    qToBigEndian(data.partner_reserved(), (uchar*)fv.data());
                    // remove first byte, because field partner reserved
                    // have 3 byte (IEEE802.1AX-2008)
                    fv.remove(0, 1);
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
//--------------------------------------------Collector-------------------------
        case lacp_tlv_type_collector:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Collector Information");
                case FieldValue:
                    return data.tlv_type_collector();
                case FieldTextValue:
                    return QString("%1").arg(data.tlv_type_collector());
                case FieldFrameValue:
                    return QByteArray(1, (char)data.tlv_type_collector());
                default:
                    break;
            }
            break;
        }
        case lacp_collector_length:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Collector Information Length");
                case FieldValue:
                    return data.collector_info_length();
                case FieldTextValue:
                    return QString("%1").arg(data.collector_info_length());
                case FieldFrameValue:
                    return QByteArray(1, (char)data.collector_info_length());
                default:
                    break;
            }
            break;
        }
        case lacp_collector_maxDelay:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Collector Max Delay");
                case FieldValue:
                    return data.collector_maxdelay();
                case FieldTextValue:
                    return QString("%1").
                        arg(data.collector_maxdelay());
                case FieldFrameValue:
                {
                    QByteArray fv;
                    fv.resize(BYTES(2));
                    qToBigEndian((quint16)data.collector_maxdelay(),
                                 (uchar*)fv.data());
                    return fv;
                }
                default:
                    break;
            }
            break;
        }
        case lacp_collector_reserved:
        {
            QByteArray ba;
            bool isOk = false;
            QString reserved;
            reserved.append(QString().fromStdString(data.collector_reserved()));
            //insert 0 to left side of string
            reserved.insert(0, QString().fill(QChar().fromAscii('0'),
                                              BYTES(12) * 2 - reserved.size()));
             // create Byte Array from string with HEX
            for (int i = 0; i < reserved.size(); i += 2)
                ba.append(((QString)reserved[i] +
                           (QString)reserved[i + 1]).toUInt(&isOk, BASE_HEX));
            switch (attrib)
            {
                case FieldName:
                    return QString("Reserved");
                case FieldValue:
                    return ba;
                case FieldTextValue:
                    return QString("0x%1").arg(reserved).toLower();
                case FieldFrameValue:
                    return ba;
                default:
                    break;
            }
            break;
        }
//--------------------------------------------terminator------------------------
        case lacp_tlv_type_terminator:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Terminator Information");
                case FieldValue:
                    return data.tlv_type_terminator();
                case FieldTextValue:
                    return QString("%1").arg(data.tlv_type_terminator());
                case FieldFrameValue:
                    return QByteArray(1, (char)data.tlv_type_terminator());
                default:
                    break;
            }
            break;
        }
        case lacp_terminator_length:
        {
            switch (attrib)
            {
                case FieldName:
                    return QString("Terminator Length");
                case FieldValue:
                    return data.terminator_length();
                case FieldTextValue:
                    return QString("%1").arg(data.terminator_length());
                case FieldFrameValue:
                    return QByteArray(1, (char)data.terminator_length());
                default:
                    break;
            }
            break;
        }
        case lacp_terminator_reserved:
            {
            QByteArray ba;
            bool isOk = false;
            QString reserved;
            reserved.append(
                        QString().fromStdString(data.terminator_reserved()));
            //insert 0 to left side of string
            reserved.insert(0, QString().fill(QChar().fromAscii('0'),
                                              BYTES(50) * 2 - reserved.size()));
            // create Byte Array from string with HEX
            for (int i = 0; i < reserved.size(); i += 2)
                ba.append(((QString)reserved[i] +
                           (QString)reserved[i + 1]).toUInt(&isOk, BASE_HEX));
            switch (attrib)
            {
                case FieldName:
                    return QString("Reserved");
                case FieldValue:
                    return ba;
                case FieldTextValue:
                    return QString("0x%1").arg(reserved).toLower();
                case FieldFrameValue:
                    return ba;
                default:
                    break;
            }
            break;
        }
//------------------meta fields-------------------------------------------------
        case is_override_subtype:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_subtype();
                default:
                    break;
            }
        }
        case is_override_version:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_version_number();
                default:
                    break;
            }
        }
        case is_override_tlv_actor :
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_tlv_type_actor();
                default:
                    break;
            }
        }
        case is_override_actor_info:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_actor_info_length();
                default:
                    break;
            }
        }
        case is_override_actor_reserved:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_actor_reserved();
                default:
                    break;
            }
        }
        case is_override_tlv_partner:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_tlv_type_partner();
                default:
                    break;
            }
        }
        case is_override_partner_info:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_partner_info_length();
                default:
                    break;
            }
        }
        case is_override_partner_reserved:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_partner_reserved();
                default:
                    break;
            }
        }
        case is_override_tlv_collector:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_tlv_type_collector();
                default:
                    break;
            }
        }
        case is_override_collector_info:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_collector_info_length();
                default:
                    break;
            }
        }
        case is_override_collector_reserved:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_collector_reserved();
                default:
                    break;
            }
        }
        case is_override_tlv_terminator:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_tlv_type_terminator();
                default:
                    break;
            }
        }
        case is_override_terminator_info:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_terminator_length();
                default:
                    break;
            }
        }
        case is_override_terminator_reserved:
        {
            switch (attrib)
            {
                case FieldValue:
                    return data.is_override_terminator_reserved();
                default:
                    break;
            }
        }
        break;
        default:
            qFatal("%s: unimplemented case %d in switch", __PRETTY_FUNCTION__,
                   index);
            break;
    }
    return AbstractProtocol::fieldData(index, attrib, streamIndex);
}