examples/wifi-wired-bridging.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 23 Mar 2009 13:16:09 +0100
changeset 4360 bf9c03ebc855
parent 4264 9d2e96c4e6e4
child 4296 0ef6dfed1dbd
permissions -rw-r--r--
merge with olsr crap
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3616
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
3946
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
     2
/*
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
     3
 * This program is free software; you can redistribute it and/or modify
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
     4
 * it under the terms of the GNU General Public License version 2 as
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
     5
 * published by the Free Software Foundation;
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
     6
 *
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
     7
 * This program is distributed in the hope that it will be useful,
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
     8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
     9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    10
 * GNU General Public License for more details.
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    11
 *
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    12
 * You should have received a copy of the GNU General Public License
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    13
 * along with this program; if not, write to the Free Software
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    15
 */
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    16
3974
66afcfdff6a7 fix bug 431 -- memory leak in bridge net device
Craig Dowell <craigdo@ee.washington.edu>
parents: 3947
diff changeset
    17
//
3947
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    18
// Default network topology includes some number of AP nodes specified by
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    19
// the variable nWifis (defaults to two).  Off of each AP node, there are some
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    20
// number of STA nodes specified by the variable nStas (defaults to two).
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    21
// Each AP talks to its associated STA nodes.  There are bridge net devices
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    22
// on each AP node that bridge the whole thing into one network.
3946
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    23
//
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    24
//      +-----+      +-----+            +-----+      +-----+
3947
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    25
//      | STA |      | STA |            | STA |      | STA | 
3946
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    26
//      +-----+      +-----+            +-----+      +-----+
3947
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    27
//    192.168.0.3  192.168.0.4        192.168.0.5  192.168.0.6
3946
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    28
//      --------     --------           --------     --------
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    29
//      WIFI STA     WIFI STA           WIFI STA     WIFI STA
3947
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    30
//      --------     --------           --------     --------
3946
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    31
//        ((*))       ((*))       |      ((*))        ((*))
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    32
//                                |   
3947
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    33
//              ((*))             |             ((*))
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    34
//             -------                         -------
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    35
//             WIFI AP   CSMA ========= CSMA   WIFI AP 
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    36
//             -------   ----           ----   -------
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    37
//             ##############           ##############
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    38
//                 BRIDGE                   BRIDGE
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    39
//             ##############           ############## 
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    40
//               192.168.0.1              192.168.0.2
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    41
//               +---------+              +---------+  
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    42
//               | AP Node |              | AP Node |
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
    43
//               +---------+              +---------+  
3946
6a20c485ddb5 document wifi-wired-bridging a little and add aborts if bridged net devices with IP addresses found
Craig Dowell <craigdo@ee.washington.edu>
parents: 3912
diff changeset
    44
//
3616
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
#include "ns3/core-module.h"
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
#include "ns3/simulator-module.h"
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
#include "ns3/mobility-module.h"
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
#include "ns3/helper-module.h"
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
#include "ns3/wifi-module.h"
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
#include "ns3/node-module.h"
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
#include "ns3/global-route-manager.h"
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
#include <vector>
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
#include <stdint.h>
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
#include <sstream>
3810
ca47c7015ea4 remove uneeded includes.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3656
diff changeset
    56
#include <fstream>
3616
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
using namespace ns3;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
int main (int argc, char *argv[])
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
{
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
  uint32_t nWifis = 2;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
  uint32_t nStas = 2;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
  bool sendIp = true;
3617
1fec65ceb523 add wifi+wired bridge example
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3616
diff changeset
    65
3616
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
  CommandLine cmd;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
  cmd.AddValue ("nWifis", "Number of wifi networks", nWifis);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
  cmd.AddValue ("nStas", "Number of stations per wifi network", nStas);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
  cmd.AddValue ("SendIp", "Send Ipv4 or raw packets", sendIp);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
  cmd.Parse (argc, argv);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
  NodeContainer backboneNodes;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
  NetDeviceContainer backboneDevices;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
  Ipv4InterfaceContainer backboneInterfaces;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
  std::vector<NodeContainer> staNodes;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
  std::vector<NetDeviceContainer> staDevices;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    77
  std::vector<NetDeviceContainer> apDevices;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
  std::vector<Ipv4InterfaceContainer> staInterfaces;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    79
  std::vector<Ipv4InterfaceContainer> apInterfaces;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    80
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    81
  InternetStackHelper stack;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    82
  CsmaHelper csma;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    83
  Ipv4AddressHelper ip;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
  ip.SetBase ("192.168.0.0", "255.255.255.0");
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    85
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
  backboneNodes.Create (nWifis);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
  stack.Install (backboneNodes);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    89
  backboneDevices = csma.Install (backboneNodes);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    90
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
  double wifiX = 0.0;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    92
  for (uint32_t i = 0; i < nWifis; ++i)
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
    {
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
      // calculate ssid for wifi subnetwork
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
      std::ostringstream oss;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
      oss << "wifi-default-" << i;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
      Ssid ssid = Ssid (oss.str ());
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    99
      NodeContainer sta;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
      NetDeviceContainer staDev;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
      NetDeviceContainer apDev;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
      Ipv4InterfaceContainer staInterface;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
      Ipv4InterfaceContainer apInterface;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
      MobilityHelper mobility;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
      BridgeHelper bridge;
3912
4d1a61f80745 new wifi API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3909
diff changeset
   106
      WifiHelper wifi = WifiHelper::Default ();
4d1a61f80745 new wifi API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3909
diff changeset
   107
      YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
4d1a61f80745 new wifi API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3909
diff changeset
   108
      YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default ();
4d1a61f80745 new wifi API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3909
diff changeset
   109
      wifiPhy.SetChannel (wifiChannel.Create ());
3616
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
      sta.Create (nStas);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
      mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
				     "MinX", DoubleValue (wifiX),
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
				     "MinY", DoubleValue (0.0),
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
				     "DeltaX", DoubleValue (5.0),
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
				     "DeltaY", DoubleValue (5.0),
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
				     "GridWidth", UintegerValue (1),
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
				     "LayoutType", StringValue ("RowFirst"));
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   120
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   121
      // setup the AP.
4257
3e8f8052e155 StaticMobilityModel -> ConstantPositionMobilityModel, StaticSpeedMobilityModel -> ConstantVelocityMobilityModel
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4225
diff changeset
   122
      mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
3616
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
      mobility.Install (backboneNodes.Get (i));
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
      wifi.SetMac ("ns3::NqapWifiMac",
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
		   "Ssid", SsidValue (ssid),
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   126
		   "BeaconGeneration", BooleanValue (true),
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
		   "BeaconInterval", TimeValue (Seconds (2.5)));
3912
4d1a61f80745 new wifi API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3909
diff changeset
   128
      apDev = wifi.Install (wifiPhy, backboneNodes.Get (i));
3947
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
   129
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
   130
      NetDeviceContainer bridgeDev;
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
   131
      bridgeDev = bridge.Install (backboneNodes.Get (i), NetDeviceContainer (apDev, backboneDevices.Get (i)));
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
   132
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
   133
      // assign AP IP address to bridge, not wifi
756887a9bbea disallow routing on bridge devices with IP address, fix wifi-wired-bridging
Craig Dowell <craigdo@ee.washington.edu>
parents: 3946
diff changeset
   134
      apInterface = ip.Assign (bridgeDev);
3616
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   135
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   136
      // setup the STAs
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   137
      stack.Install (sta);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   138
      mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel",
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
				 "Mode", StringValue ("Time"),
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
				 "Time", StringValue ("2s"),
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
				 "Speed", StringValue ("Constant:1.0"),
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
				 "Bounds", RectangleValue (Rectangle (wifiX, wifiX+5.0,0.0, (nStas+1)*5.0)));
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
      mobility.Install (sta);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
      wifi.SetMac ("ns3::NqstaWifiMac",
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   145
		   "Ssid", SsidValue (ssid),
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
		   "ActiveProbing", BooleanValue (false));
3912
4d1a61f80745 new wifi API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3909
diff changeset
   147
      staDev = wifi.Install (wifiPhy, sta);
3616
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
      staInterface = ip.Assign (staDev);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   150
      // save everything in containers.
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
      staNodes.push_back (sta);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
      apDevices.push_back (apDev);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   153
      apInterfaces.push_back (apInterface);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   154
      staDevices.push_back (staDev);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   155
      staInterfaces.push_back (staInterface);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   156
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   157
      wifiX += 20.0;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   158
    }
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   159
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   160
  GlobalRouteManager::PopulateRoutingTables ();
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   161
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
  Address dest;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   163
  std::string protocol;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   164
  if (sendIp)
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   165
    {
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   166
      dest = InetSocketAddress (staInterfaces[1].GetAddress (1), 1025);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   167
      protocol = "ns3::UdpSocketFactory";
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
    }
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
  else
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   170
    {
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   171
      PacketSocketAddress tmp;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   172
      tmp.SetSingleDevice (staDevices[0].Get (0)->GetIfIndex ());
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   173
      tmp.SetPhysicalAddress (staDevices[1].Get (0)->GetAddress ());
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   174
      tmp.SetProtocol (0x807);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   175
      dest = tmp;
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   176
      protocol = "ns3::PacketSocketFactory";
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   177
    }
3974
66afcfdff6a7 fix bug 431 -- memory leak in bridge net device
Craig Dowell <craigdo@ee.washington.edu>
parents: 3947
diff changeset
   178
3616
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   179
  OnOffHelper onoff = OnOffHelper (protocol, dest);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   180
  onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1)));
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   181
  onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0)));
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   182
  ApplicationContainer apps = onoff.Install (staNodes[0].Get (0));
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   183
  apps.Start (Seconds (0.5));
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   184
  apps.Stop (Seconds (3.0));
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   185
  
4264
9d2e96c4e6e4 Piles of changes for tracing rework
Craig Dowell <craigdo@ee.washington.edu>
parents: 4263 4257
diff changeset
   186
  YansWifiPhyHelper::EnablePcap ("wifi-wired-bridging", apDevices[0]);
9d2e96c4e6e4 Piles of changes for tracing rework
Craig Dowell <craigdo@ee.washington.edu>
parents: 4263 4257
diff changeset
   187
  YansWifiPhyHelper::EnablePcap ("wifi-wired-bridging", apDevices[1]);
4263
fec2f830d015 trace consistency changes
Craig Dowell <craigdo@ee.washington.edu>
parents: 4225
diff changeset
   188
3616
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   189
  std::ofstream os;
3974
66afcfdff6a7 fix bug 431 -- memory leak in bridge net device
Craig Dowell <craigdo@ee.washington.edu>
parents: 3947
diff changeset
   190
  os.open ("wifi-wired-bridging.mob");
3616
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   191
  MobilityHelper::EnableAsciiAll (os);
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   192
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   193
  Simulator::Stop (Seconds (100.0));
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   194
  Simulator::Run ();
3656
bf33e34f8cd0 make sure to destroy all left-over memory before exit
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3617
diff changeset
   195
  Simulator::Destroy ();
3616
660d3a0c40cd testcase for wifi bridging
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   196
}