|
vincent@4731
|
1 |
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
|
|
vincent@4731
|
2 |
/*
|
|
vincent@4731
|
3 |
* Copyright (c) 2009 Strasbourg University
|
|
vincent@4731
|
4 |
*
|
|
vincent@4731
|
5 |
* This program is free software; you can redistribute it and/or modify
|
|
vincent@4731
|
6 |
* it under the terms of the GNU General Public License version 2 as
|
|
vincent@4731
|
7 |
* published by the Free Software Foundation;
|
|
vincent@4731
|
8 |
*
|
|
vincent@4731
|
9 |
* This program is distributed in the hope that it will be useful,
|
|
vincent@4731
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
vincent@4731
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
vincent@4731
|
12 |
* GNU General Public License for more details.
|
|
vincent@4731
|
13 |
*
|
|
vincent@4731
|
14 |
* You should have received a copy of the GNU General Public License
|
|
vincent@4731
|
15 |
* along with this program; if not, write to the Free Software
|
|
vincent@4731
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
vincent@4731
|
17 |
*
|
|
vincent@4731
|
18 |
* Author: Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
|
|
vincent@4731
|
19 |
*/
|
|
vincent@4731
|
20 |
|
|
vincent@4731
|
21 |
#ifndef RADVD_INTERFACE_H
|
|
vincent@4731
|
22 |
#define RADVD_INTERFACE_H
|
|
vincent@4731
|
23 |
|
|
vincent@4731
|
24 |
#include <list>
|
|
mathieu@5505
|
25 |
#include "ns3/simple-ref-count.h"
|
|
vincent@4731
|
26 |
#include "radvd-prefix.h"
|
|
vincent@4731
|
27 |
|
|
vincent@4731
|
28 |
namespace ns3
|
|
vincent@4731
|
29 |
{
|
|
vincent@4731
|
30 |
|
|
vincent@4731
|
31 |
/**
|
|
vincent@4763
|
32 |
* \ingroup radvd
|
|
vincent@4731
|
33 |
* \class RadvdInterface
|
|
vincent@4731
|
34 |
* \brief Radvd interface configuration.
|
|
vincent@4731
|
35 |
*/
|
|
mathieu@5505
|
36 |
class RadvdInterface : public SimpleRefCount<RadvdInterface>
|
|
vincent@4731
|
37 |
{
|
|
vincent@4731
|
38 |
public:
|
|
vincent@4731
|
39 |
/**
|
|
vincent@4731
|
40 |
* \brief Constructor.
|
|
vincent@4731
|
41 |
* \param interface interface index
|
|
vincent@4731
|
42 |
*/
|
|
vincent@4731
|
43 |
RadvdInterface (uint32_t interface);
|
|
vincent@4731
|
44 |
|
|
vincent@4731
|
45 |
/**
|
|
vincent@4731
|
46 |
* \brief Constructor.
|
|
vincent@4731
|
47 |
* \param interface interface index
|
|
tomh@4732
|
48 |
* \param maxRtrAdvInterval maximum RA interval (ms)
|
|
tomh@4732
|
49 |
* \param minRtrAdvInterval minimum RA interval (ms)
|
|
vincent@4731
|
50 |
*/
|
|
vincent@4731
|
51 |
RadvdInterface (uint32_t interface, uint32_t maxRtrAdvInterval, uint32_t minRtrAdvInterval);
|
|
vincent@4731
|
52 |
|
|
vincent@4731
|
53 |
/**
|
|
vincent@4731
|
54 |
* \brief Destructor.
|
|
vincent@4731
|
55 |
*/
|
|
vincent@4731
|
56 |
~RadvdInterface ();
|
|
vincent@4731
|
57 |
|
|
vincent@4731
|
58 |
/**
|
|
vincent@4731
|
59 |
* \brief Get interface index for this configuration.
|
|
vincent@4731
|
60 |
* \return interface index
|
|
vincent@4731
|
61 |
*/
|
|
vincent@4731
|
62 |
uint32_t GetInterface () const;
|
|
vincent@4731
|
63 |
|
|
vincent@4731
|
64 |
/**
|
|
vincent@4731
|
65 |
* \brief Get list of prefixes advertised for this interface.
|
|
vincent@4731
|
66 |
* \return list of IPv6 prefixes
|
|
vincent@4731
|
67 |
*/
|
|
vincent@4731
|
68 |
std::list <Ptr<RadvdPrefix> > GetPrefixes () const;
|
|
vincent@4731
|
69 |
|
|
vincent@4731
|
70 |
/**
|
|
vincent@4731
|
71 |
* \brief Add a prefix to advertise on interface.
|
|
vincent@4731
|
72 |
* \param routerPrefix prefix to advertise
|
|
vincent@4731
|
73 |
*/
|
|
vincent@4731
|
74 |
void AddPrefix (Ptr<RadvdPrefix> routerPrefix);
|
|
vincent@4731
|
75 |
|
|
vincent@4731
|
76 |
/**
|
|
vincent@4731
|
77 |
* \brief Is send advert enabled (periodic RA and reply to RS) ?
|
|
vincent@4731
|
78 |
* \return send advert flag
|
|
vincent@4731
|
79 |
*/
|
|
vincent@4731
|
80 |
bool IsSendAdvert () const;
|
|
vincent@4731
|
81 |
|
|
vincent@4731
|
82 |
/**
|
|
vincent@4731
|
83 |
* \brief Set send advert flag.
|
|
vincent@5225
|
84 |
* \param sendAdvert value
|
|
vincent@4731
|
85 |
*/
|
|
vincent@4731
|
86 |
void SetSendAdvert (bool sendAdvert);
|
|
vincent@4731
|
87 |
|
|
vincent@4731
|
88 |
/**
|
|
vincent@4731
|
89 |
* \brief Get maximum RA interval.
|
|
tomh@4732
|
90 |
* \return RA interval (ms)
|
|
vincent@4731
|
91 |
*/
|
|
vincent@4731
|
92 |
uint32_t GetMaxRtrAdvInterval () const;
|
|
vincent@4731
|
93 |
|
|
vincent@4731
|
94 |
/**
|
|
vincent@4731
|
95 |
* \brief Get maximum RA interval.
|
|
tomh@4732
|
96 |
* \param maxRtrAdvInterval RA interval (ms)
|
|
vincent@4731
|
97 |
*/
|
|
vincent@4731
|
98 |
void SetMaxRtrAdvInterval (uint32_t maxRtrAdvInterval);
|
|
vincent@4731
|
99 |
|
|
vincent@4731
|
100 |
/**
|
|
tomh@4732
|
101 |
* \brief Get minimum RA interval
|
|
tomh@4732
|
102 |
* \return RA interval (ms)
|
|
vincent@4731
|
103 |
*/
|
|
vincent@4731
|
104 |
uint32_t GetMinRtrAdvInterval () const;
|
|
vincent@4731
|
105 |
|
|
vincent@4731
|
106 |
/**
|
|
tomh@4732
|
107 |
* \brief Get minimum RA interval
|
|
tomh@4732
|
108 |
* \param minRtrAdvInterval RA interval (ms).
|
|
vincent@4731
|
109 |
*/
|
|
vincent@4731
|
110 |
void SetMinRtrAdvInterval (uint32_t minRtrAdvInterval);
|
|
vincent@4731
|
111 |
|
|
vincent@4731
|
112 |
/**
|
|
vincent@4731
|
113 |
* \brief Get minimum delay between RAs.
|
|
tomh@4732
|
114 |
* \return minimum delay (ms)
|
|
vincent@4731
|
115 |
*/
|
|
vincent@4731
|
116 |
uint32_t GetMinDelayBetweenRAs () const;
|
|
vincent@4731
|
117 |
|
|
vincent@4731
|
118 |
/**
|
|
vincent@4731
|
119 |
* \brief Set minimum delay between RAs.
|
|
tomh@4732
|
120 |
* \param minDelayBetweenRAs minimum delay (ms)
|
|
vincent@4731
|
121 |
*/
|
|
vincent@4731
|
122 |
void SetMinDelayBetweenRAs (uint32_t minDelayBetweenRAs);
|
|
vincent@4731
|
123 |
|
|
vincent@4731
|
124 |
/**
|
|
vincent@4731
|
125 |
* \brief Is managed flag enabled ?
|
|
vincent@4731
|
126 |
* \return managed flag
|
|
vincent@4731
|
127 |
*/
|
|
vincent@4731
|
128 |
bool IsManagedFlag () const;
|
|
vincent@4731
|
129 |
|
|
vincent@4731
|
130 |
/**
|
|
vincent@4731
|
131 |
* \brief Set managed flag
|
|
vincent@4731
|
132 |
* \param managedFlag value
|
|
vincent@4731
|
133 |
*/
|
|
vincent@4731
|
134 |
void SetManagedFlag (bool managedFlag);
|
|
vincent@4731
|
135 |
|
|
vincent@4731
|
136 |
/**
|
|
vincent@4731
|
137 |
* \brief Is "other config" flag enabled ?
|
|
vincent@4731
|
138 |
* \return other config flag
|
|
vincent@4731
|
139 |
*/
|
|
vincent@4731
|
140 |
bool IsOtherConfigFlag () const;
|
|
vincent@4731
|
141 |
|
|
vincent@4731
|
142 |
/**
|
|
vincent@4731
|
143 |
* \brief Set "other config" flag
|
|
vincent@4731
|
144 |
* \param otherConfigFlag value
|
|
vincent@4731
|
145 |
*/
|
|
vincent@4731
|
146 |
void SetOtherConfigFlag (bool otherConfigFlag);
|
|
vincent@4731
|
147 |
|
|
vincent@4731
|
148 |
/**
|
|
vincent@4731
|
149 |
* \brief Get link MTU.
|
|
vincent@4731
|
150 |
* \return link MTU
|
|
vincent@4731
|
151 |
*/
|
|
vincent@4731
|
152 |
uint32_t GetLinkMtu () const;
|
|
vincent@4731
|
153 |
|
|
vincent@4731
|
154 |
/**
|
|
vincent@4731
|
155 |
* \brief Set link MTU.
|
|
vincent@4731
|
156 |
* \param linkMtu link MTU
|
|
vincent@4731
|
157 |
*/
|
|
vincent@4731
|
158 |
void SetLinkMtu (uint32_t linkMtu);
|
|
vincent@4731
|
159 |
|
|
vincent@4731
|
160 |
/**
|
|
vincent@4731
|
161 |
* \brief Get reachable time.
|
|
vincent@4731
|
162 |
* \return reachable time
|
|
vincent@4731
|
163 |
*/
|
|
vincent@4731
|
164 |
uint32_t GetReachableTime () const;
|
|
vincent@4731
|
165 |
|
|
vincent@4731
|
166 |
/**
|
|
vincent@4731
|
167 |
* \brief Set reachable time.
|
|
vincent@4731
|
168 |
* \param reachableTime reachable time
|
|
vincent@4731
|
169 |
*/
|
|
vincent@4731
|
170 |
void SetReachableTime (uint32_t reachableTime);
|
|
vincent@4731
|
171 |
|
|
vincent@4731
|
172 |
/**
|
|
vincent@4731
|
173 |
* \brief Get default lifetime.
|
|
vincent@4731
|
174 |
* \return default lifetime
|
|
vincent@4731
|
175 |
*/
|
|
vincent@4731
|
176 |
uint32_t GetDefaultLifeTime () const;
|
|
vincent@4731
|
177 |
|
|
vincent@4731
|
178 |
/**
|
|
vincent@4731
|
179 |
* \brief Set default lifetime.
|
|
vincent@4731
|
180 |
* \param defaultLifeTime default lifetime
|
|
vincent@4731
|
181 |
*/
|
|
vincent@4731
|
182 |
void SetDefaultLifeTime (uint32_t defaultLifeTime);
|
|
vincent@4731
|
183 |
|
|
vincent@4731
|
184 |
/**
|
|
vincent@4731
|
185 |
* \brief Get retransmission timer.
|
|
vincent@4731
|
186 |
* \return retransmission timer
|
|
vincent@4731
|
187 |
*/
|
|
vincent@4731
|
188 |
uint32_t GetRetransTimer () const;
|
|
vincent@4731
|
189 |
|
|
vincent@4731
|
190 |
/**
|
|
vincent@4731
|
191 |
* \brief Set retransmission timer.
|
|
vincent@4731
|
192 |
* \param retransTimer retransmission timer
|
|
vincent@4731
|
193 |
*/
|
|
vincent@4731
|
194 |
void SetRetransTimer (uint32_t retransTimer);
|
|
vincent@4731
|
195 |
|
|
vincent@4731
|
196 |
/**
|
|
vincent@4731
|
197 |
* \brief Get current hop limit.
|
|
vincent@4731
|
198 |
* \return current hop limit for the link
|
|
vincent@4731
|
199 |
*/
|
|
vincent@4731
|
200 |
uint8_t GetCurHopLimit () const;
|
|
vincent@4731
|
201 |
|
|
vincent@4731
|
202 |
/**
|
|
vincent@4731
|
203 |
* \brief Set current hop limit.
|
|
vincent@4731
|
204 |
* \param curHopLimit current hop limit for the link
|
|
vincent@4731
|
205 |
*/
|
|
vincent@4731
|
206 |
void SetCurHopLimit (uint8_t curHopLimit);
|
|
vincent@4731
|
207 |
|
|
vincent@4731
|
208 |
/**
|
|
vincent@4731
|
209 |
* \brief Get default preference.
|
|
vincent@4731
|
210 |
* \return default preference
|
|
vincent@4731
|
211 |
*/
|
|
vincent@4731
|
212 |
uint8_t GetDefaultPreference () const;
|
|
vincent@4731
|
213 |
|
|
vincent@4731
|
214 |
/**
|
|
vincent@4731
|
215 |
* \brief Set default preference.
|
|
vincent@4731
|
216 |
* \param defaultPreference default preference
|
|
vincent@4731
|
217 |
*/
|
|
vincent@4731
|
218 |
void SetDefaultPreference (uint8_t defaultPreference);
|
|
vincent@4731
|
219 |
|
|
vincent@4731
|
220 |
/**
|
|
vincent@4731
|
221 |
* \brief Is source LLA option should be included in RA ?
|
|
vincent@4731
|
222 |
* \return true if source address is added in RA, false otherwise
|
|
vincent@4731
|
223 |
*/
|
|
vincent@4731
|
224 |
bool IsSourceLLAddress () const;
|
|
vincent@4731
|
225 |
|
|
vincent@4731
|
226 |
/**
|
|
vincent@4731
|
227 |
* \brief Set flag to add or not LLA to RA.
|
|
vincent@4731
|
228 |
* \param sourceLLAddress value
|
|
vincent@4731
|
229 |
*/
|
|
vincent@4731
|
230 |
void SetSourceLLAddress (bool sourceLLAddress);
|
|
vincent@4731
|
231 |
|
|
vincent@4731
|
232 |
/**
|
|
vincent@4731
|
233 |
* \brief Is "home agent" flag enabled ?
|
|
vincent@4731
|
234 |
* \return "home agent" flag
|
|
vincent@4731
|
235 |
*/
|
|
vincent@4731
|
236 |
bool IsHomeAgentFlag () const;
|
|
vincent@4731
|
237 |
|
|
vincent@4731
|
238 |
/**
|
|
vincent@4731
|
239 |
* \brief Set "home agent" flag.
|
|
vincent@4731
|
240 |
* \param homeAgentFlag value
|
|
vincent@4731
|
241 |
*/
|
|
vincent@4731
|
242 |
void SetHomeAgentFlag (bool homeAgentFlag);
|
|
vincent@4731
|
243 |
|
|
vincent@4731
|
244 |
/**
|
|
vincent@4731
|
245 |
* \brief Is Home Agent Information option should be included in RA ?
|
|
vincent@4731
|
246 |
* \return true if HA information option is added in RA, false otherwise
|
|
vincent@4731
|
247 |
*/
|
|
vincent@4731
|
248 |
bool IsHomeAgentInfo () const;
|
|
vincent@4731
|
249 |
|
|
vincent@4731
|
250 |
/**
|
|
vincent@4731
|
251 |
* \brief Set flag to add or not HA information option to RA.
|
|
vincent@4731
|
252 |
* \param homeAgentFlag value
|
|
vincent@4731
|
253 |
*/
|
|
vincent@4731
|
254 |
void SetHomeAgentInfo (bool homeAgentFlag);
|
|
vincent@4731
|
255 |
|
|
vincent@4731
|
256 |
/**
|
|
vincent@4731
|
257 |
* \brief Get home agent lifetime.
|
|
vincent@4731
|
258 |
* \return home agent lifetime
|
|
vincent@4731
|
259 |
*/
|
|
vincent@4731
|
260 |
uint32_t GetHomeAgentLifeTime () const;
|
|
vincent@4731
|
261 |
|
|
vincent@4731
|
262 |
/**
|
|
vincent@4731
|
263 |
* \brief Set home agent lifetime.
|
|
vincent@4731
|
264 |
* \param homeAgentLifeTime home agent lifetime
|
|
vincent@4731
|
265 |
*/
|
|
vincent@4731
|
266 |
void SetHomeAgentLifeTime (uint32_t homeAgentLifeTime);
|
|
vincent@4731
|
267 |
|
|
vincent@4731
|
268 |
/**
|
|
vincent@4731
|
269 |
* \brief Get home agent preference.
|
|
vincent@4731
|
270 |
* \return home agent preference
|
|
vincent@4731
|
271 |
*/
|
|
vincent@4731
|
272 |
uint32_t GetHomeAgentPreference () const;
|
|
vincent@4731
|
273 |
|
|
vincent@4731
|
274 |
/**
|
|
vincent@4731
|
275 |
* \brief Set home agent preference.
|
|
vincent@4731
|
276 |
* \param homeAgentPreference home agent preference
|
|
vincent@4731
|
277 |
*/
|
|
vincent@4731
|
278 |
void SetHomeAgentPreference (uint32_t homeAgentPreference);
|
|
vincent@4731
|
279 |
|
|
vincent@4731
|
280 |
/**
|
|
vincent@4731
|
281 |
* \brief Is "mobile router support" flag enabled ?
|
|
vincent@4731
|
282 |
* \return "mobile router support" flag
|
|
vincent@4731
|
283 |
*/
|
|
vincent@4731
|
284 |
bool IsMobRtrSupportFlag () const;
|
|
vincent@4731
|
285 |
|
|
vincent@4731
|
286 |
/**
|
|
vincent@4731
|
287 |
* \brief Set "mobile router support" flag.
|
|
vincent@4731
|
288 |
* \param mobRtrSupportFlag value
|
|
vincent@4731
|
289 |
*/
|
|
vincent@4731
|
290 |
void SetMobRtrSupportFlag (bool mobRtrSupportFlag);
|
|
vincent@4731
|
291 |
|
|
vincent@4731
|
292 |
/**
|
|
vincent@4731
|
293 |
* \brief Is advertisement interval option should be included in RA ?
|
|
vincent@4731
|
294 |
* \return true if advertisement interval option is added in RA, false otherwise
|
|
vincent@4731
|
295 |
*/
|
|
vincent@4731
|
296 |
bool IsIntervalOpt () const;
|
|
vincent@4731
|
297 |
|
|
vincent@4731
|
298 |
/**
|
|
vincent@4731
|
299 |
* \brief Set flag to add or not advertisement interval to RA.
|
|
vincent@4731
|
300 |
* \param intervalOpt value
|
|
vincent@4731
|
301 |
*/
|
|
vincent@4731
|
302 |
void SetIntervalOpt (bool intervalOpt);
|
|
vincent@4731
|
303 |
|
|
vincent@4731
|
304 |
private:
|
|
vincent@4731
|
305 |
typedef std::list<Ptr<RadvdPrefix> > RadvdPrefixList;
|
|
vincent@4731
|
306 |
typedef std::list<Ptr<RadvdPrefix> >::iterator RadvdPrefixListI;
|
|
vincent@4731
|
307 |
|
|
vincent@4731
|
308 |
/**
|
|
vincent@4731
|
309 |
* \brief Interface to advertise RA.
|
|
vincent@4731
|
310 |
*/
|
|
vincent@4731
|
311 |
uint32_t m_interface;
|
|
vincent@4731
|
312 |
|
|
vincent@4731
|
313 |
/**
|
|
vincent@4731
|
314 |
* \brief List of prefixes to advertise.
|
|
vincent@4731
|
315 |
*/
|
|
vincent@4731
|
316 |
RadvdPrefixList m_prefixes;
|
|
vincent@4731
|
317 |
|
|
vincent@4731
|
318 |
/**
|
|
vincent@4731
|
319 |
* \brief Flag whether or not router sends periodic RA and respond to RS.
|
|
vincent@4731
|
320 |
*/
|
|
vincent@4731
|
321 |
bool m_sendAdvert;
|
|
vincent@4731
|
322 |
|
|
vincent@4731
|
323 |
/**
|
|
vincent@4731
|
324 |
* \brief Maximum RA interval in milliseconds.
|
|
vincent@4731
|
325 |
*/
|
|
vincent@4731
|
326 |
uint32_t m_maxRtrAdvInterval;
|
|
vincent@4731
|
327 |
|
|
vincent@4731
|
328 |
/**
|
|
vincent@4731
|
329 |
* \brief Minimum RA interval in milliseconds.
|
|
vincent@4731
|
330 |
*/
|
|
vincent@4731
|
331 |
uint32_t m_minRtrAdvInterval;
|
|
vincent@4731
|
332 |
|
|
vincent@4731
|
333 |
/**
|
|
vincent@4731
|
334 |
* \brief Minimum delay between RA in milliseconds.
|
|
vincent@4731
|
335 |
*/
|
|
vincent@4731
|
336 |
uint32_t m_minDelayBetweenRAs;
|
|
vincent@4731
|
337 |
|
|
vincent@4731
|
338 |
/**
|
|
vincent@4731
|
339 |
* \brief Managed flag. If true host use the stateful protocol for address autoconfiguration.
|
|
vincent@4731
|
340 |
*/
|
|
vincent@4731
|
341 |
bool m_managedFlag;
|
|
vincent@4731
|
342 |
|
|
vincent@4731
|
343 |
/**
|
|
vincent@4731
|
344 |
* \brief Other configuration flag. If true host use stateful protocol for other (non-address) information.
|
|
vincent@4731
|
345 |
*/
|
|
vincent@4731
|
346 |
bool m_otherConfigFlag;
|
|
vincent@4731
|
347 |
|
|
vincent@4731
|
348 |
/**
|
|
vincent@4731
|
349 |
* \brief Link MTU to use.
|
|
vincent@4731
|
350 |
*/
|
|
vincent@4731
|
351 |
uint32_t m_linkMtu;
|
|
vincent@4731
|
352 |
|
|
vincent@4731
|
353 |
/**
|
|
vincent@4731
|
354 |
* \brief Reachable time in milliseconds.
|
|
vincent@4731
|
355 |
*/
|
|
vincent@4731
|
356 |
uint32_t m_reachableTime;
|
|
vincent@4731
|
357 |
|
|
vincent@4731
|
358 |
/**
|
|
vincent@4731
|
359 |
* \brief Retransmission timer in milliseconds.
|
|
vincent@4731
|
360 |
*/
|
|
vincent@4731
|
361 |
uint32_t m_retransTimer;
|
|
vincent@4731
|
362 |
|
|
vincent@4731
|
363 |
/**
|
|
vincent@4731
|
364 |
* \brief Current hop limit (TTL).
|
|
vincent@4731
|
365 |
*/
|
|
vincent@4731
|
366 |
uint32_t m_curHopLimit;
|
|
vincent@4731
|
367 |
|
|
vincent@4731
|
368 |
/**
|
|
vincent@4731
|
369 |
* \brief Default life time in seconds.
|
|
vincent@4731
|
370 |
*/
|
|
vincent@4731
|
371 |
uint32_t m_defaultLifeTime;
|
|
vincent@4731
|
372 |
|
|
vincent@4731
|
373 |
/**
|
|
vincent@4731
|
374 |
* \brief Preference associated with default router.
|
|
vincent@4731
|
375 |
* 0 = low
|
|
vincent@4731
|
376 |
* 1 = medium
|
|
vincent@4731
|
377 |
* 2 = high
|
|
vincent@4731
|
378 |
*/
|
|
vincent@4731
|
379 |
uint8_t m_defaultPreference;
|
|
vincent@4731
|
380 |
|
|
vincent@4731
|
381 |
/**
|
|
vincent@4731
|
382 |
* \brief Flag to add link-layer address in RA.
|
|
vincent@4731
|
383 |
*/
|
|
vincent@4731
|
384 |
bool m_sourceLLAddress;
|
|
vincent@4731
|
385 |
|
|
vincent@4731
|
386 |
/**
|
|
vincent@4731
|
387 |
* \brief Flag to add HA (home agent) flag in RA.
|
|
vincent@4731
|
388 |
*/
|
|
vincent@4731
|
389 |
bool m_homeAgentFlag;
|
|
vincent@4731
|
390 |
|
|
vincent@4731
|
391 |
/**
|
|
vincent@4731
|
392 |
* \brief Flag to add Home Agent Information option (Mobile IPv6).
|
|
vincent@4731
|
393 |
* Currently not implemented.
|
|
vincent@4731
|
394 |
*/
|
|
vincent@4731
|
395 |
bool m_homeAgentInfo;
|
|
vincent@4731
|
396 |
|
|
vincent@4731
|
397 |
/**
|
|
vincent@4731
|
398 |
* \brief Home agent lifetime in seconds. Ignored if home agent info is not set.
|
|
vincent@4731
|
399 |
*/
|
|
vincent@4731
|
400 |
uint32_t m_homeAgentLifeTime;
|
|
vincent@4731
|
401 |
|
|
vincent@4731
|
402 |
/**
|
|
vincent@4731
|
403 |
* \brief Home agent preference. Ignored if home agent info is not set.
|
|
vincent@4731
|
404 |
*/
|
|
vincent@4731
|
405 |
uint32_t m_homeAgentPreference;
|
|
vincent@4731
|
406 |
|
|
vincent@4731
|
407 |
/**
|
|
vincent@4731
|
408 |
* \brief Flag for HA to signals it supports Mobile Router registrations (NEMO Basic).
|
|
vincent@4731
|
409 |
*/
|
|
vincent@4731
|
410 |
bool m_mobRtrSupportFlag;
|
|
vincent@4731
|
411 |
|
|
vincent@4731
|
412 |
/**
|
|
vincent@4731
|
413 |
* \brief Flag to add Advertisement Interval option in RA.
|
|
vincent@4731
|
414 |
*/
|
|
vincent@4731
|
415 |
bool m_intervalOpt;
|
|
vincent@4731
|
416 |
};
|
|
vincent@4731
|
417 |
|
|
vincent@4731
|
418 |
} /* namespace ns3 */
|
|
vincent@4731
|
419 |
|
|
vincent@4731
|
420 |
#endif /* RADVD_INTERFACE_H */
|
|
vincent@4731
|
421 |
|