src/internet-stack/ipv6-extension.h
author Faker Moatamri <faker.moatamri@sophia.inria.fr>
Tue, 12 Jan 2010 17:17:40 +0100
changeset 5907 892efc87a151
parent 5805 db141a163ef3
permissions -rw-r--r--
Merge revert
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     2
/*
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     3
 * Copyright (c) 2007-2009 Strasbourg University
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     4
 *
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     8
 *
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    13
 *
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    17
 *
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    18
 * Author: David Gross <gdavid.devel@gmail.com>
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    19
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    20
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    21
#ifndef IPV6_EXTENSION_H
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    22
#define IPV6_EXTENSION_H
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    23
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    24
#include <map>
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    25
#include <list>
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    26
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    27
#include "ns3/object.h"
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    28
#include "ns3/node.h"
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    29
#include "ns3/ptr.h"
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    30
#include "ipv6-interface.h"
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    31
#include "ns3/ipv6-header.h"
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    32
#include "ns3/buffer.h"
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    33
#include "ns3/packet.h"
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    34
#include "ns3/ipv6-address.h"
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    35
#include "ns3/traced-callback.h"
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    36
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    37
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    38
namespace ns3
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    39
{
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    40
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    41
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    42
 * \class Ipv6Extension
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    43
 * \brief IPv6 Extension base
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    44
 * If you want to implement a new IPv6 extension, all you have to do is
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    45
 * implement a subclass of this class and add it to an Ipv6ExtensionDemux.
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    46
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    47
class Ipv6Extension : public Object
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    48
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    49
public:
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    50
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    51
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    52
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    53
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    54
  static TypeId GetTypeId ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    55
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    56
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    57
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    58
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    59
  virtual ~Ipv6Extension ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    60
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    61
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    62
   * \brief Set the node.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    63
   * \param node the node to set
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    64
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    65
  void SetNode (Ptr<Node> node);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    66
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    67
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    68
   * \brief Get the node.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    69
   * \return the node
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    70
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    71
  Ptr<Node> GetNode () const;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    72
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    73
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    74
   * \brief Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    75
   * \return extension number
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    76
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    77
  virtual uint8_t GetExtensionNumber () const = 0;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    78
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    79
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    80
   * \brief Process method
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    81
   * Called from Ipv6L3Protocol::Receive.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    82
   *
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    83
   * \param packet the packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    84
   * \param offset the offset of the extension to process
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    85
   * \param ipv6Header the IPv6 header of packet received
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    86
   * \param dst destination address of the packet received (i.e. us)
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    87
   * \param nextHeader the next header
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    88
   * \param isDropped if the packet must be dropped
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    89
   * \return the size processed
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    90
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    91
  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped) = 0;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
    92
5802
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
    93
  /**
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
    94
   * \brief Process options
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
    95
   * Called by implementing classes to process the options
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
    96
   *
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
    97
   * \param packet the packet
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
    98
   * \param offset the offset of the first option to process
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
    99
   * \param length the total length of all options (as specified in the extension header)
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   100
   * \param ipv6Header the IPv6 header of packet received
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   101
   * \param dst destination address of the packet received (i.e. us)
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   102
   * \param nextHeader the next header
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   103
   * \param isDropped if the packet must be dropped
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   104
   * \return the size processed
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   105
   */
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   106
  virtual uint8_t ProcessOptions (Ptr<Packet>& packet, uint8_t offset, uint8_t length, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
5801
86b47c42316c Ipv6Extension-Option link
Fabian Mauchle <fabian.mauchle@hsr.ch>
parents: 5784
diff changeset
   107
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   108
protected:
5802
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   109
  /**
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   110
   * \brief Drop trace callback.
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   111
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   112
  TracedCallback<Ptr<const Packet> > m_dropTrace;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   113
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   114
private:
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   115
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   116
   * \brief The node.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   117
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   118
  Ptr<Node> m_node;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   119
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   120
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   121
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   122
 * \class Ipv6ExtensionHopByHop
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   123
 * \brief IPv6 Extension "Hop By Hop"
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   124
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   125
class Ipv6ExtensionHopByHop : public Ipv6Extension
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   126
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   127
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   128
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   129
   * \brief Hop-by-hop extension number.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   130
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   131
  static const uint8_t EXT_NUMBER = 0;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   132
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   133
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   134
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   135
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   136
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   137
  static TypeId GetTypeId ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   138
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   139
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   140
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   141
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   142
  Ipv6ExtensionHopByHop ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   143
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   144
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   145
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   146
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   147
  ~Ipv6ExtensionHopByHop ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   148
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   149
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   150
   * \brief Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   151
   * \return extension number
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   152
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   153
  virtual uint8_t GetExtensionNumber () const;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   154
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   155
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   156
   * \brief Process method
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   157
   * Called from Ipv6L3Protocol::Receive.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   158
   * \param packet the packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   159
   * \param offset the offset of the extension to process
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   160
   * \param ipv6Header the IPv6 header of packet received
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   161
   * \param dst destination address of the packet received (i.e. us)
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   162
   * \param nextHeader the next header
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   163
   * \param isDropped if the packet must be dropped
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   164
   * \return the size processed
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   165
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   166
  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   167
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   168
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   169
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   170
 * \class Ipv6ExtensionDestination
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   171
 * \brief IPv6 Extension Destination
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   172
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   173
class Ipv6ExtensionDestination : public Ipv6Extension
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   174
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   175
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   176
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   177
   * \brief Destination extension number.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   178
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   179
  static const uint8_t EXT_NUMBER = 60;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   180
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   181
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   182
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   183
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   184
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   185
  static TypeId GetTypeId ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   186
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   187
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   188
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   189
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   190
  Ipv6ExtensionDestination ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   191
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   192
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   193
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   194
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   195
  ~Ipv6ExtensionDestination ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   196
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   197
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   198
   * \brief Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   199
   * \return extension number
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   200
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   201
  virtual uint8_t GetExtensionNumber () const;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   202
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   203
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   204
   * \brief Process method
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   205
   * Called from Ipv6L3Protocol::Receive.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   206
   * \param packet the packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   207
   * \param offset the offset of the extension to process
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   208
   * \param ipv6Header the IPv6 header of packet received
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   209
   * \param dst destination address of the packet received (i.e. us)
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   210
   * \param nextHeader the next header
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   211
   * \param isDropped if the packet must be dropped
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   212
   * \return the size processed
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   213
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   214
  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   215
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   216
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   217
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   218
 * \class Ipv6ExtensionFragment
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   219
 * \brief IPv6 Extension Fragment
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   220
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   221
class Ipv6ExtensionFragment : public Ipv6Extension
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   222
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   223
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   224
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   225
   * \brief Fragmentation extension number.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   226
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   227
  static const uint8_t EXT_NUMBER = 44;
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   228
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   229
 /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   230
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   231
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   232
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   233
  static TypeId GetTypeId ();
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   234
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   235
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   236
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   237
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   238
  Ipv6ExtensionFragment ();
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   239
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   240
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   241
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   242
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   243
  ~Ipv6ExtensionFragment ();
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   244
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   245
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   246
   * \brief Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   247
   * \return extension number
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   248
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   249
  virtual uint8_t GetExtensionNumber () const;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   250
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   251
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   252
   * \brief Process method
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   253
   * Called from Ipv6L3Protocol::Receive.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   254
   * \param packet the packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   255
   * \param offset the offset of the extension to process
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   256
   * \param ipv6Header the IPv6 header of packet received
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   257
   * \param dst destination address of the packet received (i.e. us)
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   258
   * \param nextHeader the next header
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   259
   * \param isDropped if the packet must be dropped
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   260
   * \return the size processed
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   261
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   262
  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   263
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   264
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   265
   * \brief Fragment a packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   266
   * \param packet the packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   267
   * \param fragmentSize the maximal size of the fragment (unfragmentable part + fragmentation header + fragmentable part)
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   268
   * \param listFragments the list of fragments
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   269
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   270
  void GetFragments (Ptr<Packet> packet, uint32_t fragmentSize, std::list<Ptr<Packet> >& listFragments);
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   271
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   272
protected:
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   273
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   274
   * \brief Dispose this object.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   275
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   276
  virtual void DoDispose ();
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   277
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   278
private:
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   279
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   280
   * \class Fragments
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   281
   * \brief A Set of Fragment
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   282
   */
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   283
  class Fragments : public SimpleRefCount<Fragments>
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   284
  {
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   285
  public:
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   286
    /**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   287
     * \brief Constructor.
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   288
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   289
    Fragments ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   290
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   291
    /**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   292
     * \brief Destructor.
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   293
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   294
    ~Fragments ();
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   295
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   296
    /**
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   297
     * \brief Add a fragment.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   298
     * \param fragment the fragment
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   299
     * \param fragmentOffset the offset of the fragment
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   300
     * \param moreFragment the bit "More Fragment"
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   301
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   302
    void AddFragment (Ptr<Packet> fragment, uint16_t fragmentOffset, bool moreFragment);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   303
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   304
    /**
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   305
     * \brief Set the unfragmentable part of the packet.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   306
     * \param unfragmentablePart the unfragmentable part
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   307
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   308
    void SetUnfragmentablePart (Ptr<Packet> unfragmentablePart);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   309
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   310
    /**
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   311
     * \brief If all fragments have been added.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   312
     * \returns true if the packet is entire 
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   313
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   314
    bool IsEntire () const;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   315
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   316
    /**
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   317
     * \brief Get the entire packet.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   318
     * \return the entire packet
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   319
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   320
    Ptr<Packet> GetPacket () const;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   321
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   322
  private:
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   323
    /**
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   324
     * \brief If other fragments will be sent.
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   325
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   326
    bool m_moreFragment;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   327
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   328
    /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   329
     * \brief The current fragments.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   330
     */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   331
    std::list<std::pair<Ptr<Packet>, uint16_t> > m_fragments;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   332
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   333
    /**
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   334
     * \brief The unfragmentable part.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   335
     */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   336
    Ptr<Packet> m_unfragmentable;
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   337
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   338
    /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   339
     * \brief Number of references.
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   340
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   341
    mutable uint32_t m_refCount;
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   342
  };
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   343
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   344
  typedef std::map<std::pair<Ipv6Address, uint32_t>, Ptr<Fragments> > MapFragments_t;
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   345
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   346
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   347
   * \brief The hash of fragmented packets.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   348
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   349
  MapFragments_t m_fragments;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   350
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   351
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   352
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   353
 * \class Ipv6ExtensionRouting
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   354
 * \brief IPv6 Extension Routing
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   355
 * If you want to implement a new IPv6 routing extension, all you have to do is
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   356
 * implement a subclass of this class and add it to an Ipv6ExtensionRoutingDemux.
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   357
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   358
class Ipv6ExtensionRouting : public Ipv6Extension
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   359
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   360
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   361
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   362
   * \brief Routing extension number.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   363
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   364
  static const uint8_t EXT_NUMBER = 43;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   365
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   366
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   367
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   368
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   369
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   370
  static TypeId GetTypeId ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   371
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   372
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   373
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   374
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   375
  Ipv6ExtensionRouting ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   376
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   377
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   378
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   379
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   380
 ~Ipv6ExtensionRouting ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   381
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   382
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   383
   * \brief Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   384
   * \return extension number
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   385
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   386
  virtual uint8_t GetExtensionNumber () const;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   387
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   388
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   389
   * \brief Get the type of routing.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   390
   * \return type of routing
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   391
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   392
  virtual uint8_t GetTypeRouting () const;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   393
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   394
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   395
   * \brief Process method
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   396
   *
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   397
   * Called from Ipv6L3Protocol::Receive.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   398
   * \param packet the packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   399
   * \param offset the offset of the extension to process
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   400
   * \param ipv6Header the IPv6 header of packet received
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   401
   * \param dst destination address of the packet received (i.e. us)
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   402
   * \param nextHeader the next header
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   403
   * \param isDropped if the packet must be dropped
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   404
   * \return the size processed
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   405
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   406
  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   407
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   408
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   409
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   410
 * \class Ipv6ExtensionRoutingDemux
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   411
 * \brief IPv6 Extension Routing Demux.
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   412
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   413
class Ipv6ExtensionRoutingDemux : public Object
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   414
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   415
public:
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   416
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   417
   * \brief The interface ID.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   418
   * \return type ID
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   419
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   420
  static TypeId GetTypeId ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   421
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   422
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   423
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   424
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   425
  Ipv6ExtensionRoutingDemux ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   426
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   427
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   428
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   429
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   430
  virtual ~Ipv6ExtensionRoutingDemux ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   431
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   432
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   433
   * \brief Set the node.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   434
   * \param node the node to set
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   435
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   436
  void SetNode (Ptr<Node> node);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   437
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   438
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   439
   * \brief Insert a new IPv6 Routing Extension.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   440
   * \param extensionRouting the routing extension to insert
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   441
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   442
  void Insert (Ptr<Ipv6ExtensionRouting> extensionRouting);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   443
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   444
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   445
   * \brief Get the routing extension corresponding to typeRouting.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   446
   * \param typeRouting the number of the routing extension to retrieve
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   447
   * \return a matching IPv6 routing extension
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   448
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   449
  Ptr<Ipv6ExtensionRouting> GetExtensionRouting (uint8_t typeRouting);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   450
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   451
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   452
   * \brief Remove a routing extension from this demux.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   453
   * \param extensionRouting pointer on the extension to remove
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   454
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   455
  void Remove (Ptr<Ipv6ExtensionRouting> extensionRouting);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   456
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   457
protected:   
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   458
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   459
   * \brief Dispose this object.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   460
   */
5802
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   461
  virtual void DoDispose ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   462
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   463
private:
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   464
  typedef std::list<Ptr<Ipv6ExtensionRouting> > Ipv6ExtensionRoutingList_t;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   465
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   466
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   467
   * \brief List of IPv6 Routing Extensions supported.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   468
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   469
  Ipv6ExtensionRoutingList_t m_extensionsRouting;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   470
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   471
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   472
   * \brief The node.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   473
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   474
  Ptr<Node> m_node;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   475
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   476
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   477
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   478
 * \class Ipv6ExtensionLooseRouting
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   479
 * \brief IPv6 Extension Loose Routing
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   480
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   481
class Ipv6ExtensionLooseRouting : public Ipv6ExtensionRouting
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   482
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   483
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   484
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   485
   * \brief Routing type.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   486
   */
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   487
  static const uint8_t TYPE_ROUTING = 0;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   488
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   489
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   490
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   491
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   492
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   493
  static TypeId GetTypeId ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   494
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   495
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   496
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   497
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   498
  Ipv6ExtensionLooseRouting ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   499
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   500
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   501
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   502
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   503
  ~Ipv6ExtensionLooseRouting ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   504
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   505
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   506
   * \brief Get the type of routing.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   507
   * \return type of routing
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   508
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   509
  virtual uint8_t GetTypeRouting () const;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   510
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   511
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   512
   * \brief Process method
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   513
   *
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   514
   * Called from Ipv6L3Protocol::Receive.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   515
   *
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   516
   * \param packet the packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   517
   * \param offset the offset of the extension to process
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   518
   * \param ipv6Header the IPv6 header of packet received
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   519
   * \param dst destination address of the packet received (i.e. us)
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   520
   * \param nextHeader the next header
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   521
   * \param isDropped if the packet must be dropped
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   522
   * \return the size processed
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   523
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   524
  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   525
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   526
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   527
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   528
 * \class Ipv6ExtensionESP
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   529
 * \brief IPv6 Extension ESP (Encapsulating Security Payload)
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   530
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   531
class Ipv6ExtensionESP : public Ipv6Extension
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   532
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   533
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   534
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   535
   * \brief ESP extension number.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   536
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   537
  static const uint8_t EXT_NUMBER = 50;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   538
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   539
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   540
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   541
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   542
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   543
  static TypeId GetTypeId ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   544
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   545
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   546
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   547
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   548
  Ipv6ExtensionESP ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   549
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   550
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   551
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   552
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   553
  ~Ipv6ExtensionESP ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   554
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   555
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   556
   * \brief Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   557
   * \return extension number
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   558
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   559
  virtual uint8_t GetExtensionNumber () const;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   560
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   561
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   562
   * \brief Process method
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   563
   * Called from Ipv6L3Protocol::Receive.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   564
   *
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   565
   * \param packet the packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   566
   * \param offset the offset of the extension to process
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   567
   * \param ipv6Header the IPv6 header of packet received
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   568
   * \param dst destination address of the packet received (i.e. us)
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   569
   * \param nextHeader the next header
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   570
   * \param isDropped if the packet must be dropped
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   571
   * \return the size processed
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   572
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   573
  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   574
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   575
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   576
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   577
 * \class Ipv6ExtensionAH
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   578
 * \brief IPv6 Extension AH (Authentication Header)
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   579
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   580
class Ipv6ExtensionAH : public Ipv6Extension
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   581
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   582
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   583
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   584
   * \brief AH extension number.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   585
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   586
  static const uint8_t EXT_NUMBER = 51;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   587
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   588
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   589
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   590
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   591
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   592
  static TypeId GetTypeId ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   593
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   594
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   595
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   596
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   597
  Ipv6ExtensionAH ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   598
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   599
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   600
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   601
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   602
  ~Ipv6ExtensionAH ();
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   603
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   604
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   605
   * \brief Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   606
   * \return extension number
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   607
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   608
  virtual uint8_t GetExtensionNumber () const;
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   609
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   610
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   611
   * \brief Process method
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   612
   * Called from Ipv6L3Protocol::Receive.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   613
   *
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   614
   * \param packet the packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   615
   * \param offset the offset of the extension to process
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   616
   * \param ipv6Header the IPv6 header of packet received
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   617
   * \param dst destination address of the packet received (i.e. us)
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   618
   * \param nextHeader the next header
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   619
   * \param isDropped if the packet must be dropped
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   620
   * \return the size processed
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   621
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   622
  virtual uint8_t Process (Ptr<Packet>& packet, uint8_t offset, Ipv6Header const& ipv6Header, Ipv6Address dst, uint8_t *nextHeader, bool& isDropped);
5782
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   623
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   624
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   625
} /* namespace ns3 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   626
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   627
#endif /* IPV6_EXTENSION_H */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   628