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
27namespace ns3 {
28
44{
45public:
53 GLOBAL
54 };
55
57
69
78 void SetLocal (Ipv4Address local);
79
88
97 Ipv4Address GetLocal (void) const;
98
106 Ipv4Address GetAddress (void) const;
107
112 void SetMask (Ipv4Mask mask);
117 Ipv4Mask GetMask (void) const;
122 void SetBroadcast (Ipv4Address broadcast);
127 Ipv4Address GetBroadcast (void) const;
128
134
140
146 bool IsInSameSubnet (const Ipv4Address b) const;
147
154 bool IsSecondary (void) const;
155
159 void SetSecondary (void);
163 void SetPrimary (void);
164
165private:
166
168 // Note: m_peer may be added in future when necessary
169 // Ipv4Address m_peer; // Peer destination address (in Linux: m_address)
172
175
183 friend bool operator == (Ipv4InterfaceAddress const &a, Ipv4InterfaceAddress const &b);
184
192 friend bool operator != (Ipv4InterfaceAddress const &a, Ipv4InterfaceAddress const &b);
193};
194
202std::ostream& operator<< (std::ostream& os, const Ipv4InterfaceAddress &addr);
203
205{
206 return (a.m_local == b.m_local && a.m_mask == b.m_mask &&
207 a.m_broadcast == b.m_broadcast && a.m_scope == b.m_scope && a.m_secondary == b.m_secondary);
208}
210{
211 return (a.m_local != b.m_local || a.m_mask != b.m_mask ||
212 a.m_broadcast != b.m_broadcast || a.m_scope != b.m_scope || a.m_secondary != b.m_secondary);
213}
214
215
216} // namespace ns3
217
218#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.
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.
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.
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
address
Definition: first.py:44
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:158
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:139
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:1612