A Discrete-Event Network Simulator
API
ipv6-interface-address.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2007-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 IPV6_INTERFACE_ADDRESS_H
22 #define IPV6_INTERFACE_ADDRESS_H
23 
24 #include <stdint.h>
25 
26 #include "ns3/ipv6-address.h"
27 
28 namespace ns3
29 {
30 
38 {
39 public:
44  enum State_e
45  {
53  };
54 
59  enum Scope_e
60  {
61  HOST,
64  };
65 
70 
76 
83 
90  Ipv6InterfaceAddress (Ipv6Address address, Ipv6Prefix prefix, bool onLink);
91 
97 
102 
108 
113  Ipv6Address GetAddress () const;
114 
119  Ipv6Prefix GetPrefix () const;
120 
126 
132 
138 
144 
150  bool IsInSameSubnet (Ipv6Address b) const;
151 
156  void SetNsDadUid (uint32_t uid);
157 
162  uint32_t GetNsDadUid () const;
163 
168  void SetOnLink (bool onLink);
169 
174  bool GetOnLink () const;
175 
176 #if 0
177 
181  void StartDadTimer (Ptr<Ipv6Interface> interface);
182 
186  void StopDadTimer ();
187 #endif
188 
189 private:
194 
199 
204 
209 
213  bool m_onLink;
214 
222  friend bool operator == (Ipv6InterfaceAddress const& a, Ipv6InterfaceAddress const& b);
223 
231  friend bool operator != (Ipv6InterfaceAddress const& a, Ipv6InterfaceAddress const& b);
232 
236  uint32_t m_nsDadUid;
237 };
238 
246 std::ostream& operator<< (std::ostream& os, const Ipv6InterfaceAddress &addr);
247 
248 /* follow Ipv4InterfaceAddress way, maybe not inline them */
250 {
251  return (a.m_address == b.m_address && a.m_prefix == b.m_prefix &&
252  a.m_state == b.m_state && a.m_scope == b.m_scope);
253 }
254 
256 {
257  return (a.m_address != b.m_address || a.m_prefix != b.m_prefix ||
258  a.m_state != b.m_state || a.m_scope != b.m_scope);
259 }
260 
261 } /* namespace ns3 */
262 
263 #endif /* IPV6_INTERFACE_ADDRESS_H */
264 
ns3::Ipv6InterfaceAddress::m_prefix
Ipv6Prefix m_prefix
The IPv6 prefix.
Definition: ipv6-interface-address.h:198
ns3::Ipv6InterfaceAddress::GetPrefix
Ipv6Prefix GetPrefix() const
Get the IPv6 prefix.
Definition: ipv6-interface-address.cc:124
ns3::Ipv6InterfaceAddress
IPv6 address associated with an interface.
Definition: ipv6-interface-address.h:38
ns3::Ipv6InterfaceAddress::m_nsDadUid
uint32_t m_nsDadUid
Last DAD probe packet UID.
Definition: ipv6-interface-address.h:236
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::Ipv6InterfaceAddress::GetAddress
Ipv6Address GetAddress() const
Get the IPv6 address.
Definition: ipv6-interface-address.cc:89
ns3::Ipv6InterfaceAddress::INVALID
@ INVALID
Invalid state (after a DAD failed)
Definition: ipv6-interface-address.h:52
ns3::Ipv6InterfaceAddress::m_state
State_e m_state
State of the address.
Definition: ipv6-interface-address.h:203
ns3::Ipv6Address
Describes an IPv6 address.
Definition: ipv6-address.h:50
ns3::Ipv6InterfaceAddress::Scope_e
Scope_e
Address scope.
Definition: ipv6-interface-address.h:60
ns3::Ipv6InterfaceAddress::LINKLOCAL
@ LINKLOCAL
Link-local address (fe80::/64)
Definition: ipv6-interface-address.h:62
ns3::Ipv6InterfaceAddress::State_e
State_e
State of an address associated with an interface.
Definition: ipv6-interface-address.h:45
ns3::Ipv6InterfaceAddress::SetNsDadUid
void SetNsDadUid(uint32_t uid)
Set the latest DAD probe packet UID.
Definition: ipv6-interface-address.cc:204
ns3::Ipv6InterfaceAddress::m_address
Ipv6Address m_address
The IPv6 address.
Definition: ipv6-interface-address.h:193
ns3::Ipv6InterfaceAddress::PERMANENT
@ PERMANENT
Permanent address.
Definition: ipv6-interface-address.h:49
ns3::Ptr< Ipv6Interface >
ns3::Ipv6InterfaceAddress::PREFERRED
@ PREFERRED
Preferred address.
Definition: ipv6-interface-address.h:48
ns3::Ipv6InterfaceAddress::m_onLink
bool m_onLink
The address belongs to an on-link network.
Definition: ipv6-interface-address.h:213
first.address
address
Definition: first.py:44
ns3::Ipv6InterfaceAddress::SetScope
void SetScope(Ipv6InterfaceAddress::Scope_e scope)
Set the scope.
Definition: ipv6-interface-address.cc:142
ns3::operator==
bool operator==(const EventId &a, const EventId &b)
Definition: event-id.h:142
ns3::Ipv6InterfaceAddress::TENTATIVE_OPTIMISTIC
@ TENTATIVE_OPTIMISTIC
Address is tentative but we are optimistic so we can send packet even if DAD is not yet finished.
Definition: ipv6-interface-address.h:51
ns3::Ipv6InterfaceAddress::TENTATIVE
@ TENTATIVE
Address is tentative, no packet can be sent unless DAD finished.
Definition: ipv6-interface-address.h:46
ns3::Ipv6InterfaceAddress::operator!=
friend bool operator!=(Ipv6InterfaceAddress const &a, Ipv6InterfaceAddress const &b)
Not equal to operator.
Definition: ipv6-interface-address.h:255
ns3::Ipv6InterfaceAddress::DEPRECATED
@ DEPRECATED
Address is deprecated and should not be used.
Definition: ipv6-interface-address.h:47
ns3::Ipv6InterfaceAddress::GetOnLink
bool GetOnLink() const
Get the on-link property.
Definition: ipv6-interface-address.cc:210
ns3::Ipv6InterfaceAddress::SetAddress
void SetAddress(Ipv6Address address)
Set IPv6 address (and scope).
Definition: ipv6-interface-address.cc:95
ns3::Ipv6InterfaceAddress::GetScope
Ipv6InterfaceAddress::Scope_e GetScope() const
Get address scope.
Definition: ipv6-interface-address.cc:148
ns3::Ipv6InterfaceAddress::IsInSameSubnet
bool IsInSameSubnet(Ipv6Address b) const
Checks if the address is in the same subnet.
Definition: ipv6-interface-address.cc:154
ns3::Ipv6InterfaceAddress::operator==
friend bool operator==(Ipv6InterfaceAddress const &a, Ipv6InterfaceAddress const &b)
Equal to operator.
Definition: ipv6-interface-address.h:249
ns3::Ipv6InterfaceAddress::GetNsDadUid
uint32_t GetNsDadUid() const
Get the latest DAD probe packet UID.
Definition: ipv6-interface-address.cc:198
ns3::operator!=
bool operator!=(Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 > a, Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 > b)
Inequality test.
Definition: callback.h:1606
ns3::Ipv6InterfaceAddress::HOMEADDRESS
@ HOMEADDRESS
Address is a HomeAddress.
Definition: ipv6-interface-address.h:50
ns3::Ipv6InterfaceAddress::GLOBAL
@ GLOBAL
Global address (2000::/3)
Definition: ipv6-interface-address.h:63
ns3::Ipv6InterfaceAddress::SetOnLink
void SetOnLink(bool onLink)
Get the on-link property.
Definition: ipv6-interface-address.cc:216
ns3::Ipv6InterfaceAddress::GetState
Ipv6InterfaceAddress::State_e GetState() const
Get the address state.
Definition: ipv6-interface-address.cc:136
ns3::operator<<
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:137
ns3::Ipv6Prefix
Describes an IPv6 prefix.
Definition: ipv6-address.h:456
ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress
Ipv6InterfaceAddress()
Default constructor.
Definition: ipv6-interface-address.cc:33
ns3::Ipv6InterfaceAddress::HOST
@ HOST
Localhost (::1/128)
Definition: ipv6-interface-address.h:61
ns3::Ipv6InterfaceAddress::SetState
void SetState(Ipv6InterfaceAddress::State_e state)
Set the state.
Definition: ipv6-interface-address.cc:130
ns3::Ipv6InterfaceAddress::m_scope
Scope_e m_scope
Scope of the address.
Definition: ipv6-interface-address.h:208
ns3::Ipv6InterfaceAddress::~Ipv6InterfaceAddress
~Ipv6InterfaceAddress()
Destructor.
Definition: ipv6-interface-address.cc:84