11#include "ns3/assert.h" 
   20#include <sys/socket.h> 
   45        auto plen = 
static_cast<uint32_t>(std::atoi(++mask));
 
   49            m_mask = 0xffffffff << (32 - plen);
 
   58        if (inet_pton(AF_INET, mask, &
m_mask) <= 0)
 
   60            NS_ABORT_MSG(
"Error, can not build an IPv4 mask from an invalid string: " << mask);
 
 
   98    os << ((
m_mask >> 24) & 0xff) << 
"." << ((
m_mask >> 16) & 0xff) << 
"." << ((
m_mask >> 8) & 0xff)
 
   99       << 
"." << ((
m_mask >> 0) & 0xff);
 
 
  106    static Ipv4Mask loopback(
"255.0.0.0");
 
 
  122    static Ipv4Mask ones(
"255.255.255.255");
 
 
  164    if (inet_pton(AF_INET, address, &
m_address) <= 0)
 
  166        NS_LOG_LOGIC(
"Error, can not build an IPv4 address from an invalid string: " << address);
 
 
  194    if (inet_pton(AF_INET, address, &
m_address) <= 0)
 
  196        NS_LOG_LOGIC(
"Error, can not build an IPv4 address from an invalid string: " << address);
 
 
  219                      "Trying to get subnet-directed broadcast address with an all-ones netmask");
 
 
  281    return (
m_address & 0xffffff00) == 0xe0000000;
 
 
  289    return (
m_address & 0xffff0000) == 0xa9fe0000;
 
 
  308    ipv4.m_address |= buf[0];
 
  309    ipv4.m_address <<= 8;
 
  310    ipv4.m_address |= buf[1];
 
  311    ipv4.m_address <<= 8;
 
  312    ipv4.m_address |= buf[2];
 
  313    ipv4.m_address <<= 8;
 
  314    ipv4.m_address |= buf[3];
 
  315    ipv4.m_initialized = 
true;
 
 
  332    return address.CheckCompatible(
GetType(), 4);
 
 
  402    return std::hash<uint32_t>()(x.Get());
 
 
a polymophic address class
static uint8_t Register()
Allocate a new type id for a new type of address.
size_t operator()(const Ipv4Address &x) const
Returns the hash of an IPv4 address.
Ipv4 addresses are stored in host order in this class.
void Print(std::ostream &os) const
Print this address to the given output stream.
static Ipv4Address GetLoopback()
Ipv4Address GetSubnetDirectedBroadcast(const Ipv4Mask &mask) const
Generate subnet-directed broadcast address corresponding to mask.
static Ipv4Address ConvertFrom(const Address &address)
static Ipv4Address GetZero()
static bool IsMatchingType(const Address &address)
void Set(uint32_t address)
input address is in host order.
bool IsSubnetDirectedBroadcast(const Ipv4Mask &mask) const
Generate subnet-directed broadcast address corresponding to mask.
static Ipv4Address GetBroadcast()
void Serialize(uint8_t buf[4]) const
Serialize this address to a 4-byte buffer.
Ipv4Address CombineMask(const Ipv4Mask &mask) const
Combine this address with a network mask.
uint32_t Get() const
Get the host-order 32-bit IP address.
static Ipv4Address Deserialize(const uint8_t buf[4])
static uint8_t GetType()
Get the underlying address type (automatically assigned).
bool m_initialized
IPv4 address has been explicitly initialized to a valid value.
uint32_t m_address
IPv4 address.
Address ConvertTo() const
Convert to an Address type.
static Ipv4Address GetAny()
bool IsInitialized() const
bool IsLocalMulticast() const
bool IsLinkLocal() const
If the IPv4 address is an APIPA address (169.254/16).
a class to represent an Ipv4 address mask
static Ipv4Mask GetOnes()
void Set(uint32_t mask)
input mask is in host order.
Ipv4Mask()
Will initialize to a garbage value (0x66666666)
uint16_t GetPrefixLength() const
uint32_t Get() const
Get the host-order 32-bit IP mask.
void Print(std::ostream &os) const
Print this mask to the given output stream.
uint32_t GetInverse() const
Return the inverse mask in host order.
bool IsMatch(Ipv4Address a, Ipv4Address b) const
static Ipv4Mask GetLoopback()
static Ipv4Mask GetZero()
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
#define ATTRIBUTE_HELPER_CPP(type)
Define the attribute value, accessor and checkers for class type
#define NS_ABORT_MSG(msg)
Unconditional abnormal program termination with a message.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::ostream & operator<<(std::ostream &os, const Angles &a)
std::istream & operator>>(std::istream &is, Angles &a)
static constexpr uint32_t UNINITIALIZED
Value of a not-yet-initialized IPv4 address, corresponding to 102.102.102.102.