/usr/include/ns3.26/ns3/ipv6-pmtu-cache.h is in libns3-dev 3.26+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2013 Universita' di Firenze
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
*/
#ifndef IPV6_PMTU_CACHE_H
#define IPV6_PMTU_CACHE_H
#include <map>
#include "ns3/object.h"
#include "ns3/nstime.h"
#include "ns3/type-id.h"
#include "ns3/event-id.h"
#include "ns3/ipv6-address.h"
namespace ns3 {
/**
* \ingroup ipv6
*
* \brief This class implements the Path MTU cache, as defined by \RFC{1981}.
*
* The Path MTU is stored according to the destination address, and it is
* cleared upon expiration (default validity time is 10 minutes).
*
* The "infinite lifetime" PMTU entry type is not implemented, since it is
* useful only in an very limited number of cases. See the RFC for further
* details.
*/
class Ipv6PmtuCache : public Object
{
public:
class Entry;
/**
* \brief Get the type ID
* \return type ID
*/
static TypeId GetTypeId ();
/**
* \brief Constructor.
*/
Ipv6PmtuCache ();
/**
* \brief Destructor.
*/
~Ipv6PmtuCache ();
/**
* \brief Dispose object.
*/
virtual void DoDispose ();
/**
* \brief Gets the known Path MTU for the specific destination
* \param dst the destination
* \return the Path MTU (zero if unknown)
*/
uint32_t GetPmtu (Ipv6Address dst);
/**
* \brief Sets the Path MTU for the specific destination
* \param dst the destination
* \param pmtu the Path MTU
*/
void SetPmtu (Ipv6Address dst, uint32_t pmtu);
/**
* \brief Gets the Path MTU validity time
* \return the Path MTU validity time
*/
Time GetPmtuValidityTime () const;
/**
* \brief Sets the Path MTU validity time (minimum is 5 minutes)
* \param validity the Path MTU validity time
* \return true if the change was successful
*/
bool SetPmtuValidityTime (Time validity);
private:
/**
* \brief Clears the Path MTU for the specific destination
* \param dst the destination
*/
void ClearPmtu (Ipv6Address dst);
/**
* \brief Path MTU table
*/
std::map<Ipv6Address, uint32_t> m_pathMtu;
/**
* \brief Container of the IPv6 PMTU data (Ipv6 destination address and expiration event).
*/
typedef std::map<Ipv6Address, EventId>::iterator pathMtuTimerIter;
/**
* \brief Path MTU Expiration table
*/
std::map<Ipv6Address, EventId> m_pathMtuTimer;
/**
* \brief Path MTU entry validity time
*/
Time m_validityTime;
};
}
#endif /* IPV6_PMTU_CACHE_H */
|