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 
74  void SetLocal (Ipv4Address local);
79  Ipv4Address GetLocal (void) const;
84  void SetMask (Ipv4Mask mask);
89  Ipv4Mask GetMask (void) const;
94  void SetBroadcast (Ipv4Address broadcast);
99  Ipv4Address GetBroadcast (void) const;
100 
106 
112 
119  bool IsSecondary (void) const;
120 
124  void SetSecondary (void);
128  void SetPrimary (void);
129 
130 private:
131 
133  // Note: m_peer may be added in future when necessary
134  // Ipv4Address m_peer; // Peer destination address (in Linux: m_address)
137 
139  bool m_secondary;
140 
148  friend bool operator == (Ipv4InterfaceAddress const &a, Ipv4InterfaceAddress const &b);
149 
157  friend bool operator != (Ipv4InterfaceAddress const &a, Ipv4InterfaceAddress const &b);
158 };
159 
167 std::ostream& operator<< (std::ostream& os, const Ipv4InterfaceAddress &addr);
168 
170 {
171  return (a.m_local == b.m_local && a.m_mask == b.m_mask &&
172  a.m_broadcast == b.m_broadcast && a.m_scope == b.m_scope && a.m_secondary == b.m_secondary);
173 }
175 {
176  return (a.m_local != b.m_local || a.m_mask != b.m_mask ||
177  a.m_broadcast != b.m_broadcast || a.m_scope != b.m_scope || a.m_secondary != b.m_secondary);
178 }
179 
180 
181 } // namespace ns3
182 
183 #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.
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.
void SetPrimary(void)
Make the address primary.
a class to represent an Ipv4 address mask
Definition: ipv4-address.h:269
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:142
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
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:137