Add Routing protocol filters
authorJohn Abraham <john.abraham@gatech.edu>
Sat, 31 Mar 2012 23:12:35 -0700
changeset 46 ca891c0415f7
parent 45 372c66978ff2
child 47 6cf5e50b684d
Add Routing protocol filters
animator/animatorscene.cpp
animator/animpacket.cpp
animator/animpacket.h
--- 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);
 
 };