Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(182)

Unified Diff: src/olsr6/helper/olsr6-helper.h

Issue 310940043: IPv6 Support for OLSR in ns-3
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/olsr6/examples/wscript ('k') | src/olsr6/helper/olsr6-helper.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 */
« no previous file with comments | « src/olsr6/examples/wscript ('k') | src/olsr6/helper/olsr6-helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b