src/devices/p2p/p2p-topology.cc
author Tom Henderson <tomh@tomh.org>
Sun, 25 Mar 2007 07:13:03 -0700
changeset 369 29ea5d1a83c8
parent 368 1df1165d6a68
child 373 960c8e8721de
permissions -rw-r--r--
Rename classes from Serial to PointToPoint
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
368
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     2
//
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     3
// Copyright (c) 2006 Georgia Tech Research Corporation
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     4
//
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     5
// This program is free software; you can redistribute it and/or modify
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     6
// it under the terms of the GNU General Public License version 2 as
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     7
// published by the Free Software Foundation;
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     8
//
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     9
// This program is distributed in the hope that it will be useful,
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    12
// GNU General Public License for more details.
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    13
//
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    14
// You should have received a copy of the GNU General Public License
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    15
// along with this program; if not, write to the Free Software
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    16
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    17
//
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    18
// Author: George F. Riley<riley@ece.gatech.edu>
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    19
//
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    20
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    21
//
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    22
// Topology helper for ns3.
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    23
// George F. Riley, Georgia Tech, Spring 2007
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    24
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    25
#include "ns3/debug.h"
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    26
#include "ns3/assert.h"
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    27
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    28
#include "ns3/nstime.h"
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    29
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    30
#include "ns3/internet-node.h"
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    31
#include "ns3/ipv4-address.h"
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    32
#include "ns3/drop-tail.h"
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    33
#include "ns3/arp-ipv4-interface.h"
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    34
#include "ns3/ipv4.h"
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    35
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    36
#include "p2p-channel.h"
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    37
#include "p2p-net-device.h"
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    38
#include "p2p-topology.h"
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    39
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    40
#define nil 0
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    41
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    42
namespace ns3 {
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    43
369
29ea5d1a83c8 Rename classes from Serial to PointToPoint
Tom Henderson <tomh@tomh.org>
parents: 368
diff changeset
    44
PointToPointChannel *
29ea5d1a83c8 Rename classes from Serial to PointToPoint
Tom Henderson <tomh@tomh.org>
parents: 368
diff changeset
    45
PointToPointTopology::AddPointToPointLink(
368
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    46
  Node* a,
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    47
  const Ipv4Address& addra,
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    48
  Node* b,
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    49
  const Ipv4Address& addrb,
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    50
  uint64_t bps,
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    51
  const Time& delay)
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    52
{
369
29ea5d1a83c8 Rename classes from Serial to PointToPoint
Tom Henderson <tomh@tomh.org>
parents: 368
diff changeset
    53
  PointToPointChannel* channel = new PointToPointChannel(bps, delay);
368
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    54
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    55
  // Duplex link is assumed to be subnetted as a /30
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    56
  // May run this unnumbered in the future?
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    57
  Ipv4Mask netmask("255.255.255.252");
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    58
  NS_ASSERT (netmask.IsMatch(addra,addrb));
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    59
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    60
  DropTailQueue* dtqa = new DropTailQueue();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    61
369
29ea5d1a83c8 Rename classes from Serial to PointToPoint
Tom Henderson <tomh@tomh.org>
parents: 368
diff changeset
    62
  PointToPointNetDevice* neta = new PointToPointNetDevice(a);
368
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    63
  neta->AddQueue(dtqa);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    64
  Ipv4Interface *interfA = new ArpIpv4Interface (a, neta);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    65
  uint32_t indexA = a->GetIpv4 ()->AddInterface (interfA);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    66
  neta->Attach (channel);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    67
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    68
  interfA->SetAddress (addra);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    69
  interfA->SetNetworkMask (netmask);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    70
  interfA->SetUp ();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    71
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    72
  DropTailQueue* dtqb = new DropTailQueue();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    73
369
29ea5d1a83c8 Rename classes from Serial to PointToPoint
Tom Henderson <tomh@tomh.org>
parents: 368
diff changeset
    74
  PointToPointNetDevice* netb = new PointToPointNetDevice(b);
368
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    75
  netb->AddQueue(dtqb);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    76
  Ipv4Interface *interfB = new ArpIpv4Interface (b, netb);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    77
  uint32_t indexB = b->GetIpv4 ()->AddInterface (interfB);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    78
  netb->Attach (channel);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    79
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    80
  interfB->SetAddress (addrb);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    81
  interfB->SetNetworkMask (netmask);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    82
  interfB->SetUp ();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    83
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    84
  a->GetIpv4 ()->AddHostRouteTo (addrb, indexA);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    85
  b->GetIpv4 ()->AddHostRouteTo (addra, indexB);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    86
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    87
  return channel;
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    88
}
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    89
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    90
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    91
#if 0
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    92
P2PChannel* Topology::AddDuplexLink(Node* n1, const IPAddr& ip1, 
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    93
                                    Node* n2, const IPAddr& ip2,
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    94
                                    const Rate& rate, const Time& delay)
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    95
{
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    96
  // First get the NetDeviceList capability from each node
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    97
  NetDeviceList* ndl1 = n1->GetNetDeviceList();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    98
  NetDeviceList* ndl2 = n2->GetNetDeviceList();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    99
  if (!ndl1 || !ndl2) return nil;  // Both ends must have NetDeviceList
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   100
  // Get the net devices
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   101
  P2PNetDevice* nd1 = ndl1->Add(P2PNetDevice(n1, rate, nil));
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   102
  P2PNetDevice* nd2 = ndl2->Add(P2PNetDevice(n1, rate, nd1->GetChannel()));
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   103
  // Not implemented yet.  Add appropriate layer 2 protocol for
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   104
  // the net devices.
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   105
  // Get the L3 proto for node 1 and configure it with this device
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   106
  L3Demux*    l3demux1 = n1->GetL3Demux();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   107
  L3Protocol* l3proto1 = nil;
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   108
  // If the node 1 l3 demux exists, find the coresponding l3 protocol
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   109
  if (l3demux1) l3proto1 = l3demux1->Lookup(ip1.L3Proto());
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   110
  // If the l3 protocol exists, configure this net device.  Use a mask
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   111
  // of all ones, since there is only one device on the remote end
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   112
  // of this link
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   113
  if (l3proto1) l3proto1->AddNetDevice(nd1, ip1, ip1.GetMask(ip1.Size()*8));
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   114
  // Same for node 2
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   115
  L3Demux*    l3demux2 = n2->GetL3Demux();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   116
  L3Protocol* l3proto2 = nil;
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   117
  // If the node 2 l3 demux exists, find the coresponding l3 protocol
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   118
  if (l3demux2) l3proto2 = l3demux2->Lookup(ip2.L3Proto());
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   119
  if (l3proto2) l3proto2->AddNetDevice(nd2, ip2, ip2.GetMask(ip2.Size()*8));
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   120
  return dynamic_cast<P2PChannel*>(nd1->GetChannel());  // Always succeeds
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   121
}
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   122
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   123
// Get the net device connecting node n1 to n2.  For topologies where
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   124
// there are possibly multiple devices connecting n1 and n2 (for example
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   125
// wireless with two devices on different channels) this will return
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   126
// the first one found.
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   127
NetDevice* Topology::GetNetDevice(Node* n1, Node* n2)
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   128
{
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   129
  // First get the NetDeviceList capability from node 1
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   130
  NetDeviceList* ndl1 = n1->GetNetDeviceList();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   131
  if (!ndl1) return 0; // No devices, return nil
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   132
  // Get the list of devices
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   133
  const NetDeviceList::NetDevices_t& dlist = ndl1->GetAll();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   134
  for (NetDeviceList::NetDevices_t::const_iterator i = dlist.Begin();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   135
       i != dlist.End(); ++i)
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   136
    { // Check each device
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   137
      NetDevice* nd = *i; // next device
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   138
      Channel* c = nd->GetChannel();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   139
      if (!c) continue; // No channel
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   140
      if (c->NodeIsPeer(n2)) return nd; // found it
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   141
    }
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   142
  return 0; // None found
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   143
}
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   144
  
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   145
// Get the channel connecting node n1 to node n2
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   146
Channel* Topology::GetChannel(Node* n1, Node* n2)
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   147
{
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   148
  NetDevice* nd = GetNetDevice(n1, n2);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   149
  if (!nd) return 0; // No net device, so no channel
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   150
  return nd->GetChannel();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   151
}
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   152
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   153
Queue* Topology::GetQueue(Node* n1, Node* n2)
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   154
{
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   155
  NetDevice* nd = GetNetDevice(n1, n2);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   156
  if (!nd) return 0; // No net device, so in queue
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   157
  return nd->GetQueue();
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   158
}
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   159
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   160
Queue* Topology::SetQueue(Node* n1, Node* n2, const Queue& q)
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   161
{
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   162
  NetDevice* nd = GetNetDevice(n1, n2);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   163
  if (!nd) return 0; // No net device, can't set queue
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   164
  // Add the specified queue to the netdevice
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   165
  return nd->SetQueue(q);
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   166
}
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   167
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   168
#endif
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   169
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   170
} // namespace ns3
1df1165d6a68 Rename file names from serial to p2p
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   171