A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 
37 {
38 public:
43  enum State_e
44  {
52  };
53 
58  enum Scope_e
59  {
60  HOST,
63  };
64 
69 
75 
82 
88 
93 
99 
104  Ipv6Address GetAddress () const;
105 
110  Ipv6Prefix GetPrefix () const;
111 
117 
123 
129 
135 
140  void SetNsDadUid (uint32_t uid);
141 
146  uint32_t GetNsDadUid () const;
147 
148 #if 0
149 
153  void StartDadTimer (Ptr<Ipv6Interface> interface);
154 
158  void StopDadTimer ();
159 #endif
160 
161 private:
166 
171 
176 
181 
189  friend bool operator == (Ipv6InterfaceAddress const& a, Ipv6InterfaceAddress const& b);
190 
198  friend bool operator != (Ipv6InterfaceAddress const& a, Ipv6InterfaceAddress const& b);
199 
203  uint32_t m_nsDadUid;
204 };
205 
213 std::ostream& operator<< (std::ostream& os, const Ipv6InterfaceAddress &addr);
214 
215 /* follow Ipv4InterfaceAddress way, maybe not inline them */
217 {
218  return (a.m_address == b.m_address && a.m_prefix == b.m_prefix &&
219  a.m_state == b.m_state && a.m_scope == b.m_scope);
220 }
221 
223 {
224  return (a.m_address != b.m_address || a.m_prefix != b.m_prefix ||
225  a.m_state != b.m_state || a.m_scope != b.m_scope);
226 }
227 
228 } /* namespace ns3 */
229 
230 #endif /* IPV6_INTERFACE_ADDRESS_H */
231 
State_e m_state
State of the address.
void SetScope(Ipv6InterfaceAddress::Scope_e scope)
Set the scope.
uint32_t GetNsDadUid() const
Get the latest DAD probe packet UID.
friend bool operator!=(Ipv6InterfaceAddress const &a, Ipv6InterfaceAddress const &b)
Not equal to operator.
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)
Ipv6Address GetAddress() const
Get the IPv6 address.
Ipv6InterfaceAddress()
Default constructor.
Ipv6Address m_address
The IPv6 address.
void SetState(Ipv6InterfaceAddress::State_e state)
Set the state.
Ipv6Prefix GetPrefix() const
Get the IPv6 prefix.
std::ostream & operator<<(std::ostream &os, const Angles &a)
print a struct Angles to output
Definition: angles.cc:43
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:1213
Ipv6InterfaceAddress::State_e GetState() const
Get the address state.
friend bool operator==(Ipv6InterfaceAddress const &a, Ipv6InterfaceAddress const &b)
Equal to operator.
Describes an IPv6 address.
Definition: ipv6-address.h:46
void SetAddress(Ipv6Address address)
Set IPv6 address (and scope).
Ipv6InterfaceAddress::Scope_e GetScope() const
Get address 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.cc:89
Describes an IPv6 prefix.
Definition: ipv6-address.h:387
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...
tuple address
Definition: first.py:37
Address is deprecated and should not be used.
Address is tentative, no packet can be sent unless DAD finished.