A Discrete-Event Network Simulator
API
ipv4-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) 2008 University of Washington
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  */
19 
20 #ifndef IPV4_INTERFACE_ADDRESS_H
21 #define IPV4_INTERFACE_ADDRESS_H
22 
23 #include <stdint.h>
24 #include <ostream>
25 #include "ns3/ipv4-address.h"
26 
27 namespace ns3 {
28 
44 {
45 public:
53  GLOBAL
54  };
55 
57 
69 
78  void SetLocal (Ipv4Address local);
79 
88 
97  Ipv4Address GetLocal (void) const;
98 
106  Ipv4Address GetAddress (void) const;
107 
112  void SetMask (Ipv4Mask mask);
117  Ipv4Mask GetMask (void) const;
122  void SetBroadcast (Ipv4Address broadcast);
127  Ipv4Address GetBroadcast (void) const;
128 
134 
140 
146  bool IsInSameSubnet (const Ipv4Address b) const;
147 
154  bool IsSecondary (void) const;
155 
159  void SetSecondary (void);
163  void SetPrimary (void);
164 
165 private:
166 
168  // Note: m_peer may be added in future when necessary
169  // Ipv4Address m_peer; // Peer destination address (in Linux: m_address)
172 
174  bool m_secondary;
175 
183  friend bool operator == (Ipv4InterfaceAddress const &a, Ipv4InterfaceAddress const &b);
184 
192  friend bool operator != (Ipv4InterfaceAddress const &a, Ipv4InterfaceAddress const &b);
193 };
194 
202 std::ostream& operator<< (std::ostream& os, const Ipv4InterfaceAddress &addr);
203 
205 {
206  return (a.m_local == b.m_local && a.m_mask == b.m_mask &&
207  a.m_broadcast == b.m_broadcast && a.m_scope == b.m_scope && a.m_secondary == b.m_secondary);
208 }
210 {
211  return (a.m_local != b.m_local || a.m_mask != b.m_mask ||
212  a.m_broadcast != b.m_broadcast || a.m_scope != b.m_scope || a.m_secondary != b.m_secondary);
213 }
214 
215 
216 } // namespace ns3
217 
218 #endif /* IPV4_ADDRESS_H */
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:41
a class to store IPv4 address information on an interface
void SetMask(Ipv4Mask mask)
Set the network mask.
Ipv4Address GetBroadcast(void) const
Get the broadcast address.
void SetSecondary(void)
Make the address secondary (used for multihoming)
void SetBroadcast(Ipv4Address broadcast)
Set the broadcast address.
Ipv4InterfaceAddress::InterfaceAddressScope_e GetScope(void) const
Get address scope.
bool IsInSameSubnet(const Ipv4Address b) const
Checks if the address is in the same subnet.
Ipv4Address m_broadcast
Broadcast address.
bool m_secondary
For use in multihoming.
void SetLocal(Ipv4Address local)
Set local address.
Ipv4Mask GetMask(void) const
Get the network mask.
Ipv4Address GetLocal(void) const
Get the local address.
bool IsSecondary(void) const
Check if the address is a secondary address.
void SetScope(Ipv4InterfaceAddress::InterfaceAddressScope_e scope)
Set the scope.
friend bool operator!=(Ipv4InterfaceAddress const &a, Ipv4InterfaceAddress const &b)
Not equal to operator.
Ipv4Address m_local
Interface address.
InterfaceAddressScope_e m_scope
Address scope.
friend bool operator==(Ipv4InterfaceAddress const &a, Ipv4InterfaceAddress const &b)
Equal to operator.
Ipv4Address GetAddress(void) const
Get the local address.
void SetAddress(Ipv4Address address)
Set local address.
void SetPrimary(void)
Make the address primary.
a class to represent an Ipv4 address mask
Definition: ipv4-address.h:256
address
Definition: first.py:44
Every class exported by the ns3 library is enclosed in the ns3 namespace.
bool operator==(const EventId &a, const EventId &b)
Definition: event-id.h:158
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:1612
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:139