Runs 'check-style.py --level=3 -i' on src/click/*

This commit is contained in:
Lalith Suresh
2011-03-28 10:29:02 +01:00
parent 3cdd433fbd
commit 19ae044602
12 changed files with 217 additions and 202 deletions

View File

@@ -21,7 +21,7 @@
//
// (Click) (non-Click)
// A ))) WLAN ((( B
// (172.16.1.1) (172.16.1.2)
// (172.16.1.1) (172.16.1.2)
// (eth0)
//
@@ -45,7 +45,7 @@ int main (int argc, char *argv[])
{
#ifdef NS3_CLICK
double rss = -80;
Time interPacketInterval = Seconds(1.0);
Time interPacketInterval = Seconds (1.0);
// Setup nodes
NodeContainer wifiNodes;
@@ -77,14 +77,14 @@ int main (int argc, char *argv[])
wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");
// The below FixedRssLossModel will cause the rss to be fixed regardless
// of the distance between the two stations, and the transmit power
wifiChannel.AddPropagationLoss ("ns3::FixedRssLossModel","Rss",DoubleValue(rss));
wifiChannel.AddPropagationLoss ("ns3::FixedRssLossModel","Rss",DoubleValue (rss));
wifiPhy.SetChannel (wifiChannel.Create ());
// Add a non-QoS upper mac, and disable rate control
NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode",StringValue(phyMode),
"ControlMode",StringValue(phyMode));
"DataMode",StringValue (phyMode),
"ControlMode",StringValue (phyMode));
// Set it to adhoc mode
wifiMac.SetType ("ns3::AdhocWifiMac");
NetDeviceContainer wifiDevices = wifi.Install (wifiPhy, wifiMac, wifiNodes);
@@ -96,7 +96,7 @@ int main (int argc, char *argv[])
positionAlloc->Add (Vector (5.0, 0.0, 0.0));
mobility.SetPositionAllocator (positionAlloc);
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
mobility.Install (wifiNodes);
mobility.Install (wifiNodes);
// Install normal internet stack on node B
InternetStackHelper internet;
@@ -105,7 +105,7 @@ int main (int argc, char *argv[])
// Install Click on node A
ClickInternetStackHelper clickinternet;
clickinternet.SetClickFile (wifiNodes.Get (0), "src/click/examples/nsclick-wifi-single-interface.click");
clickinternet.SetRoutingTableElement(wifiNodes.Get (0), "rt");
clickinternet.SetRoutingTableElement (wifiNodes.Get (0), "rt");
clickinternet.Install (wifiNodes.Get (0));
// Configure IP addresses
@@ -136,8 +136,8 @@ int main (int argc, char *argv[])
// For tracing
wifiPhy.EnablePcap ("nsclick-raw-wlan", wifiDevices);
Simulator::Stop (Seconds(20.0));
Simulator::Run();
Simulator::Stop (Seconds (20.0));
Simulator::Run ();
return 0;
#else
NS_FATAL_ERROR ("Can't use ns-3-click without NSCLICK compiled in");

View File

@@ -77,7 +77,7 @@ main (int argc, char *argv[])
// Explicitly create the channels required by the topology (shown above).
//
CsmaHelper csma;
csma.SetChannelAttribute ("DataRate", DataRateValue (DataRate(5000000)));
csma.SetChannelAttribute ("DataRate", DataRateValue (DataRate (5000000)));
csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2)));
csma.SetDeviceAttribute ("Mtu", UintegerValue (1400));
NetDeviceContainer d01 = csma.Install (NodeContainer (n.Get (0), n.Get (1)));
@@ -100,7 +100,7 @@ main (int argc, char *argv[])
//
uint16_t port = 4000;
UdpServerHelper server (port);
ApplicationContainer apps = server.Install (n.Get(2));
ApplicationContainer apps = server.Install (n.Get (2));
apps.Start (Seconds (1.0));
apps.Stop (Seconds (10.0));
@@ -126,7 +126,7 @@ main (int argc, char *argv[])
// Now, do the actual simulation.
//
NS_LOG_INFO ("Run Simulation.");
Simulator::Stop (Seconds(20.0));
Simulator::Stop (Seconds (20.0));
Simulator::Run ();
Simulator::Destroy ();
NS_LOG_INFO ("Done.");

View File

@@ -20,7 +20,7 @@
//
// (Click) CSMA (non-Click)
// A ================ B
// (172.16.1.1) (172.16.1.2)
// (172.16.1.1) (172.16.1.2)
// (eth0)
//
//
@@ -90,8 +90,8 @@ int main (int argc, char *argv[])
// For tracing
csma.EnablePcap ("nsclick-simple-lan", csmaDevices, false);
Simulator::Stop (Seconds(20.0));
Simulator::Run();
Simulator::Stop (Seconds (20.0));
Simulator::Run ();
return 0;
#else
NS_FATAL_ERROR ("Can't use ns-3-click without NSCLICK compiled in");

View File

@@ -66,7 +66,7 @@ main (int argc, char *argv[])
// Explicitly create the channels required by the topology (shown above).
//
CsmaHelper csma;
csma.SetChannelAttribute ("DataRate", DataRateValue (DataRate(5000000)));
csma.SetChannelAttribute ("DataRate", DataRateValue (DataRate (5000000)));
csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2)));
csma.SetDeviceAttribute ("Mtu", UintegerValue (1400));
NetDeviceContainer d = csma.Install (n);
@@ -93,7 +93,7 @@ main (int argc, char *argv[])
//
uint16_t port = 4000;
UdpServerHelper server (port);
ApplicationContainer apps = server.Install (n.Get(1));
ApplicationContainer apps = server.Install (n.Get (1));
apps.Start (Seconds (1.0));
apps.Stop (Seconds (10.0));
@@ -118,7 +118,7 @@ main (int argc, char *argv[])
// Now, do the actual simulation.
//
NS_LOG_INFO ("Run Simulation.");
Simulator::Stop (Seconds(20.0));
Simulator::Stop (Seconds (20.0));
Simulator::Run ();
Simulator::Destroy ();
NS_LOG_INFO ("Done.");

View File

@@ -46,18 +46,18 @@ NS_LOG_COMPONENT_DEFINE ("NsclickUdpClientServerWifi");
#ifdef NS3_CLICK
void
readArp(Ptr<Ipv4ClickRouting> clickRouter)
readArp (Ptr<Ipv4ClickRouting> clickRouter)
{
// Access the handlers
NS_LOG_INFO(clickRouter->ReadHandler ("wifi/arpquerier", "table"));
NS_LOG_INFO(clickRouter->ReadHandler ("wifi/arpquerier", "stats"));
NS_LOG_INFO (clickRouter->ReadHandler ("wifi/arpquerier", "table"));
NS_LOG_INFO (clickRouter->ReadHandler ("wifi/arpquerier", "stats"));
}
void
writeArp(Ptr<Ipv4ClickRouting> clickRouter)
writeArp (Ptr<Ipv4ClickRouting> clickRouter)
{
// Access the handler
NS_LOG_INFO(clickRouter->WriteHandler ("wifi/arpquerier", "insert", "172.16.1.2 00:00:00:00:00:02"));
NS_LOG_INFO (clickRouter->WriteHandler ("wifi/arpquerier", "insert", "172.16.1.2 00:00:00:00:00:02"));
}
#endif
@@ -106,17 +106,17 @@ main (int argc, char *argv[])
wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");
// The below FixedRssLossModel will cause the rss to be fixed regardless
// of the distance between the two stations, and the transmit power
wifiChannel.AddPropagationLoss ("ns3::FixedRssLossModel","Rss",DoubleValue(-80));
wifiChannel.AddPropagationLoss ("ns3::FixedRssLossModel","Rss",DoubleValue (-80));
wifiPhy.SetChannel (wifiChannel.Create ());
// Add a non-QoS upper mac, and disable rate control
NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode",StringValue(phyMode),
"ControlMode",StringValue(phyMode));
"DataMode",StringValue (phyMode),
"ControlMode",StringValue (phyMode));
// Set it to adhoc mode
wifiMac.SetType ("ns3::AdhocWifiMac");
NetDeviceContainer d = wifi.Install (wifiPhy, wifiMac, n);
NetDeviceContainer d = wifi.Install (wifiPhy, wifiMac, n);
MobilityHelper mobility;
Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
@@ -140,7 +140,7 @@ main (int argc, char *argv[])
// been added ahead of the official Wifi support
// for promiscuous mode. Thus, the below line will
// not work until then.
n.Get(3)->GetObject<Ipv4ClickRouting>()->SetPromiscuous ("eth0");
n.Get (3)->GetObject<Ipv4ClickRouting> ()->SetPromiscuous ("eth0");
Ipv4AddressHelper ipv4;
//
@@ -156,7 +156,7 @@ main (int argc, char *argv[])
//
uint16_t port = 4000;
UdpServerHelper server (port);
ApplicationContainer apps = server.Install (n.Get(1));
ApplicationContainer apps = server.Install (n.Get (1));
apps.Start (Seconds (1.0));
apps.Stop (Seconds (10.0));
@@ -184,15 +184,15 @@ main (int argc, char *argv[])
// requests of node 3 are lost due to interference from node
// 1. Hence, we fill in the ARP table of node 2 before at the
// beginning of the simulation
Simulator::Schedule (Seconds (0.5), &readArp,n.Get(2)->GetObject<Ipv4ClickRouting>());
Simulator::Schedule (Seconds (0.6), &writeArp,n.Get(2)->GetObject<Ipv4ClickRouting>());
Simulator::Schedule (Seconds (0.7), &readArp,n.Get(2)->GetObject<Ipv4ClickRouting>());
Simulator::Schedule (Seconds (0.5), &readArp,n.Get (2)->GetObject<Ipv4ClickRouting> ());
Simulator::Schedule (Seconds (0.6), &writeArp,n.Get (2)->GetObject<Ipv4ClickRouting> ());
Simulator::Schedule (Seconds (0.7), &readArp,n.Get (2)->GetObject<Ipv4ClickRouting> ());
//
// Now, do the actual simulation.
//
NS_LOG_INFO ("Run Simulation.");
Simulator::Stop (Seconds(20.0));
Simulator::Stop (Seconds (20.0));
Simulator::Run ();
Simulator::Destroy ();
NS_LOG_INFO ("Done.");

View File

@@ -49,7 +49,7 @@ namespace ns3 {
#define INTERFACE_CONTEXT
typedef std::pair<Ptr<Ipv4>, uint32_t> InterfacePairIpv4;
typedef std::pair<Ptr<Ipv4>, uint32_t> InterfacePairIpv4;
typedef std::map<InterfacePairIpv4, Ptr<PcapFileWrapper> > InterfaceFileMapIpv4;
typedef std::map<InterfacePairIpv4, Ptr<OutputStreamWrapper> > InterfaceStreamMapIpv4;
@@ -102,7 +102,7 @@ ClickInternetStackHelper::SetTcp (const std::string tid)
m_tcpFactory.SetTypeId (tid);
}
void
void
ClickInternetStackHelper::SetTcp (std::string tid, std::string n0, const AttributeValue &v0)
{
m_tcpFactory.SetTypeId (tid);
@@ -139,7 +139,7 @@ ClickInternetStackHelper::SetRoutingTableElement (Ptr<Node> node, std::string rt
m_nodeToRoutingTableElementMap.insert (std::make_pair (node, rt));
}
void
void
ClickInternetStackHelper::Install (NodeContainer c) const
{
for (NodeContainer::Iterator i = c.Begin (); i != c.End (); ++i)
@@ -148,7 +148,7 @@ ClickInternetStackHelper::Install (NodeContainer c) const
}
}
void
void
ClickInternetStackHelper::InstallAll (void) const
{
Install (NodeContainer::GetGlobal ());
@@ -170,7 +170,7 @@ ClickInternetStackHelper::Install (Ptr<Node> node) const
{
if (node->GetObject<Ipv4> () != 0)
{
NS_FATAL_ERROR ("ClickInternetStackHelper::Install (): Aggregating "
NS_FATAL_ERROR ("ClickInternetStackHelper::Install (): Aggregating "
"an InternetStack to a node with an existing Ipv4 object");
return;
}
@@ -218,7 +218,7 @@ Ipv4L3ProtocolRxTxSink (Ptr<const Packet> p, Ptr<Ipv4> ipv4, uint32_t interface)
//
// Since trace sources are independent of interface, if we hook a source
// on a particular protocol we will get traces for all of its interfaces.
// We need to filter this to only report interfaces for which the user
// We need to filter this to only report interfaces for which the user
// has expressed interest.
//
InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
@@ -229,14 +229,14 @@ Ipv4L3ProtocolRxTxSink (Ptr<const Packet> p, Ptr<Ipv4> ipv4, uint32_t interface)
}
Ptr<PcapFileWrapper> file = g_interfaceFileMapIpv4[pair];
file->Write(Simulator::Now(), p);
file->Write (Simulator::Now (), p);
}
bool
ClickInternetStackHelper::PcapHooked (Ptr<Ipv4> ipv4)
{
for ( InterfaceFileMapIpv4::const_iterator i = g_interfaceFileMapIpv4.begin ();
i != g_interfaceFileMapIpv4.end ();
for ( InterfaceFileMapIpv4::const_iterator i = g_interfaceFileMapIpv4.begin ();
i != g_interfaceFileMapIpv4.end ();
++i)
{
if ((*i).first.first == ipv4)
@@ -247,7 +247,7 @@ ClickInternetStackHelper::PcapHooked (Ptr<Ipv4> ipv4)
return false;
}
void
void
ClickInternetStackHelper::EnablePcapIpv4Internal (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface, bool explicitFilename)
{
NS_LOG_FUNCTION (prefix << ipv4 << interface);
@@ -259,7 +259,7 @@ ClickInternetStackHelper::EnablePcapIpv4Internal (std::string prefix, Ptr<Ipv4>
}
//
// We have to create a file and a mapping from protocol/interface to file
// We have to create a file and a mapping from protocol/interface to file
// irrespective of how many times we want to trace a particular protocol.
//
PcapHelper pcapHelper;
@@ -283,7 +283,7 @@ ClickInternetStackHelper::EnablePcapIpv4Internal (std::string prefix, Ptr<Ipv4>
if (!PcapHooked (ipv4))
{
//
// Ptr<Ipv4> is aggregated to node and Ipv4L3Protocol is aggregated to
// Ptr<Ipv4> is aggregated to node and Ipv4L3Protocol is aggregated to
// node so we can get to Ipv4L3Protocol through Ipv4.
//
Ptr<Ipv4L3Protocol> ipv4L3Protocol = ipv4->GetObject<Ipv4L3Protocol> ();
@@ -305,16 +305,16 @@ ClickInternetStackHelper::EnablePcapIpv4Internal (std::string prefix, Ptr<Ipv4>
static void
Ipv4L3ProtocolDropSinkWithoutContext (
Ptr<OutputStreamWrapper> stream,
Ipv4Header const &header,
Ipv4Header const &header,
Ptr<const Packet> packet,
Ipv4L3Protocol::DropReason reason,
Ptr<Ipv4> ipv4,
Ipv4L3Protocol::DropReason reason,
Ptr<Ipv4> ipv4,
uint32_t interface)
{
//
// Since trace sources are independent of interface, if we hook a source
// on a particular protocol we will get traces for all of its interfaces.
// We need to filter this to only report interfaces for which the user
// We need to filter this to only report interfaces for which the user
// has expressed interest.
//
InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
@@ -333,16 +333,16 @@ static void
Ipv4L3ProtocolDropSinkWithContext (
Ptr<OutputStreamWrapper> stream,
std::string context,
Ipv4Header const &header,
Ipv4Header const &header,
Ptr<const Packet> packet,
Ipv4L3Protocol::DropReason reason,
Ptr<Ipv4> ipv4,
Ipv4L3Protocol::DropReason reason,
Ptr<Ipv4> ipv4,
uint32_t interface)
{
//
// Since trace sources are independent of interface, if we hook a source
// on a particular protocol we will get traces for all of its interfaces.
// We need to filter this to only report interfaces for which the user
// We need to filter this to only report interfaces for which the user
// has expressed interest.
//
InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
@@ -355,7 +355,7 @@ Ipv4L3ProtocolDropSinkWithContext (
Ptr<Packet> p = packet->Copy ();
p->AddHeader (header);
#ifdef INTERFACE_CONTEXT
*stream->GetStream () << "d " << Simulator::Now ().GetSeconds () << " " << context << "(" << interface << ") "
*stream->GetStream () << "d " << Simulator::Now ().GetSeconds () << " " << context << "(" << interface << ") "
<< *p << std::endl;
#else
*stream->GetStream () << "d " << Simulator::Now ().GetSeconds () << " " << context << " " << *p << std::endl;
@@ -365,8 +365,8 @@ Ipv4L3ProtocolDropSinkWithContext (
bool
ClickInternetStackHelper::AsciiHooked (Ptr<Ipv4> ipv4)
{
for ( InterfaceStreamMapIpv4::const_iterator i = g_interfaceStreamMapIpv4.begin ();
i != g_interfaceStreamMapIpv4.end ();
for ( InterfaceStreamMapIpv4::const_iterator i = g_interfaceStreamMapIpv4.begin ();
i != g_interfaceStreamMapIpv4.end ();
++i)
{
if ((*i).first.first == ipv4)
@@ -377,11 +377,11 @@ ClickInternetStackHelper::AsciiHooked (Ptr<Ipv4> ipv4)
return false;
}
void
void
ClickInternetStackHelper::EnableAsciiIpv4Internal (
Ptr<OutputStreamWrapper> stream,
std::string prefix,
Ptr<Ipv4> ipv4,
Ptr<OutputStreamWrapper> stream,
std::string prefix,
Ptr<Ipv4> ipv4,
uint32_t interface,
bool explicitFilename)
{
@@ -392,13 +392,13 @@ ClickInternetStackHelper::EnableAsciiIpv4Internal (
}
//
// Our trace sinks are going to use packet printing, so we have to
// Our trace sinks are going to use packet printing, so we have to
// make sure that is turned on.
//
Packet::EnablePrinting ();
//
// If we are not provided an OutputStreamWrapper, we are expected to create
// If we are not provided an OutputStreamWrapper, we are expected to create
// one using the usual trace filename conventions and hook WithoutContext
// since there will be one file per context and therefore the context would
// be redundant.
@@ -406,12 +406,12 @@ ClickInternetStackHelper::EnableAsciiIpv4Internal (
if (stream == 0)
{
//
// Set up an output stream object to deal with private ofstream copy
// Set up an output stream object to deal with private ofstream copy
// constructor and lifetime issues. Let the helper decide the actual
// name of the file given the prefix.
//
// We have to create a stream and a mapping from protocol/interface to
// stream irrespective of how many times we want to trace a particular
// We have to create a stream and a mapping from protocol/interface to
// stream irrespective of how many times we want to trace a particular
// protocol.
//
AsciiTraceHelper asciiTraceHelper;
@@ -445,11 +445,11 @@ ClickInternetStackHelper::EnableAsciiIpv4Internal (
//
// The drop sink for the Ipv4L3Protocol uses a different signature than
// the default sink, so we have to cook one up for ourselves. We can get
// to the Ptr<Ipv4L3Protocol> through our Ptr<Ipv4> since they must both
// to the Ptr<Ipv4L3Protocol> through our Ptr<Ipv4> since they must both
// be aggregated to the same node.
//
Ptr<Ipv4L3Protocol> ipv4L3Protocol = ipv4->GetObject<Ipv4L3Protocol> ();
bool __attribute__ ((unused)) result = ipv4L3Protocol->TraceConnectWithoutContext ("Drop",
bool __attribute__ ((unused)) result = ipv4L3Protocol->TraceConnectWithoutContext ("Drop",
MakeBoundCallback (&Ipv4L3ProtocolDropSinkWithoutContext,
theStream));
NS_ASSERT_MSG (result == true, "ClickInternetStackHelper::EanableAsciiIpv4Internal(): "
@@ -463,12 +463,12 @@ ClickInternetStackHelper::EnableAsciiIpv4Internal (
//
// If we are provided an OutputStreamWrapper, we are expected to use it, and
// to provide a context. We are free to come up with our own context if we
// want, and use the AsciiTraceHelper Hook*WithContext functions, but for
// want, and use the AsciiTraceHelper Hook*WithContext functions, but for
// compatibility and simplicity, we just use Config::Connect and let it deal
// with the context.
//
// We need to associate the ipv4/interface with a stream to express interest
// in tracing events on that pair, however, we only hook the trace sources
// in tracing events on that pair, however, we only hook the trace sources
// once to avoid multiple trace sink calls per event (connect is independent
// of interface).
//
@@ -478,9 +478,9 @@ ClickInternetStackHelper::EnableAsciiIpv4Internal (
std::ostringstream oss;
//
// For the ARP Drop, we are going to use the default trace sink provided by
// the ascii trace helper. There is actually no AsciiTraceHelper in sight
// here, but the default trace sinks are actually publicly available static
// For the ARP Drop, we are going to use the default trace sink provided by
// the ascii trace helper. There is actually no AsciiTraceHelper in sight
// here, but the default trace sinks are actually publicly available static
// functions that are always there waiting for just such a case.
//
oss << "/NodeList/" << node->GetId () << "/$ns3::ArpL3Protocol/Drop";

View File

@@ -46,18 +46,19 @@ class Ipv4RoutingHelper;
* nodes will not be able to use Ipv6 functionalities.
*
*/
class ClickInternetStackHelper : public PcapHelperForIpv4, public AsciiTraceHelperForIpv4
class ClickInternetStackHelper : public PcapHelperForIpv4,
public AsciiTraceHelperForIpv4
{
public:
/**
* Create a new ClickInternetStackHelper which uses Ipv4ClickRouting for routing
*/
ClickInternetStackHelper(void);
ClickInternetStackHelper (void);
/**
* Destroy the ClickInternetStackHelper
*/
virtual ~ClickInternetStackHelper(void);
virtual ~ClickInternetStackHelper (void);
ClickInternetStackHelper (const ClickInternetStackHelper &);
ClickInternetStackHelper &operator = (const ClickInternetStackHelper &o);
@@ -67,29 +68,29 @@ public:
void Reset (void);
/**
* Aggregate implementations of the ns3::Ipv4L3ClickProtocol, ns3::ArpL3Protocol,
* ns3::Udp, and ns3::Tcp classes onto the provided node. This method will
* Aggregate implementations of the ns3::Ipv4L3ClickProtocol, ns3::ArpL3Protocol,
* ns3::Udp, and ns3::Tcp classes onto the provided node. This method will
* assert if called on a node that already has an Ipv4 object aggregated to it.
*
*
* \param nodeName The name of the node on which to install the stack.
*/
void Install (std::string nodeName) const;
/**
* Aggregate implementations of the ns3::Ipv4L3ClickProtocol, ns3::ArpL3Protocol,
* ns3::Udp, and ns3::Tcp classes onto the provided node. This method will
* ns3::Udp, and ns3::Tcp classes onto the provided node. This method will
* assert if called on a node that already has an Ipv4 object aggregated to it.
*
*
* \param node The node on which to install the stack.
*/
void Install (Ptr<Node> node) const;
/**
* For each node in the input container, aggregate implementations of the
* ns3::Ipv4L3ClickProtocol, ns3::ArpL3Protocol, ns3::Udp, and, ns3::Tcp classes.
* The program will assert if this method is called on a container with a
* For each node in the input container, aggregate implementations of the
* ns3::Ipv4L3ClickProtocol, ns3::ArpL3Protocol, ns3::Udp, and, ns3::Tcp classes.
* The program will assert if this method is called on a container with a
* node that already has an Ipv4 object aggregated to it.
*
*
* \param c NodeContainer that holds the set of nodes on which to install the
* new stacks.
*/
@@ -103,7 +104,7 @@ public:
/**
* \brief set the Tcp stack which will not need any other parameter.
*
* This function sets up the tcp stack to the given TypeId. It should not be
* This function sets up the tcp stack to the given TypeId. It should not be
* used for NSC stack setup because the nsc stack needs the Library attribute
* to be setup, please use instead the version that requires an attribute
* and a value. If you choose to use this function anyways to set nsc stack
@@ -111,21 +112,21 @@ public:
*
* \param tid the type id, typically it is set to "ns3::TcpL4Protocol"
*/
void SetTcp(std::string tid);
void SetTcp (std::string tid);
/**
* \brief This function is used to setup the Network Simulation Cradle stack with library value.
*
* Give the NSC stack a shared library file name to use when creating the
* stack implementation. The attr string is actually the attribute name to
* be setup and val is its value. The attribute is the stack implementation
*
* Give the NSC stack a shared library file name to use when creating the
* stack implementation. The attr string is actually the attribute name to
* be setup and val is its value. The attribute is the stack implementation
* to be used and the value is the shared library name.
*
* \param tid The type id, for the case of nsc it would be "ns3::NscTcpL4Protocol"
*
* \param tid The type id, for the case of nsc it would be "ns3::NscTcpL4Protocol"
* \param attr The attribute name that must be setup, for example "Library"
* \param val The attribute value, which will be in fact the shared library name (example:"liblinux2.6.26.so")
*/
void SetTcp (std::string tid, std::string attr, const AttributeValue &val);
void SetTcp (std::string tid, std::string attr, const AttributeValue &val);
/**
* \brief Set a Click file to be used for a group of nodes.
@@ -163,8 +164,8 @@ private:
* @param ipv4 Ptr to the Ipv4 interface on which you want to enable tracing.
* @param interface Interface ID on the Ipv4 on which you want to enable tracing.
*/
virtual void EnablePcapIpv4Internal (std::string prefix,
Ptr<Ipv4> ipv4,
virtual void EnablePcapIpv4Internal (std::string prefix,
Ptr<Ipv4> ipv4,
uint32_t interface,
bool explicitFilename);
@@ -178,9 +179,9 @@ private:
* @param ipv4 Ptr to the Ipv4 interface on which you want to enable tracing.
* @param interface Interface ID on the Ipv4 on which you want to enable tracing.
*/
virtual void EnableAsciiIpv4Internal (Ptr<OutputStreamWrapper> stream,
std::string prefix,
Ptr<Ipv4> ipv4,
virtual void EnableAsciiIpv4Internal (Ptr<OutputStreamWrapper> stream,
std::string prefix,
Ptr<Ipv4> ipv4,
uint32_t interface,
bool explicitFilename);

View File

@@ -42,7 +42,7 @@ namespace ns3 {
// Values from nsclick ExtRouter implementation
#define INTERFACE_ID_KERNELTAP 0
#define INTERFACE_ID_FIRST 1
#define INTERFACE_ID_FIRST_DROP 33
#define INTERFACE_ID_FIRST_DROP 33
NS_OBJECT_ENSURE_REGISTERED (Ipv4ClickRouting);
@@ -161,31 +161,31 @@ Ipv4ClickRouting::GetInterfaceId (const char *ifname)
// corresponds to the interface ID that Click will use.
// Tap/tun devices refer to the kernel devices
if (strstr(ifname, "tap") || strstr(ifname, "tun"))
if (strstr (ifname, "tap") || strstr (ifname, "tun"))
{
retval = 0;
}
else if (const char *devname = strstr(ifname, "eth"))
else if (const char *devname = strstr (ifname, "eth"))
{
while (*devname && !isdigit((unsigned char) *devname))
while (*devname && !isdigit ((unsigned char) *devname))
{
devname++;
}
if (*devname)
{
retval = atoi(devname) + INTERFACE_ID_FIRST;
retval = atoi (devname) + INTERFACE_ID_FIRST;
}
}
else if (const char *devname = strstr(ifname, "drop"))
else if (const char *devname = strstr (ifname, "drop"))
{
while (*devname && !isdigit((unsigned char) *devname))
while (*devname && !isdigit ((unsigned char) *devname))
{
devname++;
}
if (*devname)
{
retval = atoi(devname) + INTERFACE_ID_FIRST_DROP;
retval = atoi (devname) + INTERFACE_ID_FIRST_DROP;
}
}
@@ -230,7 +230,7 @@ Ipv4ClickRouting::GetMacAddressFromInterfaceId (int ifid)
Ptr<NetDevice> device = m_ipv4->GetNetDevice (ifid);
Address devAddr = device->GetAddress ();
addr << Mac48Address::ConvertFrom(devAddr);
addr << Mac48Address::ConvertFrom (devAddr);
return addr.str ();
}
@@ -261,7 +261,7 @@ Ipv4ClickRouting::HandleScheduleFromClick (const struct timeval *when)
NS_LOG_DEBUG ("HandleScheduleFromClick at " << when->tv_sec << " " << when->tv_usec << " " << Simulator::Now ());
double simtime = when->tv_sec + (when->tv_usec / 1.0e6);
double simdelay = simtime - Simulator::Now ().GetMicroSeconds () / 1.0e6;
double simdelay = simtime - Simulator::Now ().GetMicroSeconds () / 1.0e6;
Simulator::Schedule (Seconds (simdelay), &Ipv4ClickRouting::RunClickEvent, this);
}
@@ -269,7 +269,7 @@ Ipv4ClickRouting::HandleScheduleFromClick (const struct timeval *when)
void
Ipv4ClickRouting::HandlePacketFromClick (int ifid, int ptype, const unsigned char* data, int len)
{
NS_LOG_DEBUG ("HandlePacketFromClick");
NS_LOG_DEBUG ("HandlePacketFromClick");
// Figure out packet's destination here:
// If ifid == 0, then the packet's going up
@@ -288,7 +288,7 @@ Ipv4ClickRouting::HandlePacketFromClick (int ifid, int ptype, const unsigned cha
}
else if (ifid)
{
NS_LOG_DEBUG ("Incoming packet from eth" << ifid - 1 << " of type " << ptype <<". Sending packet down the stack.");
NS_LOG_DEBUG ("Incoming packet from eth" << ifid - 1 << " of type " << ptype << ". Sending packet down the stack.");
Ptr<Packet> p = Create<Packet> (data, len);
@@ -309,7 +309,7 @@ Ipv4ClickRouting::SendPacketToClick (int ifid, int ptype, const unsigned char* d
pinfo.id = 0;
pinfo.fid = 0;
simclick_click_send(m_simNode,ifid,ptype,data,len,&pinfo);
simclick_click_send (m_simNode,ifid,ptype,data,len,&pinfo);
}
void
@@ -360,7 +360,7 @@ Ipv4ClickRouting::Receive (Ptr<Packet> p, Mac48Address receiverAddr, Mac48Addres
uint8_t *buf = new uint8_t [len];
p->CopyData (buf, len);
//... and send the packet to the corresponding Click interface
// ... and send the packet to the corresponding Click interface
SendPacketToClick (ifid, SIMCLICK_PTYPE_ETHER, buf, len);
delete [] buf;
@@ -391,7 +391,7 @@ void
Ipv4ClickRouting::SetPromiscuous (std::string ifName)
{
Ptr<Ipv4L3ClickProtocol> ipv4l3 = DynamicCast<Ipv4L3ClickProtocol> (m_ipv4);
NS_ASSERT(ipv4l3);
NS_ASSERT (ipv4l3);
// Interface ethN gets index 1+N, but netdevice will start at 0
// To ensure this, install a Click stack on a node only after
// all NetDevices have been installed.
@@ -420,7 +420,7 @@ Ipv4ClickRouting::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetD
rtentry = Create<Ipv4Route> ();
rtentry->SetDestination (header.GetDestination ());
// the source address is the interface address that matches
// the destination address (when multiple are present on the
// the destination address (when multiple are present on the
// outgoing interface, one is selected via scoping rules)
NS_ASSERT (m_ipv4);
uint32_t numOifAddresses = m_ipv4->GetNAddresses (interfaceId);
@@ -438,10 +438,10 @@ Ipv4ClickRouting::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetD
rtentry->SetGateway (destination);
rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceId));
sockerr = Socket::ERROR_NOTERROR;
NS_LOG_DEBUG ("Found route to " << rtentry->GetDestination ()
NS_LOG_DEBUG ("Found route to " << rtentry->GetDestination ()
<< " via nh " << rtentry->GetGateway ()
<< " with source addr " << rtentry->GetSource ()
<< " and output dev " << rtentry->GetOutputDevice());
<< " and output dev " << rtentry->GetOutputDevice ());
}
else
{
@@ -459,7 +459,7 @@ Ipv4ClickRouting::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetD
bool
Ipv4ClickRouting::RouteInput (Ptr<const Packet> p, const Ipv4Header &header,
Ptr<const NetDevice> idev, UnicastForwardCallback ucb,
MulticastForwardCallback mcb, LocalDeliverCallback lcb,
MulticastForwardCallback mcb, LocalDeliverCallback lcb,
ErrorCallback ecb)
{
NS_FATAL_ERROR ("Click router does not have a RouteInput() interface!");
@@ -473,35 +473,39 @@ Ipv4ClickRouting::PrintRoutingTable (Ptr<OutputStreamWrapper> stream) const
void
Ipv4ClickRouting::NotifyInterfaceUp (uint32_t i)
{}
{
}
void
Ipv4ClickRouting::NotifyInterfaceDown (uint32_t i)
{}
{
}
void
Ipv4ClickRouting::NotifyAddAddress (uint32_t interface, Ipv4InterfaceAddress address)
{}
{
}
void
Ipv4ClickRouting::NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddress address)
{}
{
}
} // namespace ns3
static int simstrlcpy(char *buf, int len, const std::string &s)
static int simstrlcpy (char *buf, int len, const std::string &s)
{
if (len)
{
len--;
if ((unsigned) len > s.length())
if ((unsigned) len > s.length ())
{
len = s.length();
len = s.length ();
}
s.copy(buf, len);
s.copy (buf, len);
buf[len] = '\0';
}
return 0;
@@ -509,11 +513,11 @@ static int simstrlcpy(char *buf, int len, const std::string &s)
// Sends a Packet from Click to the Simulator: Defined in simclick.h. Click
// calls these methods.
int simclick_sim_send(simclick_node_t *simnode,
int ifid, int type, const unsigned char* data, int len,
simclick_simpacketinfo *pinfo)
int simclick_sim_send (simclick_node_t *simnode,
int ifid, int type, const unsigned char* data, int len,
simclick_simpacketinfo *pinfo)
{
NS_LOG_DEBUG ("simclick_sim_send called at " << ns3::Simulator::Now().GetSeconds()<<": " << ifid << " " << type << " " << data << " "<< len);
NS_LOG_DEBUG ("simclick_sim_send called at " << ns3::Simulator::Now ().GetSeconds () << ": " << ifid << " " << type << " " << data << " " << len);
if (simnode == NULL)
{
@@ -528,7 +532,7 @@ int simclick_sim_send(simclick_node_t *simnode,
}
// Click Service Methods: Defined in simclick.h
int simclick_sim_command(simclick_node_t *simnode, int cmd, ...)
int simclick_sim_command (simclick_node_t *simnode, int cmd, ...)
{
va_list val;
va_start (val, cmd);
@@ -536,7 +540,7 @@ int simclick_sim_command(simclick_node_t *simnode, int cmd, ...)
int retval = 0;
ns3::Ptr<ns3::Ipv4ClickRouting> clickInstance = ns3::Ipv4ClickRouting::GetClickInstanceFromSimNode (simnode);
switch (cmd)
switch (cmd)
{
case SIMCLICK_VERSION:
{
@@ -553,72 +557,72 @@ int simclick_sim_command(simclick_node_t *simnode, int cmd, ...)
case SIMCLICK_IFID_FROM_NAME:
{
const char *ifname = va_arg(val, const char *);
const char *ifname = va_arg (val, const char *);
retval = clickInstance->GetInterfaceId (ifname);
NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_IFID_FROM_NAME: " << ifname << " " << retval);
break;
}
case SIMCLICK_IPADDR_FROM_NAME:
{
const char *ifname = va_arg(val, const char *);
char *buf = va_arg(val, char *);
int len = va_arg(val, int);
const char *ifname = va_arg (val, const char *);
char *buf = va_arg (val, char *);
int len = va_arg (val, int);
int ifid = clickInstance->GetInterfaceId (ifname);
if (ifid >= 0)
{
retval = simstrlcpy(buf, len, clickInstance->GetIpAddressFromInterfaceId (ifid));
retval = simstrlcpy (buf, len, clickInstance->GetIpAddressFromInterfaceId (ifid));
}
else
{
retval = -1;
}
NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_IPADDR_FROM_NAME: "<< ifname << " "<< buf << " " << len);
NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_IPADDR_FROM_NAME: " << ifname << " " << buf << " " << len);
break;
}
case SIMCLICK_MACADDR_FROM_NAME:
{
const char *ifname = va_arg(val, const char *);
char *buf = va_arg(val, char *);
int len = va_arg(val, int);
const char *ifname = va_arg (val, const char *);
char *buf = va_arg (val, char *);
int len = va_arg (val, int);
int ifid = clickInstance->GetInterfaceId (ifname);
if (ifid >= 0)
{
retval = simstrlcpy(buf, len, clickInstance->GetMacAddressFromInterfaceId (ifid));
retval = simstrlcpy (buf, len, clickInstance->GetMacAddressFromInterfaceId (ifid));
}
else
{
retval = -1;
}
NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_MACADDR_FROM_NAME: "<< ifname << " "<< buf << " "<< len);
NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_MACADDR_FROM_NAME: " << ifname << " " << buf << " " << len);
break;
}
case SIMCLICK_SCHEDULE:
{
const struct timeval *when = va_arg(val, const struct timeval *);
const struct timeval *when = va_arg (val, const struct timeval *);
clickInstance->HandleScheduleFromClick (when);
retval = 0;
NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_SCHEDULE: "<< when->tv_sec << "s and " << when->tv_usec << "usecs later.");
NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_SCHEDULE: " << when->tv_sec << "s and " << when->tv_usec << "usecs later.");
break;
}
case SIMCLICK_GET_NODE_NAME:
{
char *buf = va_arg(val, char *);
int len = va_arg(val, int);
retval = simstrlcpy(buf, len, clickInstance->GetNodeName ());
char *buf = va_arg (val, char *);
int len = va_arg (val, int);
retval = simstrlcpy (buf, len, clickInstance->GetNodeName ());
NS_LOG_DEBUG (clickInstance->GetNodeName () << " SIMCLICK_GET_NODE_NAME: " << buf << " " << len);
break;
@@ -626,7 +630,7 @@ int simclick_sim_command(simclick_node_t *simnode, int cmd, ...)
case SIMCLICK_IF_READY:
{
int ifid = va_arg(val, int); // Commented out so that optimized build works
int ifid = va_arg (val, int); // Commented out so that optimized build works
// We're not using a ClickQueue, so we're always ready (for the timebeing)
retval = clickInstance->IsInterfaceReady (ifid);

View File

@@ -1,6 +1,6 @@
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2010 Lalith Suresh
* Copyright (c) 2010 Lalith Suresh
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
@@ -122,7 +122,6 @@ public:
static Ptr<Ipv4ClickRouting> GetClickInstanceFromSimNode (simclick_node_t *simnode);
public:
/**
* \brief Provides for SIMCLICK_IFID_FROM_NAME
* \param ifname The name of the interface
@@ -174,7 +173,6 @@ private:
void RunClickEvent ();
public:
/**
* \brief Schedules simclick_click_run to run at the given time
* \param when Time at which the simclick_click_run instance should be run
@@ -205,7 +203,7 @@ public:
* \param src The source IP Address
* \param dest The destination IP Address
*/
void Send (Ptr<Packet> p, Ipv4Address src, Ipv4Address dest);
void Send (Ptr<Packet> p, Ipv4Address src, Ipv4Address dest);
/**
* \brief Allow a lower layer to send data to Click. (From Ipv4ExtRouting)
@@ -239,7 +237,7 @@ private:
bool m_nonDefaultName;
Ptr<Ipv4> m_ipv4;
#endif //NS3_CLICK
#endif // NS3_CLICK
};
} // namespace ns3

View File

@@ -77,7 +77,7 @@ void
Ipv4L3ClickProtocol::DoDispose (void)
{
NS_LOG_FUNCTION (this);
for (L4List_t::iterator i = m_protocols.begin(); i != m_protocols.end(); ++i)
for (L4List_t::iterator i = m_protocols.begin (); i != m_protocols.end (); ++i)
{
*i = 0;
}
@@ -99,7 +99,7 @@ Ipv4L3ClickProtocol::NotifyNewAggregate ()
{
if (m_node == 0)
{
Ptr<Node>node = this->GetObject<Node>();
Ptr<Node>node = this->GetObject<Node> ();
// verify that it's a valid node and that
// the node has not been set before
if (node != 0)
@@ -194,7 +194,7 @@ int32_t
Ipv4L3ClickProtocol::GetInterfaceForDevice (
Ptr<const NetDevice> device) const
{
NS_LOG_FUNCTION (this << device->GetIfIndex());
NS_LOG_FUNCTION (this << device->GetIfIndex ());
int32_t interface = 0;
for (Ipv4InterfaceList::const_iterator i = m_interfaces.begin ();
@@ -253,7 +253,10 @@ Ipv4L3ClickProtocol::IsDestinationAddress (Ipv4Address address, uint32_t iif) co
{
for (uint32_t j = 0; j < GetNInterfaces (); j++)
{
if (j == uint32_t (iif)) continue;
if (j == uint32_t (iif))
{
continue;
}
for (uint32_t i = 0; i < GetNAddresses (j); i++)
{
Ipv4InterfaceAddress iaddr = GetAddress (j, i);
@@ -447,8 +450,14 @@ Ipv4L3ClickProtocol::SelectSourceAddress (Ptr<const NetDevice> device,
for (uint32_t j = 0; j < GetNAddresses (i); j++)
{
iaddr = GetAddress (i, j);
if (iaddr.IsSecondary ()) continue;
if (iaddr.GetScope () > scope) continue;
if (iaddr.IsSecondary ())
{
continue;
}
if (iaddr.GetScope () > scope)
{
continue;
}
if (dst.CombineMask (iaddr.GetMask ()) == iaddr.GetLocal ().CombineMask (iaddr.GetMask ()) )
{
return iaddr.GetLocal ();
@@ -471,7 +480,10 @@ Ipv4L3ClickProtocol::SelectSourceAddress (Ptr<const NetDevice> device,
for (uint32_t j = 0; j < GetNAddresses (i); j++)
{
iaddr = GetAddress (i, j);
if (iaddr.IsSecondary ()) continue;
if (iaddr.IsSecondary ())
{
continue;
}
if (iaddr.GetScope () != Ipv4InterfaceAddress::LINK
&& iaddr.GetScope () <= scope)
{
@@ -562,12 +574,12 @@ Ipv4L3ClickProtocol::SetForwarding (uint32_t i, bool val)
void
Ipv4L3ClickProtocol::SetPromisc (uint32_t i)
{
NS_ASSERT(i <= m_node->GetNDevices ());
NS_ASSERT (i <= m_node->GetNDevices ());
if (i > m_promiscDeviceList.size ())
{
m_promiscDeviceList.resize (i);
}
std::vector<bool>::iterator it = m_promiscDeviceList.begin();
std::vector<bool>::iterator it = m_promiscDeviceList.begin ();
std::advance (it, i);
m_promiscDeviceList.insert (it, true);
}
@@ -578,10 +590,10 @@ Ipv4L3ClickProtocol::AddInterface (Ptr<NetDevice> device)
NS_LOG_FUNCTION (this << &device);
Ptr<Node> node = GetObject<Node> ();
NS_LOG_DEBUG("Size:" << m_promiscDeviceList.size () << " Interface index" << device->GetIfIndex ());
if (m_promiscDeviceList.size () > 0 &&
(m_promiscDeviceList.size () >= device->GetIfIndex ()) &&
(m_promiscDeviceList[device->GetIfIndex ()]))
NS_LOG_DEBUG ("Size:" << m_promiscDeviceList.size () << " Interface index" << device->GetIfIndex ());
if (m_promiscDeviceList.size () > 0
&& (m_promiscDeviceList.size () >= device->GetIfIndex ())
&& (m_promiscDeviceList[device->GetIfIndex ()]))
{
node->RegisterProtocolHandler (MakeCallback (&Ipv4L3ClickProtocol::Receive, this),
0, device,true);
@@ -656,7 +668,7 @@ Ipv4L3ClickProtocol::Send (Ptr<Packet> packet,
uint8_t protocol,
Ptr<Ipv4Route> route)
{
NS_LOG_FUNCTION (this << packet << source << destination << uint32_t(protocol) << route);
NS_LOG_FUNCTION (this << packet << source << destination << uint32_t (protocol) << route);
Ipv4Header ipHeader;
bool mayFragment = true;
@@ -709,16 +721,16 @@ Ipv4L3ClickProtocol::SendDown (Ptr<Packet> p, int ifid)
// Use the destination address and protocol obtained
// from above to send the packet.
netdev->Send (p, header.GetDestination (), protocol);
netdev->Send (p, header.GetDestination (), protocol);
}
void
Ipv4L3ClickProtocol::Receive( Ptr<NetDevice> device, Ptr<const Packet> p, uint16_t protocol, const Address &from,
const Address &to, NetDevice::PacketType packetType)
Ipv4L3ClickProtocol::Receive ( Ptr<NetDevice> device, Ptr<const Packet> p, uint16_t protocol, const Address &from,
const Address &to, NetDevice::PacketType packetType)
{
NS_LOG_FUNCTION (this << device << p << from << to);
Ptr<Packet> packet = p->Copy ();
// Add an ethernet frame. This allows
// Click to work with csma and wifi
EthernetHeader hdr;
@@ -726,7 +738,7 @@ Ipv4L3ClickProtocol::Receive( Ptr<NetDevice> device, Ptr<const Packet> p, uint16
hdr.SetDestination (Mac48Address::ConvertFrom (to));
hdr.SetLengthType (protocol);
packet->AddHeader (hdr);
Ptr<Ipv4ClickRouting> click = DynamicCast<Ipv4ClickRouting> (GetRoutingProtocol ());
click->Receive (packet->Copy (), Mac48Address::ConvertFrom (device->GetAddress ()), Mac48Address::ConvertFrom (to));
}
@@ -747,7 +759,8 @@ Ipv4L3ClickProtocol::LocalDeliver (Ptr<const Packet> packet, Ipv4Header const&ip
Ptr<Packet> copy = p->Copy ();
enum Ipv4L4Protocol::RxStatus status =
protocol->Receive (p, ip, GetInterface (iif));
switch (status) {
switch (status)
{
case Ipv4L4Protocol::RX_OK:
// fall through
case Ipv4L4Protocol::RX_ENDPOINT_CLOSED:
@@ -755,8 +768,8 @@ Ipv4L3ClickProtocol::LocalDeliver (Ptr<const Packet> packet, Ipv4Header const&ip
case Ipv4L4Protocol::RX_CSUM_FAILED:
break;
case Ipv4L4Protocol::RX_ENDPOINT_UNREACH:
if (ip.GetDestination ().IsBroadcast () == true ||
ip.GetDestination ().IsMulticast () == true)
if (ip.GetDestination ().IsBroadcast () == true
|| ip.GetDestination ().IsMulticast () == true)
{
break; // Do not reply to broadcast or multicast
}
@@ -765,8 +778,8 @@ Ipv4L3ClickProtocol::LocalDeliver (Ptr<const Packet> packet, Ipv4Header const&ip
for (uint32_t i = 0; i < GetNAddresses (iif); i++)
{
Ipv4InterfaceAddress addr = GetAddress (iif, i);
if (addr.GetLocal ().CombineMask (addr.GetMask ()) == ip.GetDestination().CombineMask (addr.GetMask ()) &&
ip.GetDestination ().IsSubnetDirectedBroadcast (addr.GetMask ()))
if (addr.GetLocal ().CombineMask (addr.GetMask ()) == ip.GetDestination ().CombineMask (addr.GetMask ())
&& ip.GetDestination ().IsSubnetDirectedBroadcast (addr.GetMask ()))
{
subnetDirected = true;
}
@@ -794,15 +807,15 @@ Ipv4L3ClickProtocol::GetIcmp (void) const
}
void
Ipv4L3ClickProtocol::Insert(Ptr<Ipv4L4Protocol> protocol)
Ipv4L3ClickProtocol::Insert (Ptr<Ipv4L4Protocol> protocol)
{
m_protocols.push_back (protocol);
}
Ptr<Ipv4L4Protocol>
Ipv4L3ClickProtocol::GetProtocol(int protocolNumber) const
Ipv4L3ClickProtocol::GetProtocol (int protocolNumber) const
{
for (L4List_t::const_iterator i = m_protocols.begin(); i != m_protocols.end(); ++i)
for (L4List_t::const_iterator i = m_protocols.begin (); i != m_protocols.end (); ++i)
{
if ((*i)->GetProtocolNumber () == protocolNumber)
{

View File

@@ -48,7 +48,7 @@ class Icmpv4L4Protocol;
/**
* \brief Implement the Ipv4 layer specifically for Click nodes
* to allow a clean integration of Click.
*
*
* This is code is mostly repeated from the Ipv4L3Protocol implementation.
* Changes include:
* - A stripped down version of Send().
@@ -68,20 +68,20 @@ public:
*/
static const uint16_t PROT_NUMBER;
Ipv4L3ClickProtocol();
virtual ~Ipv4L3ClickProtocol();
Ipv4L3ClickProtocol ();
virtual ~Ipv4L3ClickProtocol ();
/**
* \param protocol a template for the protocol to add to this L4 Demux.
* \returns the L4Protocol effectively added.
*
* Invoke Copy on the input template to get a copy of the input
* protocol which can be used on the Node on which this L4 Demux
* protocol which can be used on the Node on which this L4 Demux
* is running. The new L4Protocol is registered internally as
* a working L4 Protocol and returned from this method.
* The caller does not get ownership of the returned pointer.
*/
void Insert(Ptr<Ipv4L4Protocol> protocol);
void Insert (Ptr<Ipv4L4Protocol> protocol);
/**
* \param protocolNumber number of protocol to lookup
@@ -92,7 +92,7 @@ public:
* to forward packets up the stack to the right protocol.
* It is also called from NodeImpl::GetUdp for example.
*/
Ptr<Ipv4L4Protocol> GetProtocol(int protocolNumber) const;
Ptr<Ipv4L4Protocol> GetProtocol (int protocolNumber) const;
/**
* \param ttl default ttl to use
@@ -133,8 +133,8 @@ public:
* \param to address of the destination
* \param packetType type of the packet
*/
void Receive( Ptr<NetDevice> device, Ptr<const Packet> p, uint16_t protocol, const Address &from,
const Address &to, NetDevice::PacketType packetType);
void Receive ( Ptr<NetDevice> device, Ptr<const Packet> p, uint16_t protocol, const Address &from,
const Address &to, NetDevice::PacketType packetType);
/**
* Ipv4ClickRouting calls this to locally deliver a packet
@@ -216,9 +216,8 @@ public:
void SetDown (uint32_t i);
bool IsForwarding (uint32_t i) const;
void SetForwarding (uint32_t i, bool val);
void SetPromisc(uint32_t i);
void SetPromisc (uint32_t i);
protected:
virtual void DoDispose (void);
/**
* This function will notify other components connected to the node that a new stack member is now connected
@@ -262,9 +261,9 @@ private:
std::vector<bool> m_promiscDeviceList;
#endif //NS3_CLICK
#endif // NS3_CLICK
};
} //namespace ns3
} // namespace ns3
#endif // IPV4_L3_CLICK_ROUTING_H

View File

@@ -57,7 +57,7 @@ AddNetworkDevice (Ptr<Node> node, Mac48Address macaddr, Ipv4Address ipv4addr, Ip
Ptr<SimpleNetDevice> rxDev1;
rxDev1 = CreateObject<SimpleNetDevice> ();
rxDev1->SetAddress (Mac48Address(macaddr));
rxDev1->SetAddress (Mac48Address (macaddr));
node->AddDevice (rxDev1);
Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> ();
@@ -84,7 +84,7 @@ ClickIfidFromNameTest::DoRun ()
{
Ptr<Node> node = CreateObject<Node> ();
AddClickInternetStack (node);
AddNetworkDevice (node, Mac48Address("00:00:00:00:00:01"), Ipv4Address ("10.1.1.1"), Ipv4Mask ("255.255.255.0"));
AddNetworkDevice (node, Mac48Address ("00:00:00:00:00:01"), Ipv4Address ("10.1.1.1"), Ipv4Mask ("255.255.255.0"));
Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> ();
Ptr<Ipv4ClickRouting> click = DynamicCast<Ipv4ClickRouting> (ipv4->GetRoutingProtocol ());
click->DoStart ();
@@ -114,7 +114,7 @@ ClickIfidFromNameTest::DoRun ()
class ClickIpMacAddressFromNameTest : public TestCase
{
public:
ClickIpMacAddressFromNameTest ();
ClickIpMacAddressFromNameTest ();
virtual void DoRun ();
};
@@ -128,8 +128,8 @@ ClickIpMacAddressFromNameTest::DoRun ()
{
Ptr<Node> node = CreateObject<Node> ();
AddClickInternetStack (node);
AddNetworkDevice (node, Mac48Address("00:00:00:00:00:01"), Ipv4Address ("10.1.1.1"), Ipv4Mask ("255.255.255.0"));
AddNetworkDevice (node, Mac48Address("00:00:00:00:00:02"), Ipv4Address ("10.1.1.2"), Ipv4Mask ("255.255.255.0"));
AddNetworkDevice (node, Mac48Address ("00:00:00:00:00:01"), Ipv4Address ("10.1.1.1"), Ipv4Mask ("255.255.255.0"));
AddNetworkDevice (node, Mac48Address ("00:00:00:00:00:02"), Ipv4Address ("10.1.1.2"), Ipv4Mask ("255.255.255.0"));
Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> ();
Ptr<Ipv4ClickRouting> click = DynamicCast<Ipv4ClickRouting> (ipv4->GetRoutingProtocol ());
click->DoStart ();
@@ -145,7 +145,7 @@ ClickIpMacAddressFromNameTest::DoRun ()
NS_TEST_EXPECT_MSG_EQ (strcmp (buf, "00:00:00:00:00:01"), 0, "eth0 has Mac Address 00:00:00:00:00:01");
ret = simclick_sim_command (click->m_simNode, SIMCLICK_IPADDR_FROM_NAME, "eth1", buf, 255);
NS_TEST_EXPECT_MSG_EQ (strcmp(buf, "10.1.1.2"), 0, "eth1 has IP 10.1.1.2");
NS_TEST_EXPECT_MSG_EQ (strcmp (buf, "10.1.1.2"), 0, "eth1 has IP 10.1.1.2");
ret = simclick_sim_command (click->m_simNode, SIMCLICK_MACADDR_FROM_NAME, "eth1", buf, 255);
NS_TEST_EXPECT_MSG_EQ (strcmp (buf, "00:00:00:00:00:02"), 0, "eth0 has Mac Address 00:00:00:00:00:02");
@@ -155,10 +155,10 @@ ClickIpMacAddressFromNameTest::DoRun ()
// NS_TEST_EXPECT_MSG_EQ (buf, NULL, "No eth2");
ret = simclick_sim_command (click->m_simNode, SIMCLICK_IPADDR_FROM_NAME, "tap0", buf, 255);
NS_TEST_EXPECT_MSG_EQ (strcmp(buf, "127.0.0.1"), 0, "tun0 has IP 127.0.0.1");
NS_TEST_EXPECT_MSG_EQ (strcmp (buf, "127.0.0.1"), 0, "tun0 has IP 127.0.0.1");
ret = simclick_sim_command (click->m_simNode, SIMCLICK_MACADDR_FROM_NAME, "tap0", buf, 255);
NS_TEST_EXPECT_MSG_EQ (strcmp(buf, "00:00:00:00:00:00"), 0, "tun0 has IP 127.0.0.1");
NS_TEST_EXPECT_MSG_EQ (strcmp (buf, "00:00:00:00:00:00"), 0, "tun0 has IP 127.0.0.1");
delete [] buf;
}
@@ -180,7 +180,7 @@ ClickTrivialTest::DoRun ()
{
Ptr<Node> node = CreateObject<Node> ();
AddClickInternetStack (node);
AddNetworkDevice (node, Mac48Address("00:00:00:00:00:01"), Ipv4Address ("10.1.1.1"), Ipv4Mask ("255.255.255.0"));
AddNetworkDevice (node, Mac48Address ("00:00:00:00:00:01"), Ipv4Address ("10.1.1.1"), Ipv4Mask ("255.255.255.0"));
Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> ();
Ptr<Ipv4ClickRouting> click = DynamicCast<Ipv4ClickRouting> (ipv4->GetRoutingProtocol ());
click->SetNodeName ("myNode");