/usr/include/ns3.26/ns3/ipv4-route.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 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2009 University of Washington
*
* 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
*
*/
#ifndef IPV4_ROUTE_H
#define IPV4_ROUTE_H
#include <list>
#include <map>
#include <ostream>
#include "ns3/simple-ref-count.h"
#include "ns3/ipv4-address.h"
namespace ns3 {
class NetDevice;
/**
* \ingroup ipv4Routing
*
*\brief IPv4 route cache entry (similar to Linux struct rtable)
*
* This is a reference counted object. In the future, we will add other
* entries from struct dst_entry, struct rtable, and struct dst_ops as needed.
*/
class Ipv4Route : public SimpleRefCount<Ipv4Route>
{
public:
Ipv4Route ();
/**
* \param dest Destination Ipv4Address
*/
void SetDestination (Ipv4Address dest);
/**
* \return Destination Ipv4Address of the route
*/
Ipv4Address GetDestination (void) const;
/**
* \param src Source Ipv4Address
*/
void SetSource (Ipv4Address src);
/**
* \return Source Ipv4Address of the route
*/
Ipv4Address GetSource (void) const;
/**
* \param gw Gateway (next hop) Ipv4Address
*/
void SetGateway (Ipv4Address gw);
/**
* \return Ipv4Address of the gateway (next hop)
*/
Ipv4Address GetGateway (void) const;
/**
* Equivalent in Linux to dst_entry.dev
*
* \param outputDevice pointer to NetDevice for outgoing packets
*/
void SetOutputDevice (Ptr<NetDevice> outputDevice);
/**
* \return pointer to NetDevice for outgoing packets
*/
Ptr<NetDevice> GetOutputDevice (void) const;
#ifdef NOTYET
// rtable.idev
void SetInputIfIndex (uint32_t iif);
uint32_t GetInputIfIndex (void) const;
#endif
private:
Ipv4Address m_dest; //!< Destination address.
Ipv4Address m_source; //!< Source address.
Ipv4Address m_gateway; //!< Gateway address.
Ptr<NetDevice> m_outputDevice; //!< Output device.
#ifdef NOTYET
uint32_t m_inputIfIndex;
#endif
};
/**
* \brief Stream insertion operator.
*
* \param os the reference to the output stream
* \param route the Ipv4 route
* \returns the reference to the output stream
*/
std::ostream& operator<< (std::ostream& os, Ipv4Route const& route);
/**
* \ingroup ipv4Routing
*
* \brief Ipv4 multicast route cache entry (similar to Linux struct mfc_cache)
*/
class Ipv4MulticastRoute : public SimpleRefCount<Ipv4MulticastRoute>
{
public:
Ipv4MulticastRoute ();
/**
* \param group Ipv4Address of the multicast group
*/
void SetGroup (const Ipv4Address group);
/**
* \return Ipv4Address of the multicast group
*/
Ipv4Address GetGroup (void) const;
/**
* \param origin Ipv4Address of the origin address
*/
void SetOrigin (const Ipv4Address origin);
/**
* \return Ipv4Address of the origin address
*/
Ipv4Address GetOrigin (void) const;
/**
* \param iif Parent (input interface) for this route
*/
void SetParent (uint32_t iif);
/**
* \return Parent (input interface) for this route
*/
uint32_t GetParent (void) const;
/**
* \param oif Outgoing interface index
* \param ttl time-to-live for this route
*/
void SetOutputTtl (uint32_t oif, uint32_t ttl);
/**
* \return map of output interface Ids and TTLs for this route
*/
std::map<uint32_t, uint32_t> GetOutputTtlMap () const;
static const uint32_t MAX_INTERFACES = 16; //!< Maximum number of multicast interfaces on a router
static const uint32_t MAX_TTL = 255; //!< Maximum time-to-live (TTL)
private:
Ipv4Address m_group; //!< Group
Ipv4Address m_origin; //!< Source of packet
uint32_t m_parent; //!< Source interface
std::map<uint32_t, uint32_t> m_ttls; //!< Time to Live container
};
} // namespace ns3
#endif /* IPV4_ROUTE_H */
|