diff --git a/common/llc.cpp b/common/llc.cpp index 5adecf1..67b370d 100644 --- a/common/llc.cpp +++ b/common/llc.cpp @@ -17,26 +17,15 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ -#include -#include - #include "llc.h" -LlcConfigForm::LlcConfigForm(QWidget *parent) - : QWidget(parent) -{ - setupUi(this); -} - LlcProtocol::LlcProtocol(StreamBase *stream, AbstractProtocol *parent) : AbstractProtocol(stream, parent) { - configForm = NULL; } LlcProtocol::~LlcProtocol() { - delete configForm; } AbstractProtocol* LlcProtocol::createInstance(StreamBase *stream, @@ -273,59 +262,3 @@ bool LlcProtocol::setFieldData(int index, const QVariant &value, } return isOk; } - - -QWidget* LlcProtocol::configWidget() -{ - if (configForm == NULL) - { - configForm = new LlcConfigForm; - loadConfigWidget(); - } - return configForm; -} - -void LlcProtocol::loadConfigWidget() -{ -#define uintToHexStr(num, bytes) \ - QString("%1").arg(num, bytes*2, BASE_HEX, QChar('0')) - - configWidget(); - - configForm->cbOverrideDsap->setChecked( - fieldData(llc_is_override_dsap, FieldValue).toBool()); - configForm->leDsap->setText(uintToHexStr( - fieldData(llc_dsap, FieldValue).toUInt(), 1)); - - configForm->cbOverrideSsap->setChecked( - fieldData(llc_is_override_ssap, FieldValue).toBool()); - configForm->leSsap->setText(uintToHexStr( - fieldData(llc_ssap, FieldValue).toUInt(), 1)); - - configForm->cbOverrideControl->setChecked( - fieldData(llc_is_override_ctl, FieldValue).toBool()); - configForm->leControl->setText(uintToHexStr( - fieldData(llc_ctl, FieldValue).toUInt(), 1)); -#undef uintToHexStr -} - -void LlcProtocol::storeConfigWidget() -{ - bool isOk; - - configWidget(); - - setFieldData(llc_is_override_dsap, - configForm->cbOverrideDsap->isChecked()); - setFieldData(llc_dsap, configForm->leDsap->text().toUInt(&isOk, BASE_HEX)); - - setFieldData(llc_is_override_ssap, - configForm->cbOverrideSsap->isChecked()); - setFieldData(llc_ssap, configForm->leSsap->text().toUInt(&isOk, BASE_HEX)); - - setFieldData(llc_is_override_ctl, - configForm->cbOverrideControl->isChecked()); - setFieldData(llc_ctl, - configForm->leControl->text().toUInt(&isOk, BASE_HEX)); -} - diff --git a/common/llc.h b/common/llc.h index 808d442..a723177 100644 --- a/common/llc.h +++ b/common/llc.h @@ -20,26 +20,13 @@ along with this program. If not, see #ifndef _LLC_H #define _LLC_H -#include -#include - #include "abstractprotocol.h" #include "llc.pb.h" -#include "ui_llc.h" - -class LlcConfigForm : public QWidget, public Ui::llc -{ - Q_OBJECT -public: - LlcConfigForm(QWidget *parent = 0); -}; class LlcProtocol : public AbstractProtocol { -private: - OstProto::Llc data; - LlcConfigForm *configForm; +public: enum llcfield { llc_dsap = 0, @@ -54,7 +41,6 @@ private: llc_fieldCount }; -public: LlcProtocol(StreamBase *stream, AbstractProtocol *parent = 0); virtual ~LlcProtocol(); @@ -78,9 +64,8 @@ public: virtual bool setFieldData(int index, const QVariant &value, FieldAttrib attrib = FieldValue); - virtual QWidget* configWidget(); - virtual void loadConfigWidget(); - virtual void storeConfigWidget(); +private: + OstProto::Llc data; }; #endif diff --git a/common/llcconfig.cpp b/common/llcconfig.cpp new file mode 100644 index 0000000..6ba785c --- /dev/null +++ b/common/llcconfig.cpp @@ -0,0 +1,100 @@ +/* +Copyright (C) 2010 Srivats P. + +This file is part of "Ostinato" + +This is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ + +#include "llcconfig.h" +#include "llc.h" + +LlcConfigForm::LlcConfigForm(QWidget *parent) + : AbstractProtocolConfigForm(parent) +{ + setupUi(this); +} + +LlcConfigForm::~LlcConfigForm() +{ +} + +LlcConfigForm* LlcConfigForm::createInstance() +{ + return new LlcConfigForm; +} + +void LlcConfigForm::loadWidget(AbstractProtocol *proto) +{ + cbOverrideDsap->setChecked( + proto->fieldData( + LlcProtocol::llc_is_override_dsap, + AbstractProtocol::FieldValue + ).toBool()); + leDsap->setText(uintToHexStr( + proto->fieldData( + LlcProtocol::llc_dsap, + AbstractProtocol::FieldValue + ).toUInt(), 1)); + + cbOverrideSsap->setChecked( + proto->fieldData( + LlcProtocol::llc_is_override_ssap, + AbstractProtocol::FieldValue + ).toBool()); + leSsap->setText(uintToHexStr( + proto->fieldData( + LlcProtocol::llc_ssap, + AbstractProtocol::FieldValue + ).toUInt(), 1)); + + cbOverrideControl->setChecked( + proto->fieldData( + LlcProtocol::llc_is_override_ctl, + AbstractProtocol::FieldValue + ).toBool()); + leControl->setText(uintToHexStr( + proto->fieldData( + LlcProtocol::llc_ctl, + AbstractProtocol::FieldValue + ).toUInt(), 1)); +} + +void +LlcConfigForm::storeWidget(AbstractProtocol *proto) +{ + bool isOk; + + proto->setFieldData( + LlcProtocol::llc_is_override_dsap, + cbOverrideDsap->isChecked()); + proto->setFieldData( + LlcProtocol::llc_dsap, + leDsap->text().toUInt(&isOk, BASE_HEX)); + + proto->setFieldData( + LlcProtocol::llc_is_override_ssap, + cbOverrideSsap->isChecked()); + proto->setFieldData( + LlcProtocol::llc_ssap, + leSsap->text().toUInt(&isOk, BASE_HEX)); + + proto->setFieldData( + LlcProtocol::llc_is_override_ctl, + cbOverrideControl->isChecked()); + proto->setFieldData( + LlcProtocol::llc_ctl, + leControl->text().toUInt(&isOk, BASE_HEX)); +} + diff --git a/common/llcconfig.h b/common/llcconfig.h new file mode 100644 index 0000000..08bd3f4 --- /dev/null +++ b/common/llcconfig.h @@ -0,0 +1,41 @@ +/* +Copyright (C) 2010 Srivats P. + +This file is part of "Ostinato" + +This is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ + +#ifndef _LLC_CONFIG_H +#define _LLC_CONFIG_H + +#include "abstractprotocolconfig.h" +#include "ui_llc.h" + +class LlcConfigForm : + public AbstractProtocolConfigForm, + private Ui::llc +{ + Q_OBJECT +public: + LlcConfigForm(QWidget *parent = 0); + virtual ~LlcConfigForm(); + + static LlcConfigForm* createInstance(); + + virtual void loadWidget(AbstractProtocol *proto); + virtual void storeWidget(AbstractProtocol *proto); +}; + +#endif diff --git a/common/ostproto.pro b/common/ostproto.pro index bbc6758..2a5a373 100644 --- a/common/ostproto.pro +++ b/common/ostproto.pro @@ -47,15 +47,15 @@ HEADERS = \ HEADERS += \ mac.h \ payload.h \ - dot3.h \ vlan.h \ svlan.h \ vlanstack.h \ eth2.h \ + dot3.h \ + llc.h \ ip6.h HEADERS1 += \ - llc.h \ snap.h \ dot2llc.h \ dot2snap.h \ @@ -91,12 +91,12 @@ SOURCES += \ payload.cpp \ vlan.cpp \ svlan.cpp \ - dot3.cpp \ eth2.cpp \ + dot3.cpp \ + llc.cpp \ ip6.cpp SOURCES1 += \ - llc.cpp \ snap.cpp \ arp.cpp \ ip4.cpp \ diff --git a/common/ostprotogui.pro b/common/ostprotogui.pro index 4ecf33e..95f1a38 100644 --- a/common/ostprotogui.pro +++ b/common/ostprotogui.pro @@ -11,12 +11,12 @@ FORMS += \ mac.ui \ payload.ui \ vlan.ui \ - dot3.ui \ eth2.ui \ + dot3.ui \ + llc.ui \ ip6.ui \ FORMS1 += \ - llc.ui \ snap.ui \ arp.ui \ ip4.ui \ @@ -52,8 +52,9 @@ HEADERS += \ vlanconfig.h \ svlanconfig.h \ vlanstackconfig.h \ - dot3config.h \ eth2config.h \ + dot3config.h \ + llcconfig.h \ ip6config.h SOURCES += \ @@ -71,8 +72,9 @@ SOURCES += \ macconfig.cpp \ payloadconfig.cpp \ vlanconfig.cpp \ - dot3config.cpp \ eth2config.cpp \ + dot3config.cpp \ + llcconfig.cpp \ ip6config.cpp QMAKE_DISTCLEAN += object_script.* diff --git a/common/protocolmanager.cpp b/common/protocolmanager.cpp index 05297e3..ed8a62f 100644 --- a/common/protocolmanager.cpp +++ b/common/protocolmanager.cpp @@ -22,7 +22,6 @@ along with this program. If not, see #include "protocol.pb.h" #if 0 -#include "llc.h" #include "snap.h" #include "dot2llc.h" #include "dot2snap.h" @@ -44,10 +43,11 @@ along with this program. If not, see #else #include "mac.h" #include "payload.h" -#include "dot3.h" #include "vlan.h" #include "svlan.h" #include "vlanstack.h" +#include "dot3.h" +#include "llc.h" #include "eth2.h" #include "ip6.h" #endif @@ -60,8 +60,6 @@ ProtocolManager::ProtocolManager() themselves (once this is done remove the #includes for all the protocols) */ #if 0 - registerProtocol(OstProto::Protocol::kLlcFieldNumber, - (void*) LlcProtocol::createInstance); registerProtocol(OstProto::Protocol::kSnapFieldNumber, (void*) SnapProtocol::createInstance); registerProtocol(OstProto::Protocol::kDot2LlcFieldNumber, @@ -108,9 +106,6 @@ ProtocolManager::ProtocolManager() registerProtocol(OstProto::Protocol::kPayloadFieldNumber, (void*) PayloadProtocol::createInstance); - registerProtocol(OstProto::Protocol::kDot3FieldNumber, - (void*) Dot3Protocol::createInstance); - registerProtocol(OstProto::Protocol::kVlanFieldNumber, (void*) VlanProtocol::createInstance); registerProtocol(OstProto::Protocol::kSvlanFieldNumber, @@ -120,6 +115,10 @@ ProtocolManager::ProtocolManager() registerProtocol(OstProto::Protocol::kEth2FieldNumber, (void*) Eth2Protocol::createInstance); + registerProtocol(OstProto::Protocol::kDot3FieldNumber, + (void*) Dot3Protocol::createInstance); + registerProtocol(OstProto::Protocol::kLlcFieldNumber, + (void*) LlcProtocol::createInstance); registerProtocol(OstProto::Protocol::kIp6FieldNumber, (void*) Ip6Protocol::createInstance); diff --git a/common/protocolwidgetfactory.cpp b/common/protocolwidgetfactory.cpp index 1f3e053..591fed6 100644 --- a/common/protocolwidgetfactory.cpp +++ b/common/protocolwidgetfactory.cpp @@ -21,11 +21,12 @@ along with this program. If not, see #include "macconfig.h" #include "payloadconfig.h" -#include "dot3config.h" #include "vlanconfig.h" #include "svlanconfig.h" #include "vlanstackconfig.h" #include "eth2config.h" +#include "dot3config.h" +#include "llcconfig.h" #include "ip6config.h" ProtocolWidgetFactory *OstProtocolWidgetFactory; @@ -44,10 +45,6 @@ ProtocolWidgetFactory::ProtocolWidgetFactory() OstProto::Protocol::kPayloadFieldNumber, (void*) PayloadConfigForm::createInstance); - OstProtocolWidgetFactory->registerProtocolConfigWidget( - OstProto::Protocol::kDot3FieldNumber, - (void*) Dot3ConfigForm::createInstance); - OstProtocolWidgetFactory->registerProtocolConfigWidget( OstProto::Protocol::kVlanFieldNumber, (void*) VlanConfigForm::createInstance); @@ -61,6 +58,12 @@ ProtocolWidgetFactory::ProtocolWidgetFactory() OstProtocolWidgetFactory->registerProtocolConfigWidget( OstProto::Protocol::kEth2FieldNumber, (void*) Eth2ConfigForm::createInstance); + OstProtocolWidgetFactory->registerProtocolConfigWidget( + OstProto::Protocol::kDot3FieldNumber, + (void*) Dot3ConfigForm::createInstance); + OstProtocolWidgetFactory->registerProtocolConfigWidget( + OstProto::Protocol::kLlcFieldNumber, + (void*) LlcConfigForm::createInstance); OstProtocolWidgetFactory->registerProtocolConfigWidget( OstProto::Protocol::kIp6FieldNumber,