A Discrete-Event Network Simulator
API
radvd-interface.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2009 Strasbourg University
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: Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
19  */
20 
21 #ifndef RADVD_INTERFACE_H
22 #define RADVD_INTERFACE_H
23 
24 #include "radvd-prefix.h"
25 #include <list>
26 #include "ns3/simple-ref-count.h"
27 #include "ns3/nstime.h"
28 
29 namespace ns3
30 {
31 
36 class RadvdInterface : public SimpleRefCount<RadvdInterface>
37 {
38 public:
40  typedef std::list<Ptr<RadvdPrefix> > RadvdPrefixList;
42  typedef std::list<Ptr<RadvdPrefix> >::iterator RadvdPrefixListI;
44  typedef std::list<Ptr<RadvdPrefix> >::const_iterator RadvdPrefixListCI;
45 
50  RadvdInterface (uint32_t interface);
51 
58  RadvdInterface (uint32_t interface, uint32_t maxRtrAdvInterval, uint32_t minRtrAdvInterval);
59 
63  ~RadvdInterface ();
64 
69  uint32_t GetInterface () const;
70 
76 
81  void AddPrefix (Ptr<RadvdPrefix> routerPrefix);
82 
87  bool IsSendAdvert () const;
88 
93  void SetSendAdvert (bool sendAdvert);
94 
99  uint32_t GetMaxRtrAdvInterval () const;
100 
105  void SetMaxRtrAdvInterval (uint32_t maxRtrAdvInterval);
106 
111  uint32_t GetMinRtrAdvInterval () const;
112 
117  void SetMinRtrAdvInterval (uint32_t minRtrAdvInterval);
118 
123  uint32_t GetMinDelayBetweenRAs () const;
124 
129  void SetMinDelayBetweenRAs (uint32_t minDelayBetweenRAs);
130 
135  bool IsManagedFlag () const;
136 
141  void SetManagedFlag (bool managedFlag);
142 
147  bool IsOtherConfigFlag () const;
148 
153  void SetOtherConfigFlag (bool otherConfigFlag);
154 
159  uint32_t GetLinkMtu () const;
160 
165  void SetLinkMtu (uint32_t linkMtu);
166 
171  uint32_t GetReachableTime () const;
172 
177  void SetReachableTime (uint32_t reachableTime);
178 
183  uint32_t GetDefaultLifeTime () const;
184 
189  void SetDefaultLifeTime (uint32_t defaultLifeTime);
190 
195  uint32_t GetRetransTimer () const;
196 
201  void SetRetransTimer (uint32_t retransTimer);
202 
207  uint8_t GetCurHopLimit () const;
208 
213  void SetCurHopLimit (uint8_t curHopLimit);
214 
219  uint8_t GetDefaultPreference () const;
220 
225  void SetDefaultPreference (uint8_t defaultPreference);
226 
231  bool IsSourceLLAddress () const;
232 
237  void SetSourceLLAddress (bool sourceLLAddress);
238 
243  bool IsHomeAgentFlag () const;
244 
249  void SetHomeAgentFlag (bool homeAgentFlag);
250 
255  bool IsHomeAgentInfo () const;
256 
261  void SetHomeAgentInfo (bool homeAgentFlag);
262 
267  uint32_t GetHomeAgentLifeTime () const;
268 
273  void SetHomeAgentLifeTime (uint32_t homeAgentLifeTime);
274 
279  uint32_t GetHomeAgentPreference () const;
280 
285  void SetHomeAgentPreference (uint32_t homeAgentPreference);
286 
291  bool IsMobRtrSupportFlag () const;
292 
297  void SetMobRtrSupportFlag (bool mobRtrSupportFlag);
298 
303  bool IsIntervalOpt () const;
304 
309  void SetIntervalOpt (bool intervalOpt);
310 
316 
321  void SetLastRaTxTime (Time now);
322 
327  bool IsInitialRtrAdv ();
328 
329 private:
330 
334  uint32_t m_interface;
335 
340 
345 
350 
355 
360 
365 
370 
374  uint32_t m_linkMtu;
375 
379  uint32_t m_reachableTime;
380 
384  uint32_t m_retransTimer;
385 
389  uint32_t m_curHopLimit;
390 
395 
403 
408 
413 
419 
424 
429 
434 
439 
444 
449 
450 };
451 
452 } /* namespace ns3 */
453 
454 #endif /* RADVD_INTERFACE_H */
455 
ns3::RadvdInterface::GetMinDelayBetweenRAs
uint32_t GetMinDelayBetweenRAs() const
Get minimum delay between RAs.
Definition: radvd-interface.cc:149
ns3::RadvdInterface::SetMinRtrAdvInterval
void SetMinRtrAdvInterval(uint32_t minRtrAdvInterval)
Get minimum RA interval.
Definition: radvd-interface.cc:143
ns3::RadvdInterface::m_managedFlag
bool m_managedFlag
Managed flag.
Definition: radvd-interface.h:364
ns3::RadvdInterface::SetCurHopLimit
void SetCurHopLimit(uint8_t curHopLimit)
Set current hop limit.
Definition: radvd-interface.cc:239
ns3::RadvdInterface::SetHomeAgentFlag
void SetHomeAgentFlag(bool homeAgentFlag)
Set "home agent" flag.
Definition: radvd-interface.cc:275
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::RadvdInterface::GetDefaultPreference
uint8_t GetDefaultPreference() const
Get default preference.
Definition: radvd-interface.cc:245
ns3::RadvdInterface::RadvdPrefixListI
std::list< Ptr< RadvdPrefix > >::iterator RadvdPrefixListI
Container Iterator: Ptr to RadvdPrefix.
Definition: radvd-interface.h:42
ns3::RadvdInterface::m_homeAgentPreference
uint32_t m_homeAgentPreference
Home agent preference.
Definition: radvd-interface.h:428
ns3::RadvdInterface::m_prefixes
RadvdPrefixList m_prefixes
List of prefixes to advertise.
Definition: radvd-interface.h:339
ns3::RadvdInterface::m_minRtrAdvInterval
uint32_t m_minRtrAdvInterval
Minimum RA interval in milliseconds.
Definition: radvd-interface.h:354
ns3::RadvdInterface::SetIntervalOpt
void SetIntervalOpt(bool intervalOpt)
Set flag to add or not advertisement interval to RA.
Definition: radvd-interface.cc:335
ns3::RadvdInterface::SetLinkMtu
void SetLinkMtu(uint32_t linkMtu)
Set link MTU.
Definition: radvd-interface.cc:191
ns3::RadvdInterface::m_homeAgentInfo
bool m_homeAgentInfo
Flag to add Home Agent Information option (Mobile IPv6).
Definition: radvd-interface.h:418
ns3::RadvdInterface::SetMaxRtrAdvInterval
void SetMaxRtrAdvInterval(uint32_t maxRtrAdvInterval)
Get maximum RA interval.
Definition: radvd-interface.cc:131
ns3::SimpleRefCount
A template-based reference counting class.
Definition: simple-ref-count.h:74
ns3::RadvdInterface::SetHomeAgentLifeTime
void SetHomeAgentLifeTime(uint32_t homeAgentLifeTime)
Set home agent lifetime.
Definition: radvd-interface.cc:299
ns3::RadvdInterface::IsHomeAgentFlag
bool IsHomeAgentFlag() const
Is "home agent" flag enabled ?
Definition: radvd-interface.cc:269
ns3::RadvdInterface::GetLastRaTxTime
Time GetLastRaTxTime()
Get the last time a RA has been sent.
Definition: radvd-interface.cc:341
ns3::RadvdInterface::SetLastRaTxTime
void SetLastRaTxTime(Time now)
Set the last RA send time.
Definition: radvd-interface.cc:346
ns3::RadvdInterface::SetReachableTime
void SetReachableTime(uint32_t reachableTime)
Set reachable time.
Definition: radvd-interface.cc:203
ns3::RadvdInterface::IsMobRtrSupportFlag
bool IsMobRtrSupportFlag() const
Is "mobile router support" flag enabled ?
Definition: radvd-interface.cc:317
ns3::RadvdInterface::RadvdPrefixListCI
std::list< Ptr< RadvdPrefix > >::const_iterator RadvdPrefixListCI
Container Const Iterator: Ptr to RadvdPrefix.
Definition: radvd-interface.h:44
ns3::RadvdInterface::GetCurHopLimit
uint8_t GetCurHopLimit() const
Get current hop limit.
Definition: radvd-interface.cc:233
ns3::RadvdInterface::m_homeAgentFlag
bool m_homeAgentFlag
Flag to add HA (home agent) flag in RA.
Definition: radvd-interface.h:412
ns3::RadvdInterface::GetHomeAgentPreference
uint32_t GetHomeAgentPreference() const
Get home agent preference.
Definition: radvd-interface.cc:305
ns3::Ptr< RadvdPrefix >
ns3::RadvdInterface::GetDefaultLifeTime
uint32_t GetDefaultLifeTime() const
Get default lifetime.
Definition: radvd-interface.cc:209
ns3::RadvdInterface::GetInterface
uint32_t GetInterface() const
Get interface index for this configuration.
Definition: radvd-interface.cc:101
ns3::RadvdInterface::m_defaultLifeTime
uint32_t m_defaultLifeTime
Default life time in seconds.
Definition: radvd-interface.h:394
ns3::RadvdInterface
Radvd interface configuration.
Definition: radvd-interface.h:37
ns3::RadvdInterface::GetMinRtrAdvInterval
uint32_t GetMinRtrAdvInterval() const
Get minimum RA interval.
Definition: radvd-interface.cc:137
ns3::RadvdInterface::SetOtherConfigFlag
void SetOtherConfigFlag(bool otherConfigFlag)
Set "other config" flag.
Definition: radvd-interface.cc:179
ns3::RadvdInterface::m_minDelayBetweenRAs
uint32_t m_minDelayBetweenRAs
Minimum delay between RA in milliseconds.
Definition: radvd-interface.h:359
ns3::RadvdInterface::SetMinDelayBetweenRAs
void SetMinDelayBetweenRAs(uint32_t minDelayBetweenRAs)
Set minimum delay between RAs.
Definition: radvd-interface.cc:155
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:104
ns3::RadvdInterface::m_homeAgentLifeTime
uint32_t m_homeAgentLifeTime
Home agent lifetime in seconds.
Definition: radvd-interface.h:423
ns3::RadvdInterface::m_interface
uint32_t m_interface
Interface to advertise RA.
Definition: radvd-interface.h:334
ns3::RadvdInterface::m_reachableTime
uint32_t m_reachableTime
Reachable time in milliseconds.
Definition: radvd-interface.h:379
ns3::RadvdInterface::m_retransTimer
uint32_t m_retransTimer
Retransmission timer in milliseconds.
Definition: radvd-interface.h:384
ns3::RadvdInterface::RadvdPrefixList
std::list< Ptr< RadvdPrefix > > RadvdPrefixList
Container: Ptr to RadvdPrefix.
Definition: radvd-interface.h:40
ns3::RadvdInterface::m_maxRtrAdvInterval
uint32_t m_maxRtrAdvInterval
Maximum RA interval in milliseconds.
Definition: radvd-interface.h:349
ns3::RadvdInterface::GetHomeAgentLifeTime
uint32_t GetHomeAgentLifeTime() const
Get home agent lifetime.
Definition: radvd-interface.cc:293
ns3::RadvdInterface::GetReachableTime
uint32_t GetReachableTime() const
Get reachable time.
Definition: radvd-interface.cc:197
ns3::RadvdInterface::m_sendAdvert
bool m_sendAdvert
Flag whether or not router sends periodic RA and respond to RS.
Definition: radvd-interface.h:344
ns3::RadvdInterface::AddPrefix
void AddPrefix(Ptr< RadvdPrefix > routerPrefix)
Add a prefix to advertise on interface.
Definition: radvd-interface.cc:94
ns3::RadvdInterface::SetManagedFlag
void SetManagedFlag(bool managedFlag)
Set managed flag.
Definition: radvd-interface.cc:167
ns3::RadvdInterface::GetPrefixes
RadvdPrefixList GetPrefixes() const
Get list of prefixes advertised for this interface.
Definition: radvd-interface.cc:107
ns3::RadvdInterface::SetSendAdvert
void SetSendAdvert(bool sendAdvert)
Set send advert flag.
Definition: radvd-interface.cc:119
radvd-prefix.h
ns3::RadvdInterface::m_defaultPreference
uint8_t m_defaultPreference
Preference associated with default router.
Definition: radvd-interface.h:402
ns3::RadvdInterface::GetMaxRtrAdvInterval
uint32_t GetMaxRtrAdvInterval() const
Get maximum RA interval.
Definition: radvd-interface.cc:125
ns3::RadvdInterface::m_sourceLLAddress
bool m_sourceLLAddress
Flag to add link-layer address in RA.
Definition: radvd-interface.h:407
ns3::RadvdInterface::SetHomeAgentInfo
void SetHomeAgentInfo(bool homeAgentFlag)
Set flag to add or not HA information option to RA.
Definition: radvd-interface.cc:287
ns3::RadvdInterface::GetLinkMtu
uint32_t GetLinkMtu() const
Get link MTU.
Definition: radvd-interface.cc:185
ns3::RadvdInterface::SetRetransTimer
void SetRetransTimer(uint32_t retransTimer)
Set retransmission timer.
Definition: radvd-interface.cc:227
ns3::RadvdInterface::IsHomeAgentInfo
bool IsHomeAgentInfo() const
Is Home Agent Information option should be included in RA ?
Definition: radvd-interface.cc:281
ns3::RadvdInterface::SetSourceLLAddress
void SetSourceLLAddress(bool sourceLLAddress)
Set flag to add or not LLA to RA.
Definition: radvd-interface.cc:263
ns3::RadvdInterface::m_linkMtu
uint32_t m_linkMtu
Link MTU to use.
Definition: radvd-interface.h:374
ns3::RadvdInterface::SetHomeAgentPreference
void SetHomeAgentPreference(uint32_t homeAgentPreference)
Set home agent preference.
Definition: radvd-interface.cc:311
ns3::RadvdInterface::m_mobRtrSupportFlag
bool m_mobRtrSupportFlag
Flag for HA to signals it supports Mobile Router registrations (NEMO Basic).
Definition: radvd-interface.h:433
ns3::RadvdInterface::m_otherConfigFlag
bool m_otherConfigFlag
Other configuration flag.
Definition: radvd-interface.h:369
ns3::RadvdInterface::m_lastSendTime
Time m_lastSendTime
Last RA send time.
Definition: radvd-interface.h:443
ns3::RadvdInterface::IsSendAdvert
bool IsSendAdvert() const
Is send advert enabled (periodic RA and reply to RS) ?
Definition: radvd-interface.cc:113
ns3::RadvdInterface::RadvdInterface
RadvdInterface(uint32_t interface)
Constructor.
Definition: radvd-interface.cc:29
ns3::RadvdInterface::m_initialRtrAdvertisementsLeft
uint8_t m_initialRtrAdvertisementsLeft
Number of fast announcement to do.
Definition: radvd-interface.h:448
ns3::RadvdInterface::IsInitialRtrAdv
bool IsInitialRtrAdv()
Checks if the interface is subject to the initial Rtr Advertisements rule.
Definition: radvd-interface.cc:355
ns3::RadvdInterface::m_intervalOpt
bool m_intervalOpt
Flag to add Advertisement Interval option in RA.
Definition: radvd-interface.h:438
ns3::RadvdInterface::~RadvdInterface
~RadvdInterface()
Destructor.
Definition: radvd-interface.cc:83
ns3::RadvdInterface::IsSourceLLAddress
bool IsSourceLLAddress() const
Is source LLA option should be included in RA ?
Definition: radvd-interface.cc:257
ns3::RadvdInterface::IsOtherConfigFlag
bool IsOtherConfigFlag() const
Is "other config" flag enabled ?
Definition: radvd-interface.cc:173
ns3::RadvdInterface::GetRetransTimer
uint32_t GetRetransTimer() const
Get retransmission timer.
Definition: radvd-interface.cc:221
ns3::RadvdInterface::SetDefaultLifeTime
void SetDefaultLifeTime(uint32_t defaultLifeTime)
Set default lifetime.
Definition: radvd-interface.cc:215
ns3::RadvdInterface::SetMobRtrSupportFlag
void SetMobRtrSupportFlag(bool mobRtrSupportFlag)
Set "mobile router support" flag.
Definition: radvd-interface.cc:323
ns3::RadvdInterface::SetDefaultPreference
void SetDefaultPreference(uint8_t defaultPreference)
Set default preference.
Definition: radvd-interface.cc:251
ns3::RadvdInterface::IsManagedFlag
bool IsManagedFlag() const
Is managed flag enabled ?
Definition: radvd-interface.cc:161
ns3::RadvdInterface::IsIntervalOpt
bool IsIntervalOpt() const
Is advertisement interval option should be included in RA ?
Definition: radvd-interface.cc:329
ns3::RadvdInterface::m_curHopLimit
uint32_t m_curHopLimit
Current hop limit (TTL).
Definition: radvd-interface.h:389