A Discrete-Event Network Simulator
API
ipv4-interface-address.cc
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2005 INRIA
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: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19  */
20 
21 #include "ns3/log.h"
22 #include "ns3/assert.h"
23 #include "ipv4-interface-address.h"
24 
25 namespace ns3 {
26 
27 NS_LOG_COMPONENT_DEFINE ("Ipv4InterfaceAddress");
28 
30  : m_scope (GLOBAL),
31  m_secondary (false)
32 {
33  NS_LOG_FUNCTION (this);
34 }
35 
37  : m_scope (GLOBAL),
38  m_secondary (false)
39 {
40  NS_LOG_FUNCTION (this << local << mask);
41  m_local = local;
43  {
44  m_scope = HOST;
45  }
46  m_mask = mask;
47  m_broadcast = Ipv4Address (local.Get () | (~mask.Get ()));
48 }
49 
51  : m_local (o.m_local),
52  m_mask (o.m_mask),
53  m_broadcast (o.m_broadcast),
54  m_scope (o.m_scope),
55  m_secondary (o.m_secondary)
56 {
57  NS_LOG_FUNCTION (this << &o);
58 }
59 
60 void
62 {
63  NS_LOG_FUNCTION (this << local);
64  m_local = local;
65 }
66 
67 void
69 {
70  SetLocal (address);
71 }
72 
75 {
76  NS_LOG_FUNCTION (this);
77  return m_local;
78 }
79 
82 {
83  return GetLocal ();
84 }
85 
86 void
88 {
89  NS_LOG_FUNCTION (this << mask);
90  m_mask = mask;
91 }
92 
93 Ipv4Mask
95 {
96  NS_LOG_FUNCTION (this);
97  return m_mask;
98 }
99 
100 void
102 {
103  NS_LOG_FUNCTION (this << broadcast);
104  m_broadcast = broadcast;
105 }
106 
109 {
110  NS_LOG_FUNCTION (this);
111  return m_broadcast;
112 }
113 
114 void
116 {
117  NS_LOG_FUNCTION (this << scope);
118  m_scope = scope;
119 }
120 
123 {
124  NS_LOG_FUNCTION (this);
125  return m_scope;
126 }
127 
129 {
130  Ipv4Address aAddr = m_local;
131  aAddr = aAddr.CombineMask(m_mask);
132  Ipv4Address bAddr = b;
133  bAddr = bAddr.CombineMask(m_mask);
134 
135  return (aAddr == bAddr);
136 }
137 
138 bool
140 {
141  NS_LOG_FUNCTION (this);
142  return m_secondary;
143 }
144 
145 void
147 {
148  NS_LOG_FUNCTION (this);
149  m_secondary = true;
150 }
151 
152 void
154 {
155  NS_LOG_FUNCTION (this);
156  m_secondary = false;
157 }
158 
159 std::ostream& operator<< (std::ostream& os, const Ipv4InterfaceAddress &addr)
160 {
161  os << "m_local=" << addr.GetLocal () << "; m_mask=" <<
162  addr.GetMask () << "; m_broadcast=" << addr.GetBroadcast () << "; m_scope=" << addr.GetScope () <<
163  "; m_secondary=" << addr.IsSecondary ();
164  return os;
165 }
166 
167 } // namespace ns3
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:41
uint32_t Get(void) const
Get the host-order 32-bit IP address.
static Ipv4Address GetLoopback(void)
Ipv4Address CombineMask(Ipv4Mask const &mask) const
Combine this address with a network mask.
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.
Ipv4Address m_local
Interface address.
InterfaceAddressScope_e m_scope
Address scope.
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
uint32_t Get(void) const
Get the host-order 32-bit IP mask.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:205
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
address
Definition: first.py:44
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:139