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"
24
25namespace ns3 {
26
27NS_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
60void
62{
63 NS_LOG_FUNCTION (this << local);
64 m_local = local;
65}
66
67void
69{
71}
72
75{
76 NS_LOG_FUNCTION (this);
77 return m_local;
78}
79
82{
83 return GetLocal ();
84}
85
86void
88{
89 NS_LOG_FUNCTION (this << mask);
90 m_mask = mask;
91}
92
95{
96 NS_LOG_FUNCTION (this);
97 return m_mask;
98}
99
100void
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
114void
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
138bool
140{
141 NS_LOG_FUNCTION (this);
142 return m_secondary;
143}
144
145void
147{
148 NS_LOG_FUNCTION (this);
149 m_secondary = true;
150}
151
152void
154{
155 NS_LOG_FUNCTION (this);
156 m_secondary = false;
157}
158
159std::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