src/internet/model/ipv6-extension.h
author Pedro Silva <pmms@inesctec.pt>
Wed, 29 Oct 2014 10:12:53 -0700
changeset 11040 cd2eda848730
parent 10669 46c9391bc38b
permissions -rw-r--r--
bug 1791: TCP Endpoint never deallocates when closing
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7385
10beb0e53130 standardize emacs c++ mode comments
Vedran Miletić <rivanvx@gmail.com>
parents: 7367
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
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
     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"
8977
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
    34
#include "ns3/random-variable-stream.h"
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
    35
#include "ns3/ipv6-address.h"
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
    36
#include "ns3/ipv6-l3-protocol.h"
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
    37
#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
    38
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
7790
47d6d575412c Bug 1362 - ICMPv6 does not forward ICMPs to upper layers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 7385
diff changeset
    40
namespace ns3 {
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
    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
/**
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
 * \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
    44
 * \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
    45
 * 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
    46
 * 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
    47
 */
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
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
    49
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    50
public:
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    51
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    52
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    53
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    54
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    55
  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
    56
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    57
  /**
8977
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
    58
   * \brief Constructor.
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
    59
   */
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
    60
  Ipv6Extension ();
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
    61
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
    62
  /**
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    63
   * \brief Destructor.
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
  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
    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 Set the node.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    69
   * \param node the node to set
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
  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
    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 node.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    75
   * \return the node
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
  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
    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 Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    81
   * \return extension number
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
  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
    84
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    85
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    86
   * \brief Process method
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    87
   * Called from Ipv6L3Protocol::Receive.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    88
   *
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    89
   * \param packet the packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    90
   * \param offset the offset of the extension to process
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    91
   * \param ipv6Header the IPv6 header of packet received
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    92
   * \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
    93
   * \param nextHeader the next header
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
    94
   * \param stopProcessing true if the packet must not be further processed
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
    95
   * \param isDropped true if the packet must be dropped
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
    96
   * \param dropReason dropping reason
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    97
   * \return the size processed
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
    98
   */
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
    99
  virtual uint8_t Process (Ptr<Packet>& packet,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   100
                           uint8_t offset,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   101
                           Ipv6Header const& ipv6Header,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   102
                           Ipv6Address dst,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   103
                           uint8_t *nextHeader,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   104
                           bool& stopProcessing,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   105
                           bool& isDropped,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   106
                           Ipv6L3Protocol::DropReason& dropReason) = 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
   107
5802
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   108
  /**
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   109
   * \brief Process options
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   110
   * 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
   111
   *
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   112
   * \param packet the packet
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   113
   * \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
   114
   * \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
   115
   * \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
   116
   * \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
   117
   * \param nextHeader the next header
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   118
   * \param stopProcessing true if the packet must not be further processed
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   119
   * \param isDropped true if the packet must be dropped
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   120
   * \param dropReason dropping reason
5802
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   121
   * \return the size processed
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   122
   */
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   123
  virtual uint8_t ProcessOptions (Ptr<Packet>& packet,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   124
                                  uint8_t offset,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   125
                                  uint8_t length,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   126
                                  Ipv6Header const& ipv6Header,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   127
                                  Ipv6Address dst,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   128
                                  uint8_t *nextHeader,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   129
                                  bool& stopProcessing,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   130
                                  bool& isDropped,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   131
                                  Ipv6L3Protocol::DropReason& dropReason
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   132
                                  );
5801
86b47c42316c Ipv6Extension-Option link
Fabian Mauchle <fabian.mauchle@hsr.ch>
parents: 5784
diff changeset
   133
8977
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   134
 /**
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   135
  * Assign a fixed random variable stream number to the random variables
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   136
  * used by this model.  Return the number of streams (possibly zero) that
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   137
  * have been assigned.
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   138
  *
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   139
  * \param stream first stream index to use
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   140
  * \return the number of stream indices assigned by this model
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   141
  */
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   142
  int64_t AssignStreams (int64_t stream);
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   143
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   144
protected:
5802
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   145
  /**
8977
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   146
   * \brief Provides uniform random variables.
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   147
   */
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   148
  Ptr<UniformRandomVariable> m_uvar;
2bd04c7f5010 Replace src/internet usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8793
diff changeset
   149
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   150
private:
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   151
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   152
   * \brief The node.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   153
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   154
  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
   155
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   156
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   157
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   158
 * \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
   159
 * \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
   160
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   161
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
   162
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   163
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   164
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   165
   * \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
   166
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   167
  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
   168
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   169
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   170
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   171
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   172
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   173
  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
   174
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   175
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   176
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   177
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   178
  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
   179
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   180
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   181
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   182
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   183
  ~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
   184
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   185
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   186
   * \brief Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   187
   * \return extension number
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   188
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   189
  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
   190
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   191
  virtual uint8_t Process (Ptr<Packet>& packet,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   192
                           uint8_t offset,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   193
                           Ipv6Header const& ipv6Header,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   194
                           Ipv6Address dst,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   195
                           uint8_t *nextHeader,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   196
                           bool& stopProcessing,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   197
                           bool& isDropped,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   198
                           Ipv6L3Protocol::DropReason& dropReason);
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
   199
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   200
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   201
/**
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
 * \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
   203
 * \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
   204
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   205
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
   206
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   207
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   208
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   209
   * \brief Destination extension number.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   210
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   211
  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
   212
5797
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
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   215
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   216
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   217
  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
   218
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   219
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   220
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   221
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   222
  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
   223
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   224
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   225
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   226
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   227
  ~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
   228
5797
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 extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   231
   * \return extension number
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
  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
   234
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   235
  virtual uint8_t Process (Ptr<Packet>& packet,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   236
                           uint8_t offset,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   237
                           Ipv6Header const& ipv6Header,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   238
                           Ipv6Address dst,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   239
                           uint8_t *nextHeader,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   240
                           bool& stopProcessing,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   241
                           bool& isDropped,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   242
                           Ipv6L3Protocol::DropReason& dropReason);
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
   243
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   244
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   245
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   246
 * \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
   247
 * \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
   248
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   249
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
   250
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   251
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   252
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   253
   * \brief Fragmentation extension number.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   254
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   255
  static const uint8_t EXT_NUMBER = 44;
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   256
7176
9f2663992e99 internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6834
diff changeset
   257
  /**
9f2663992e99 internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6834
diff changeset
   258
    * \brief Get the type identificator.
9f2663992e99 internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6834
diff changeset
   259
    * \return type identificator
9f2663992e99 internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6834
diff changeset
   260
    */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   261
  static TypeId GetTypeId ();
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   262
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   263
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   264
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   265
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   266
  Ipv6ExtensionFragment ();
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   267
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   268
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   269
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   270
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   271
  ~Ipv6ExtensionFragment ();
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   272
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 Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   275
   * \return extension number
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   276
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   277
  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
   278
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   279
  virtual uint8_t Process (Ptr<Packet>& packet,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   280
                           uint8_t offset,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   281
                           Ipv6Header const& ipv6Header,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   282
                           Ipv6Address dst,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   283
                           uint8_t *nextHeader,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   284
                           bool& stopProcessing,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   285
                           bool& isDropped,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   286
                           Ipv6L3Protocol::DropReason& dropReason);
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
   287
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   288
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   289
   * \brief Fragment a packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   290
   * \param packet the packet
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   291
   * \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
   292
   * \param listFragments the list of fragments
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   293
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   294
  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
   295
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   296
protected:
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   297
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   298
   * \brief Dispose this object.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   299
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   300
  virtual void DoDispose ();
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   301
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   302
private:
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   303
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   304
   * \class Fragments
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   305
   * \brief A Set of Fragment
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   306
   */
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   307
  class Fragments : public SimpleRefCount<Fragments>
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   308
  {
7176
9f2663992e99 internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6834
diff changeset
   309
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
   310
    /**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   311
     * \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
   312
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   313
    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
   314
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
     * \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
   317
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   318
    ~Fragments ();
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   319
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
   320
    /**
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   321
     * \brief Add a fragment.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   322
     * \param fragment the fragment
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   323
     * \param fragmentOffset the offset of the fragment
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   324
     * \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
   325
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   326
    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
   327
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   328
    /**
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   329
     * \brief Set the unfragmentable part of the packet.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   330
     * \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
   331
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   332
    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
   333
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   334
    /**
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   335
     * \brief If all fragments have been added.
7790
47d6d575412c Bug 1362 - ICMPv6 does not forward ICMPs to upper layers
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 7385
diff changeset
   336
     * \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
   337
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   338
    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
   339
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
     * \brief Get the entire packet.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   342
     * \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
   343
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   344
    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
   345
7367
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   346
    /**
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   347
     * \brief Get the packet parts so far received.
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   348
     * \return the partial packet
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   349
     */
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   350
    Ptr<Packet> GetPartialPacket () const;
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   351
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   352
    /**
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   353
     * \brief Set the Timeout EventId.
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   354
     */
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   355
    void SetTimeoutEventId (EventId event);
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   356
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   357
    /**
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   358
     * \brief Cancel the timeout event
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   359
     */
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   360
    void CancelTimeout ();
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   361
7176
9f2663992e99 internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6834
diff changeset
   362
private:
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
   363
    /**
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   364
     * \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
   365
     */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   366
    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
   367
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   368
    /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   369
     * \brief The current fragments.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   370
     */
8793
9c59d55abcce Bug 1422 - Fix memory leak in IPv6 fragmentation
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7790
diff changeset
   371
    std::list<std::pair<Ptr<Packet>, uint16_t> > m_packetFragments;
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
   372
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   373
    /**
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   374
     * \brief The unfragmentable part.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   375
     */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   376
    Ptr<Packet> m_unfragmentable;
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
    /**
7367
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   379
     * \brief Timeout handler event
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   380
     */
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   381
    EventId m_timeoutEventId;
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
7367
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   384
  /**
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   385
   * \brief Process the timeout for packet fragments
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   386
   * \param key representing the packet fragments
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   387
   * \param ipHeader the IP header of the original packet
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   388
   */
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   389
  void HandleFragmentsTimeout (std::pair<Ipv6Address, uint32_t> key, Ipv6Header ipHeader);
7367
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   390
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   391
  /**
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   392
   * \brief Get the packet parts so far received.
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   393
   * \return the partial packet
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   394
   */
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   395
  Ptr<Packet> GetPartialPacket () const;
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   396
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   397
  /**
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   398
   * \brief Set the Timeout EventId.
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   399
   */
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   400
  void SetTimeoutEventId (EventId event);
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   401
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   402
  /**
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   403
   * \brief Cancel the timeout event
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   404
   */
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   405
  void CancelTimeout ();
cbd400202eb1 IPv6 fragmentation enhancements
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 7176
diff changeset
   406
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 8977
diff changeset
   407
  /**
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 8977
diff changeset
   408
   * \brief Container for the packet fragments.
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 8977
diff changeset
   409
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   410
  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
   411
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   412
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   413
   * \brief The hash of fragmented packets.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   414
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   415
  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
   416
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   417
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   418
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   419
 * \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
   420
 * \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
   421
 * 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
   422
 * 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
   423
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   424
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
   425
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   426
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   427
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   428
   * \brief Routing extension number.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   429
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   430
  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
   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 Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   434
   * \return type identificator
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
  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
   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 Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   440
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   441
  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
   442
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   443
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   444
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   445
   */
7176
9f2663992e99 internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6834
diff changeset
   446
  ~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
   447
5797
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
   * \brief Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   450
   * \return extension number
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
  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
   453
5797
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
   * \brief Get the type of routing.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   456
   * \return type of routing
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   457
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   458
  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
   459
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   460
  virtual uint8_t Process (Ptr<Packet>& packet,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   461
                           uint8_t offset,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   462
                           Ipv6Header const& ipv6Header,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   463
                           Ipv6Address dst,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   464
                           uint8_t *nextHeader,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   465
                           bool& stopProcessing,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   466
                           bool& isDropped,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   467
                           Ipv6L3Protocol::DropReason& dropReason);
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
   468
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   469
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
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   471
 * \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
   472
 * \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
   473
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   474
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
   475
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   476
public:
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   477
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   478
   * \brief The interface ID.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   479
   * \return type ID
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   480
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   481
  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
   482
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   483
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   484
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   485
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   486
  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
   487
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   488
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   489
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   490
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   491
  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
   492
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   493
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   494
   * \brief Set the node.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   495
   * \param node the node to set
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   496
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   497
  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
   498
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   499
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   500
   * \brief Insert a new IPv6 Routing Extension.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   501
   * \param extensionRouting the routing extension to insert
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
  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
   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 routing extension corresponding to typeRouting.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   507
   * \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
   508
   * \return a matching IPv6 routing extension
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   509
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   510
  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
   511
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   512
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   513
   * \brief Remove a routing extension from this demux.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   514
   * \param extensionRouting pointer on the extension to remove
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
  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
   517
7176
9f2663992e99 internet coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6834
diff changeset
   518
protected:
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   519
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   520
   * \brief Dispose this object.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   521
   */
5802
e93f45bb4bdf Merge with Fabian's repository.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5797 5801
diff changeset
   522
  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
   523
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   524
private:
10405
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 8977
diff changeset
   525
  /**
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 8977
diff changeset
   526
   * \brief Container for the extension routing.
45c8fceae24e Doxygen fixes to Topology-read, Ipv6, and tcp-socket
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 8977
diff changeset
   527
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   528
  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
   529
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   530
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   531
   * \brief List of IPv6 Routing Extensions supported.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   532
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   533
  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
   534
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   535
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   536
   * \brief The node.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   537
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   538
  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
   539
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   540
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   541
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   542
 * \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
   543
 * \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
   544
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   545
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
   546
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   547
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   548
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   549
   * \brief Routing type.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   550
   */
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   551
  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
   552
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   553
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   554
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   555
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   556
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   557
  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
   558
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   559
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   560
   * \brief Constructor.
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
  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
   563
5797
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
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   566
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   567
  ~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
   568
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   569
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   570
   * \brief Get the type of routing.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   571
   * \return type of routing
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 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
   574
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   575
  virtual uint8_t Process (Ptr<Packet>& packet,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   576
                           uint8_t offset,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   577
                           Ipv6Header const& ipv6Header,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   578
                           Ipv6Address dst,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   579
                           uint8_t *nextHeader,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   580
                           bool& stopProcessing,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   581
                           bool& isDropped,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   582
                           Ipv6L3Protocol::DropReason& dropReason);
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
   583
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   584
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   585
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   586
 * \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
   587
 * \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
   588
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   589
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
   590
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   591
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   592
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   593
   * \brief ESP extension number.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   594
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   595
  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
   596
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   597
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   598
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   599
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   600
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   601
  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
   602
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   603
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   604
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   605
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   606
  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
   607
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   608
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   609
   * \brief Destructor.
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
  ~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
   612
5797
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
   * \brief Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   615
   * \return extension number
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   616
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   617
  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
   618
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   619
  virtual uint8_t Process (Ptr<Packet>& packet,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   620
                           uint8_t offset,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   621
                           Ipv6Header const& ipv6Header,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   622
                           Ipv6Address dst,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   623
                           uint8_t *nextHeader,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   624
                           bool& stopProcessing,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   625
                           bool& isDropped,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   626
                           Ipv6L3Protocol::DropReason& dropReason);
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
   627
};
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
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   629
/**
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   630
 * \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
   631
 * \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
   632
 */
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   633
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
   634
{
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   635
public:
5805
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   636
  /**
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   637
   * \brief AH extension number.
db141a163ef3 Merge with ns-3-dev and fix doxygen.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5802
diff changeset
   638
   */
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   639
  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
   640
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   641
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   642
   * \brief Get the type identificator.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   643
   * \return type identificator
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   644
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   645
  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
   646
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   647
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   648
   * \brief Constructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   649
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   650
  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
   651
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   652
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   653
   * \brief Destructor.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   654
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   655
  ~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
   656
5797
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   657
  /**
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   658
   * \brief Get the extension number.
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   659
   * \return extension number
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   660
   */
6a4cdcd8bfb8 Indent header files.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents: 5796
diff changeset
   661
  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
   662
10669
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   663
  virtual uint8_t Process (Ptr<Packet>& packet,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   664
                           uint8_t offset,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   665
                           Ipv6Header const& ipv6Header,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   666
                           Ipv6Address dst,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   667
                           uint8_t *nextHeader,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   668
                           bool& stopProcessing,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   669
                           bool& isDropped,
46c9391bc38b Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10405
diff changeset
   670
                           Ipv6L3Protocol::DropReason& dropReason);
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
   671
};
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   672
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   673
} /* 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
   674
f5299c974f1b Add IPv6 extension files from old ns-3-ipv6 repository (not working yet).
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
diff changeset
   675
#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
   676