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 
State_e m_state
State of the address.
void SetScope(Ipv6InterfaceAddress::Scope_e scope)
Set the scope.
bool GetOnLink() const
Get the on-link property.
Ipv6Address GetAddress() const
Get the IPv6 address.
friend bool operator!=(Ipv6InterfaceAddress const &a, Ipv6InterfaceAddress const &b)
Not equal to operator.
bool IsInSameSubnet(Ipv6Address b) const
Checks if the address is in the same subnet.
void SetNsDadUid(uint32_t uid)
Set the latest DAD probe packet UID.
IPv6 address associated with an interface.
Link-local address (fe80::/64)
uint32_t m_nsDadUid
Last DAD probe packet UID.
Invalid state (after a DAD failed)
uint32_t GetNsDadUid() const
Get the latest DAD probe packet UID.
void SetOnLink(bool onLink)
Get the on-link property.
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:137
Ipv6InterfaceAddress()
Default constructor.
Ipv6Address m_address
The IPv6 address.
bool m_onLink
The address belongs to an on-link network.
void SetState(Ipv6InterfaceAddress::State_e state)
Set the state.
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
Every class exported by the ns3 library is enclosed in the ns3 namespace.
address
Definition: first.py:44
friend bool operator==(Ipv6InterfaceAddress const &a, Ipv6InterfaceAddress const &b)
Equal to operator.
Ipv6InterfaceAddress::State_e GetState() const
Get the address state.
Describes an IPv6 address.
Definition: ipv6-address.h:49
void SetAddress(Ipv6Address address)
Set IPv6 address (and scope).
Ipv6Prefix m_prefix
The IPv6 prefix.
State_e
State of an address associated with an interface.
bool operator==(const EventId &a, const EventId &b)
Definition: event-id.h:142
Describes an IPv6 prefix.
Definition: ipv6-address.h:466
Scope_e m_scope
Scope of the address.
Address is tentative but we are optimistic so we can send packet even if DAD is not yet finished...
Address is deprecated and should not be used.
Ipv6InterfaceAddress::Scope_e GetScope() const
Get address scope.
Address is tentative, no packet can be sent unless DAD finished.
Ipv6Prefix GetPrefix() const
Get the IPv6 prefix.