src/helper/ipv4-address-helper.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 07 Apr 2008 10:41:21 -0700
changeset 2888 872dc8466352
parent 2748 f65f6e2629dc
child 2983 e3a416fe9dd5
permissions -rw-r--r--
Ipv4AddressHelper::Allocate -> Ipv4AddressHelper::Assign
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     2
/*
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     3
 * Copyright (c) 2008 University of Washington
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     4
 *
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     8
 *
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    12
 * GNU General Public License for more details.
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    13
 *
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    17
 */
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    18
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    19
#include "ns3/assert.h"
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    20
#include "ns3/log.h"
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    21
#include "ns3/ptr.h"
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    22
#include "ns3/node.h"
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    23
#include "ns3/net-device.h"
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    24
#include "ns3/ipv4.h"
2722
f59635c9c679 address generator, address collision checker
Craig Dowell <craigdo@ee.washington.edu>
parents: 2713
diff changeset
    25
#include "ns3/ipv4-address-generator.h"
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    26
#include "ipv4-address-helper.h"
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    27
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    28
NS_LOG_COMPONENT_DEFINE("Ipv4AddressHelper");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    29
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    30
namespace ns3 {
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    31
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    32
Ipv4AddressHelper::Ipv4AddressHelper () 
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    33
{
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    34
  NS_LOG_FUNCTION;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    35
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    36
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    37
// Set the default values to an illegal state.  Do this so the client is 
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    38
// forced to think at least briefly about what addresses get used and what
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    39
// is going on here.
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    40
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    41
  m_network = 0xffffffff;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    42
  m_mask = 0;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    43
  m_address = 0xffffffff;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    44
  m_base = 0xffffffff;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    45
  m_shift = 0xffffffff;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    46
  m_max = 0xffffffff;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    47
}
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    48
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    49
  void
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    50
Ipv4AddressHelper::SetBase (
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    51
  const Ipv4Address network, 
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    52
  const Ipv4Mask mask,
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    53
  const Ipv4Address address)
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    54
{
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    55
  NS_LOG_FUNCTION;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    56
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    57
  m_network = network.GetHostOrder ();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    58
  m_mask = mask.GetHostOrder ();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    59
  m_base = m_address = address.GetHostOrder ();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    60
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    61
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    62
// Some quick reasonableness testing.
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    63
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    64
  NS_ASSERT_MSG((m_network & ~m_mask) == 0,
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    65
    "Ipv4AddressHelper::SetBase(): Inconsistent network and mask");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    66
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    67
  NS_ASSERT_MSG((m_address & m_mask) == 0,
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    68
    "Ipv4AddressHelper::SetBase(): Inconsistent address and mask");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    69
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    70
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    71
// Figure out how much to shift network numbers to get them aligned, and what
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    72
// the maximum allowed address is with respect to the current mask.
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    73
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    74
  m_shift = NumAddressBits (m_mask);
2712
02f089bd33f0 typos in doxygen, default to 0.0.0.1, avoid broadcast address
Craig Dowell <craigdo@ee.washington.edu>
parents: 2711
diff changeset
    75
  m_max = (1 << m_shift) - 2;
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    76
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    77
  NS_ASSERT_MSG(m_shift <= 32,
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    78
    "Ipv4AddressHelper::SetBase(): Unreasonable address length");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    79
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    80
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    81
// Shift the network down into the normalized position.
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    82
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    83
  m_network >>= m_shift;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    84
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    85
  NS_LOG_LOGIC ("m_network == " << m_network);
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    86
  NS_LOG_LOGIC ("m_mask == " << m_mask);
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    87
  NS_LOG_LOGIC ("m_address == " << m_address);
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    88
}
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    89
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    90
  Ipv4Address
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    91
Ipv4AddressHelper::NewAddress (void)
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    92
{
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    93
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    94
// The way this is expected to be used is that an address and network number
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    95
// are initialized, and then NewAddress() is called repeatedly to allocate and
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    96
// get new addresses on a given subnet.  The client will expect that the first
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    97
// address she gets back is the one she used to initialize the generator with.
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    98
// This implies that this operation is a post-increment.
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    99
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   100
  NS_ASSERT_MSG (m_address <= m_max,
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   101
    "Ipv4AddressHelper::NewAddress(): Address overflow");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   102
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   103
  Ipv4Address addr ((m_network << m_shift) | m_address);
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   104
  ++m_address;
2722
f59635c9c679 address generator, address collision checker
Craig Dowell <craigdo@ee.washington.edu>
parents: 2713
diff changeset
   105
//
f59635c9c679 address generator, address collision checker
Craig Dowell <craigdo@ee.washington.edu>
parents: 2713
diff changeset
   106
// The Ipv4AddressGenerator allows us to keep track of the addresses we have
f59635c9c679 address generator, address collision checker
Craig Dowell <craigdo@ee.washington.edu>
parents: 2713
diff changeset
   107
// allocated and will assert if we accidentally generate a duplicate.  This
f59635c9c679 address generator, address collision checker
Craig Dowell <craigdo@ee.washington.edu>
parents: 2713
diff changeset
   108
// avoids some really hard to debug problems.
f59635c9c679 address generator, address collision checker
Craig Dowell <craigdo@ee.washington.edu>
parents: 2713
diff changeset
   109
//
f59635c9c679 address generator, address collision checker
Craig Dowell <craigdo@ee.washington.edu>
parents: 2713
diff changeset
   110
  Ipv4AddressGenerator::AddAllocated (addr);
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   111
  return addr;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   112
}
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   113
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   114
  Ipv4Address
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   115
Ipv4AddressHelper::NewNetwork (void)
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   116
{
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   117
  NS_LOG_FUNCTION;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   118
  ++m_network;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   119
  m_address = m_base;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   120
  return Ipv4Address (m_network << m_shift);
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   121
}
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   122
2748
f65f6e2629dc introduce Ipv4InterfaceContainer and make Ipv4AddressHelper::Allocate return it.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2733
diff changeset
   123
Ipv4InterfaceContainer
2888
872dc8466352 Ipv4AddressHelper::Allocate -> Ipv4AddressHelper::Assign
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2748
diff changeset
   124
Ipv4AddressHelper::Assign (const NetDeviceContainer &c)
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   125
{
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   126
  NS_LOG_FUNCTION;
2748
f65f6e2629dc introduce Ipv4InterfaceContainer and make Ipv4AddressHelper::Allocate return it.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2733
diff changeset
   127
  Ipv4InterfaceContainer retval;
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   128
  for (uint32_t i = 0; i < c.GetN (); ++i) {
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   129
    Ptr<NetDevice> device = c.Get (i);
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   130
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   131
    Ptr<Node> node = device->GetNode ();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   132
    NS_ASSERT_MSG (node, "Ipv4AddressHelper::Allocate(): Bad node");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   133
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   134
    Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> ();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   135
    NS_ASSERT_MSG (ipv4, "Ipv4AddressHelper::Allocate(): Bad ipv4");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   136
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   137
    int32_t ifIndex = ipv4->FindInterfaceForDevice (device);
2729
da9f089742ed create an ipv4 interface if there is none.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2713
diff changeset
   138
    if (ifIndex == -1)
da9f089742ed create an ipv4 interface if there is none.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2713
diff changeset
   139
      {
da9f089742ed create an ipv4 interface if there is none.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2713
diff changeset
   140
        ifIndex = ipv4->AddInterface (device);
da9f089742ed create an ipv4 interface if there is none.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2713
diff changeset
   141
      }
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   142
    NS_ASSERT_MSG (ifIndex >= 0, "Ipv4AddressHelper::Allocate(): "
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   143
      "Interface index not found");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   144
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   145
    ipv4->SetAddress (ifIndex, NewAddress ());
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   146
    ipv4->SetNetworkMask (ifIndex, m_mask);
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   147
    ipv4->SetMetric (ifIndex, 1);
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   148
    ipv4->SetUp (ifIndex);
2748
f65f6e2629dc introduce Ipv4InterfaceContainer and make Ipv4AddressHelper::Allocate return it.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2733
diff changeset
   149
    retval.Add (ipv4, ifIndex);
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   150
  }
2748
f65f6e2629dc introduce Ipv4InterfaceContainer and make Ipv4AddressHelper::Allocate return it.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2733
diff changeset
   151
  return retval;
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   152
}
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   153
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   154
const uint32_t N_BITS = 32;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   155
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   156
  uint32_t
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   157
Ipv4AddressHelper::NumAddressBits (uint32_t maskbits) const
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   158
{
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   159
  NS_LOG_FUNCTION;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   160
  for (uint32_t i = 0; i < N_BITS; ++i)
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   161
    {
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   162
      if (maskbits & 1)
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   163
        {
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   164
          NS_LOG_LOGIC ("NumAddressBits -> " << i);
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   165
          return i;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   166
        }
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   167
      maskbits >>= 1;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   168
    }
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   169
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   170
  NS_ASSERT_MSG(false, "Ipv4AddressHelper::NumAddressBits(): Bad Mask");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   171
  return 0;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   172
}
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   173
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   174
}; // namespace ns3
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   175
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   176
#ifdef RUN_SELF_TESTS
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   177
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   178
#include "ns3/test.h"
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   179
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   180
namespace ns3 {
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   181
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   182
class AddressHelperTest : public Test
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   183
{
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   184
public:
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   185
  AddressHelperTest ();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   186
  virtual bool RunTests (void);
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   187
};
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   188
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   189
static AddressHelperTest g_addressHelperTest;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   190
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   191
AddressHelperTest::AddressHelperTest ()
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   192
  : Test ("AddressHelper")
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   193
{
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   194
}
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   195
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   196
  bool
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   197
AddressHelperTest::RunTests (void)
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   198
{
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   199
  bool result = true;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   200
  Ipv4Address network;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   201
  Ipv4Address address;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   202
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   203
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   204
// Make sure the network allocator part is working on some common network
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   205
// prefixes.
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   206
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   207
  Ipv4AddressHelper h;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   208
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   209
  h.SetBase ("1.0.0.0", "255.0.0.0");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   210
  network = h.NewNetwork();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   211
  NS_TEST_ASSERT_EQUAL (network, Ipv4Address ("2.0.0.0"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   212
  address = h.NewAddress();
2713
d0d5904c0fe2 fix unit tests
Craig Dowell <craigdo@ee.washington.edu>
parents: 2712
diff changeset
   213
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("2.0.0.1"));
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   214
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   215
  h.SetBase ("0.1.0.0", "255.255.0.0");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   216
  network = h.NewNetwork();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   217
  NS_TEST_ASSERT_EQUAL (network, Ipv4Address ("0.2.0.0"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   218
  address = h.NewAddress();
2713
d0d5904c0fe2 fix unit tests
Craig Dowell <craigdo@ee.washington.edu>
parents: 2712
diff changeset
   219
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("0.2.0.1"));
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   220
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   221
  h.SetBase ("0.0.1.0", "255.255.255.0");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   222
  network = h.NewNetwork();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   223
  NS_TEST_ASSERT_EQUAL (network, Ipv4Address ("0.0.2.0"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   224
  address = h.NewAddress();
2713
d0d5904c0fe2 fix unit tests
Craig Dowell <craigdo@ee.washington.edu>
parents: 2712
diff changeset
   225
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("0.0.2.1"));
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   226
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   227
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   228
// Make sure the address allocator part is working.
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   229
//
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   230
  h.SetBase ("1.0.0.0", "255.0.0.0", "0.0.0.3");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   231
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   232
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("1.0.0.3"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   233
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   234
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("1.0.0.4"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   235
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   236
  h.SetBase ("0.1.0.0", "255.255.0.0", "0.0.0.3");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   237
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   238
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("0.1.0.3"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   239
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   240
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("0.1.0.4"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   241
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   242
  h.SetBase ("0.0.1.0", "255.255.255.0", "0.0.0.3");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   243
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   244
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("0.0.1.3"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   245
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   246
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("0.0.1.4"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   247
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   248
//
2722
f59635c9c679 address generator, address collision checker
Craig Dowell <craigdo@ee.washington.edu>
parents: 2713
diff changeset
   249
// Make sure the reset to base behavior is working.  We're going to use some
f59635c9c679 address generator, address collision checker
Craig Dowell <craigdo@ee.washington.edu>
parents: 2713
diff changeset
   250
// of the same addresses allocated above, so reset the Ipv4AddressGenerator
f59635c9c679 address generator, address collision checker
Craig Dowell <craigdo@ee.washington.edu>
parents: 2713
diff changeset
   251
// to make it forget we did.
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   252
//
2722
f59635c9c679 address generator, address collision checker
Craig Dowell <craigdo@ee.washington.edu>
parents: 2713
diff changeset
   253
  Ipv4AddressGenerator::Reset ();
f59635c9c679 address generator, address collision checker
Craig Dowell <craigdo@ee.washington.edu>
parents: 2713
diff changeset
   254
2711
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   255
  h.SetBase ("1.0.0.0", "255.0.0.0", "0.0.0.3");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   256
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   257
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("1.0.0.3"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   258
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   259
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("1.0.0.4"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   260
  network = h.NewNetwork();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   261
  NS_TEST_ASSERT_EQUAL (network, Ipv4Address ("2.0.0.0"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   262
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   263
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("2.0.0.3"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   264
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   265
  h.SetBase ("0.1.0.0", "255.255.0.0", "0.0.0.3");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   266
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   267
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("0.1.0.3"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   268
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   269
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("0.1.0.4"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   270
  network = h.NewNetwork();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   271
  NS_TEST_ASSERT_EQUAL (network, Ipv4Address ("0.2.0.0"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   272
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   273
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("0.2.0.3"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   274
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   275
  h.SetBase ("0.0.1.0", "255.255.255.0", "0.0.0.3");
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   276
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   277
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("0.0.1.3"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   278
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   279
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("0.0.1.4"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   280
  network = h.NewNetwork();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   281
  NS_TEST_ASSERT_EQUAL (network, Ipv4Address ("0.0.2.0"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   282
  address = h.NewAddress();
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   283
  NS_TEST_ASSERT_EQUAL (address, Ipv4Address ("0.0.2.3"));
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   284
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   285
  return true;
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   286
}
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   287
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   288
} // namespace ns3
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   289
83addb15f632 ip helper and find ip interface for device method on ipv4
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   290
#endif /* RUN_SELF_TEST */