--- a/animator/animatorscene.cpp Sat Mar 31 14:52:06 2012 -0700
+++ b/animator/animatorscene.cpp Sat Mar 31 23:12:35 2012 -0700
@@ -1000,6 +1000,12 @@
flags |= AnimPacket::Ethernet;
if(protocol == "Wifi")
flags |= AnimPacket::Wifi;
+ if(protocol == "Dsdv")
+ flags |= AnimPacket::Dsdv;
+ if(protocol == "Aodv")
+ flags |= AnimPacket::Aodv;
+ if(protocol == "Olsr")
+ flags |= AnimPacket::Olsr;
}
}
@@ -1312,6 +1318,15 @@
QListWidgetItem * tcp = new QListWidgetItem(m_packetStatsProtocolListWidget);
m_packetStatsProtocolListWidget->setItemWidget(tcp, new PacketStatsProtocolCheckBox("Tcp"));
m_packetStatsProtocolListWidget->addItem(tcp);
+ QListWidgetItem * aodv = new QListWidgetItem(m_packetStatsProtocolListWidget);
+ m_packetStatsProtocolListWidget->setItemWidget(aodv, new PacketStatsProtocolCheckBox("Aodv"));
+ m_packetStatsProtocolListWidget->addItem(aodv);
+ QListWidgetItem * olsr = new QListWidgetItem(m_packetStatsProtocolListWidget);
+ m_packetStatsProtocolListWidget->setItemWidget(olsr, new PacketStatsProtocolCheckBox("Olsr"));
+ m_packetStatsProtocolListWidget->addItem(olsr);
+ QListWidgetItem * dsdv = new QListWidgetItem(m_packetStatsProtocolListWidget);
+ m_packetStatsProtocolListWidget->setItemWidget(dsdv, new PacketStatsProtocolCheckBox("Dsdv"));
+ m_packetStatsProtocolListWidget->addItem(dsdv);
formLayout.addRow("From Node Id", &m_packetStatsFromIdComboBox);
--- a/animator/animpacket.cpp Sat Mar 31 14:52:06 2012 -0700
+++ b/animator/animpacket.cpp Sat Mar 31 23:12:35 2012 -0700
@@ -44,6 +44,7 @@
{
m_graphicsItem = new QGraphicsLineItem;
+
m_graphicsTextItem = new QGraphicsTextItem;
m_graphicsTextItem->setFlag(QGraphicsItem::ItemIgnoresTransformations);
@@ -59,7 +60,6 @@
delete m_graphicsItem;
if(m_graphicsTextItem)
delete m_graphicsTextItem;
-
if(m_arpInfo)
delete m_arpInfo;
if(m_wifiMacInfo)
@@ -76,6 +76,12 @@
delete m_tcpInfo;
if(m_icmpInfo)
delete m_icmpInfo;
+ if(m_aodvInfo)
+ delete m_aodvInfo;
+ if(m_dsdvInfo)
+ delete m_dsdvInfo;
+ if(m_olsrInfo)
+ delete m_olsrInfo;
}
@@ -91,6 +97,9 @@
m_icmpInfo = 0;
m_udpInfo = 0;
m_tcpInfo = 0;
+ m_aodvInfo = 0;
+ m_dsdvInfo = 0;
+ m_olsrInfo = 0;
}
void
@@ -251,6 +260,68 @@
}
+void
+AnimPacket::parseAodv(QString metaInfo)
+{
+ QRegExp rx("ns3::aodv::TypeHeader \\((\\S+)\\) ");
+ int pos = 0;
+ if ((pos = rx.indexIn(metaInfo)) == -1)
+ return;
+ m_aodvInfo = new AodvInfo;
+ m_aodvInfo->type = rx.cap(1);
+ if(m_aodvInfo->type == "RREQ")
+ {
+ QRegExp rx("ns3::aodv::RreqHeader \\(RREQ ID \\d+ destination: ipv4 (\\S+) sequence number (\\d+) source: ipv4 (\\S+) sequence number \\d+");
+ int pos = 0;
+ if ((pos = rx.indexIn(metaInfo)) == -1)
+ return;
+ m_aodvInfo->destination = rx.cap(1);
+ m_aodvInfo->seq = rx.cap(2);
+ m_aodvInfo->source = rx.cap(1);
+
+ }
+ if(m_aodvInfo->type == "RREP")
+ {
+ QRegExp rx("ns3::aodv::RrepHeader \\(destination: ipv4 (\\S+) sequence number (\\d+) source ipv4 (\\S+) ");
+ int pos = 0;
+ if ((pos = rx.indexIn(metaInfo)) == -1)
+ return;
+ m_aodvInfo->destination = rx.cap(1);
+ m_aodvInfo->seq = rx.cap(2);
+ m_aodvInfo->source = rx.cap(1);
+ }
+ if(m_aodvInfo->type == "RERR")
+ {
+ QRegExp rx("ns3::aodv::RerrHeader \\(([^\\)]+) \\(ipv4 address, seq. number):(\\S+) ");
+ int pos = 0;
+ if ((pos = rx.indexIn(metaInfo)) == -1)
+ return;
+ m_aodvInfo->rerrInfo = rx.cap(1);
+ m_aodvInfo->destination = rx.cap(2);
+ }
+
+}
+
+void
+AnimPacket::parseDsdv(QString metaInfo)
+{
+ QRegExp rx("ns3::dsdv::DsdvHeader");
+ int pos = 0;
+ if ((pos = rx.indexIn(metaInfo)) == -1)
+ return;
+ m_dsdvInfo = new DsdvInfo;
+
+}
+
+void
+AnimPacket::parseOlsr(QString metaInfo)
+{
+ QRegExp rx("ns3::olsr::MessageHeader");
+ int pos = 0;
+ if ((pos = rx.indexIn(metaInfo)) == -1)
+ return;
+ m_olsrInfo = new OlsrInfo;
+}
QString
AnimPacket::getShortMeta()
@@ -261,6 +332,30 @@
AnimPacket::storeShortMeta(int flags, bool force)
{
m_shortMeta = "";
+
+ if(m_aodvInfo && (force || (flags & AnimPacket::Aodv)))
+ {
+ if(m_aodvInfo->type == "RERR")
+ {
+ m_shortMeta = "AODV:" + m_aodvInfo->type + " " + m_aodvInfo->destination;
+ return;
+ }
+ m_shortMeta = "AODV:" + m_aodvInfo->type + "D:" + m_aodvInfo->destination + " S:" + m_aodvInfo->source ;
+ return;
+ }
+
+ if(m_olsrInfo && (force || (flags & AnimPacket::Olsr)))
+ {
+ m_shortMeta = "OLSR";
+ return;
+ }
+
+ if(m_dsdvInfo && (force || (flags & AnimPacket::Dsdv)))
+ {
+ m_shortMeta = "DSDV";
+ return;
+ }
+
if(m_tcpInfo && (force || (flags & AnimPacket::Tcp)))
{
m_shortMeta = "TCP:[" + m_tcpInfo->flags + "]" + " S=" + m_tcpInfo->seq +
@@ -346,6 +441,12 @@
metaString += m_udpInfo->toString();
if(m_tcpInfo && ((flags & AnimPacket::Tcp) || (flags & AnimPacket::All)))
metaString += m_tcpInfo->toString();
+ if(m_aodvInfo && ((flags & AnimPacket::Aodv) || (flags & AnimPacket::All)))
+ metaString += m_aodvInfo->toString();
+ if(m_olsrInfo && ((flags & AnimPacket::Olsr) || (flags & AnimPacket::All)))
+ metaString += m_olsrInfo->toString();
+ if(m_dsdvInfo && ((flags & AnimPacket::Dsdv) || (flags & AnimPacket::All)))
+ metaString += m_dsdvInfo->toString();
bool force = (flags & AnimPacket::All)? true:false;
storeShortMeta (flags , force);
@@ -376,6 +477,9 @@
parseIcmp(metaInfo);
parseUdp(metaInfo);
parseTcp(metaInfo);
+ parseAodv(metaInfo);
+ parseDsdv(metaInfo);
+ parseOlsr(metaInfo);
storeShortMeta(1, true);
}
--- a/animator/animpacket.h Sat Mar 31 14:52:06 2012 -0700
+++ b/animator/animpacket.h Sat Mar 31 23:12:35 2012 -0700
@@ -212,6 +212,50 @@
};
+struct AodvInfo
+{
+ AodvInfo()
+ {
+
+ }
+ QString toString()
+ {
+ if(type == "RERR")
+ {
+ return "RERR:" + rerrInfo + " " + destination;
+ }
+ return "AODV:" + type + " D=" + destination + " S=" + source + " Seq=" + seq;
+ }
+ QString type;
+ QString destination;
+ QString source;
+ QString seq;
+ QString rerrInfo;
+};
+
+struct DsdvInfo
+{
+ DsdvInfo()
+ {
+
+ }
+ QString toString()
+ {
+ return "DSDV";
+ }
+};
+
+struct OlsrInfo
+{
+ OlsrInfo()
+ {
+
+ }
+ QString toString()
+ {
+ return "OLSR";
+ }
+};
class AnimPacket
@@ -236,7 +280,10 @@
Ipv4 = 32,
Tcp = 64,
Udp = 128,
- Icmp = 256
+ Icmp = 256,
+ Aodv = 512,
+ Olsr = 1024,
+ Dsdv = 2048
};
uint64_t getAnimId();
@@ -278,6 +325,10 @@
IcmpInfo * m_icmpInfo;
UdpInfo * m_udpInfo;
TcpInfo * m_tcpInfo;
+ AodvInfo * m_aodvInfo;
+ OlsrInfo * m_olsrInfo;
+ DsdvInfo * m_dsdvInfo;
+
void clearInfo();
@@ -289,7 +340,9 @@
void parseIcmp(QString metaInfo);
void parseUdp(QString metaInfo);
void parseTcp(QString metaInfo);
-
+ void parseAodv(QString metaInfo);
+ void parseDsdv(QString metaInfo);
+ void parseOlsr(QString metaInfo);
};