A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ipv6-static-routing-helper.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2009 University of Washington
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 */
6
7#ifndef IPV6_STATIC_ROUTING_HELPER_H
8#define IPV6_STATIC_ROUTING_HELPER_H
9
10#include "ipv6-routing-helper.h"
11
12#include "ns3/ipv6-address.h"
13#include "ns3/ipv6-static-routing.h"
14#include "ns3/ipv6.h"
15#include "ns3/net-device-container.h"
16#include "ns3/net-device.h"
17#include "ns3/node-container.h"
18#include "ns3/node.h"
19#include "ns3/ptr.h"
20
21namespace ns3
22{
23
24/**
25 * @ingroup ipv6Helpers
26 *
27 * @brief Helper class that adds ns3::Ipv6StaticRouting objects
28 *
29 * This class is expected to be used in conjunction with
30 * ns3::InternetStackHelper::SetRoutingHelper
31 */
33{
34 public:
35 /**
36 * @brief Constructor.
37 */
39
40 /**
41 * @brief Construct an Ipv6ListRoutingHelper from another previously
42 * initialized instance (Copy Constructor).
43 * @param o object to be copied
44 */
46
47 // Delete assignment operator to avoid misuse
49
50 /**
51 * @returns pointer to clone of this Ipv6StaticRoutingHelper
52 *
53 * This method is mainly for internal use by the other helpers;
54 * clients are expected to free the dynamic memory allocated by this method
55 */
56 Ipv6StaticRoutingHelper* Copy() const override;
57
58 /**
59 * @param node the node on which the routing protocol will run
60 * @returns a newly-created routing protocol
61 *
62 * This method will be called by ns3::InternetStackHelper::Install
63 */
64 Ptr<Ipv6RoutingProtocol> Create(Ptr<Node> node) const override;
65
66 /**
67 * @brief Get Ipv6StaticRouting pointer from IPv6 stack.
68 * @param ipv6 Ipv6 pointer
69 * @return Ipv6StaticRouting pointer or 0 if not found
70 */
72
73 /**
74 * @brief Add a multicast route to a node and net device using explicit
75 * Ptr<Node> and Ptr<NetDevice>
76 *
77 * @param n The node.
78 * @param source Source address.
79 * @param group Multicast group.
80 * @param input Input NetDevice.
81 * @param output Output NetDevices.
82 */
84 Ipv6Address source,
85 Ipv6Address group,
86 Ptr<NetDevice> input,
87 NetDeviceContainer output);
88
89 /**
90 * @brief Add a multicast route to a node and device using a name string
91 * previously associated to the node using the Object Name Service and a
92 * Ptr<NetDevice>
93 *
94 * @param n The node.
95 * @param source Source address.
96 * @param group Multicast group.
97 * @param input Input NetDevice.
98 * @param output Output NetDevices.
99 */
100 void AddMulticastRoute(std::string n,
101 Ipv6Address source,
102 Ipv6Address group,
103 Ptr<NetDevice> input,
104 NetDeviceContainer output);
105
106 /**
107 * @brief Add a multicast route to a node and device using a Ptr<Node> and a
108 * name string previously associated to the device using the Object Name Service.
109 *
110 * @param n The node.
111 * @param source Source address.
112 * @param group Multicast group.
113 * @param inputName Input NetDevice.
114 * @param output Output NetDevices.
115 */
117 Ipv6Address source,
118 Ipv6Address group,
119 std::string inputName,
120 NetDeviceContainer output);
121
122 /**
123 * @brief Add a multicast route to a node and device using name strings
124 * previously associated to both the node and device using the Object Name
125 * Service.
126 *
127 * @param nName The node.
128 * @param source Source address.
129 * @param group Multicast group.
130 * @param inputName Input NetDevice.
131 * @param output Output NetDevices.
132 */
133 void AddMulticastRoute(std::string nName,
134 Ipv6Address source,
135 Ipv6Address group,
136 std::string inputName,
137 NetDeviceContainer output);
138
139#if 0
140 /**
141 * @brief Add a default route to the static routing protocol to forward
142 * packets out a particular interface
143 */
144 void SetDefaultMulticastRoute (Ptr<Node> n, Ptr<NetDevice> nd);
145 void SetDefaultMulticastRoute (Ptr<Node> n, std::string ndName);
146 void SetDefaultMulticastRoute (std::string nName, Ptr<NetDevice> nd);
147 void SetDefaultMulticastRoute (std::string nName, std::string ndName);
148#endif
149};
150
151} // namespace ns3
152
153#endif /* IPV6_STATIC_ROUTING_HELPER_H */
Describes an IPv6 address.
A factory to create ns3::Ipv6RoutingProtocol objects.
Helper class that adds ns3::Ipv6StaticRouting objects.
Ptr< Ipv6RoutingProtocol > Create(Ptr< Node > node) const override
Ptr< Ipv6StaticRouting > GetStaticRouting(Ptr< Ipv6 > ipv6) const
Get Ipv6StaticRouting pointer from IPv6 stack.
void AddMulticastRoute(Ptr< Node > n, Ipv6Address source, Ipv6Address group, Ptr< NetDevice > input, NetDeviceContainer output)
Add a multicast route to a node and net device using explicit Ptr<Node> and Ptr<NetDevice>
Ipv6StaticRoutingHelper * Copy() const override
Ipv6StaticRoutingHelper & operator=(const Ipv6StaticRoutingHelper &)=delete
holds a vector of ns3::NetDevice pointers
Smart pointer class similar to boost::intrusive_ptr.
Every class exported by the ns3 library is enclosed in the ns3 namespace.