22 #include "ns3/nstime.h"
23 #include "ns3/simulator.h"
24 #include "ns3/socket-factory.h"
25 #include "ns3/packet.h"
26 #include "ns3/socket.h"
27 #include "ns3/uinteger.h"
29 #include "ns3/ipv6-address.h"
30 #include "ns3/inet6-socket-address.h"
31 #include "ns3/icmpv6-header.h"
32 #include "ns3/ipv6-raw-socket-factory.h"
33 #include "ns3/ipv6-header.h"
34 #include "ns3/ipv6-extension-header.h"
49 .AddConstructor<Ping6>()
50 .AddAttribute (
"MaxPackets",
51 "The maximum number of packets the application will send",
54 MakeUintegerChecker<uint32_t>())
55 .AddAttribute (
"Interval",
56 "The time to wait between packets",
60 .AddAttribute (
"RemoteIpv6",
61 "The Ipv6Address of the outbound packets",
64 MakeIpv6AddressChecker ())
65 .AddAttribute (
"LocalIpv6",
66 "Local Ipv6Address of the sender",
69 MakeIpv6AddressChecker ())
70 .AddAttribute (
"PacketSize",
71 "Size of packets generated",
74 MakeUintegerChecker<uint32_t>())
196 p = Create<Packet> (
data, 4);
197 p->AddAtEnd (Create<Packet> (
m_size - 4));
220 p->AddHeader (routingHeader);
243 while ((packet = socket->
RecvFrom (from)))
254 packet->
CopyData (&type,
sizeof(type));
261 NS_LOG_INFO (
"Received Echo Reply size = " << std::dec << packet->
GetSize () <<
" bytes from " << address.
GetIpv6 () <<
" id = " << (uint16_t)reply.
GetId () <<
" seq = " << (uint16_t)reply.
GetSeq ());
uint32_t RemoveHeader(Header &header)
virtual ~Ping6()
Destructor.
uint16_t GetId() const
Get the ID of the packet.
Ipv6Address GetIpv6(void) const
Get the IPv6 address.
keep track of time values and allow control of global simulation resolution
#define NS_LOG_FUNCTION(parameters)
virtual void StopApplication()
Stop the application.
Access to the IPv6 forwarding table, interfaces, and configuration.
#define NS_ASSERT(condition)
IPv6 address associated with an interface.
void SetRouters(std::vector< Ipv6Address > routers)
Set routers for routing type 0 (loose routing).
uint32_t GetSize(void) const
static void Cancel(const EventId &id)
#define NS_LOG_FUNCTION_NOARGS()
Callback< R > MakeNullCallback(void)
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Time m_interval
Intervall between packets sent.
void Send()
Send a packet.
a polymophic address class
void SetIfIndex(uint32_t ifIndex)
Set the out interface index. This is to send to link-local (unicast or multicast) address when a node...
The base class for all ns3 applications.
hold objects of type ns3::Time
virtual Ipv6InterfaceAddress GetAddress(uint32_t interface, uint32_t addressIndex) const =0
Get IPv6 address on specified IPv6 interface.
Hold an unsigned integer type.
NS_OBJECT_ENSURE_REGISTERED(AntennaModel)
Ptr< Node > GetNode() const
uint32_t m_sent
Number of packets sent.
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
virtual void StartApplication()
Start the application.
void SetRecvCallback(Callback< void, Ptr< Socket > >)
Notify application when new data is available to be read.
static Ptr< Socket > CreateSocket(Ptr< Node > node, TypeId tid)
std::vector< Ipv6Address > m_routers
Routers addresses for routing type 0.
void SetLocal(Ipv6Address ipv6)
Set the local address.
uint16_t GetSeq() const
Get the sequence number.
uint32_t m_size
Size of the packet.
virtual int Connect(const Address &address)=0
Initiate a connection to a remote host.
virtual void DoDispose(void)
virtual int Bind(const Address &address)=0
Allocate a local endpoint for this socket.
Ptr< Socket > m_socket
Local socket.
Hold objects of type ns3::Ipv6Address.
#define NS_ASSERT_MSG(condition, message)
Describes an IPv6 address.
Ipv6InterfaceAddress::Scope_e GetScope() const
Get address scope.
void SetRemote(Ipv6Address ipv6)
Set the remote peer.
NS_LOG_COMPONENT_DEFINE("PacketLossCounter")
an identifier for simulation events.
uint16_t m_seq
Sequence number.
uint32_t m_ifIndex
Out interface (i.e. for link-local communication).
static Inet6SocketAddress ConvertFrom(const Address &addr)
Convert the address to a InetSocketAddress.
Ipv6Address m_localAddress
Local address.
static bool IsMatchingType(const Address &addr)
If the address match.
void ScheduleTransmit(Time dt)
Schedule sending a packet.
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range. Both limits are inclusive.
uint32_t CopyData(uint8_t *buffer, uint32_t size) const
virtual void DoDispose()
Dispose this object;.
void SetSeq(uint16_t seq)
Set the sequence number.
virtual Ptr< Packet > RecvFrom(uint32_t maxSize, uint32_t flags, Address &fromAddress)=0
Read a single packet from the socket and retrieve the sender address.
EventId m_sendEvent
Event ID.
virtual int Send(Ptr< Packet > p, uint32_t flags)=0
Send data (or dummy data) to the remote host.
static TypeId GetTypeId()
Get the type ID.
void SetAttribute(std::string name, const AttributeValue &value)
bool IsExpired(void) const
Ptr< T > GetObject(void) const
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Ipv6Address m_peerAddress
Peer address.
void SetId(uint16_t id)
Set the ID of the packet.
void HandleRead(Ptr< Socket > socket)
Receive method.
static TypeId LookupByName(std::string name)
uint32_t m_count
Number of "Echo request" packets that will be sent.