src/internet/model/ipv6-list-routing.h
author Brian Swenson <bswenson3@gatech.edu>
Tue, 22 Apr 2014 11:52:55 -0400
changeset 10694 4af272d94cfd
parent 10440 1e48ff9185f1
permissions -rw-r--r--
Bug 1791
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7385
10beb0e53130 standardize emacs c++ mode comments
Vedran Miletić <rivanvx@gmail.com>
parents: 7233
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     2
/*
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     3
 * Copyright (c) 2009 University of Washington
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     4
 *
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     8
 *
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    13
 *
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    17
 */
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    18
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    19
#ifndef IPV6_LIST_ROUTING_H
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    20
#define IPV6_LIST_ROUTING_H
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    21
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    22
#include <list>
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    23
#include "ns3/ipv6-routing-protocol.h"
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    24
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    25
namespace ns3 {
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    26
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    27
/**
7790
47d6d575412c Bug 1362 - ICMPv6 does not forward ICMPs to upper layers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 7386
diff changeset
    28
 * \ingroup internet
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    29
 * \defgroup ipv6ListRouting Ipv6 List Routing
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    30
 */
5225
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    31
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    32
/**
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    33
 * \ingroup ipv6ListRouting
5225
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    34
 * \class Ipv6ListRouting
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    35
 * \brief Hold list of Ipv6RoutingProtocol objects.
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    36
 *
7790
47d6d575412c Bug 1362 - ICMPv6 does not forward ICMPs to upper layers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 7386
diff changeset
    37
 * This class is a specialization of Ipv6RoutingProtocol that allows
47d6d575412c Bug 1362 - ICMPv6 does not forward ICMPs to upper layers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 7386
diff changeset
    38
 * other instances of Ipv6RoutingProtocol to be inserted in a
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    39
 * prioritized list.  Routing protocols in the list are consulted one
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    40
 * by one, from highest to lowest priority, until a routing protocol
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    41
 * is found that will take the packet (this corresponds to a non-zero
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    42
 * return value to RouteOutput, or a return value of true to RouteInput).
7790
47d6d575412c Bug 1362 - ICMPv6 does not forward ICMPs to upper layers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 7386
diff changeset
    43
 * The order by which routing protocols with the same priority value
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    44
 * are consulted is undefined.
7790
47d6d575412c Bug 1362 - ICMPv6 does not forward ICMPs to upper layers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 7386
diff changeset
    45
 *
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    46
 */
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    47
class Ipv6ListRouting : public Ipv6RoutingProtocol
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    48
{
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    49
public:
5225
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    50
  /**
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    51
   * \brief Get the type ID of this class.
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    52
   * \return type ID
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    53
   */
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    54
  static TypeId GetTypeId (void);
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    55
5225
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    56
  /**
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    57
   * \brief Constructor.
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    58
   */
7176
9f2663992e99 internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6834
diff changeset
    59
  Ipv6ListRouting ();
5225
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    60
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    61
  /**
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    62
   * \brief Destructor.
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    63
   */
7176
9f2663992e99 internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6834
diff changeset
    64
  virtual ~Ipv6ListRouting ();
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    65
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    66
  /**
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    67
   * \brief Register a new routing protocol to be used in this IPv4 stack
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    68
   * \param routingProtocol new routing protocol implementation object
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    69
   * \param priority priority to give to this routing protocol.
7176
9f2663992e99 internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6834
diff changeset
    70
   * Values may range between -32768 and +32767.
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    71
   */
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    72
  virtual void AddRoutingProtocol (Ptr<Ipv6RoutingProtocol> routingProtocol, int16_t priority);
5891
09a575cdf8db Indent correctly IPv6 code.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5856
diff changeset
    73
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    74
  /**
5225
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    75
   * \brief Get the number of routing protocols.
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    76
   * \return number of routing protocols in the list
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    77
   */
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    78
  virtual uint32_t GetNRoutingProtocols (void) const;
5891
09a575cdf8db Indent correctly IPv6 code.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5856
diff changeset
    79
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    80
  /**
7790
47d6d575412c Bug 1362 - ICMPv6 does not forward ICMPs to upper layers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 7386
diff changeset
    81
   * \brief Get pointer to routing protocol stored at index,
5225
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    82
   *
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    83
   * The first protocol (index 0) the highest priority, the next one (index 1)
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    84
   * the second highest priority, and so on.  The priority parameter is an
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    85
   * output parameter and it returns the integer priority of the protocol.
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    86
   * \param index index of protocol to return
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    87
   * \param priority output parameter, set to the priority of the protocol
5225
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
    88
   * being returned
7790
47d6d575412c Bug 1362 - ICMPv6 does not forward ICMPs to upper layers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 7386
diff changeset
    89
   * \return pointer to routing protocol indexed by
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    90
   */
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    91
  virtual Ptr<Ipv6RoutingProtocol> GetRoutingProtocol (uint32_t index, int16_t& priority) const;
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    92
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    93
  // Below are from Ipv6RoutingProtocol
5856
7fd20c798a7d bug 742: Implementation of SO_BINDTODEVICE
Antti Mäkelä <zarhan@cc.hut.fi>
parents: 5225
diff changeset
    94
  virtual Ptr<Ipv6Route> RouteOutput (Ptr<Packet> p, const Ipv6Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr);
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    95
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    96
  virtual bool RouteInput (Ptr<const Packet> p, const Ipv6Header &header, Ptr<const NetDevice> idev,
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    97
                           UnicastForwardCallback ucb, MulticastForwardCallback mcb,
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    98
                           LocalDeliverCallback lcb, ErrorCallback ecb);
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    99
  virtual void NotifyInterfaceUp (uint32_t interface);
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   100
  virtual void NotifyInterfaceDown (uint32_t interface);
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   101
  virtual void NotifyAddAddress (uint32_t interface, Ipv6InterfaceAddress address);
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   102
  virtual void NotifyRemoveAddress (uint32_t interface, Ipv6InterfaceAddress address);
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   103
  virtual void NotifyAddRoute (Ipv6Address dst, Ipv6Prefix mask, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse = Ipv6Address::GetZero ());
4761
8c0b3a413f4b Add metric and longest prefix match support for IPv6.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4731
diff changeset
   104
  virtual void NotifyRemoveRoute (Ipv6Address dst, Ipv6Prefix mask, Ipv6Address nextHop, uint32_t interface, Ipv6Address prefixToUse = Ipv6Address::GetZero ());
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   105
  virtual void SetIpv6 (Ptr<Ipv6> ipv6);
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   106
7791
21c3495394b4 Enhancement 1393 - IPv6 Routing Helper RT Print functions
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7790
diff changeset
   107
  /**
21c3495394b4 Enhancement 1393 - IPv6 Routing Helper RT Print functions
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7790
diff changeset
   108
   * \brief Print the Routing Table entries
21c3495394b4 Enhancement 1393 - IPv6 Routing Helper RT Print functions
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7790
diff changeset
   109
   *
21c3495394b4 Enhancement 1393 - IPv6 Routing Helper RT Print functions
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7790
diff changeset
   110
   * \param stream the ostream the Routing table is printed to
21c3495394b4 Enhancement 1393 - IPv6 Routing Helper RT Print functions
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7790
diff changeset
   111
   */
21c3495394b4 Enhancement 1393 - IPv6 Routing Helper RT Print functions
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7790
diff changeset
   112
  virtual void PrintRoutingTable (Ptr<OutputStreamWrapper> stream) const;
21c3495394b4 Enhancement 1393 - IPv6 Routing Helper RT Print functions
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7790
diff changeset
   113
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   114
protected:
5225
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
   115
  /**
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
   116
   * \brief Dispose this object.
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
   117
   */
7790
47d6d575412c Bug 1362 - ICMPv6 does not forward ICMPs to upper layers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 7386
diff changeset
   118
  virtual void DoDispose (void);
5225
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
   119
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   120
private:
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7791
diff changeset
   121
  /**
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7791
diff changeset
   122
   * \brief Container identifying an IPv6 Routing Protocol entry in the list.
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7791
diff changeset
   123
   */
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   124
  typedef std::pair<int16_t, Ptr<Ipv6RoutingProtocol> > Ipv6RoutingProtocolEntry;
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7791
diff changeset
   125
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7791
diff changeset
   126
  /**
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7791
diff changeset
   127
   * \brief Container of the IPv6 Routing Protocols.
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7791
diff changeset
   128
   */
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   129
  typedef std::list<Ipv6RoutingProtocolEntry> Ipv6RoutingProtocolList;
5225
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
   130
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
   131
  /**
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
   132
   * \brief Compare two routing protocols.
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
   133
   * \param a first object to compare
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
   134
   * \param b second object to compare
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
   135
   * \return true if they are the same, false otherwise
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
   136
   */
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   137
  static bool Compare (const Ipv6RoutingProtocolEntry& a, const Ipv6RoutingProtocolEntry& b);
5225
9c612cb88d6b Doxygenize.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 4761
diff changeset
   138
10440
1e48ff9185f1 Bug 938 - missing Doxygen in ns-3 (internet model + helper)
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   139
  Ipv6RoutingProtocolList m_routingProtocols; //!<  List of routing protocols.
1e48ff9185f1 Bug 938 - missing Doxygen in ns-3 (internet model + helper)
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   140
  Ptr<Ipv6> m_ipv6;  //!< Ipv6 this protocol is associated with.
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   141
};
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   142
7386
2310ed220a61 standardize ns-3 namespace declaration format
Vedran Miletić <rivanvx@gmail.com>
parents: 7385
diff changeset
   143
} // namespace ns3
4731
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   144
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   145
#endif /* IPV6_LIST_ROUTING_H */
510db8599bfb second phase of IPv6 checkins from Univ. of Strasbourg team
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   146