Index: src/olsr6/helper/olsr6-helper.h |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/src/olsr6/helper/olsr6-helper.h |
@@ -0,0 +1,121 @@ |
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
+/* |
+ * Copyright (c) 2016 NITK Surathkal |
+ * |
+ * 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: Ankit Deepak <adadeepak8@gmail.com> |
+ * Shravya Ks <shravya.ks0@gmail.com>, |
+ * Mohit P. Tahiliani <tahiliani@nitk.edu.in> |
+ */ |
+ |
+/* |
+ * PORT NOTE: This code was ported from ns-3 IPv4 implementation (src/olsr). Almost all |
+ * comments have also been ported from the same |
+ */ |
+ |
+#ifndef OLSR6_HELPER_H |
+#define OLSR6_HELPER_H |
+ |
+#include "ns3/object-factory.h" |
+#include "ns3/node.h" |
+#include "ns3/node-container.h" |
+#include "ns3/ipv6-routing-helper.h" |
+#include <map> |
+#include <set> |
+ |
+namespace ns3 { |
+ |
+/** |
+ * \ingroup olsr6 |
+ * |
+ * \brief Helper class that adds OLSR6 routing to nodes. |
+ * |
+ * This class is expected to be used in conjunction with |
+ * ns3::InternetStackHelper::SetRoutingHelper |
+ */ |
+class Olsr6Helper : public Ipv6RoutingHelper |
+{ |
+public: |
+ /** |
+ * Create an Olsr6Helper that makes life easier for people who want to install |
+ * OLSR6 routing to nodes. |
+ */ |
+ Olsr6Helper (); |
+ |
+ /** |
+ * \brief Construct an Olsr6Helper from another previously initialized instance |
+ * (Copy Constructor). |
+ */ |
+ Olsr6Helper (const Olsr6Helper &); |
+ |
+ /** |
+ * \returns pointer to clone of this Olsr6Helper |
+ * |
+ * This method is mainly for internal use by the other helpers; |
+ * clients are expected to free the dynamic memory allocated by this method |
+ */ |
+ Olsr6Helper* Copy (void) const; |
+ |
+ /** |
+ * \param node the node for which an exception is to be defined |
+ * \param interface an interface of node on which OLSR6 is not to be installed |
+ * |
+ * This method allows the user to specify an interface on which OLSR6 is not to be installed on |
+ */ |
+ void ExcludeInterface (Ptr<Node> node, uint32_t interface); |
+ |
+ /** |
+ * \param node the node on which the routing protocol will run |
+ * \returns a newly-created routing protocol |
+ * |
+ * This method will be called by ns3::InternetStackHelper::Install |
+ */ |
+ virtual Ptr<Ipv6RoutingProtocol> Create (Ptr<Node> node) const; |
+ |
+ /** |
+ * \param name the name of the attribute to set |
+ * \param value the value of the attribute to set. |
+ * |
+ * This method controls the attributes of ns3::olsr6::RoutingProtocol |
+ */ |
+ void Set (std::string name, const AttributeValue &value); |
+ |
+ /** |
+ * Assign a fixed random variable stream number to the random variables |
+ * used by this model. Return the number of streams (possibly zero) that |
+ * have been assigned. The Install() method of the InternetStackHelper |
+ * should have previously been called by the user. |
+ * |
+ * \param stream first stream index to use |
+ * \param c NodeContainer of the set of nodes for which the Olsr6RoutingProtocol |
+ * should be modified to use a fixed stream |
+ * \return the number of stream indices assigned by this helper |
+ */ |
+ int64_t AssignStreams (NodeContainer c, int64_t stream); |
+ |
+private: |
+ /** |
+ * \brief Assignment operator declared private and not implemented to disallow |
+ * assignment and prevent the compiler from happily inserting its own. |
+ */ |
+ Olsr6Helper &operator = (const Olsr6Helper &); |
+ ObjectFactory m_agentFactory; //!< Object factory |
+ |
+ std::map< Ptr<Node>, std::set<uint32_t> > m_interfaceExclusions; //!< container of interfaces excluded from OLSR6 operations |
+}; |
+ |
+} // namespace ns3 |
+ |
+#endif /* OLSR6_HELPER_H */ |