src/routing/static-route-manager.cc
author Tom Henderson <tomh@tomh.org>
Mon, 09 Jul 2007 02:41:33 -0700
changeset 1049 b572b65faba3
parent 1048 9bbf68fe9c09
child 1053 57341f5736a7
permissions -rw-r--r--
Fill out self-tests example
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1045
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     2
/*
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     3
 * This program is free software; you can redistribute it and/or modify
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     4
 * it under the terms of the GNU General Public License version 2 as
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     5
 * published by the Free Software Foundation;
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     6
 *
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     7
 * This program is distributed in the hope that it will be useful,
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    10
 * GNU General Public License for more details.
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    11
 *
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    12
 * You should have received a copy of the GNU General Public License
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    13
 * along with this program; if not, write to the Free Software
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    15
 */
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    16
#include <utility>
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    17
#include <vector>
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    18
#include "ns3/assert.h"
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    19
#include "ns3/fatal-error.h"
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    20
#include "ns3/debug.h"
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    21
#include "ns3/node-list.h"
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    22
#include "static-router.h"
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    23
#include "static-route-manager.h"
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    24
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    25
NS_DEBUG_COMPONENT_DEFINE ("StaticRouteManager");
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    26
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    27
namespace ns3 {
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    28
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    29
StaticRouteManager::StaticRouteManager ()
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    30
{
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    31
}
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    32
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    33
StaticRouteManager::~StaticRouteManager ()
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    34
{}
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    35
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    36
void
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    37
StaticRouteManager::BuildStaticRoutingDatabase () 
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    38
{
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    39
  // walk list of nodes.  QI for StaticRouter interface.
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    40
  // if node has a StaticRouter interface, grab the LSAs 
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    41
  // from it and stick them in the LSDB
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    42
  typedef std::vector < Ptr<Node> >::iterator Iterator;
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    43
  for (Iterator i = NodeList::Begin(); i != NodeList::End(); i++)
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    44
    {
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    45
      Ptr<Node> node = *i;
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    46
      NS_DEBUG_UNCOND ("node="<< node->GetId () );
1048
9bbf68fe9c09 checkpoint
Craig Dowell <craigdo@ee.washington.edu>
parents: 1045
diff changeset
    47
9bbf68fe9c09 checkpoint
Craig Dowell <craigdo@ee.washington.edu>
parents: 1045
diff changeset
    48
      Ptr<StaticRouter> rtr = 
9bbf68fe9c09 checkpoint
Craig Dowell <craigdo@ee.washington.edu>
parents: 1045
diff changeset
    49
        node->QueryInterface<StaticRouter> (StaticRouter::iid);
9bbf68fe9c09 checkpoint
Craig Dowell <craigdo@ee.washington.edu>
parents: 1045
diff changeset
    50
      NS_ASSERT_MSG(rtr, "QI for <StaticRouter> interface failed");
9bbf68fe9c09 checkpoint
Craig Dowell <craigdo@ee.washington.edu>
parents: 1045
diff changeset
    51
9bbf68fe9c09 checkpoint
Craig Dowell <craigdo@ee.washington.edu>
parents: 1045
diff changeset
    52
      uint32_t numLSAs = rtr->GetNumLSAs();
9bbf68fe9c09 checkpoint
Craig Dowell <craigdo@ee.washington.edu>
parents: 1045
diff changeset
    53
      NS_DEBUG_UNCOND (numLSAs << "LSAs");
1045
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    54
    }
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    55
}
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    56
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    57
void
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    58
StaticRouteManager::InitializeRoutes ()
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    59
{
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    60
  // For each node that is a static router (which can be determined by
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    61
  // the presence of StaticRouter interface), run Dijkstra SPF calculation
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    62
  // on the database rooted at that router, and populate the node
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    63
  // forwarding tables
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    64
}
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    65
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    66
} // namespace ns3
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    67
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    68
#ifdef RUN_SELF_TESTS
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    69
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    70
#include "ns3/test.h"
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    71
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    72
namespace ns3 {
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    73
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    74
class StaticRouteManagerTest : public Test {
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    75
public:
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    76
  StaticRouteManagerTest ();
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    77
  virtual ~StaticRouteManagerTest ();
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    78
  virtual bool RunTests (void);
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    79
};
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    80
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    81
StaticRouteManagerTest::StaticRouteManagerTest ()
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    82
  : Test ("StaticRouteManager")
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    83
{
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    84
}
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    85
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    86
StaticRouteManagerTest::~StaticRouteManagerTest ()
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    87
{}
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    88
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    89
bool
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    90
StaticRouteManagerTest::RunTests (void)
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    91
{
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    92
  bool ok = true;
1049
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
    93
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
    94
  // Build fake link state database; four routers (0-3), 3 point-to-point
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
    95
  // links
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
    96
  //
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
    97
  //   n0
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
    98
  //      \ link 0
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
    99
  //       \          link 2
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   100
  //        n2 -------------------------n3
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   101
  //       /
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   102
  //      / link 1
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   103
  //    n1
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   104
  //
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   105
  //  link0:  10.1.1.1/30, 10.1.1.2/30
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   106
  //  link1:  10.1.2.1/30, 10.1.2.2/30
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   107
  //  link2:  10.1.3.1/30, 10.1.3.2/30
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   108
  //
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   109
  // Router 0
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   110
  StaticRouterLinkRecord* lr0 = new StaticRouterLinkRecord();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   111
  lr0->m_linkId.Set(2);  // router ID 0.0.0.2
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   112
  lr0->m_linkData.Set("10.1.1.1");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   113
  lr0->m_linkType = StaticRouterLinkRecord::PointToPoint;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   114
  lr0->m_metric = 1;
1045
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   115
  StaticRouterLinkRecord* lr1 = new StaticRouterLinkRecord();
1049
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   116
  lr1->m_linkId.Set("10.1.1.1");  
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   117
  lr1->m_linkData.Set("255.255.255.252");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   118
  lr1->m_linkType = StaticRouterLinkRecord::StubNetwork;
1045
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   119
  lr1->m_metric = 1;
1049
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   120
  StaticRouterLSA* lsa0 = new StaticRouterLSA();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   121
  lsa0->m_linkStateId.Set(1);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   122
  lsa0->m_advertisingRtr.Set(1);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   123
  lsa0->AddLinkRecord(lr0);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   124
  lsa0->AddLinkRecord(lr1);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   125
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   126
  // Router 1
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   127
  StaticRouterLinkRecord* lr2 = new StaticRouterLinkRecord();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   128
  lr2->m_linkId.Set(2);  // router ID 0.0.0.2
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   129
  lr2->m_linkData.Set("10.1.2.1");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   130
  lr2->m_linkType = StaticRouterLinkRecord::PointToPoint;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   131
  lr2->m_metric = 1;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   132
  StaticRouterLinkRecord* lr3 = new StaticRouterLinkRecord();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   133
  lr3->m_linkId.Set("10.1.2.1");  
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   134
  lr3->m_linkData.Set("255.255.255.252");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   135
  lr3->m_linkType = StaticRouterLinkRecord::StubNetwork;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   136
  lr3->m_metric = 1;
1045
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   137
  StaticRouterLSA* lsa1 = new StaticRouterLSA();
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   138
  lsa1->m_linkStateId.Set(1);
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   139
  lsa1->m_advertisingRtr.Set(1);
1049
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   140
  lsa1->AddLinkRecord(lr2);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   141
  lsa1->AddLinkRecord(lr3);
1045
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   142
  
1049
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   143
  // Router 2 
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   144
  StaticRouterLinkRecord* lr4 = new StaticRouterLinkRecord();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   145
  lr4->m_linkId.Set("0.0.0.0");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   146
  lr4->m_linkData.Set("10.1.1.2");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   147
  lr4->m_linkType = StaticRouterLinkRecord::PointToPoint;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   148
  lr4->m_metric = 1;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   149
  StaticRouterLinkRecord* lr5 = new StaticRouterLinkRecord();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   150
  lr5->m_linkId.Set("10.1.1.2");  
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   151
  lr5->m_linkData.Set("255.255.255.252");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   152
  lr5->m_linkType = StaticRouterLinkRecord::StubNetwork;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   153
  lr5->m_metric = 1;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   154
  StaticRouterLinkRecord* lr6 = new StaticRouterLinkRecord();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   155
  lr6->m_linkId.Set(1);  
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   156
  lr6->m_linkData.Set("10.1.2.2");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   157
  lr6->m_linkType = StaticRouterLinkRecord::PointToPoint;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   158
  lr6->m_metric = 1;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   159
  StaticRouterLinkRecord* lr7 = new StaticRouterLinkRecord();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   160
  lr7->m_linkId.Set("10.1.2.2");  
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   161
  lr7->m_linkData.Set("255.255.255.252");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   162
  lr7->m_linkType = StaticRouterLinkRecord::StubNetwork;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   163
  lr7->m_metric = 1;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   164
  StaticRouterLinkRecord* lr8 = new StaticRouterLinkRecord();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   165
  lr8->m_linkId.Set(3);  
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   166
  lr8->m_linkData.Set("10.1.3.2");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   167
  lr8->m_linkType = StaticRouterLinkRecord::PointToPoint;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   168
  lr8->m_metric = 1;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   169
  StaticRouterLinkRecord* lr9 = new StaticRouterLinkRecord();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   170
  lr9->m_linkId.Set("10.1.3.2");  
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   171
  lr9->m_linkData.Set("255.255.255.252");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   172
  lr9->m_linkType = StaticRouterLinkRecord::StubNetwork;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   173
  lr9->m_metric = 1;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   174
  StaticRouterLSA* lsa2 = new StaticRouterLSA();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   175
  lsa2->m_linkStateId.Set(2);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   176
  lsa2->m_advertisingRtr.Set(2);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   177
  lsa2->AddLinkRecord(lr4);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   178
  lsa2->AddLinkRecord(lr5);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   179
  lsa2->AddLinkRecord(lr6);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   180
  lsa2->AddLinkRecord(lr7);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   181
  lsa2->AddLinkRecord(lr8);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   182
  lsa2->AddLinkRecord(lr9);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   183
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   184
  // Router 3
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   185
  StaticRouterLinkRecord* lr10 = new StaticRouterLinkRecord();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   186
  lr10->m_linkId.Set(2);  // router ID 0.0.0.2
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   187
  lr10->m_linkData.Set("10.1.2.1");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   188
  lr10->m_linkType = StaticRouterLinkRecord::PointToPoint;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   189
  lr10->m_metric = 1;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   190
  StaticRouterLinkRecord* lr11 = new StaticRouterLinkRecord();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   191
  lr11->m_linkId.Set("10.1.2.1");  
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   192
  lr11->m_linkData.Set("255.255.255.252");
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   193
  lr11->m_linkType = StaticRouterLinkRecord::StubNetwork;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   194
  lr11->m_metric = 1;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   195
  StaticRouterLSA* lsa3 = new StaticRouterLSA();
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   196
  lsa3->m_linkStateId.Set(3);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   197
  lsa3->m_advertisingRtr.Set(3);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   198
  lsa3->AddLinkRecord(lr2);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   199
  lsa3->AddLinkRecord(lr3);
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   200
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   201
  // Add four LSAs to the database; XXX todo next
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   202
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   203
  delete lsa0;
1045
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   204
  delete lsa1;
1049
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   205
  delete lsa2;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   206
  delete lsa3;
b572b65faba3 Fill out self-tests example
Tom Henderson <tomh@tomh.org>
parents: 1048
diff changeset
   207
1045
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   208
  return ok;
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   209
}
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   210
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   211
static StaticRouteManagerTest g_staticRouteManagerTest;
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   212
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   213
} // namespace ns3
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   214
c2c43e021fb7 Add ctor/dtor to StaticRouterLSA, add the Add() method to add link records, misc. cleanup
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   215
#endif