22 #include "ns3/click-internet-stack-helper.h"
23 #include "ns3/ipv4-click-routing.h"
24 #include "ns3/ipv4-l3-protocol.h"
27 #include "ns3/simple-net-device.h"
30 #include <click/simclick.h>
38 ClickInternetStackHelper internet;
39 internet.SetClickFile(node,
"src/click/test/nsclick-test-lan-single-interface.click");
40 internet.Install(node);
48 rxDev1 = CreateObject<SimpleNetDevice>();
53 uint32_t netdev_idx = ipv4->AddInterface(rxDev1);
55 ipv4->AddAddress(netdev_idx, ipv4Addr);
56 ipv4->SetUp(netdev_idx);
59 class ClickIfidFromNameTest :
public TestCase
62 ClickIfidFromNameTest();
63 void DoRun()
override;
66 ClickIfidFromNameTest::ClickIfidFromNameTest()
67 :
TestCase(
"Test SIMCLICK_IFID_FROM_NAME")
72 ClickIfidFromNameTest::DoRun()
75 AddClickInternetStack(node);
76 AddNetworkDevice(node,
82 click->DoInitialize();
86 ret = simclick_sim_command(click->m_simNode, SIMCLICK_IFID_FROM_NAME,
"tap0");
89 ret = simclick_sim_command(click->m_simNode, SIMCLICK_IFID_FROM_NAME,
"tun0");
92 ret = simclick_sim_command(click->m_simNode, SIMCLICK_IFID_FROM_NAME,
"eth0");
95 ret = simclick_sim_command(click->m_simNode, SIMCLICK_IFID_FROM_NAME,
"tap1");
98 ret = simclick_sim_command(click->m_simNode, SIMCLICK_IFID_FROM_NAME,
"tun1");
101 ret = simclick_sim_command(click->m_simNode, SIMCLICK_IFID_FROM_NAME,
"eth1");
105 class ClickIpMacAddressFromNameTest :
public TestCase
108 ClickIpMacAddressFromNameTest();
109 void DoRun()
override;
112 ClickIpMacAddressFromNameTest::ClickIpMacAddressFromNameTest()
113 :
TestCase(
"Test SIMCLICK_IPADDR_FROM_NAME")
118 ClickIpMacAddressFromNameTest::DoRun()
121 AddClickInternetStack(node);
122 AddNetworkDevice(node,
126 AddNetworkDevice(node,
132 click->DoInitialize();
134 char* buf =
new char[255];
136 simclick_sim_command(click->m_simNode, SIMCLICK_IPADDR_FROM_NAME,
"eth0", buf, 255);
139 simclick_sim_command(click->m_simNode, SIMCLICK_MACADDR_FROM_NAME,
"eth0", buf, 255);
142 "eth0 has Mac Address 00:00:00:00:00:01");
144 simclick_sim_command(click->m_simNode, SIMCLICK_IPADDR_FROM_NAME,
"eth1", buf, 255);
147 simclick_sim_command(click->m_simNode, SIMCLICK_MACADDR_FROM_NAME,
"eth1", buf, 255);
150 "eth0 has Mac Address 00:00:00:00:00:02");
156 simclick_sim_command(click->m_simNode, SIMCLICK_IPADDR_FROM_NAME,
"tap0", buf, 255);
159 simclick_sim_command(click->m_simNode, SIMCLICK_MACADDR_FROM_NAME,
"tap0", buf, 255);
165 class ClickTrivialTest :
public TestCase
169 void DoRun()
override;
172 ClickTrivialTest::ClickTrivialTest()
173 :
TestCase(
"Test SIMCLICK_GET_NODE_NAME and SIMCLICK_IF_READY")
178 ClickTrivialTest::DoRun()
181 AddClickInternetStack(node);
182 AddNetworkDevice(node,
188 click->SetNodeName(
"myNode");
189 click->DoInitialize();
192 char* buf =
new char[255];
194 ret = simclick_sim_command(click->m_simNode, SIMCLICK_GET_NODE_NAME, buf, 255);
197 ret = simclick_sim_command(click->m_simNode, SIMCLICK_IF_READY, 0);
200 ret = simclick_sim_command(click->m_simNode, SIMCLICK_IF_READY, 1);
203 ret = simclick_sim_command(click->m_simNode, SIMCLICK_IF_READY, 2);
209 class ClickIfidFromNameTestSuite :
public TestSuite
212 ClickIfidFromNameTestSuite()
215 AddTestCase(
new ClickTrivialTest, TestCase::QUICK);
216 AddTestCase(
new ClickIfidFromNameTest, TestCase::QUICK);
217 AddTestCase(
new ClickIpMacAddressFromNameTest, TestCase::QUICK);
219 } g_ipv4ClickRoutingTestSuite;
Ipv4 addresses are stored in host order in this class.
Access to the IPv4 forwarding table, interfaces, and configuration.
a class to store IPv4 address information on an interface
a class to represent an Ipv4 address mask
uint32_t AddDevice(Ptr< NetDevice > device)
Associate a NetDevice to this node.
Ptr< T > GetObject() const
Get a pointer to the requested aggregated Object.
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
virtual void DoRun()=0
Implementation to actually run this TestCase.
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
Every class exported by the ns3 library is enclosed in the ns3 namespace.