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;
42  m_mask = mask;
43  m_broadcast = Ipv4Address (local.Get () | (~mask.Get ()));
44 }
45 
47  : m_local (o.m_local),
48  m_mask (o.m_mask),
50  m_scope (o.m_scope),
52 {
53  NS_LOG_FUNCTION (this << &o);
54 }
55 
56 void
58 {
59  NS_LOG_FUNCTION (this << local);
60  m_local = local;
61 }
62 
65 {
66  NS_LOG_FUNCTION (this);
67  return m_local;
68 }
69 
70 void
72 {
73  NS_LOG_FUNCTION (this << mask);
74  m_mask = mask;
75 }
76 
77 Ipv4Mask
79 {
80  NS_LOG_FUNCTION (this);
81  return m_mask;
82 }
83 
84 void
86 {
87  NS_LOG_FUNCTION (this << broadcast);
88  m_broadcast = broadcast;
89 }
90 
93 {
94  NS_LOG_FUNCTION (this);
95  return m_broadcast;
96 }
97 
98 void
100 {
101  NS_LOG_FUNCTION (this << scope);
102  m_scope = scope;
103 }
104 
107 {
108  NS_LOG_FUNCTION (this);
109  return m_scope;
110 }
111 
112 bool
114 {
115  NS_LOG_FUNCTION (this);
116  return m_secondary;
117 }
118 
119 void
121 {
122  NS_LOG_FUNCTION (this);
123  m_secondary = true;
124 }
125 
126 void
128 {
129  NS_LOG_FUNCTION (this);
130  m_secondary = false;
131 }
132 
133 std::ostream& operator<< (std::ostream& os, const Ipv4InterfaceAddress &addr)
134 {
135  os << "m_local=" << addr.GetLocal () << "; m_mask=" <<
136  addr.GetMask () << "; m_broadcast=" << addr.GetBroadcast () << "; m_scope=" << addr.GetScope () <<
137  "; m_secondary=" << addr.IsSecondary ();
138  return os;
139 }
140 
141 } // namespace ns3
Ipv4Mask m_mask
Network mask.
InterfaceAddressScope_e m_scope
Address scope.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
Ipv4Mask GetMask(void) const
Get the network mask.
Ipv4Address GetLocal(void) const
Get the local address.
bool m_secondary
For use in multihoming.
a class to represent an Ipv4 address mask
Definition: ipv4-address.h:258
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:202
Ipv4Address m_local
Interface address.
uint32_t Get(void) const
Get the host-order 32-bit IP address.
void SetSecondary(void)
Make the address secondary (used for multihoming)
void SetPrimary(void)
Make the address primary.
bool IsSecondary(void) const
Check if the address is a secondary address.
std::ostream & operator<<(std::ostream &os, const Angles &a)
print a struct Angles to output
Definition: angles.cc:42
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Ipv4Address m_broadcast
Broadcast address.
void SetBroadcast(Ipv4Address broadcast)
Set the broadcast address.
void SetMask(Ipv4Mask mask)
Set the network mask.
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:40
Ipv4Address GetBroadcast(void) const
Get the broadcast address.
a class to store IPv4 address information on an interface
void SetScope(Ipv4InterfaceAddress::InterfaceAddressScope_e scope)
Set the scope.
Ipv4InterfaceAddress::InterfaceAddressScope_e GetScope(void) const
Get address scope.
uint32_t Get(void) const
Get the host-order 32-bit IP mask.
void SetLocal(Ipv4Address local)
Set local address.