--- 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;