Open Lighting Architecture 0.10.9
Loading...
Searching...
No Matches
Interface.h
1/*
2 * This library is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU Lesser General Public
4 * License as published by the Free Software Foundation; either
5 * version 2.1 of the License, or (at your option) any later version.
6 *
7 * This library is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 * Lesser General Public License for more details.
11 *
12 * You should have received a copy of the GNU Lesser General Public
13 * License along with this library; if not, write to the Free Software
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15 *
16 * Interface.h
17 * Represents a network interface.
18 * Copyright (C) 2010 Simon Newton
19 */
20
21#ifndef INCLUDE_OLA_NETWORK_INTERFACE_H_
22#define INCLUDE_OLA_NETWORK_INTERFACE_H_
23
24#include <stdint.h>
27#include <string>
28
29namespace ola {
30namespace network {
31
32/*
33 * Represents an interface.
34 */
35class Interface {
36 public:
37 enum { DEFAULT_INDEX = -1 };
38
39 Interface();
40 Interface(const std::string &name,
41 const IPV4Address &ip_address,
42 const IPV4Address &broadcast_address,
43 const IPV4Address &subnet_mask,
44 const MACAddress &hw_address,
45 bool loopback,
46 int32_t index = DEFAULT_INDEX,
47 uint16_t type = ARP_VOID_TYPE);
48 Interface(const Interface &other);
49 Interface& operator=(const Interface &other);
50 bool operator==(const Interface &other);
51
52 std::string name;
53 IPV4Address ip_address;
54 IPV4Address bcast_address;
55 IPV4Address subnet_mask;
56 MACAddress hw_address;
57 bool loopback;
58 int32_t index;
59 uint16_t type;
60
61 /* Void type, nothing is known */
62 static const uint16_t ARP_VOID_TYPE;
63 static const uint16_t ARP_ETHERNET_TYPE;
64};
65
66
71 public:
74
75 void SetName(const std::string &name) { m_name = name; }
76
77 bool SetAddress(const std::string &ip_address);
78 void SetAddress(const IPV4Address &ip_address) {
79 m_ip_address = ip_address;
80 }
81
82 bool SetBroadcast(const std::string &broadcast_address);
83 void SetBroadcast(const IPV4Address &broadcast_address) {
84 m_broadcast_address = broadcast_address;
85 }
86
87 bool SetSubnetMask(const std::string &mask);
88 void SetSubnetMask(const IPV4Address &mask) {
89 m_subnet_mask = mask;
90 }
91
92 void SetHardwareAddress(const MACAddress &mac_address) {
93 m_hw_address = mac_address;
94 }
95
96 void SetLoopback(bool loopback);
97
98 void SetIndex(int32_t index);
99
100 void SetType(uint16_t type);
101
102 void Reset();
104
105 private:
106 std::string m_name;
107 IPV4Address m_ip_address;
108 IPV4Address m_broadcast_address;
109 IPV4Address m_subnet_mask;
110 MACAddress m_hw_address;
111 bool m_loopback;
112 int32_t m_index;
113 uint16_t m_type;
114
115 bool SetAddress(const std::string &str, IPV4Address *target);
116};
117
118// Sorts interfaces by index.
120 inline bool operator() (const Interface &if1, const Interface &if2) {
121 return (if1.index < if2.index);
122 }
123};
124} // namespace network
125} // namespace ola
126#endif // INCLUDE_OLA_NETWORK_INTERFACE_H_
Represents an IPv4 Address.
Represents a MAC Address.
Represents a IPv4 Address.
Definition IPV4Address.h:55
Definition Interface.h:70
void SetIndex(int32_t index)
Definition Interface.cpp:179
void Reset()
Definition Interface.cpp:195
void SetType(uint16_t type)
Definition Interface.cpp:187
bool SetAddress(const std::string &ip_address)
Definition Interface.cpp:147
bool SetBroadcast(const std::string &broadcast_address)
Definition Interface.cpp:155
bool SetSubnetMask(const std::string &mask)
Definition Interface.cpp:163
InterfaceBuilder()
Definition Interface.cpp:133
void SetLoopback(bool loopback)
Definition Interface.cpp:171
Interface Construct()
Definition Interface.cpp:213
Definition Interface.h:35
Represents a MAC Address.
Definition MACAddress.h:50
The namespace containing all OLA symbols.
Definition Credentials.cpp:44
Definition Interface.h:119