ns-3
|
An implementation of the ICMPv6 protocol. More...
#include <icmpv6-l4-protocol.h>
Public Member Functions | |
Icmpv6L4Protocol () | |
Constructor. | |
virtual | ~Icmpv6L4Protocol () |
Destructor. | |
void | SetNode (Ptr< Node > node) |
Set the node. | |
void | NotifyNewAggregate () |
This method is called by AddAgregate and completes the aggregation by setting the node in the ICMPv6 stack and adding ICMPv6 factory to IPv6 stack connected to the node. | |
virtual int | GetProtocolNumber () const |
Get the protocol number. | |
virtual int | GetVersion () const |
Get the version of the protocol. | |
void | SendMessage (Ptr< Packet > packet, Ipv6Address src, Ipv6Address dst, uint8_t ttl) |
Send a packet via ICMPv6, note that packet already contains ICMPv6 header. | |
void | SendMessage (Ptr< Packet > packet, Ipv6Address dst, Icmpv6Header &icmpv6Hdr, uint8_t ttl) |
Send a packet via ICMPv6. | |
void | DoDAD (Ipv6Address target, Ptr< Ipv6Interface > interface) |
Do the Duplication Address Detection (DAD). It consists in sending a NS with our IPv6 as target. If we received a NA with matched target address, we could not use the address, else the address pass from TENTATIVE to PERMANENT. | |
void | SendNA (Ipv6Address src, Ipv6Address dst, Address *hardwareAddress, uint8_t flags) |
Send a Neighbor Adverstisement. | |
void | SendEchoReply (Ipv6Address src, Ipv6Address dst, uint16_t id, uint16_t seq, Ptr< Packet > data) |
Send a Echo Reply. | |
void | SendNS (Ipv6Address src, Ipv6Address dst, Ipv6Address target, Address hardwareAddress) |
Send a Neighbor Solicitation. | |
void | SendErrorDestinationUnreachable (Ptr< Packet > malformedPacket, Ipv6Address dst, uint8_t code) |
Send an error Destination Unreachable. | |
void | SendErrorTooBig (Ptr< Packet > malformedPacket, Ipv6Address dst, uint32_t mtu) |
Send an error Too Big. | |
void | SendErrorTimeExceeded (Ptr< Packet > malformedPacket, Ipv6Address dst, uint8_t code) |
Send an error Time Exceeded. | |
void | SendErrorParameterError (Ptr< Packet > malformedPacket, Ipv6Address dst, uint8_t code, uint32_t ptr) |
Send an error Parameter Error. | |
void | SendRedirection (Ptr< Packet > redirectedPacket, Ipv6Address dst, Ipv6Address redirTarget, Ipv6Address redirDestination, Address redirHardwareTarget) |
Send an ICMPv6 Redirection. | |
Ptr< Packet > | ForgeNS (Ipv6Address src, Ipv6Address dst, Ipv6Address target, Address hardwareAddress) |
Forge a Neighbor Solicitation. | |
Ptr< Packet > | ForgeNA (Ipv6Address src, Ipv6Address dst, Address *hardwareAddress, uint8_t flags) |
Forge a Neighbor Advertisement. | |
Ptr< Packet > | ForgeRS (Ipv6Address src, Ipv6Address dst, Address hardwareAddress) |
Forge a Router Solicitation. | |
Ptr< Packet > | ForgeEchoRequest (Ipv6Address src, Ipv6Address dst, uint16_t id, uint16_t seq, Ptr< Packet > data) |
Forge an Echo Request. | |
virtual enum IpL4Protocol::RxStatus | Receive (Ptr< Packet > p, Ipv4Header const &header, Ptr< Ipv4Interface > interface) |
Receive method. | |
virtual enum IpL4Protocol::RxStatus | Receive (Ptr< Packet > p, Ipv6Address &src, Ipv6Address &dst, Ptr< Ipv6Interface > interface) |
Receive method. | |
bool | Lookup (Ipv6Address dst, Ptr< NetDevice > device, Ptr< NdiscCache > cache, Address *hardwareDestination) |
Lookup in the ND cache for the IPv6 address. | |
bool | Lookup (Ptr< Packet > p, Ipv6Address dst, Ptr< NetDevice > device, Ptr< NdiscCache > cache, Address *hardwareDestination) |
Lookup in the ND cache for the IPv6 address (similar as ARP protocol). | |
void | SendRS (Ipv6Address src, Ipv6Address dst, Address hardwareAddress) |
Send a Router Solicitation. | |
Ptr< NdiscCache > | CreateCache (Ptr< NetDevice > device, Ptr< Ipv6Interface > interface) |
Create a neighbor cache. | |
bool | IsAlwaysDad () const |
Is the node must do DAD. | |
![]() | |
virtual void | ReceiveIcmp (Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, Ipv4Address payloadSource, Ipv4Address payloadDestination, const uint8_t payload[8]) |
virtual void | ReceiveIcmp (Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, Ipv6Address payloadSource, Ipv6Address payloadDestination, const uint8_t payload[8]) |
![]() | |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Dispose (void) |
void | AggregateObject (Ptr< Object > other) |
AggregateIterator | GetAggregateIterator (void) const |
void | Start (void) |
![]() | |
SimpleRefCount (const SimpleRefCount &o) | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
uint32_t | GetReferenceCount (void) const |
![]() | |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Interface ID. | |
static uint16_t | GetStaticProtocolNumber () |
Get ICMPv6 protocol number. | |
static void | FunctionDadTimeout (Ptr< Icmpv6L4Protocol > icmpv6, Ipv6Interface *interface, Ipv6Address addr) |
Function called when DAD timeout. |
Static Public Attributes | |
static const uint8_t | PROT_NUMBER = 58 |
ICMPv6 protocol number (58). | |
static const uint8_t | MAX_INITIAL_RTR_ADVERT_INTERVAL = 16 |
Neighbor Discovery router constants : max initial RA initial interval. | |
static const uint8_t | MAX_INITIAL_RTR_ADVERTISEMENTS = 3 |
Neighbor Discovery router constants : max initial RA transmission. | |
static const uint8_t | MAX_FINAL_RTR_ADVERTISEMENTS = 3 |
Neighbor Discovery router constants : max final RA transmission. | |
static const uint8_t | MIN_DELAY_BETWEEN_RAS = 3 |
Neighbor Discovery router constants : min delay between RA. | |
static const uint32_t | MAX_RA_DELAY_TIME = 500 |
Neighbor Discovery router constants : max delay between RA. | |
static const uint8_t | MAX_RTR_SOLICITATION_DELAY = 1 |
Neighbor Discovery host constants : max RS delay. | |
static const uint8_t | RTR_SOLICITATION_INTERVAL = 4 |
Neighbor Discovery host constants : RS interval. | |
static const uint8_t | MAX_RTR_SOLICITATIONS = 3 |
Neighbor Discovery host constants : max RS transmission. | |
static const uint8_t | MAX_MULTICAST_SOLICIT = 3 |
Neighbor Discovery node constants : max multicast solicitations. | |
static const uint8_t | MAX_UNICAST_SOLICIT = 3 |
Neighbor Discovery node constants : max unicast solicitations. | |
static const uint8_t | MAX_ANYCAST_DELAY_TIME = 1 |
Neighbor Discovery node constants : max anycast delay. | |
static const uint8_t | MAX_NEIGHBOR_ADVERTISEMENT = 3 |
Neighbor Discovery node constants : max NA transmission. | |
static const uint32_t | REACHABLE_TIME = 30000 |
Neighbor Discovery node constants : reachable time. | |
static const uint32_t | RETRANS_TIMER = 1000 |
Neighbor Discovery node constants : retransmission timer. | |
static const uint8_t | DELAY_FIRST_PROBE_TIME = 5 |
Neighbor Discovery node constants : delay for the first probe. | |
static const double | MIN_RANDOM_FACTOR = 0.5 |
Neighbor Discovery node constants : min random factor. | |
static const double | MAX_RANDOM_FACTOR = 1.5 |
Neighbor Discovery node constants : max random factor. |
Protected Member Functions | |
virtual void | DoDispose () |
Dispose this object. |
Additional Inherited Members | |
![]() | |
enum | RxStatus { RX_OK, RX_CSUM_FAILED, RX_ENDPOINT_CLOSED, RX_ENDPOINT_UNREACH } |
typedef Callback< void, Ptr < Packet >, Ipv4Address, Ipv4Address, uint8_t, Ptr < Ipv4Route > > | DownTargetCallback |
typedef Callback< void, Ptr < Packet >, Ipv6Address, Ipv6Address, uint8_t, Ptr < Ipv6Route > > | DownTargetCallback6 |
An implementation of the ICMPv6 protocol.
Ptr< NdiscCache > ns3::Icmpv6L4Protocol::CreateCache | ( | Ptr< NetDevice > | device, |
Ptr< Ipv6Interface > | interface | ||
) |
Create a neighbor cache.
device | thet NetDevice |
interface | the IPv6 interface |
References ns3::NetDevice::AddLinkChangeCallback(), ns3::NdiscCache::Flush(), ns3::MakeCallback(), and ns3::NdiscCache::SetDevice().
void ns3::Icmpv6L4Protocol::DoDAD | ( | Ipv6Address | target, |
Ptr< Ipv6Interface > | interface | ||
) |
Do the Duplication Address Detection (DAD). It consists in sending a NS with our IPv6 as target. If we received a NA with matched target address, we could not use the address, else the address pass from TENTATIVE to PERMANENT.
target | target address |
interface | interface |
References ForgeNS(), ns3::NetDevice::GetAddress(), ns3::Ipv6Interface::GetDevice(), ns3::Object::GetObject(), ns3::Packet::GetUid(), ns3::Ipv6Address::MakeSolicitedAddress(), NS_ASSERT, NS_LOG_FUNCTION, ns3::Ipv6Interface::Send(), and ns3::Ipv6Interface::SetNsDadUid().
Referenced by ns3::Ipv6Interface::AddAddress().
Ptr< Packet > ns3::Icmpv6L4Protocol::ForgeEchoRequest | ( | Ipv6Address | src, |
Ipv6Address | dst, | ||
uint16_t | id, | ||
uint16_t | seq, | ||
Ptr< Packet > | data | ||
) |
Forge an Echo Request.
src | source address |
dst | destination address |
id | ID of the packet |
seq | sequence number |
data | the data |
References ns3::Packet::AddHeader(), ns3::Packet::Copy(), NS_LOG_FUNCTION, ns3::Icmpv6Echo::SetId(), and ns3::Icmpv6Echo::SetSeq().
Ptr< Packet > ns3::Icmpv6L4Protocol::ForgeNA | ( | Ipv6Address | src, |
Ipv6Address | dst, | ||
Address * | hardwareAddress, | ||
uint8_t | flags | ||
) |
Forge a Neighbor Advertisement.
src | source IPv6 address |
dst | destination IPv6 address |
hardwareAddress | our mac address |
flags | flags (bitfield => R (4), S (2), O (1)) |
References ns3::Packet::AddHeader(), ns3::Icmpv6Header::CalculatePseudoHeaderChecksum(), ns3::Ipv6Address::GetAny(), ns3::Icmpv6NA::GetSerializedSize(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, NS_LOG_LOGIC, PROT_NUMBER, ns3::Icmpv6NA::SetFlagO(), ns3::Icmpv6NA::SetFlagR(), ns3::Icmpv6NA::SetFlagS(), and ns3::Icmpv6NA::SetIpv6Target().
Ptr< Packet > ns3::Icmpv6L4Protocol::ForgeNS | ( | Ipv6Address | src, |
Ipv6Address | dst, | ||
Ipv6Address | target, | ||
Address | hardwareAddress | ||
) |
Forge a Neighbor Solicitation.
src | source IPv6 address |
dst | destination IPv6 address |
target | target IPv6 address |
hardwareAddress | our mac address |
References ns3::Packet::AddHeader(), ns3::Icmpv6Header::CalculatePseudoHeaderChecksum(), ns3::Ipv6Address::GetAllNodesMulticast(), ns3::Ipv6Address::GetAny(), ns3::Icmpv6NS::GetSerializedSize(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, NS_LOG_LOGIC, and PROT_NUMBER.
Referenced by DoDAD().
Ptr< Packet > ns3::Icmpv6L4Protocol::ForgeRS | ( | Ipv6Address | src, |
Ipv6Address | dst, | ||
Address | hardwareAddress | ||
) |
Forge a Router Solicitation.
src | source IPv6 address |
dst | destination IPv6 address |
hardwareAddress | our mac address |
References ns3::Packet::AddHeader(), ns3::Icmpv6Header::CalculatePseudoHeaderChecksum(), ns3::Icmpv6RS::GetSerializedSize(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, NS_LOG_LOGIC, and PROT_NUMBER.
|
static |
Function called when DAD timeout.
icmpv6 | Icmpv6L4Protocol instance |
interface | the interface |
addr | the IPv6 address |
References ns3::Ipv6InterfaceAddress::GetAddress(), ns3::NetDevice::GetAddress(), ns3::Ipv6Interface::GetAddress(), ns3::Ipv6Address::GetAllRoutersMulticast(), ns3::Ipv6Interface::GetDevice(), ns3::Ipv6::GetInterfaceForDevice(), ns3::Ipv6Interface::GetNAddresses(), ns3::Ipv6InterfaceAddress::GetState(), ns3::aodv::INVALID, ns3::Ipv6::IsForwarding(), ns3::Ipv6Address::IsLinkLocal(), NS_LOG_FUNCTION_NOARGS, NS_LOG_LOGIC, ns3::Ipv6InterfaceAddress::PREFERRED, ns3::Simulator::Schedule(), ns3::Seconds(), SendRS(), and ns3::Ipv6Interface::SetState().
Referenced by ns3::Ipv6Interface::AddAddress().
|
virtual |
Get the protocol number.
Implements ns3::IpL4Protocol.
References NS_LOG_FUNCTION_NOARGS, and PROT_NUMBER.
|
static |
Get ICMPv6 protocol number.
References NS_LOG_FUNCTION_NOARGS, and PROT_NUMBER.
Referenced by ns3::Ipv6RawSocketImpl::ForwardUp(), ns3::Ipv6L3Protocol::GetIcmpv6(), and ns3::Ipv6RawSocketImpl::SendTo().
|
static |
Interface ID.
This method returns the TypeId associated to ns3::Icmpv6L4Protocol.
Attributes defined for this type:
Attributes defined in parent class ns3::IpL4Protocol:
No TraceSources defined for this type.
Reimplemented from ns3::IpL4Protocol.
References ns3::TypeId::SetParent().
|
virtual |
bool ns3::Icmpv6L4Protocol::IsAlwaysDad | ( | ) | const |
Is the node must do DAD.
bool ns3::Icmpv6L4Protocol::Lookup | ( | Ipv6Address | dst, |
Ptr< NetDevice > | device, | ||
Ptr< NdiscCache > | cache, | ||
Address * | hardwareDestination | ||
) |
Lookup in the ND cache for the IPv6 address.
dst | destination address |
device | device |
cache | the neighbor cache |
hardwareDestination | hardware address |
References ns3::NdiscCache::Lookup(), and NS_LOG_FUNCTION.
bool ns3::Icmpv6L4Protocol::Lookup | ( | Ptr< Packet > | p, |
Ipv6Address | dst, | ||
Ptr< NetDevice > | device, | ||
Ptr< NdiscCache > | cache, | ||
Address * | hardwareDestination | ||
) |
Lookup in the ND cache for the IPv6 address (similar as ARP protocol).
It also send NS request to target and store the waiting packet.
p | the packet |
dst | destination address |
device | device |
cache | the neighbor cache |
hardwareDestination | hardware address |
References ns3::NdiscCache::Add(), ns3::NdiscCache::Entry::AddWaitingPacket(), ns3::Ipv6InterfaceAddress::GetAddress(), ns3::NetDevice::GetAddress(), ns3::Ipv6Interface::GetAddressMatchingDestination(), ns3::NdiscCache::GetDevice(), ns3::NdiscCache::GetInterface(), ns3::Ipv6Interface::GetLinkLocalAddress(), ns3::NdiscCache::Entry::GetMacAddress(), ns3::Ipv6Interface::GetNAddresses(), ns3::NdiscCache::Entry::IsDelay(), ns3::Ipv6Address::IsLinkLocal(), ns3::NdiscCache::Entry::IsReachable(), ns3::NdiscCache::Entry::IsStale(), ns3::NdiscCache::Lookup(), ns3::Ipv6Address::MakeSolicitedAddress(), ns3::NdiscCache::Entry::MarkDelay(), ns3::NdiscCache::Entry::MarkIncomplete(), NS_LOG_FUNCTION, ns3::NdiscCache::Remove(), SendNS(), ns3::NdiscCache::Entry::SetRouter(), ns3::NdiscCache::Entry::StartDelayTimer(), and ns3::NdiscCache::Entry::StartRetransmitTimer().
|
virtual |
Receive method.
p | the packet |
header | the IPv4 header |
interface | the interface from which the packet is coming |
Implements ns3::IpL4Protocol.
References NS_LOG_FUNCTION.
|
virtual |
Receive method.
p | the packet |
src | source address |
dst | destination address |
interface | the interface from which the packet is coming |
Implements ns3::IpL4Protocol.
References ns3::Packet::Copy(), ns3::Packet::CopyData(), ns3::Ipv6Interface::GetDevice(), ns3::Ipv6::GetInterfaceForDevice(), ns3::Object::GetObject(), ns3::Ipv6::IsForwarding(), NS_LOG_FUNCTION, and NS_LOG_LOGIC.
void ns3::Icmpv6L4Protocol::SendEchoReply | ( | Ipv6Address | src, |
Ipv6Address | dst, | ||
uint16_t | id, | ||
uint16_t | seq, | ||
Ptr< Packet > | data | ||
) |
Send a Echo Reply.
src | source IPv6 address |
dst | destination IPv6 address |
id | id of the packet |
seq | sequence number |
data | auxiliary data |
References ns3::Packet::AddHeader(), ns3::Icmpv6Header::CalculatePseudoHeaderChecksum(), ns3::Packet::Copy(), ns3::Icmpv6Echo::GetSerializedSize(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, PROT_NUMBER, SendMessage(), ns3::Icmpv6Echo::SetId(), and ns3::Icmpv6Echo::SetSeq().
void ns3::Icmpv6L4Protocol::SendErrorDestinationUnreachable | ( | Ptr< Packet > | malformedPacket, |
Ipv6Address | dst, | ||
uint8_t | code | ||
) |
Send an error Destination Unreachable.
malformedPacket | the malformed packet |
dst | destination IPv6 address |
code | code of the error |
References ns3::Packet::CreateFragment(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, NS_LOG_LOGIC, SendMessage(), ns3::Icmpv6Header::SetCode(), and ns3::Icmpv6DestinationUnreachable::SetPacket().
void ns3::Icmpv6L4Protocol::SendErrorParameterError | ( | Ptr< Packet > | malformedPacket, |
Ipv6Address | dst, | ||
uint8_t | code, | ||
uint32_t | ptr | ||
) |
Send an error Parameter Error.
malformedPacket | the malformed packet |
dst | destination IPv6 address |
code | code of the error |
ptr | byte of p where the error is located |
References ns3::Packet::CreateFragment(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, NS_LOG_LOGIC, SendMessage(), ns3::Icmpv6Header::SetCode(), ns3::Icmpv6ParameterError::SetPacket(), and ns3::Icmpv6ParameterError::SetPtr().
void ns3::Icmpv6L4Protocol::SendErrorTimeExceeded | ( | Ptr< Packet > | malformedPacket, |
Ipv6Address | dst, | ||
uint8_t | code | ||
) |
Send an error Time Exceeded.
malformedPacket | the malformed packet |
dst | destination IPv6 address |
code | code of the error |
References ns3::Packet::CreateFragment(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, NS_LOG_LOGIC, SendMessage(), ns3::Icmpv6Header::SetCode(), and ns3::Icmpv6TimeExceeded::SetPacket().
void ns3::Icmpv6L4Protocol::SendErrorTooBig | ( | Ptr< Packet > | malformedPacket, |
Ipv6Address | dst, | ||
uint32_t | mtu | ||
) |
Send an error Too Big.
malformedPacket | the malformed packet |
dst | destination IPv6 address |
mtu | the mtu |
References ns3::Packet::CreateFragment(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, NS_LOG_LOGIC, SendMessage(), ns3::Icmpv6Header::SetCode(), ns3::Icmpv6TooBig::SetMtu(), and ns3::Icmpv6TooBig::SetPacket().
void ns3::Icmpv6L4Protocol::SendMessage | ( | Ptr< Packet > | packet, |
Ipv6Address | src, | ||
Ipv6Address | dst, | ||
uint8_t | ttl | ||
) |
Send a packet via ICMPv6, note that packet already contains ICMPv6 header.
packet | the packet to send which contains ICMPv6 header |
src | source address |
dst | destination address |
ttl | next hop limit |
References ns3::Packet::AddPacketTag(), ns3::Object::GetObject(), NS_ASSERT, NS_LOG_FUNCTION, and PROT_NUMBER.
Referenced by SendEchoReply(), SendErrorDestinationUnreachable(), SendErrorParameterError(), SendErrorTimeExceeded(), SendErrorTooBig(), SendNA(), SendNS(), SendRedirection(), and SendRS().
void ns3::Icmpv6L4Protocol::SendMessage | ( | Ptr< Packet > | packet, |
Ipv6Address | dst, | ||
Icmpv6Header & | icmpv6Hdr, | ||
uint8_t | ttl | ||
) |
Send a packet via ICMPv6.
packet | the packet to send |
dst | destination address |
icmpv6Hdr | ICMPv6 header (needed to calculate checksum after source address is determined by routing stuff |
ttl | next hop limit |
References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::Icmpv6Header::CalculatePseudoHeaderChecksum(), ns3::Object::GetObject(), ns3::Icmpv6Header::GetSerializedSize(), ns3::Packet::GetSize(), NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_LOGIC, NS_LOG_WARN, and PROT_NUMBER.
void ns3::Icmpv6L4Protocol::SendNA | ( | Ipv6Address | src, |
Ipv6Address | dst, | ||
Address * | hardwareAddress, | ||
uint8_t | flags | ||
) |
Send a Neighbor Adverstisement.
src | source IPv6 address |
dst | destination IPv6 address |
hardwareAddress | our MAC address |
flags | to set (4 = flag R, 2 = flag S, 3 = flag O) |
References ns3::Packet::AddHeader(), ns3::Ipv6Address::GetAny(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, NS_LOG_LOGIC, PROT_NUMBER, and SendMessage().
void ns3::Icmpv6L4Protocol::SendNS | ( | Ipv6Address | src, |
Ipv6Address | dst, | ||
Ipv6Address | target, | ||
Address | hardwareAddress | ||
) |
Send a Neighbor Solicitation.
src | source IPv6 address |
dst | destination IPv6 address |
target | target IPv6 address |
hardwareAddress | our mac address |
References ns3::Packet::AddHeader(), ns3::Ipv6Address::GetAllNodesMulticast(), ns3::Ipv6Address::GetAny(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, NS_LOG_LOGIC, PROT_NUMBER, and SendMessage().
Referenced by Lookup().
void ns3::Icmpv6L4Protocol::SendRedirection | ( | Ptr< Packet > | redirectedPacket, |
Ipv6Address | dst, | ||
Ipv6Address | redirTarget, | ||
Ipv6Address | redirDestination, | ||
Address | redirHardwareTarget | ||
) |
Send an ICMPv6 Redirection.
redirectedPacket | the redirected packet |
dst | destination IPv6 address |
redirTarget | IPv6 target address for Icmpv6Redirection |
redirDestination | IPv6 destination address for Icmpv6Redirection |
redirHardwareTarget | L2 target address for Icmpv6OptionRdirected |
References ns3::Packet::AddAtEnd(), ns3::Packet::AddHeader(), ns3::Packet::CreateFragment(), ns3::Address::GetLength(), ns3::Icmpv6OptionLinkLayerAddress::GetSerializedSize(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, NS_LOG_LOGIC, SendMessage(), ns3::Icmpv6OptionLinkLayerAddress::SetAddress(), ns3::Icmpv6Redirection::SetDestination(), ns3::Icmpv6OptionRedirected::SetPacket(), and ns3::Icmpv6Redirection::SetTarget().
void ns3::Icmpv6L4Protocol::SendRS | ( | Ipv6Address | src, |
Ipv6Address | dst, | ||
Address | hardwareAddress | ||
) |
Send a Router Solicitation.
src | link-local source address |
dst | destination address (usealy ff02::2 i.e all-routers) |
hardwareAddress | link-layer address (SHOULD be included if src is not :: |
References ns3::Packet::AddHeader(), ns3::Ipv6Address::GetAny(), ns3::Packet::GetSize(), NS_LOG_FUNCTION, NS_LOG_LOGIC, PROT_NUMBER, and SendMessage().
Referenced by FunctionDadTimeout().
Set the node.
node | the node to set |
References NS_LOG_FUNCTION.
Referenced by NotifyNewAggregate().