From bbe645725a45990ca3bf2ee1513edc7e70a1e894 Mon Sep 17 00:00:00 2001 From: "Srivats P." Date: Tue, 15 Apr 2014 05:31:28 +0530 Subject: [PATCH] NOX: Udp - separated protocol and widget as per new framework --- common/ostproto.pro | 8 +-- common/ostprotogui.pro | 10 +-- common/protocolmanager.cpp | 6 +- common/protocolwidgetfactory.cpp | 4 ++ common/udp.cpp | 69 ------------------- common/udp.h | 19 +----- common/udpconfig.cpp | 114 +++++++++++++++++++++++++++++++ common/udpconfig.h | 41 +++++++++++ 8 files changed, 175 insertions(+), 96 deletions(-) create mode 100644 common/udpconfig.cpp create mode 100644 common/udpconfig.h diff --git a/common/ostproto.pro b/common/ostproto.pro index 2ef4deb..40a5b1d 100644 --- a/common/ostproto.pro +++ b/common/ostproto.pro @@ -66,11 +66,11 @@ HEADERS += \ gmp.h \ igmp.h \ mld.h \ - tcp.h + tcp.h \ + udp.h HEADERS1 += \ icmp.h \ - udp.h \ textproto.h \ userscript.h \ hexdump.h \ @@ -99,11 +99,11 @@ SOURCES += \ gmp.cpp \ igmp.cpp \ mld.cpp \ - tcp.cpp + tcp.cpp \ + udp.cpp SOURCES1 += \ icmp.cpp \ - udp.cpp \ textproto.cpp \ userscript.cpp \ hexdump.cpp \ diff --git a/common/ostprotogui.pro b/common/ostprotogui.pro index 0759b2d..443ed02 100644 --- a/common/ostprotogui.pro +++ b/common/ostprotogui.pro @@ -19,11 +19,11 @@ FORMS += \ ip4.ui \ ip6.ui \ gmp.ui \ - tcp.ui + tcp.ui \ + udp.ui FORMS1 += \ icmp.ui \ - udp.ui \ textproto.ui \ userscript.ui \ hexdump.ui \ @@ -67,7 +67,8 @@ HEADERS += \ gmpconfig.h \ igmpconfig.h \ mldconfig.h \ - tcpconfig.h + tcpconfig.h \ + udpconfig.h SOURCES += \ ostprotolib.cpp \ @@ -94,7 +95,8 @@ SOURCES += \ gmpconfig.cpp \ igmpconfig.cpp \ mldconfig.cpp \ - tcpconfig.cpp + tcpconfig.cpp \ + udpconfig.cpp QMAKE_DISTCLEAN += object_script.* diff --git a/common/protocolmanager.cpp b/common/protocolmanager.cpp index 428616c..302cc96 100644 --- a/common/protocolmanager.cpp +++ b/common/protocolmanager.cpp @@ -23,7 +23,6 @@ along with this program. If not, see #include "protocol.pb.h" #if 0 #include "icmp.h" -#include "udp.h" #include "textproto.h" #include "userscript.h" #include "hexdump.h" @@ -52,6 +51,7 @@ along with this program. If not, see #include "igmp.h" #include "mld.h" #include "tcp.h" +#include "udp.h" #endif ProtocolManager *OstProtocolManager; @@ -64,8 +64,6 @@ ProtocolManager::ProtocolManager() #if 0 registerProtocol(OstProto::Protocol::kIcmpFieldNumber, (void*) IcmpProtocol::createInstance); - registerProtocol(OstProto::Protocol::kUdpFieldNumber, - (void*) UdpProtocol::createInstance); registerProtocol(OstProto::Protocol::kTextProtocolFieldNumber, (void*) TextProtocol::createInstance); @@ -126,6 +124,8 @@ ProtocolManager::ProtocolManager() (void*) MldProtocol::createInstance); registerProtocol(OstProto::Protocol::kTcpFieldNumber, (void*) TcpProtocol::createInstance); + registerProtocol(OstProto::Protocol::kUdpFieldNumber, + (void*) UdpProtocol::createInstance); #endif populateNeighbourProtocols(); } diff --git a/common/protocolwidgetfactory.cpp b/common/protocolwidgetfactory.cpp index a5ce20f..06ac075 100644 --- a/common/protocolwidgetfactory.cpp +++ b/common/protocolwidgetfactory.cpp @@ -42,6 +42,7 @@ along with this program. If not, see #include "igmpconfig.h" #include "mldconfig.h" #include "tcpconfig.h" +#include "udpconfig.h" ProtocolWidgetFactory *OstProtocolWidgetFactory; QMap ProtocolWidgetFactory::configWidgetFactory; @@ -122,6 +123,9 @@ ProtocolWidgetFactory::ProtocolWidgetFactory() OstProtocolWidgetFactory->registerProtocolConfigWidget( OstProto::Protocol::kTcpFieldNumber, (void*) TcpConfigForm::createInstance); + OstProtocolWidgetFactory->registerProtocolConfigWidget( + OstProto::Protocol::kUdpFieldNumber, + (void*) UdpConfigForm::createInstance); } ProtocolWidgetFactory::~ProtocolWidgetFactory() diff --git a/common/udp.cpp b/common/udp.cpp index 5a4e14b..f3d051c 100644 --- a/common/udp.cpp +++ b/common/udp.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 "udp.h" -UdpConfigForm::UdpConfigForm(QWidget *parent) - : QWidget(parent) -{ - setupUi(this); -} - UdpProtocol::UdpProtocol(StreamBase *stream, AbstractProtocol *parent) : AbstractProtocol(stream, parent) { - configForm = NULL; } UdpProtocol::~UdpProtocol() { - delete configForm; } AbstractProtocol* UdpProtocol::createInstance(StreamBase *stream, @@ -440,61 +429,3 @@ int UdpProtocol::protocolFrameVariableCount() const return protocolFramePayloadVariableCount(); } - -QWidget* UdpProtocol::configWidget() -{ - if (configForm == NULL) - { - configForm = new UdpConfigForm; - loadConfigWidget(); - } - return configForm; -} - -void UdpProtocol::loadConfigWidget() -{ - configWidget(); - - configForm->leUdpSrcPort->setText( - fieldData(udp_srcPort, FieldValue).toString()); - configForm->cbUdpSrcPortOverride->setChecked( - fieldData(udp_isOverrideSrcPort, FieldValue).toBool()); - configForm->leUdpDstPort->setText( - fieldData(udp_dstPort, FieldValue).toString()); - configForm->cbUdpDstPortOverride->setChecked( - fieldData(udp_isOverrideDstPort, FieldValue).toBool()); - - configForm->leUdpLength->setText( - fieldData(udp_totLen, FieldValue).toString()); - configForm->cbUdpLengthOverride->setChecked( - fieldData(udp_isOverrideTotLen, FieldValue).toBool()); - - configForm->leUdpCksum->setText(QString("%1").arg( - fieldData(udp_cksum, FieldValue).toUInt(), 4, BASE_HEX, QChar('0'))); - configForm->cbUdpCksumOverride->setChecked( - fieldData(udp_isOverrideCksum, FieldValue).toBool()); -} - -void UdpProtocol::storeConfigWidget() -{ - bool isOk; - - configWidget(); - - setFieldData(udp_srcPort, configForm->leUdpSrcPort->text()); - setFieldData(udp_isOverrideSrcPort, - configForm->cbUdpSrcPortOverride->isChecked()); - setFieldData(udp_dstPort, configForm->leUdpDstPort->text()); - setFieldData(udp_isOverrideDstPort, - configForm->cbUdpDstPortOverride->isChecked()); - - setFieldData(udp_totLen, configForm->leUdpLength->text()); - setFieldData(udp_isOverrideTotLen, - configForm->cbUdpLengthOverride->isChecked()); - - setFieldData(udp_cksum, configForm->leUdpCksum->text().remove(QChar(' ')) - .toUInt(&isOk, BASE_HEX)); - setFieldData(udp_isOverrideCksum, - configForm->cbUdpCksumOverride->isChecked()); -} - diff --git a/common/udp.h b/common/udp.h index 7bdf200..56285b4 100644 --- a/common/udp.h +++ b/common/udp.h @@ -21,22 +21,11 @@ along with this program. If not, see #define _UDP_H #include "abstractprotocol.h" - #include "udp.pb.h" -#include "ui_udp.h" - -class UdpConfigForm : public QWidget, public Ui::udp -{ - Q_OBJECT -public: - UdpConfigForm(QWidget *parent = 0); -}; class UdpProtocol : public AbstractProtocol { -private: - OstProto::Udp data; - UdpConfigForm *configForm; +public: enum udpfield { udp_srcPort = 0, @@ -52,7 +41,6 @@ private: udp_fieldCount }; -public: UdpProtocol(StreamBase *stream, AbstractProtocol *parent = 0); virtual ~UdpProtocol(); @@ -80,9 +68,8 @@ public: virtual bool isProtocolFrameValueVariable() const; virtual int protocolFrameVariableCount() const; - virtual QWidget* configWidget(); - virtual void loadConfigWidget(); - virtual void storeConfigWidget(); +private: + OstProto::Udp data; }; #endif diff --git a/common/udpconfig.cpp b/common/udpconfig.cpp new file mode 100644 index 0000000..dab05ec --- /dev/null +++ b/common/udpconfig.cpp @@ -0,0 +1,114 @@ +/* +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 "udpconfig.h" +#include "udp.h" + +UdpConfigForm::UdpConfigForm(QWidget *parent) + : AbstractProtocolConfigForm(parent) +{ + setupUi(this); +} + +UdpConfigForm::~UdpConfigForm() +{ +} + +UdpConfigForm* UdpConfigForm::createInstance() +{ + return new UdpConfigForm; +} + + +void UdpConfigForm::loadWidget(AbstractProtocol *proto) +{ + leUdpSrcPort->setText( + proto->fieldData( + UdpProtocol::udp_srcPort, + AbstractProtocol::FieldValue + ).toString()); + cbUdpSrcPortOverride->setChecked( + proto->fieldData( + UdpProtocol::udp_isOverrideSrcPort, + AbstractProtocol::FieldValue + ).toBool()); + leUdpDstPort->setText( + proto->fieldData( + UdpProtocol::udp_dstPort, + AbstractProtocol::FieldValue + ).toString()); + cbUdpDstPortOverride->setChecked( + proto->fieldData( + UdpProtocol::udp_isOverrideDstPort, + AbstractProtocol::FieldValue + ).toBool()); + + leUdpLength->setText( + proto->fieldData( + UdpProtocol::udp_totLen, + AbstractProtocol::FieldValue + ).toString()); + cbUdpLengthOverride->setChecked( + proto->fieldData( + UdpProtocol::udp_isOverrideTotLen, + AbstractProtocol::FieldValue + ).toBool()); + + leUdpCksum->setText(uintToHexStr( + proto->fieldData( + UdpProtocol::udp_cksum, + AbstractProtocol::FieldValue + ).toUInt(), 2)); + cbUdpCksumOverride->setChecked( + proto->fieldData( + UdpProtocol::udp_isOverrideCksum, + AbstractProtocol::FieldValue + ).toBool()); +} + +void UdpConfigForm::storeWidget(AbstractProtocol *proto) +{ + proto->setFieldData( + UdpProtocol::udp_srcPort, + leUdpSrcPort->text()); + proto->setFieldData( + UdpProtocol::udp_isOverrideSrcPort, + cbUdpSrcPortOverride->isChecked()); + proto->setFieldData( + UdpProtocol::udp_dstPort, + leUdpDstPort->text()); + proto->setFieldData( + UdpProtocol::udp_isOverrideDstPort, + cbUdpDstPortOverride->isChecked()); + + proto->setFieldData( + UdpProtocol::udp_totLen, + leUdpLength->text()); + proto->setFieldData( + UdpProtocol::udp_isOverrideTotLen, + cbUdpLengthOverride->isChecked()); + + proto->setFieldData( + UdpProtocol::udp_cksum, + hexStrToUInt(leUdpCksum->text())); + proto->setFieldData( + UdpProtocol::udp_isOverrideCksum, + cbUdpCksumOverride->isChecked()); +} + diff --git a/common/udpconfig.h b/common/udpconfig.h new file mode 100644 index 0000000..98b8ecb --- /dev/null +++ b/common/udpconfig.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 _UDP_CONFIG_H +#define _UDP_CONFIG_H + +#include "abstractprotocolconfig.h" +#include "ui_udp.h" + +class UdpConfigForm : + public AbstractProtocolConfigForm, + private Ui::udp +{ + Q_OBJECT +public: + UdpConfigForm(QWidget *parent = 0); + virtual ~UdpConfigForm(); + + static UdpConfigForm* createInstance(); + + virtual void loadWidget(AbstractProtocol *proto); + virtual void storeWidget(AbstractProtocol *proto); +}; + +#endif