A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
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
29
Ipv4InterfaceAddress::Ipv4InterfaceAddress
()
30
: m_scope (GLOBAL),
31
m_secondary (false)
32
{
33
NS_LOG_FUNCTION
(
this
);
34
}
35
36
Ipv4InterfaceAddress::Ipv4InterfaceAddress
(
Ipv4Address
local,
Ipv4Mask
mask)
37
: m_scope (GLOBAL),
38
m_secondary (false)
39
{
40
NS_LOG_FUNCTION
(
this
<< local << mask);
41
m_local
= local;
42
if
(
m_local
==
Ipv4Address::GetLoopback
())
43
{
44
m_scope
=
HOST
;
45
}
46
m_mask
= mask;
47
m_broadcast
=
Ipv4Address
(local.
Get
() | (~mask.
Get
()));
48
}
49
50
Ipv4InterfaceAddress::Ipv4InterfaceAddress
(
const
Ipv4InterfaceAddress
&o)
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
61
Ipv4InterfaceAddress::SetLocal
(
Ipv4Address
local)
62
{
63
NS_LOG_FUNCTION
(
this
<< local);
64
m_local
= local;
65
}
66
67
Ipv4Address
68
Ipv4InterfaceAddress::GetLocal
(
void
)
const
69
{
70
NS_LOG_FUNCTION
(
this
);
71
return
m_local
;
72
}
73
74
void
75
Ipv4InterfaceAddress::SetMask
(
Ipv4Mask
mask)
76
{
77
NS_LOG_FUNCTION
(
this
<< mask);
78
m_mask
= mask;
79
}
80
81
Ipv4Mask
82
Ipv4InterfaceAddress::GetMask
(
void
)
const
83
{
84
NS_LOG_FUNCTION
(
this
);
85
return
m_mask
;
86
}
87
88
void
89
Ipv4InterfaceAddress::SetBroadcast
(
Ipv4Address
broadcast)
90
{
91
NS_LOG_FUNCTION
(
this
<< broadcast);
92
m_broadcast
= broadcast;
93
}
94
95
Ipv4Address
96
Ipv4InterfaceAddress::GetBroadcast
(
void
)
const
97
{
98
NS_LOG_FUNCTION
(
this
);
99
return
m_broadcast
;
100
}
101
102
void
103
Ipv4InterfaceAddress::SetScope
(
Ipv4InterfaceAddress::InterfaceAddressScope_e
scope)
104
{
105
NS_LOG_FUNCTION
(
this
<< scope);
106
m_scope
= scope;
107
}
108
109
Ipv4InterfaceAddress::InterfaceAddressScope_e
110
Ipv4InterfaceAddress::GetScope
(
void
)
const
111
{
112
NS_LOG_FUNCTION
(
this
);
113
return
m_scope
;
114
}
115
116
bool
117
Ipv4InterfaceAddress::IsSecondary
(
void
)
const
118
{
119
NS_LOG_FUNCTION
(
this
);
120
return
m_secondary
;
121
}
122
123
void
124
Ipv4InterfaceAddress::SetSecondary
(
void
)
125
{
126
NS_LOG_FUNCTION
(
this
);
127
m_secondary
=
true
;
128
}
129
130
void
131
Ipv4InterfaceAddress::SetPrimary
(
void
)
132
{
133
NS_LOG_FUNCTION
(
this
);
134
m_secondary
=
false
;
135
}
136
137
std::ostream&
operator<<
(std::ostream& os,
const
Ipv4InterfaceAddress
&addr)
138
{
139
os <<
"m_local="
<< addr.
GetLocal
() <<
"; m_mask="
<<
140
addr.
GetMask
() <<
"; m_broadcast="
<< addr.
GetBroadcast
() <<
"; m_scope="
<< addr.
GetScope
() <<
141
"; m_secondary="
<< addr.
IsSecondary
();
142
return
os;
143
}
144
145
}
// namespace ns3
ns3::Ipv4Address
Ipv4 addresses are stored in host order in this class.
Definition:
ipv4-address.h:41
ns3::Ipv4Address::Get
uint32_t Get(void) const
Get the host-order 32-bit IP address.
Definition:
ipv4-address.cc:225
ns3::Ipv4Address::GetLoopback
static Ipv4Address GetLoopback(void)
Definition:
ipv4-address.cc:420
ns3::Ipv4InterfaceAddress
a class to store IPv4 address information on an interface
Definition:
ipv4-interface-address.h:44
ns3::Ipv4InterfaceAddress::SetMask
void SetMask(Ipv4Mask mask)
Set the network mask.
Definition:
ipv4-interface-address.cc:75
ns3::Ipv4InterfaceAddress::GetBroadcast
Ipv4Address GetBroadcast(void) const
Get the broadcast address.
Definition:
ipv4-interface-address.cc:96
ns3::Ipv4InterfaceAddress::SetSecondary
void SetSecondary(void)
Make the address secondary (used for multihoming)
Definition:
ipv4-interface-address.cc:124
ns3::Ipv4InterfaceAddress::SetBroadcast
void SetBroadcast(Ipv4Address broadcast)
Set the broadcast address.
Definition:
ipv4-interface-address.cc:89
ns3::Ipv4InterfaceAddress::GetScope
Ipv4InterfaceAddress::InterfaceAddressScope_e GetScope(void) const
Get address scope.
Definition:
ipv4-interface-address.cc:110
ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e
InterfaceAddressScope_e
Address scope.
Definition:
ipv4-interface-address.h:50
ns3::Ipv4InterfaceAddress::HOST
@ HOST
Definition:
ipv4-interface-address.h:51
ns3::Ipv4InterfaceAddress::m_broadcast
Ipv4Address m_broadcast
Broadcast address.
Definition:
ipv4-interface-address.h:136
ns3::Ipv4InterfaceAddress::m_secondary
bool m_secondary
For use in multihoming.
Definition:
ipv4-interface-address.h:139
ns3::Ipv4InterfaceAddress::m_mask
Ipv4Mask m_mask
Network mask.
Definition:
ipv4-interface-address.h:135
ns3::Ipv4InterfaceAddress::SetLocal
void SetLocal(Ipv4Address local)
Set local address.
Definition:
ipv4-interface-address.cc:61
ns3::Ipv4InterfaceAddress::GetMask
Ipv4Mask GetMask(void) const
Get the network mask.
Definition:
ipv4-interface-address.cc:82
ns3::Ipv4InterfaceAddress::GetLocal
Ipv4Address GetLocal(void) const
Get the local address.
Definition:
ipv4-interface-address.cc:68
ns3::Ipv4InterfaceAddress::IsSecondary
bool IsSecondary(void) const
Check if the address is a secondary address.
Definition:
ipv4-interface-address.cc:117
ns3::Ipv4InterfaceAddress::SetScope
void SetScope(Ipv4InterfaceAddress::InterfaceAddressScope_e scope)
Set the scope.
Definition:
ipv4-interface-address.cc:103
ns3::Ipv4InterfaceAddress::Ipv4InterfaceAddress
Ipv4InterfaceAddress()
Definition:
ipv4-interface-address.cc:29
ns3::Ipv4InterfaceAddress::m_local
Ipv4Address m_local
Interface address.
Definition:
ipv4-interface-address.h:132
ns3::Ipv4InterfaceAddress::m_scope
InterfaceAddressScope_e m_scope
Address scope.
Definition:
ipv4-interface-address.h:138
ns3::Ipv4InterfaceAddress::SetPrimary
void SetPrimary(void)
Make the address primary.
Definition:
ipv4-interface-address.cc:131
ns3::Ipv4Mask
a class to represent an Ipv4 address mask
Definition:
ipv4-address.h:269
ns3::Ipv4Mask::Get
uint32_t Get(void) const
Get the host-order 32-bit IP mask.
Definition:
ipv4-address.cc:135
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition:
log.h:205
NS_LOG_FUNCTION
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Definition:
log-macros-enabled.h:244
ipv4-interface-address.h
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::operator<<
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition:
angles.cc:137
src
internet
model
ipv4-interface-address.cc
Generated on Mon Sep 27 2021 10:49:47 for ns-3 by
1.9.1