Describes an IPv6 address. More...
#include <ipv6-address.h>
| Public Member Functions | |
| Ipv6Address () | |
| Default constructor. | |
| Ipv6Address (char const *address) | |
| Constructs an Ipv6Address by parsing the input C-string.  More... | |
| Ipv6Address (uint8_t address[16]) | |
| Constructs an Ipv6Address by using the input 16 bytes.  More... | |
| Ipv6Address (Ipv6Address const &addr) | |
| Copy constructor.  More... | |
| Ipv6Address (Ipv6Address const *addr) | |
| Copy constructor.  More... | |
| ~Ipv6Address () | |
| Destructor. | |
| Ipv6Address | CombinePrefix (Ipv6Prefix const &prefix) | 
| Combine this address with a prefix.  More... | |
| void | GetBytes (uint8_t buf[16]) const | 
| Get the bytes corresponding to the address.  More... | |
| Ipv4Address | GetIpv4MappedAddress () const | 
| Return the Ipv4 address.  More... | |
| bool | IsAllHostsMulticast () const | 
| If the IPv6 address is "all hosts multicast" (ff02::3/8).  More... | |
| bool | IsAllNodesMulticast () const | 
| If the IPv6 address is "all nodes multicast" (ff02::1/8).  More... | |
| bool | IsAllRoutersMulticast () const | 
| If the IPv6 address is "all routers multicast" (ff02::2/8).  More... | |
| bool | IsAny () const | 
| If the IPv6 address is the "Any" address.  More... | |
| bool | IsEqual (const Ipv6Address &other) const | 
| Comparison operation between two Ipv6Addresses.  More... | |
| bool | IsIpv4MappedAddress () | 
| If the address is an IPv4-mapped address.  More... | |
| bool | IsLinkLocal () const | 
| If the IPv6 address is a link-local address (fe80::/64).  More... | |
| bool | IsLinkLocalMulticast () const | 
| If the IPv6 address is link-local multicast (ff02::/16).  More... | |
| bool | IsLocalhost () const | 
| If the IPv6 address is localhost (::1).  More... | |
| bool | IsMulticast () const | 
| If the IPv6 address is multicast (ff00::/8).  More... | |
| bool | IsSolicitedMulticast () const | 
| If the IPv6 address is a Solicited multicast address.  More... | |
| operator Address () const | |
| Convert to Address object. | |
| void | Print (std::ostream &os) const | 
| Print this address to the given output stream.  More... | |
| void | Serialize (uint8_t buf[16]) const | 
| Serialize this address to a 16-byte buffer.  More... | |
| void | Set (char const *address) | 
| Sets an Ipv6Address by parsing the input C-string.  More... | |
| void | Set (uint8_t address[16]) | 
| Set an Ipv6Address by using the input 16 bytes.  More... | |
| Static Public Member Functions | |
| static Ipv6Address | ConvertFrom (const Address &address) | 
| Convert the Address object into an Ipv6Address ones.  More... | |
| static Ipv6Address | Deserialize (const uint8_t buf[16]) | 
| Deserialize this address.  More... | |
| static Ipv6Address | GetAllHostsMulticast () | 
| Get the "all hosts multicast" address.  More... | |
| static Ipv6Address | GetAllNodesMulticast () | 
| Get the "all nodes multicast" address.  More... | |
| static Ipv6Address | GetAllRoutersMulticast () | 
| Get the "all routers multicast" address.  More... | |
| static Ipv6Address | GetAny () | 
| Get the "any" (::) Ipv6Address.  More... | |
| static Ipv6Address | GetLoopback () | 
| Get the loopback address.  More... | |
| static Ipv6Address | GetOnes () | 
| Get the "all-1" IPv6 address (ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff).  More... | |
| static Ipv6Address | GetZero () | 
| Get the 0 (::) Ipv6Address.  More... | |
| static bool | IsMatchingType (const Address &address) | 
| If the Address matches the type.  More... | |
| static Ipv6Address | MakeAutoconfiguredAddress (Mac48Address addr, Ipv6Address prefix) | 
| Make the autoconfigured IPv6 address with Mac48Address.  More... | |
| static Ipv6Address | MakeAutoconfiguredLinkLocalAddress (Mac48Address mac) | 
| Make the autoconfigured link-local IPv6 address with Mac48Address.  More... | |
| static Ipv6Address | MakeIpv4MappedAddress (Ipv4Address addr) | 
| Make the Ipv4-mapped IPv6 address.  More... | |
| static Ipv6Address | MakeSolicitedAddress (Ipv6Address addr) | 
| Make the solicited IPv6 address.  More... | |
| Private Member Functions | |
| Address | ConvertTo (void) const | 
| convert the IPv6Address object to an Address object.  More... | |
| Static Private Member Functions | |
| static uint8_t | GetType (void) | 
| Return the Type of address.  More... | |
| Private Attributes | |
| uint8_t | m_address [16] | 
| The address representation on 128 bits (16 bytes). | |
| Friends | |
| bool | operator!= (Ipv6Address const &a, Ipv6Address const &b) | 
| bool | operator< (Ipv6Address const &a, Ipv6Address const &b) | 
| bool | operator== (Ipv6Address const &a, Ipv6Address const &b) | 
| ns3::Ipv6Address::Ipv6Address | ( | char const * | address | ) | 
Constructs an Ipv6Address by parsing the input C-string.
| address | the C-string containing the IPv6 address (e.g. 2001:660:4701::1). | 
Definition at line 270 of file ipv6-address.cc.
References ns3::AsciiToIpv6Host(), m_address, and NS_LOG_FUNCTION.
| ns3::Ipv6Address::Ipv6Address | ( | uint8_t | address[16] | ) | 
Constructs an Ipv6Address by using the input 16 bytes.
| address | the 128-bit address | 
Definition at line 276 of file ipv6-address.cc.
References m_address, and NS_LOG_FUNCTION.
| ns3::Ipv6Address::Ipv6Address | ( | Ipv6Address const & | addr | ) | 
Copy constructor.
| addr | Ipv6Address object | 
Definition at line 258 of file ipv6-address.cc.
References m_address.
| ns3::Ipv6Address::Ipv6Address | ( | Ipv6Address const * | addr | ) | 
Copy constructor.
| addr | Ipv6Address pointer | 
Definition at line 264 of file ipv6-address.cc.
References m_address.
| Ipv6Address ns3::Ipv6Address::CombinePrefix | ( | Ipv6Prefix const & | prefix | ) | 
Combine this address with a prefix.
| prefix | a IPv6 prefix | 
Definition at line 460 of file ipv6-address.cc.
References m_address, NS_LOG_FUNCTION, and Set().
Referenced by ns3::Ipv6L3Protocol::GetInterfaceForPrefix(), ns3::Ipv6L3Protocol::IpForward(), IsLinkLocal(), ns3::Ipv6StaticRouting::NotifyAddAddress(), ns3::Ipv6StaticRouting::NotifyRemoveAddress(), and ns3::Ipv6StaticRouting::SourceAddressSelection().
| 
 | static | 
Convert the Address object into an Ipv6Address ones.
| address | address to convert | 
Definition at line 544 of file ipv6-address.cc.
References ns3::Address::CheckCompatible(), ns3::Address::CopyTo(), Deserialize(), GetType(), NS_ASSERT, and NS_LOG_FUNCTION.
Referenced by ns3::UdpClient::StartApplication(), ns3::UdpTraceClient::StartApplication(), and ns3::UdpEchoClient::StartApplication().
| 
 | private | 
convert the IPv6Address object to an Address object.
Definition at line 536 of file ipv6-address.cc.
References GetType(), NS_LOG_FUNCTION, and Serialize().
| 
 | static | 
Deserialize this address.
| buf | buffer to read address from | 
Definition at line 308 of file ipv6-address.cc.
References NS_LOG_FUNCTION.
Referenced by ns3::Inet6SocketAddress::ConvertFrom(), ConvertFrom(), and ns3::Ipv6PacketInfoTag::Deserialize().
| 
 | static | 
Get the "all hosts multicast" address.
Definition at line 574 of file ipv6-address.cc.
References NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::Ipv6StaticRouting::LookupStatic(), ns3::Ipv6ListRouting::RouteInput(), and ns3::Ipv6StaticRouting::SourceAddressSelection().
| 
 | static | 
Get the "all nodes multicast" address.
Definition at line 560 of file ipv6-address.cc.
References NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::Icmpv6L4Protocol::ForgeNS(), ns3::Icmpv6L4Protocol::HandleNS(), ns3::Ipv6StaticRouting::LookupStatic(), ns3::Ipv6ListRouting::RouteInput(), ns3::Radvd::Send(), ns3::Icmpv6L4Protocol::SendNS(), ns3::Ipv6StaticRouting::SourceAddressSelection(), and ns3::Radvd::StartApplication().
| 
 | static | 
Get the "all routers multicast" address.
Definition at line 567 of file ipv6-address.cc.
References NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::Icmpv6L4Protocol::FunctionDadTimeout(), ns3::Ipv6EndPointDemux::Lookup(), ns3::Ipv6StaticRouting::LookupStatic(), ns3::Ipv6ListRouting::RouteInput(), and ns3::Ipv6StaticRouting::SourceAddressSelection().
| 
 | static | 
Get the "any" (::) Ipv6Address.
Definition at line 595 of file ipv6-address.cc.
References NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::Ipv6L3Protocol::AddAutoconfiguredAddress(), ns3::Ipv6EndPointDemux::Allocate(), ns3::UdpSocketImpl::Bind(), ns3::TcpSocketBase::Bind(), ns3::Ipv6RawSocketImpl::Bind(), ns3::Icmpv6L4Protocol::ForgeNA(), ns3::Icmpv6L4Protocol::ForgeNS(), ns3::Ipv6RawSocketImpl::ForwardUp(), ns3::Icmpv6L4Protocol::HandleNS(), ns3::Icmpv6L4Protocol::HandleRS(), ns3::Ipv6L3Protocol::IpMulticastForward(), ns3::Ipv6RawSocketImpl::Ipv6RawSocketImpl(), ns3::Ipv6EndPointDemux::Lookup(), ns3::Ipv6L3Protocol::RemoveAutoconfiguredAddress(), ns3::Icmpv6L4Protocol::SendNA(), ns3::Icmpv6L4Protocol::SendNS(), ns3::Ipv6L3Protocol::SendRealOut(), ns3::Icmpv6L4Protocol::SendRS(), ns3::Ipv6EndPointDemux::SimpleLookup(), ns3::UdpEchoServer::StartApplication(), and ns3::UdpServer::StartApplication().
| void ns3::Ipv6Address::GetBytes | ( | uint8_t | buf[16] | ) | const | 
Get the bytes corresponding to the address.
| buf | buffer to store the data | 
Definition at line 609 of file ipv6-address.cc.
References m_address, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv6Prefix::IsMatch(), MakeAutoconfiguredAddress(), ns3::Ipv6AddressHash::operator()(), and ns3::Icmpv6OptionPrefixInformation::Serialize().
| Ipv4Address ns3::Ipv6Address::GetIpv4MappedAddress | ( | ) | const | 
Return the Ipv4 address.
Definition at line 324 of file ipv6-address.cc.
References ns3::Ipv4Address::Deserialize(), NS_LOG_FUNCTION, and Serialize().
Referenced by ns3::TcpSocketBase::Connect().
| 
 | static | 
Get the loopback address.
Definition at line 581 of file ipv6-address.cc.
References NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::Ipv6L3Protocol::SetupLoopback().
| 
 | static | 
Get the "all-1" IPv6 address (ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff).
Definition at line 602 of file ipv6-address.cc.
References NS_LOG_FUNCTION_NOARGS.
| 
 | staticprivate | 
Return the Type of address.
Definition at line 553 of file ipv6-address.cc.
References NS_LOG_FUNCTION_NOARGS, and ns3::Address::Register().
Referenced by ConvertFrom(), ConvertTo(), and IsMatchingType().
| 
 | static | 
Get the 0 (::) Ipv6Address.
Definition at line 588 of file ipv6-address.cc.
References NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::Ipv6RoutingTableEntry::CreateDefaultRoute(), ns3::Ipv6RoutingTableEntry::IsDefault(), ns3::Ipv6RoutingTableEntry::IsGateway(), ns3::Ipv6StaticRouting::LookupStatic(), ns3::Ipv6StaticRouting::NotifyAddRoute(), ns3::Ipv6StaticRouting::NotifyRemoveRoute(), and ns3::Ipv6L3Protocol::Send().
| bool ns3::Ipv6Address::IsAllHostsMulticast | ( | ) | const | 
If the IPv6 address is "all hosts multicast" (ff02::3/8).
Definition at line 511 of file ipv6-address.cc.
References NS_LOG_FUNCTION.
Referenced by ns3::Ipv6L3Protocol::Send().
| bool ns3::Ipv6Address::IsAllNodesMulticast | ( | ) | const | 
If the IPv6 address is "all nodes multicast" (ff02::1/8).
Definition at line 497 of file ipv6-address.cc.
References NS_LOG_FUNCTION.
Referenced by ns3::Ipv6L3Protocol::Send().
| bool ns3::Ipv6Address::IsAllRoutersMulticast | ( | ) | const | 
If the IPv6 address is "all routers multicast" (ff02::2/8).
Definition at line 504 of file ipv6-address.cc.
References NS_LOG_FUNCTION.
Referenced by ns3::Ipv6L3Protocol::Send().
| bool ns3::Ipv6Address::IsAny | ( | ) | const | 
If the IPv6 address is the "Any" address.
Definition at line 518 of file ipv6-address.cc.
References NS_LOG_FUNCTION.
Referenced by ns3::Ipv6Interface::AddAddress(), ns3::NdiscCache::Entry::FunctionDelayTimeout(), ns3::NdiscCache::Entry::FunctionProbeTimeout(), ns3::NdiscCache::Entry::FunctionRetransmitTimeout(), ns3::Icmpv6L4Protocol::HandleNS(), ns3::Ipv6L3Protocol::IpForward(), ns3::Ipv6StaticRouting::LookupStatic(), and ns3::Ipv6RawSocketImpl::SendTo().
| bool ns3::Ipv6Address::IsEqual | ( | const Ipv6Address & | other | ) | const | 
Comparison operation between two Ipv6Addresses.
| other | the IPv6 address to which to compare thisaddress | 
Definition at line 626 of file ipv6-address.cc.
References m_address, and NS_LOG_FUNCTION.
Referenced by ns3::Icmpv6L4Protocol::HandleRedirection(), ns3::Ipv6RoutingTableEntry::IsDefault(), ns3::Ipv6RoutingTableEntry::IsGateway(), ns3::Ipv6ListRouting::RouteInput(), and ns3::Ipv6StaticRouting::RouteInput().
| bool ns3::Ipv6Address::IsIpv4MappedAddress | ( | ) | 
If the address is an IPv4-mapped address.
Definition at line 448 of file ipv6-address.cc.
References m_address, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::Connect().
| bool ns3::Ipv6Address::IsLinkLocal | ( | ) | const | 
If the IPv6 address is a link-local address (fe80::/64).
Definition at line 615 of file ipv6-address.cc.
References CombinePrefix(), IsMulticast(), and NS_LOG_FUNCTION.
Referenced by ns3::Ipv6L3ProtocolTestCase::DoRun(), ns3::Icmpv6L4Protocol::FunctionDadTimeout(), ns3::Icmpv6L4Protocol::HandleNS(), ns3::Icmpv6L4Protocol::Lookup(), ns3::Ipv6L3Protocol::Send(), and ns3::Ipv6InterfaceAddress::SetAddress().
| bool ns3::Ipv6Address::IsLinkLocalMulticast | ( | ) | const | 
If the IPv6 address is link-local multicast (ff02::/16).
Definition at line 438 of file ipv6-address.cc.
References m_address, and NS_LOG_FUNCTION.
| bool ns3::Ipv6Address::IsLocalhost | ( | ) | const | 
If the IPv6 address is localhost (::1).
Definition at line 421 of file ipv6-address.cc.
References NS_LOG_FUNCTION.
Referenced by ns3::Ipv6Interface::AddAddress(), and ns3::Ipv6InterfaceAddress::SetAddress().
| 
 | static | 
If the Address matches the type.
| address | other address | 
Definition at line 525 of file ipv6-address.cc.
References ns3::Address::CheckCompatible(), GetType(), and NS_LOG_FUNCTION.
Referenced by ns3::UdpClient::StartApplication(), ns3::UdpTraceClient::StartApplication(), and ns3::UdpEchoClient::StartApplication().
| bool ns3::Ipv6Address::IsMulticast | ( | void | ) | const | 
If the IPv6 address is multicast (ff00::/8).
Definition at line 428 of file ipv6-address.cc.
References m_address, and NS_LOG_FUNCTION.
Referenced by ns3::Icmpv6L4Protocol::HandleEchoRequest(), IsLinkLocal(), ns3::Ipv6L3Protocol::LocalDeliver(), ns3::Ipv6ExtensionLooseRouting::Process(), ns3::Ipv6Extension::ProcessOptions(), ns3::Ipv6ListRouting::RouteInput(), ns3::Ipv6StaticRouting::RouteInput(), ns3::Ipv6StaticRouting::RouteOutput(), and ns3::Ipv6Interface::Send().
| bool ns3::Ipv6Address::IsSolicitedMulticast | ( | ) | const | 
If the IPv6 address is a Solicited multicast address.
Definition at line 480 of file ipv6-address.cc.
References NS_LOG_FUNCTION, and Serialize().
Referenced by ns3::Ipv6StaticRouting::LookupStatic(), and ns3::Ipv6L3Protocol::Send().
| 
 | static | 
Make the autoconfigured IPv6 address with Mac48Address.
| addr | the MAC address (48 bits). | 
| prefix | the IPv6 prefix | 
Definition at line 335 of file ipv6-address.cc.
References ns3::Mac48Address::CopyTo(), GetBytes(), NS_LOG_FUNCTION, and Set().
Referenced by ns3::Ipv6L3Protocol::AddAutoconfiguredAddress(), ns3::Ipv6AddressHelper::NewAddress(), and ns3::Ipv6L3Protocol::RemoveAutoconfiguredAddress().
| 
 | static | 
Make the autoconfigured link-local IPv6 address with Mac48Address.
| mac | the MAC address (48 bits). | 
Definition at line 355 of file ipv6-address.cc.
References ns3::Mac48Address::CopyTo(), NS_LOG_FUNCTION, and Set().
Referenced by ns3::Ipv6Interface::DoSetup().
| 
 | static | 
Make the Ipv4-mapped IPv6 address.
| addr | the IPv4 address | 
Definition at line 315 of file ipv6-address.cc.
References NS_LOG_FUNCTION, and ns3::Ipv4Address::Serialize().
Referenced by ns3::UdpL4Protocol::Receive(), and ns3::TcpL4Protocol::Receive().
| 
 | static | 
Make the solicited IPv6 address.
| addr | the IPv6 address | 
Definition at line 377 of file ipv6-address.cc.
References NS_LOG_FUNCTION, Serialize(), and Set().
Referenced by ns3::Icmpv6L4Protocol::DoDAD(), ns3::NdiscCache::Entry::FunctionRetransmitTimeout(), and ns3::Icmpv6L4Protocol::Lookup().
| void ns3::Ipv6Address::Print | ( | std::ostream & | os | ) | const | 
Print this address to the given output stream.
The print format is in the typical "2001:660:4701::1".
| os | the output stream to which this Ipv6Address is printed | 
Definition at line 399 of file ipv6-address.cc.
References m_address, and NS_LOG_FUNCTION.
| void ns3::Ipv6Address::Serialize | ( | uint8_t | buf[16] | ) | const | 
Serialize this address to a 16-byte buffer.
| buf | the output buffer to which this address gets overwritten with this Ipv6Address | 
Definition at line 302 of file ipv6-address.cc.
References m_address, and NS_LOG_FUNCTION.
Referenced by ns3::Icmpv6Header::CalculatePseudoHeaderChecksum(), ns3::Inet6SocketAddress::ConvertTo(), ConvertTo(), Ipv6AddressTestCase1::DoRun(), GetIpv4MappedAddress(), ns3::Mac48Address::GetMulticast(), IsSolicitedMulticast(), MakeSolicitedAddress(), ns3::Ipv6PacketInfoTag::Serialize(), ns3::Icmpv6NS::Serialize(), ns3::Icmpv6NA::Serialize(), and ns3::Icmpv6Redirection::Serialize().
| void ns3::Ipv6Address::Set | ( | char const * | address | ) | 
Sets an Ipv6Address by parsing the input C-string.
| address | the C-string containing the IPv6 address (e.g. 2001:660:4701::1). | 
Definition at line 289 of file ipv6-address.cc.
References ns3::AsciiToIpv6Host(), m_address, and NS_LOG_FUNCTION.
Referenced by CombinePrefix(), ns3::Icmpv6NS::Deserialize(), ns3::Icmpv6NA::Deserialize(), ns3::Icmpv6Redirection::Deserialize(), MakeAutoconfiguredAddress(), MakeAutoconfiguredLinkLocalAddress(), and MakeSolicitedAddress().
| void ns3::Ipv6Address::Set | ( | uint8_t | address[16] | ) | 
Set an Ipv6Address by using the input 16 bytes.
| address | the 128-bit address | 
Definition at line 295 of file ipv6-address.cc.
References m_address, and NS_LOG_FUNCTION.