allow Ipv4Mask constructor to accept a string /32, /24 etc. in constructor
This commit is contained in:
@@ -87,12 +87,12 @@ main (int argc, char *argv[])
|
||||
int32_t ifIndexA = ipv4A->AddInterface (deviceA);
|
||||
int32_t ifIndexC = ipv4C->AddInterface (deviceC);
|
||||
|
||||
Ipv4InterfaceAddress ifInAddrA = Ipv4InterfaceAddress (Ipv4Address ("172.16.1.1"), Ipv4Mask ("255.255.255.255"));
|
||||
Ipv4InterfaceAddress ifInAddrA = Ipv4InterfaceAddress (Ipv4Address ("172.16.1.1"), Ipv4Mask ("/32"));
|
||||
ipv4A->AddAddress (ifIndexA, ifInAddrA);
|
||||
ipv4A->SetMetric (ifIndexA, 1);
|
||||
ipv4A->SetUp (ifIndexA);
|
||||
|
||||
Ipv4InterfaceAddress ifInAddrC = Ipv4InterfaceAddress (Ipv4Address ("192.168.1.1"), Ipv4Mask ("255.255.255.255"));
|
||||
Ipv4InterfaceAddress ifInAddrC = Ipv4InterfaceAddress (Ipv4Address ("192.168.1.1"), Ipv4Mask ("/32"));
|
||||
ipv4C->AddAddress (ifIndexC, ifInAddrC);
|
||||
ipv4C->SetMetric (ifIndexC, 1);
|
||||
ipv4C->SetUp (ifIndexC);
|
||||
|
||||
@@ -28,6 +28,7 @@ namespace ns3 {
|
||||
|
||||
#define ASCII_DOT (0x2e)
|
||||
#define ASCII_ZERO (0x30)
|
||||
#define ASCII_SLASH (0x2f)
|
||||
|
||||
static uint32_t
|
||||
AsciiToIpv4Host (char const *address)
|
||||
@@ -63,9 +64,18 @@ Ipv4Mask::Ipv4Mask ()
|
||||
Ipv4Mask::Ipv4Mask (uint32_t mask)
|
||||
: m_mask (mask)
|
||||
{}
|
||||
|
||||
Ipv4Mask::Ipv4Mask (char const *mask)
|
||||
{
|
||||
m_mask = AsciiToIpv4Host (mask);
|
||||
if (*mask == ASCII_SLASH)
|
||||
{
|
||||
m_mask = static_cast<uint32_t> (atoi (++mask));
|
||||
NS_ASSERT (m_mask <= 32);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_mask = AsciiToIpv4Host (mask);
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
|
||||
@@ -198,11 +198,26 @@ private:
|
||||
* \ingroup address
|
||||
*
|
||||
* \brief a class to represent an Ipv4 address mask
|
||||
*
|
||||
* The constructor takes arguments according to a few formats.
|
||||
* Ipv4Mask ("255.255.255.255"), Ipv4Mask ("/32"), and Ipv4Mask (0xffffffff)
|
||||
* are all equivalent.
|
||||
*/
|
||||
class Ipv4Mask {
|
||||
public:
|
||||
/**
|
||||
* Will initialize to a garbage value (0x66666666)
|
||||
*/
|
||||
Ipv4Mask ();
|
||||
/**
|
||||
* param mask bitwise integer representation of the mask
|
||||
*
|
||||
* For example, the integer input 0xffffff00 yields a 24-bit mask
|
||||
*/
|
||||
Ipv4Mask (uint32_t mask);
|
||||
/**
|
||||
* \param mask String constant either in "255.255.255.0" or "/24" format
|
||||
*/
|
||||
Ipv4Mask (char const *mask);
|
||||
/**
|
||||
* \param a first address to compare
|
||||
|
||||
Reference in New Issue
Block a user