Describes an IPv6 prefix. More...
#include "ipv6-address.h"
Public Member Functions | |
| Ipv6Prefix () | |
| Default constructor. | |
| Ipv6Prefix (const char *prefix) | |
| Constructs an Ipv6Prefix by using the input string. | |
| Ipv6Prefix (const char *prefix, uint8_t prefixLength) | |
| Constructs an Ipv6Prefix by using the input string. | |
| Ipv6Prefix (const Ipv6Prefix &prefix) | |
| Copy constructor. | |
| Ipv6Prefix (const Ipv6Prefix *prefix) | |
| Copy constructor. | |
| Ipv6Prefix (uint8_t prefix) | |
| Constructs an Ipv6Prefix by using the input number of bits. | |
| Ipv6Prefix (uint8_t prefix[16]) | |
| Constructs an Ipv6Prefix by using the input 16 bytes. | |
| Ipv6Prefix (uint8_t prefix[16], uint8_t prefixLength) | |
| Constructs an Ipv6Prefix by using the input 16 bytes. | |
| ~Ipv6Prefix () | |
| Destructor. | |
| Ipv6Address | ConvertToIpv6Address () const |
| Convert the Prefix into an IPv6 Address. | |
| void | GetBytes (uint8_t buf[16]) const |
| Get the bytes corresponding to the prefix. | |
| uint8_t | GetMinimumPrefixLength () const |
| Get the minimum prefix length, i.e., 128 - the length of the largest sequence trailing zeroes. | |
| uint8_t | GetPrefixLength () const |
| Get prefix length. | |
| bool | IsMatch (Ipv6Address a, Ipv6Address b) const |
| Check whether two addresses have the same bits in the prefix portion of their addresses. | |
| void | Print (std::ostream &os) const |
| Print this address to the given output stream. | |
| void | SetPrefixLength (uint8_t prefixLength) |
| Set prefix length. | |
Static Public Member Functions | |
| static Ipv6Prefix | GetLoopback () |
| Get the loopback prefix ( /128). | |
| static Ipv6Prefix | GetOnes () |
| Get the "all-1" IPv6 mask (ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff). | |
| static Ipv6Prefix | GetZero () |
| Get the zero prefix ( /0). | |
Private Attributes | |
| uint8_t | m_prefix [16] |
| The prefix representation. | |
| uint8_t | m_prefixLength |
| The prefix length. | |
Friends | |
| bool | operator!= (const Ipv6Prefix &a, const Ipv6Prefix &b) |
| Not equal to operator. | |
| bool | operator== (const Ipv6Prefix &a, const Ipv6Prefix &b) |
| Equal to operator. | |
Describes an IPv6 prefix.
It is just a bitmask like Ipv4Mask.
Definition at line 460 of file ipv6-address.h.
| ns3::Ipv6Prefix::Ipv6Prefix | ( | ) |
Default constructor.
The default prefix is empty, corresponding to /0
Definition at line 786 of file ipv6-address.cc.
References m_prefix, m_prefixLength, and NS_LOG_FUNCTION.
Referenced by Ipv6Prefix(), Ipv6Prefix(), GetLoopback(), GetOnes(), GetZero(), operator!=, and operator==.
| ns3::Ipv6Prefix::Ipv6Prefix | ( | uint8_t | prefix[16] | ) |
Constructs an Ipv6Prefix by using the input 16 bytes.
The prefix length is calculated as the minimum prefix length, i.e., 2001:db8:cafe:: will have a 47 bit prefix length (0xE is 0b1110).
| prefix | the 128-bit prefix |
Definition at line 803 of file ipv6-address.cc.
References GetMinimumPrefixLength(), m_prefix, m_prefixLength, and NS_LOG_FUNCTION.
| ns3::Ipv6Prefix::Ipv6Prefix | ( | const char * | prefix | ) |
Constructs an Ipv6Prefix by using the input string.
The prefix length is calculated as the minimum prefix length, i.e., 2001:db8:cafe:: will have a 47 bit prefix length.
| prefix | the 128-bit prefix |
Definition at line 793 of file ipv6-address.cc.
References GetMinimumPrefixLength(), m_prefix, m_prefixLength, NS_ABORT_MSG, and NS_LOG_FUNCTION.
| ns3::Ipv6Prefix::Ipv6Prefix | ( | uint8_t | prefix[16], |
| uint8_t | prefixLength ) |
Constructs an Ipv6Prefix by using the input 16 bytes.
| prefix | the 128-bit prefix |
| prefixLength | the prefix length |
Definition at line 825 of file ipv6-address.cc.
References GetMinimumPrefixLength(), m_prefix, m_prefixLength, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
| ns3::Ipv6Prefix::Ipv6Prefix | ( | const char * | prefix, |
| uint8_t | prefixLength ) |
Constructs an Ipv6Prefix by using the input string.
| prefix | the 128-bit prefix |
| prefixLength | the prefix length |
Definition at line 810 of file ipv6-address.cc.
References GetMinimumPrefixLength(), m_prefix, m_prefixLength, NS_ABORT_MSG, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
| ns3::Ipv6Prefix::Ipv6Prefix | ( | uint8_t | prefix | ) |
Constructs an Ipv6Prefix by using the input number of bits.
| prefix | number of bits of the prefix (0 - 128) |
Definition at line 838 of file ipv6-address.cc.
References m_prefix, m_prefixLength, NS_ASSERT, and NS_LOG_FUNCTION.
| ns3::Ipv6Prefix::Ipv6Prefix | ( | const Ipv6Prefix & | prefix | ) |
Copy constructor.
| prefix | Ipv6Prefix object |
Definition at line 874 of file ipv6-address.cc.
References Ipv6Prefix(), m_prefix, and m_prefixLength.
| ns3::Ipv6Prefix::Ipv6Prefix | ( | const Ipv6Prefix * | prefix | ) |
Copy constructor.
| prefix | Ipv6Prefix pointer |
Definition at line 880 of file ipv6-address.cc.
References Ipv6Prefix(), m_prefix, and m_prefixLength.
| ns3::Ipv6Prefix::~Ipv6Prefix | ( | ) |
| Ipv6Address ns3::Ipv6Prefix::ConvertToIpv6Address | ( | ) | const |
Convert the Prefix into an IPv6 Address.
Definition at line 954 of file ipv6-address.cc.
References m_prefix.
| void ns3::Ipv6Prefix::GetBytes | ( | uint8_t | buf[16] | ) | const |
Get the bytes corresponding to the prefix.
| buf | buffer to store the data |
Definition at line 947 of file ipv6-address.cc.
References m_prefix, and NS_LOG_FUNCTION.
Referenced by ns3::SixLowPanNetDevice::FindMulticastCompressionContext(), ns3::Ipv6AddressGeneratorImpl::Init(), and ns3::Ipv6AddressGeneratorImpl::PrefixToIndex().
|
static |
Get the loopback prefix ( /128).
Definition at line 923 of file ipv6-address.cc.
References Ipv6Prefix(), and NS_LOG_FUNCTION_NOARGS.
| uint8_t ns3::Ipv6Prefix::GetMinimumPrefixLength | ( | ) | const |
Get the minimum prefix length, i.e., 128 - the length of the largest sequence trailing zeroes.
Definition at line 978 of file ipv6-address.cc.
References m_prefix, and NS_LOG_FUNCTION.
Referenced by Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), and Ipv6Prefix().
|
static |
Get the "all-1" IPv6 mask (ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff).
Definition at line 931 of file ipv6-address.cc.
References Ipv6Prefix(), and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::Ipv6StaticRouting::AddHostRouteTo(), ns3::Ipv6StaticRouting::AddHostRouteTo(), ns3::Ipv6RoutingTableEntry::CreateHostRouteTo(), and ns3::Ipv6RoutingTableEntry::IsHost().
| uint8_t ns3::Ipv6Prefix::GetPrefixLength | ( | ) | const |
Get prefix length.
Definition at line 964 of file ipv6-address.cc.
References m_prefixLength, and NS_LOG_FUNCTION.
Referenced by ns3::SixLowPanNetDevice::CleanPrefix(), ns3::SixLowPanNetDevice::FindMulticastCompressionContext(), ns3::Ipv6StaticRouting::GetDefaultRoute(), ns3::RipNg::Lookup(), ns3::Ipv6StaticRouting::LookupStatic(), ns3::operator<<(), Print(), ns3::Ipv6StaticRouting::PrintRoutingTable(), and ns3::RipNg::PrintRoutingTable().
|
static |
Get the zero prefix ( /0).
Definition at line 939 of file ipv6-address.cc.
References Ipv6Prefix(), and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::RipNg::AddDefaultRouteTo(), ns3::RipNg::DoSendRouteUpdate(), ns3::RipNg::HandleRequests(), and ns3::Ipv6StaticRouting::SetDefaultRoute().
| bool ns3::Ipv6Prefix::IsMatch | ( | Ipv6Address | a, |
| Ipv6Address | b ) const |
Check whether two addresses have the same bits in the prefix portion of their addresses.
If the prefix length is 0, this method will return true regardless of the two address argument values. If the prefix length is 128, this method will require that the two address arguments are the same.
| a | first address to compare |
| b | second address to compare |
Definition at line 893 of file ipv6-address.cc.
References ns3::Ipv6Address::GetBytes(), m_prefix, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv6Interface::GetAddressMatchingDestination(), ns3::Ipv6StaticRouting::HasNetworkDest(), ns3::RipNg::Lookup(), ns3::Ipv6StaticRouting::LookupStatic(), ns3::Dhcp6Server::RenewRebindLeases(), and ns3::Dhcp6Server::SendReply().
| void ns3::Ipv6Prefix::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 915 of file ipv6-address.cc.
References GetPrefixLength(), and NS_LOG_FUNCTION.
Referenced by ns3::operator<<().
| void ns3::Ipv6Prefix::SetPrefixLength | ( | uint8_t | prefixLength | ) |
Set prefix length.
| prefixLength | the prefix length |
Definition at line 971 of file ipv6-address.cc.
References m_prefixLength, and NS_LOG_FUNCTION.
|
friend |
Not equal to operator.
| a | the first operand |
| b | the first operand |
Definition at line 694 of file ipv6-address.h.
References Ipv6Prefix(), and m_prefix.
|
friend |
Equal to operator.
| a | the first operand |
| b | the first operand |
Definition at line 688 of file ipv6-address.h.
References Ipv6Prefix(), and m_prefix.
|
private |
The prefix representation.
Definition at line 604 of file ipv6-address.h.
Referenced by Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), ConvertToIpv6Address(), GetBytes(), GetMinimumPrefixLength(), IsMatch(), operator!=, and operator==.
|
private |
The prefix length.
Definition at line 609 of file ipv6-address.h.
Referenced by Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), Ipv6Prefix(), GetPrefixLength(), and SetPrefixLength().