A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
internet-stack-helper.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2008 INRIA
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19  */
20 
21 #ifndef INTERNET_STACK_HELPER_H
22 #define INTERNET_STACK_HELPER_H
23 
24 #include "ns3/node-container.h"
25 #include "ns3/net-device-container.h"
26 #include "ns3/packet.h"
27 #include "ns3/ptr.h"
28 #include "ns3/object-factory.h"
29 #include "ns3/ipv4-l3-protocol.h"
30 #include "ns3/ipv6-l3-protocol.h"
31 #include "internet-trace-helper.h"
32 
33 namespace ns3 {
34 
35 class Node;
36 class Ipv4RoutingHelper;
37 class Ipv6RoutingHelper;
38 
66 {
67 public:
77  InternetStackHelper(void);
78 
82  virtual ~InternetStackHelper(void);
83 
88 
93 
97  void Reset (void);
98 
108  void SetRoutingHelper (const Ipv4RoutingHelper &routing);
109 
114  void SetRoutingHelper (const Ipv6RoutingHelper &routing);
115 
123  void Install (std::string nodeName) const;
124 
132  void Install (Ptr<Node> node) const;
133 
143  void Install (NodeContainer c) const;
144 
148  void InstallAll (void) const;
149 
161  void SetTcp (std::string tid);
162 
175  void SetTcp (std::string tid, std::string attr, const AttributeValue &val);
176 
181  void SetIpv4StackInstall (bool enable);
182 
187  void SetIpv6StackInstall (bool enable);
188 
193  void SetIpv4ArpJitter (bool enable);
194 
199  void SetIpv6NsRsJitter (bool enable);
200 
212  int64_t AssignStreams (NodeContainer c, int64_t stream);
213 
214 private:
224  virtual void EnablePcapIpv4Internal (std::string prefix,
225  Ptr<Ipv4> ipv4,
226  uint32_t interface,
227  bool explicitFilename);
228 
241  std::string prefix,
242  Ptr<Ipv4> ipv4,
243  uint32_t interface,
244  bool explicitFilename);
245 
255  virtual void EnablePcapIpv6Internal (std::string prefix,
256  Ptr<Ipv6> ipv6,
257  uint32_t interface,
258  bool explicitFilename);
259 
272  std::string prefix,
273  Ptr<Ipv6> ipv6,
274  uint32_t interface,
275  bool explicitFilename);
276 
280  void Initialize (void);
281 
287 
293 
299 
307  static void CreateAndAggregateObjectFromTypeId (Ptr<Node> node, const std::string typeId);
308 
312  static void Cleanup (void);
313 
321  bool PcapHooked (Ptr<Ipv4> ipv4);
322 
330  bool AsciiHooked (Ptr<Ipv4> ipv4);
331 
339  bool PcapHooked (Ptr<Ipv6> ipv6);
340 
348  bool AsciiHooked (Ptr<Ipv6> ipv6);
349 
356 
363 
370 
377 };
378 
379 } // namespace ns3
380 
381 #endif /* INTERNET_STACK_HELPER_H */
bool m_ipv4ArpJitterEnabled
IPv4 ARP Jitter state (enabled/disabled) ?
Base class providing common user-level pcap operations for helpers representing IPv6 protocols ...
bool m_ipv6NsRsJitterEnabled
IPv6 IPv6 NS and RS Jitter state (enabled/disabled) ?
virtual void EnablePcapIpv6Internal(std::string prefix, Ptr< Ipv6 > ipv6, uint32_t interface, bool explicitFilename)
Enable pcap output the indicated Ipv6 and interface pair.
Hold a value for an Attribute.
Definition: attribute.h:56
void SetIpv4ArpJitter(bool enable)
Enable/disable IPv4 ARP Jitter.
static void Cleanup(void)
ObjectFactory m_tcpFactory
TCP objects factory.
aggregate IP/TCP/UDP functionality to existing Nodes.
InternetStackHelper & operator=(const InternetStackHelper &o)
Copy constructor.
static void CreateAndAggregateObjectFromTypeId(Ptr< Node > node, const std::string typeId)
create an object from its TypeId and aggregates it to the node
Base class providing common user-level ascii trace operations for helpers representing IPv6 protocols...
virtual void EnablePcapIpv4Internal(std::string prefix, Ptr< Ipv4 > ipv4, uint32_t interface, bool explicitFilename)
Enable pcap output the indicated Ipv4 and interface pair.
void InstallAll(void) const
Aggregate IPv4, IPv6, UDP, and TCP stacks to all nodes in the simulation.
void SetIpv4StackInstall(bool enable)
Enable/disable IPv4 stack install.
A factory to create ns3::Ipv6RoutingProtocol objects.
void Reset(void)
Return helper internal state to that of a newly constructed one.
bool PcapHooked(Ptr< Ipv4 > ipv4)
checks if there is an hook to a Pcap wrapper
bool m_ipv6Enabled
IPv6 install state (enabled/disabled) ?
a factory to create ns3::Ipv4RoutingProtocol objects
keep track of a set of node pointers.
Base class providing common user-level pcap operations for helpers representing IPv4 protocols ...
void Initialize(void)
Initialize the helper to its default values.
void SetTcp(std::string tid)
set the Tcp stack which will not need any other parameter.
void Install(std::string nodeName) const
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
virtual ~InternetStackHelper(void)
Destroy the InternetStackHelper.
instantiate subclasses of ns3::Object.
const Ipv6RoutingHelper * m_routingv6
IPv6 routing helper.
int64_t AssignStreams(NodeContainer c, int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
bool AsciiHooked(Ptr< Ipv4 > ipv4)
checks if there is an hook to an ascii output stream
virtual void EnableAsciiIpv6Internal(Ptr< OutputStreamWrapper > stream, std::string prefix, Ptr< Ipv6 > ipv6, uint32_t interface, bool explicitFilename)
Enable ascii trace output on the indicated Ipv6 and interface pair.
InternetStackHelper(void)
Create a new InternetStackHelper which uses a mix of static routing and global routing by default...
const Ipv4RoutingHelper * m_routing
IPv4 routing helper.
Base class providing common user-level ascii trace operations for helpers representing IPv4 protocols...
void SetIpv6NsRsJitter(bool enable)
Enable/disable IPv6 NS and RS Jitter.
void SetRoutingHelper(const Ipv4RoutingHelper &routing)
bool m_ipv4Enabled
IPv4 install state (enabled/disabled) ?
virtual void EnableAsciiIpv4Internal(Ptr< OutputStreamWrapper > stream, std::string prefix, Ptr< Ipv4 > ipv4, uint32_t interface, bool explicitFilename)
Enable ascii trace output on the indicated Ipv4 and interface pair.
void SetIpv6StackInstall(bool enable)
Enable/disable IPv6 stack install.