Support for Ipv6 part 3
authorJohn Abraham <john.abraham.in@gmail.com>
Fri, 10 Mar 2017 13:27:17 -0800
changeset 300 cc4156b5b908
parent 299 a1356e3bba17
child 301 147f10a4402a
Support for Ipv6 part 3
animlink.cpp
animpacket.cpp
animpacket.h
packetsmode.cpp
packetsmode.h
--- a/animlink.cpp	Fri Mar 10 12:55:57 2017 -0800
+++ b/animlink.cpp	Fri Mar 10 13:27:17 2017 -0800
@@ -48,7 +48,15 @@
       QStringList parts = (*m_pointADescription).split ('~');
       if (parts.count () == 2)
         {
-          AnimNodeMgr::getInstance ()->addIpv4Address (fromId, parts.at (0));
+          if (!parts.at (0).contains (":"))
+            {
+              AnimNodeMgr::getInstance ()->addIpv4Address (fromId, parts.at (0));
+            }
+          else
+            {
+              AnimNodeMgr::getInstance ()->addIpv6Address (fromId, parts.at (0));
+            }
+
           AnimNodeMgr::getInstance ()->addMacAddress (fromId, parts.at (1));
         }
 
@@ -59,7 +67,14 @@
       QStringList parts = (*m_pointBDescription).split ('~');
       if (parts.count () == 2)
         {
-          AnimNodeMgr::getInstance ()->addIpv4Address (toId, parts.at (0));
+          if (!parts.at (0).contains (":"))
+            {
+              AnimNodeMgr::getInstance ()->addIpv4Address (toId, parts.at (0));
+            }
+          else
+            {
+              AnimNodeMgr::getInstance ()->addIpv6Address (toId, parts.at (0));
+            }
           AnimNodeMgr::getInstance ()->addMacAddress (toId, parts.at (1));
         }
     }
--- a/animpacket.cpp	Fri Mar 10 12:55:57 2017 -0800
+++ b/animpacket.cpp	Fri Mar 10 13:27:17 2017 -0800
@@ -122,6 +122,9 @@
   IcmpInfo icmpInfo = parseIcmp (metaInfoString, icmpResult);
   bool ipv4Result = false;
   Ipv4Info ipv4Info = parseIpv4 (metaInfoString, ipv4Result);
+  bool ipv6Result = false;
+  Ipv6Info ipv6Info = parseIpv6 (metaInfoString, ipv6Result);
+
   bool wifiResult = false;
   WifiMacInfo wifiMacInfo = parseWifi (metaInfoString, wifiResult);
   bool pppResult = false;
@@ -141,6 +144,7 @@
                          udpInfo.toShortString () +
                          icmpInfo.toShortString () +
                          ipv4Info.toShortString () +
+                         ipv6Info.toShortString () +
                          arpInfo.toShortString () +
                          wifiMacInfo.toShortString () +
                          pppInfo.toShortString () +
@@ -155,6 +159,7 @@
                          udpInfo.toString () +
                          icmpInfo.toString () +
                          ipv4Info.toString () +
+                         ipv6Info.toString () +
                          arpInfo.toString () +
                          wifiMacInfo.toString () +
                          pppInfo.toString () +
@@ -185,6 +190,9 @@
       if (filter & AnimPacket::IPV4)
         if (ipv4Result)
           finalString += (shortString)?ipv4Info.toShortString ():ipv4Info.toString ();
+      if (filter & AnimPacket::IPV6)
+        if (ipv6Result)
+          finalString += (shortString)?ipv6Info.toShortString ():ipv6Info.toString ();
       if (filter & AnimPacket::ARP)
         if (arpResult)
           finalString += (shortString)?arpInfo.toShortString ():arpInfo.toString ();
@@ -477,6 +485,21 @@
   return udpInfo;
 }
 
+Ipv6Info
+AnimPacket::parseIpv6 (QString metaInfo, bool & result)
+{
+  Ipv6Info ipv6Info;
+  QRegExp rx ("ns3::Ipv6Header");
+  int pos = 0;
+  if ((pos = rx.indexIn (metaInfo)) == -1)
+    {
+      result = false;
+      return ipv6Info;
+    }
+  result = true;
+  return ipv6Info;
+}
+
 Ipv4Info
 AnimPacket::parseIpv4 (QString metaInfo, bool & result)
 {
--- a/animpacket.h	Fri Mar 10 12:55:57 2017 -0800
+++ b/animpacket.h	Fri Mar 10 13:27:17 2017 -0800
@@ -197,6 +197,25 @@
 };
 
 
+
+struct Ipv6Info
+{
+  Ipv6Info ()
+  {
+
+  }
+  QString toString ()
+  {
+    return  " Ipv6";
+  }
+  QString toShortString ()
+  {
+    return "IPv6";
+  }
+
+};
+
+
 struct IcmpInfo
 {
   IcmpInfo ()
@@ -367,7 +386,8 @@
     ETHERNET= 1 << 7,
     PPP= 1 << 8,
     ICMP= 1 << 9,
-    ARP= 1 << 10
+    ARP= 1 << 10,
+    IPV6 = 1 << 11
   } FilterType_t;
   enum { Type = ANIMPACKET_TYPE };
   int type () const
@@ -422,6 +442,7 @@
   static EthernetInfo parseEthernet (QString metaInfo, bool & result);
   static WifiMacInfo parseWifi (QString metaInfo, bool & result);
   static Ipv4Info parseIpv4 (QString metaInfo, bool & result);
+  static Ipv6Info parseIpv6 (QString metaInfo, bool & result);
   static IcmpInfo parseIcmp (QString metaInfo, bool & result);
   static UdpInfo parseUdp (QString metaInfo, bool & result);
   static TcpInfo parseTcp (QString metaInfo, bool & result);
--- a/packetsmode.cpp	Fri Mar 10 12:55:57 2017 -0800
+++ b/packetsmode.cpp	Fri Mar 10 13:27:17 2017 -0800
@@ -111,6 +111,7 @@
   m_wifiFilterCb = new QCheckBox ("Wifi");
   m_pppFilterCb = new QCheckBox ("Ppp");
   m_ipv4FilterCb = new QCheckBox ("Ipv4");
+  m_ipv6FilterCb = new QCheckBox ("Ipv6");
   m_arpFilterCb = new QCheckBox ("Arp");
   m_tcpFilterCb = new QCheckBox ("Tcp");
   m_udpFilterCb = new QCheckBox ("Udp");
@@ -138,6 +139,7 @@
   m_filterToolBar->addWidget (m_tcpFilterCb);
   m_filterToolBar->addWidget (m_udpFilterCb);
   m_filterToolBar->addWidget (m_ipv4FilterCb);
+  m_filterToolBar->addWidget (m_ipv6FilterCb);
   m_filterToolBar->addWidget (m_icmpFilterCb);
   m_filterToolBar->addWidget (m_wifiFilterCb);
   m_filterToolBar->addWidget (m_ethernetFilterCb);
@@ -175,6 +177,7 @@
   connect (m_tcpFilterCb, SIGNAL(clicked()), this, SLOT(filterClickedSlot()));
   connect (m_udpFilterCb, SIGNAL(clicked()), this, SLOT(filterClickedSlot()));
   connect (m_ipv4FilterCb, SIGNAL(clicked()), this, SLOT(filterClickedSlot()));
+  connect (m_ipv6FilterCb, SIGNAL(clicked()), this, SLOT(filterClickedSlot()));
   connect (m_icmpFilterCb, SIGNAL(clicked()), this, SLOT(filterClickedSlot()));
   connect (m_wifiFilterCb, SIGNAL(clicked()), this, SLOT(filterClickedSlot()));
   connect (m_ethernetFilterCb, SIGNAL(clicked()), this, SLOT(filterClickedSlot()));
@@ -386,6 +389,7 @@
   ft |= m_udpFilterCb->isChecked () ? AnimPacket::UDP: AnimPacket::ALL;
   ft |= m_icmpFilterCb->isChecked () ? AnimPacket::ICMP: AnimPacket::ALL;
   ft |= m_ipv4FilterCb->isChecked () ? AnimPacket::IPV4: AnimPacket::ALL;
+  ft |= m_ipv6FilterCb->isChecked () ? AnimPacket::IPV6: AnimPacket::ALL;
   ft |= m_pppFilterCb->isChecked () ? AnimPacket::PPP: AnimPacket::ALL;
   ft |= m_ethernetFilterCb->isChecked () ? AnimPacket::ETHERNET: AnimPacket::ALL;
   PacketsScene::getInstance ()->setFilter (ft);
--- a/packetsmode.h	Fri Mar 10 12:55:57 2017 -0800
+++ b/packetsmode.h	Fri Mar 10 13:27:17 2017 -0800
@@ -69,6 +69,7 @@
   QCheckBox * m_aodvFilterCb;
   QCheckBox * m_olsrFilterCb;
   QCheckBox * m_ipv4FilterCb;
+  QCheckBox * m_ipv6FilterCb;
   QCheckBox * m_icmpFilterCb;
   QLineEdit * m_regexFilterEdit;
   QLabel * m_regexFilterLabel;