22 #include "ns3/socket-factory.h"
23 #include "ns3/udp-socket-factory.h"
24 #include "ns3/simulator.h"
25 #include "ns3/simple-channel.h"
26 #include "ns3/simple-net-device.h"
27 #include "ns3/drop-tail-queue.h"
28 #include "ns3/socket.h"
29 #include "ns3/boolean.h"
33 #include "ns3/inet-socket-address.h"
35 #include "ns3/arp-l3-protocol.h"
36 #include "ns3/ipv4-l3-protocol.h"
37 #include "ns3/icmpv4-l4-protocol.h"
38 #include "ns3/udp-l4-protocol.h"
39 #include "ns3/ipv4-static-routing.h"
41 #include "ns3/traffic-control-layer.h"
76 void DoSendData (
Ptr<Socket> socket, std::string to);
80 virtual void DoRun (
void);
87 :
TestCase (
"UDP socket implementation")
93 uint32_t availableData;
122 Ptr<Node> rxNode = CreateObject<Node> ();
126 rxDev = CreateObject<SimpleNetDevice> ();
127 rxDev->
SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
133 ipv4->
SetUp (netdev_idx);
137 Ptr<Node> fwNode = CreateObject<Node> ();
141 fwDev1 = CreateObject<SimpleNetDevice> ();
142 fwDev1->
SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
148 ipv4->
SetUp (netdev_idx);
152 fwDev2 = CreateObject<SimpleNetDevice> ();
153 fwDev2->
SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
159 ipv4->
SetUp (netdev_idx);
163 Ptr<Node> txNode = CreateObject<Node> ();
167 txDev = CreateObject<SimpleNetDevice> ();
168 txDev->
SetAddress (Mac48Address::ConvertFrom (Mac48Address::Allocate ()));
174 ipv4->
SetUp (netdev_idx);
212 Simulator::Destroy ();
virtual uint32_t AddInterface(Ptr< NetDevice > device)=0
AttributeValue implementation for Boolean.
void DoSendData(Ptr< Socket > socket, std::string to)
void SetDefaultRoute(Ipv4Address nextHop, uint32_t interface, uint32_t metric=0)
Add a default route to the static routing table.
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
virtual bool SetAllowBroadcast(bool allowBroadcast)=0
Configure whether broadcast datagram transmissions are allowed.
a class to represent an Ipv4 address mask
Ptr< Packet > m_receivedPacket
void AggregateObject(Ptr< Object > other)
Aggregate two Objects together.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
virtual Ptr< Socket > CreateSocket(void)=0
This test suite implements a Unit Test.
virtual void DoRun(void)
Implementation to actually run this TestCase.
a polymophic address class
void SendData(Ptr< Socket > socket, std::string to)
void AddTestCase(TestCase *testCase, enum TestDuration duration)
Add an individual child TestCase to this test suite.
virtual void SetUp(uint32_t interface)=0
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
Ipv4ForwardingTestSuite()
Access to the IPv4 forwarding table, interfaces, and configuration.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Static routing protocol for IP version 4 stacks.
virtual Ptr< Packet > Recv(uint32_t maxSize, uint32_t flags)=0
Read data from the socket.
static void AddInternetStack(Ptr< Node > node)
Ipv4 addresses are stored in host order in this class.
void ReceivePkt(Ptr< Socket > socket)
uint32_t AddDevice(Ptr< NetDevice > device)
Associate a NetDevice to this node.
uint32_t GetId(void) const
a class to store IPv4 address information on an interface
virtual Ptr< Node > GetNode(void) const =0
Return the node this socket is associated with.
virtual void SetAddress(Address address)
Set the address of this interface.
Time Seconds(double value)
Construct a Time in the indicated unit.
void RemoveAllByteTags(void)
Remove all byte tags stored in this packet.
virtual bool AddAddress(uint32_t interface, Ipv4InterfaceAddress address)=0
virtual int SendTo(Ptr< Packet > p, uint32_t flags, const Address &toAddress)=0
Send data to a specified peer.
API to create UDP socket instances.
Ipv4ForwardingTestSuite g_ipv4forwardingTestSuite
void SetChannel(Ptr< SimpleChannel > channel)
Attach a channel to this net device.
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
virtual uint32_t GetRxAvailable(void) const =0
Return number of bytes which can be returned from one or multiple calls to Recv.
void SetRoutingProtocol(Ptr< Ipv4RoutingProtocol > routingProtocol)
Register a new routing protocol to be used by this Ipv4 stack.