/usr/include/ns3.26/ns3/pfifo-fast-queue-disc.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 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2007, 2014 University of Washington
* 2015 Universita' degli Studi di Napoli Federico II
*
* 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
*
* Authors: Stefano Avallone <stavallo@unina.it>
* Tom Henderson <tomhend@u.washington.edu>
*/
#ifndef PFIFO_FAST_H
#define PFIFO_FAST_H
#include "ns3/queue-disc.h"
namespace ns3 {
/**
* \ingroup traffic-control
*
* Linux pfifo_fast is the default priority queue enabled on Linux
* systems. Packets are enqueued in three FIFO droptail queues according
* to three priority bands based on the packet priority.
*
* The system behaves similar to three ns3::DropTail queues operating
* together, in which packets from higher priority bands are always
* dequeued before a packet from a lower priority band is dequeued.
*
* The queue disc capacity, i.e., the maximum number of packets that can
* be enqueued in the queue disc, is set through the limit attribute, which
* plays the same role as txqueuelen in Linux. If no internal queue is
* provided, three DropTail queues having each a capacity equal to limit are
* created by default. User is allowed to provide queues, but they must be
* three, operate in packet mode and each have a capacity not less
* than limit. No packet filter can be provided.
*/
class PfifoFastQueueDisc : public QueueDisc {
public:
/**
* \brief Get the type ID.
* \return the object TypeId
*/
static TypeId GetTypeId (void);
/**
* \brief PfifoFastQueueDisc constructor
*
* Creates a queue with a depth of 1000 packets per band by default
*/
PfifoFastQueueDisc ();
virtual ~PfifoFastQueueDisc();
private:
/**
* Priority to band map. Values are taken from the prio2band array used by
* the Linux pfifo_fast queue disc.
*/
static const uint32_t prio2band[16];
virtual bool DoEnqueue (Ptr<QueueDiscItem> item);
virtual Ptr<QueueDiscItem> DoDequeue (void);
virtual Ptr<const QueueDiscItem> DoPeek (void) const;
virtual bool CheckConfig (void);
virtual void InitializeParams (void);
uint32_t m_limit; //!< Maximum number of packets that can be stored
};
} // namespace ns3
#endif /* PFIFO_FAST_H */
|