A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 <list>
25 #include "ns3/simple-ref-count.h"
26 #include "radvd-prefix.h"
27 
28 namespace ns3
29 {
30 
36 class RadvdInterface : public SimpleRefCount<RadvdInterface>
37 {
38 public:
39  typedef std::list<Ptr<RadvdPrefix> > RadvdPrefixList;
40  typedef std::list<Ptr<RadvdPrefix> >::iterator RadvdPrefixListI;
41  typedef std::list<Ptr<RadvdPrefix> >::const_iterator RadvdPrefixListCI;
42 
47  RadvdInterface (uint32_t interface);
48 
55  RadvdInterface (uint32_t interface, uint32_t maxRtrAdvInterval, uint32_t minRtrAdvInterval);
56 
60  ~RadvdInterface ();
61 
66  uint32_t GetInterface () const;
67 
73 
78  void AddPrefix (Ptr<RadvdPrefix> routerPrefix);
79 
84  bool IsSendAdvert () const;
85 
90  void SetSendAdvert (bool sendAdvert);
91 
96  uint32_t GetMaxRtrAdvInterval () const;
97 
102  void SetMaxRtrAdvInterval (uint32_t maxRtrAdvInterval);
103 
108  uint32_t GetMinRtrAdvInterval () const;
109 
114  void SetMinRtrAdvInterval (uint32_t minRtrAdvInterval);
115 
120  uint32_t GetMinDelayBetweenRAs () const;
121 
126  void SetMinDelayBetweenRAs (uint32_t minDelayBetweenRAs);
127 
132  bool IsManagedFlag () const;
133 
138  void SetManagedFlag (bool managedFlag);
139 
144  bool IsOtherConfigFlag () const;
145 
150  void SetOtherConfigFlag (bool otherConfigFlag);
151 
156  uint32_t GetLinkMtu () const;
157 
162  void SetLinkMtu (uint32_t linkMtu);
163 
168  uint32_t GetReachableTime () const;
169 
174  void SetReachableTime (uint32_t reachableTime);
175 
180  uint32_t GetDefaultLifeTime () const;
181 
186  void SetDefaultLifeTime (uint32_t defaultLifeTime);
187 
192  uint32_t GetRetransTimer () const;
193 
198  void SetRetransTimer (uint32_t retransTimer);
199 
204  uint8_t GetCurHopLimit () const;
205 
210  void SetCurHopLimit (uint8_t curHopLimit);
211 
216  uint8_t GetDefaultPreference () const;
217 
222  void SetDefaultPreference (uint8_t defaultPreference);
223 
228  bool IsSourceLLAddress () const;
229 
234  void SetSourceLLAddress (bool sourceLLAddress);
235 
240  bool IsHomeAgentFlag () const;
241 
246  void SetHomeAgentFlag (bool homeAgentFlag);
247 
252  bool IsHomeAgentInfo () const;
253 
258  void SetHomeAgentInfo (bool homeAgentFlag);
259 
264  uint32_t GetHomeAgentLifeTime () const;
265 
270  void SetHomeAgentLifeTime (uint32_t homeAgentLifeTime);
271 
276  uint32_t GetHomeAgentPreference () const;
277 
282  void SetHomeAgentPreference (uint32_t homeAgentPreference);
283 
288  bool IsMobRtrSupportFlag () const;
289 
294  void SetMobRtrSupportFlag (bool mobRtrSupportFlag);
295 
300  bool IsIntervalOpt () const;
301 
306  void SetIntervalOpt (bool intervalOpt);
307 
308 private:
309 
313  uint32_t m_interface;
314 
319 
324 
329 
334 
339 
344 
349 
353  uint32_t m_linkMtu;
354 
358  uint32_t m_reachableTime;
359 
363  uint32_t m_retransTimer;
364 
368  uint32_t m_curHopLimit;
369 
374 
382 
387 
392 
398 
403 
408 
413 
418 };
419 
420 } /* namespace ns3 */
421 
422 #endif /* RADVD_INTERFACE_H */
423 
RadvdPrefixList GetPrefixes() const
Get list of prefixes advertised for this interface.
bool m_sendAdvert
Flag whether or not router sends periodic RA and respond to RS.
uint32_t GetMinRtrAdvInterval() const
Get minimum RA interval.
uint32_t GetLinkMtu() const
Get link MTU.
void SetMinDelayBetweenRAs(uint32_t minDelayBetweenRAs)
Set minimum delay between RAs.
uint32_t GetInterface() const
Get interface index for this configuration.
void SetDefaultLifeTime(uint32_t defaultLifeTime)
Set default lifetime.
uint32_t m_linkMtu
Link MTU to use.
bool m_intervalOpt
Flag to add Advertisement Interval option in RA.
uint32_t m_interface
Interface to advertise RA.
uint32_t GetRetransTimer() const
Get retransmission timer.
uint8_t GetCurHopLimit() const
Get current hop limit.
uint32_t m_curHopLimit
Current hop limit (TTL).
void SetMobRtrSupportFlag(bool mobRtrSupportFlag)
Set "mobile router support" flag.
void SetSendAdvert(bool sendAdvert)
Set send advert flag.
bool m_otherConfigFlag
Other configuration flag. If true host use stateful protocol for other (non-address) information...
bool m_mobRtrSupportFlag
Flag for HA to signals it supports Mobile Router registrations (NEMO Basic).
void AddPrefix(Ptr< RadvdPrefix > routerPrefix)
Add a prefix to advertise on interface.
bool IsManagedFlag() const
Is managed flag enabled ?
bool m_homeAgentInfo
Flag to add Home Agent Information option (Mobile IPv6). Currently not implemented.
uint32_t m_minDelayBetweenRAs
Minimum delay between RA in milliseconds.
uint32_t GetMinDelayBetweenRAs() const
Get minimum delay between RAs.
bool IsMobRtrSupportFlag() const
Is "mobile router support" flag enabled ?
uint32_t m_homeAgentPreference
Home agent preference. Ignored if home agent info is not set.
bool IsHomeAgentInfo() const
Is Home Agent Information option should be included in RA ?
bool IsOtherConfigFlag() const
Is "other config" flag enabled ?
uint32_t m_reachableTime
Reachable time in milliseconds.
uint32_t m_retransTimer
Retransmission timer in milliseconds.
void SetRetransTimer(uint32_t retransTimer)
Set retransmission timer.
bool IsIntervalOpt() const
Is advertisement interval option should be included in RA ?
std::list< Ptr< RadvdPrefix > > RadvdPrefixList
uint8_t m_defaultPreference
Preference associated with default router. 0 = low 1 = medium 2 = high.
void SetDefaultPreference(uint8_t defaultPreference)
Set default preference.
RadvdPrefixList m_prefixes
List of prefixes to advertise.
void SetReachableTime(uint32_t reachableTime)
Set reachable time.
bool m_sourceLLAddress
Flag to add link-layer address in RA.
void SetHomeAgentPreference(uint32_t homeAgentPreference)
Set home agent preference.
void SetHomeAgentInfo(bool homeAgentFlag)
Set flag to add or not HA information option to RA.
void SetIntervalOpt(bool intervalOpt)
Set flag to add or not advertisement interval to RA.
~RadvdInterface()
Destructor.
bool m_homeAgentFlag
Flag to add HA (home agent) flag in RA.
void SetMinRtrAdvInterval(uint32_t minRtrAdvInterval)
Get minimum RA interval.
bool IsSendAdvert() const
Is send advert enabled (periodic RA and reply to RS) ?
void SetLinkMtu(uint32_t linkMtu)
Set link MTU.
bool m_managedFlag
Managed flag. If true host use the stateful protocol for address autoconfiguration.
uint32_t m_defaultLifeTime
Default life time in seconds.
void SetOtherConfigFlag(bool otherConfigFlag)
Set "other config" flag.
RadvdInterface(uint32_t interface)
Constructor.
std::list< Ptr< RadvdPrefix > >::iterator RadvdPrefixListI
Radvd interface configuration.
void SetManagedFlag(bool managedFlag)
Set managed flag.
uint8_t GetDefaultPreference() const
Get default preference.
uint32_t GetHomeAgentPreference() const
Get home agent preference.
uint32_t GetMaxRtrAdvInterval() const
Get maximum RA interval.
uint32_t GetDefaultLifeTime() const
Get default lifetime.
void SetHomeAgentFlag(bool homeAgentFlag)
Set "home agent" flag.
void SetMaxRtrAdvInterval(uint32_t maxRtrAdvInterval)
Get maximum RA interval.
uint32_t GetHomeAgentLifeTime() const
Get home agent lifetime.
bool IsSourceLLAddress() const
Is source LLA option should be included in RA ?
void SetHomeAgentLifeTime(uint32_t homeAgentLifeTime)
Set home agent lifetime.
std::list< Ptr< RadvdPrefix > >::const_iterator RadvdPrefixListCI
A template-based reference counting class.
uint32_t m_homeAgentLifeTime
Home agent lifetime in seconds. Ignored if home agent info is not set.
void SetSourceLLAddress(bool sourceLLAddress)
Set flag to add or not LLA to RA.
uint32_t m_minRtrAdvInterval
Minimum RA interval in milliseconds.
void SetCurHopLimit(uint8_t curHopLimit)
Set current hop limit.
uint32_t GetReachableTime() const
Get reachable time.
bool IsHomeAgentFlag() const
Is "home agent" flag enabled ?
uint32_t m_maxRtrAdvInterval
Maximum RA interval in milliseconds.