src/nix-vector-routing/model/ipv4-nix-vector-routing.h
author Josh Pelkey <jpelkey@gatech.edu>
Fri, 13 May 2011 14:57:56 -0400
changeset 7183 13fae068d099
parent 6852 8f1a53d3f6ca
child 7353 09fccf6195ea
permissions -rw-r--r--
nix-vector coding style changes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     2
/*
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     3
 * Copyright (c) 2009 The Georgia Institute of Technology 
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     4
 *
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     8
 *
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    12
 * GNU General Public License for more details.
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    13
 *
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    17
 *
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    18
 * Authors: Josh Pelkey <jpelkey@gatech.edu>
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    19
 */
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    20
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    21
#ifndef __IPV4_NIX_VECTOR_ROUTING_H__
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    22
#define __IPV4_NIX_VECTOR_ROUTING_H__
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    23
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    24
#include <map>
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    25
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    26
#include "ns3/channel.h"
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    27
#include "ns3/node-container.h"
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    28
#include "ns3/node-list.h"
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    29
#include "ns3/net-device-container.h"
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    30
#include "ns3/ipv4-routing-protocol.h"
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    31
#include "ns3/ipv4-route.h"
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    32
#include "ns3/nix-vector.h"
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    33
#include "ns3/bridge-net-device.h"
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    34
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    35
namespace ns3 {
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    36
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    37
/**
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    38
 * Map of Ipv4Address to NixVector
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    39
 */
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    40
typedef std::map<Ipv4Address, Ptr<NixVector> > NixMap_t;
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    41
/**
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    42
 * Map of Ipv4Address to Ipv4Route
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    43
 */
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    44
typedef std::map<Ipv4Address, Ptr<Ipv4Route> > Ipv4RouteMap_t;
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    45
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    46
/**
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    47
 * Nix-vector routing protocol
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    48
 */
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    49
class Ipv4NixVectorRouting : public Ipv4RoutingProtocol
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    50
{
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    51
public:
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    52
  Ipv4NixVectorRouting ();
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    53
  ~Ipv4NixVectorRouting ();
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    54
  /**
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    55
   * @brief The Interface ID of the Global Router interface.
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    56
   *
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    57
   * @see Object::GetObject ()
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    58
   */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    59
  static TypeId GetTypeId (void);
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    60
  /**
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    61
   * @brief Set the Node pointer of the node for which this
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    62
   * routing protocol is to be placed
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    63
   *
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    64
   * @param node Node pointer
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    65
   */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    66
  void SetNode (Ptr<Node> node);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    67
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    68
  /**
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    69
   * @brief Called when run-time link topology change occurs
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    70
   * which iterates through the node list and flushes any
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    71
   * nix vector caches
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    72
   *
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    73
   */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    74
  void FlushGlobalNixRoutingCache (void);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    75
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    76
private:
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    77
  /* flushes the cache which stores nix-vector based on
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    78
   * destination IP */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    79
  void FlushNixCache (void);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    80
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    81
  /* flushes the cache which stores the Ipv4 route
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    82
   * based on the destination IP */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    83
  void FlushIpv4RouteCache (void);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    84
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    85
  /* upon a run-time topology change caches are
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    86
   * flushed and the total number of neighbors is
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    87
   * reset to zero */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    88
  void ResetTotalNeighbors (void);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    89
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    90
  /*  takes in the source node and dest IP and calls GetNodeByIp,
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    91
   *  BFS, accounting for any output interface specified, and finally
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    92
   *  BuildNixVector to return the built nix-vector */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    93
  Ptr<NixVector> GetNixVector (Ptr<Node>, Ipv4Address, Ptr<NetDevice>);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    94
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    95
  /* checks the cache based on dest IP for the nix-vector */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    96
  Ptr<NixVector> GetNixVectorInCache (Ipv4Address);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    97
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    98
  /* checks the cache based on dest IP for the Ipv4Route */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
    99
  Ptr<Ipv4Route> GetIpv4RouteInCache (Ipv4Address);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   100
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   101
  /* given a net-device returns all the adjacent net-devices,
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   102
   * essentially getting the neighbors on that channel */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   103
  void GetAdjacentNetDevices (Ptr<NetDevice>, Ptr<Channel>, NetDeviceContainer &);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   104
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   105
  /* iterates through the node list and finds the one
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   106
   * corresponding to the given Ipv4Address */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   107
  Ptr<Node> GetNodeByIp (Ipv4Address);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   108
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   109
  /* Recurses the parent vector, created by BFS and actually builds the nixvector */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   110
  bool BuildNixVector (const std::vector< Ptr<Node> > & parentVector, uint32_t source, uint32_t dest, Ptr<NixVector> nixVector);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   111
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   112
  /* special variation of BuildNixVector for when a node is sending to itself */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   113
  bool BuildNixVectorLocal (Ptr<NixVector> nixVector);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   114
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   115
  /* simple iterates through the nodes net-devices and determines
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   116
   * how many neighbors it has */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   117
  uint32_t FindTotalNeighbors (void);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   118
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   119
  /* determine if the netdevice is bridged */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   120
  Ptr<BridgeNetDevice> NetDeviceIsBridged (Ptr<NetDevice> nd) const;
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   121
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   122
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   123
  /* Nix index is with respect to the neighbors.  The net-device index must be
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   124
   * derived from this */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   125
  uint32_t FindNetDeviceForNixIndex (uint32_t nodeIndex, Ipv4Address & gatewayIp);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   126
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   127
  /* Breadth first search algorithm
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   128
   * Param1: total number of nodes
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   129
   * Param2: Source Node
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   130
   * Param3: Dest Node
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   131
   * Param4: (returned) Parent vector for retracing routes
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   132
   * Param5: specific output interface to use from source node, if not null
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   133
   * Returns: false if dest not found, true o.w.
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   134
   */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   135
  bool BFS (uint32_t numberOfNodes,
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   136
            Ptr<Node> source,
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   137
            Ptr<Node> dest,
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   138
            std::vector< Ptr<Node> > & parentVector,
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   139
            Ptr<NetDevice> oif);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   140
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   141
  void DoDispose (void);
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   142
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   143
  /* From Ipv4RoutingProtocol */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   144
  virtual Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr);
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   145
  virtual bool RouteInput (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   146
                           UnicastForwardCallback ucb, MulticastForwardCallback mcb,
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   147
                           LocalDeliverCallback lcb, ErrorCallback ecb);
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   148
  virtual void NotifyInterfaceUp (uint32_t interface);
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   149
  virtual void NotifyInterfaceDown (uint32_t interface);
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   150
  virtual void NotifyAddAddress (uint32_t interface, Ipv4InterfaceAddress address);
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   151
  virtual void NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddress address);
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   152
  virtual void SetIpv4 (Ptr<Ipv4> ipv4);
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   153
  virtual void PrintRoutingTable (Ptr<OutputStreamWrapper> stream) const;
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   154
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   155
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   156
  /* cache stores nix-vectors based on destination ip */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   157
  NixMap_t m_nixCache;
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   158
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   159
  /* cache stores Ipv4Routes based on destination ip */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   160
  Ipv4RouteMap_t m_ipv4RouteCache;
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   161
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   162
  Ptr<Ipv4> m_ipv4;
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   163
  Ptr<Node> m_node;
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   164
7183
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   165
  /* total neighbors used for nix-vector to determine
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   166
   * number of bits */
13fae068d099 nix-vector coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6852
diff changeset
   167
  uint32_t m_totalNeighbors;
6841
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   168
};
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   169
} // namespace ns3
174e599d1003 modularize nix and aodv, thanks lalith
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   170
#endif