Skip to content

Commit 93dc6a4

Browse files
committed
netcfg/resolved: Refactor out resolved::ResolverRecord
The new resolved::IPAddress is feature-wise equivalent to resolved::ResolverRecord. After the change in ResolverRecord to use IPAddress internally, the ResolverRecord class was just useless wrapper class. This can now be refactored out and instead use IPAddress directly. Signed-off-by: David Sommerseth <davids@openvpn.net>
1 parent 10bd48a commit 93dc6a4

File tree

5 files changed

+14
-86
lines changed

5 files changed

+14
-86
lines changed

src/netcfg/dns/proxy-systemd-resolved.cpp

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -33,28 +33,6 @@ namespace NetCfg {
3333
namespace DNS {
3434
namespace resolved {
3535

36-
//
37-
// NetCfg::DNS::resolved::ResolverRecord
38-
//
39-
ResolverRecord::ResolverRecord(const unsigned short f, const std::string &s)
40-
: server(IPAddress(s, f))
41-
{
42-
}
43-
44-
45-
ResolverRecord::ResolverRecord(GVariant *entry)
46-
: server(IPAddress(entry))
47-
{
48-
}
49-
50-
51-
GVariant *ResolverRecord::GetGVariant() const
52-
{
53-
return server.GetGVariant();
54-
}
55-
56-
57-
5836
//
5937
// NetCfg::DNS::resolved::SearchDomain
6038
//
@@ -133,8 +111,8 @@ const std::vector<std::string> Link::GetDNSServers() const
133111
std::vector<std::string> dns_srvs;
134112
while ((rec = g_variant_iter_next_value(it)))
135113
{
136-
struct ResolverRecord d(rec);
137-
dns_srvs.push_back(d.server.str());
114+
IPAddress d(rec);
115+
dns_srvs.push_back(d.str());
138116
g_variant_unref(rec);
139117
}
140118
g_variant_iter_free(it);
@@ -144,14 +122,14 @@ const std::vector<std::string> Link::GetDNSServers() const
144122
}
145123

146124

147-
std::vector<std::string> Link::SetDNSServers(const ResolverRecord::List &servers) const
125+
std::vector<std::string> Link::SetDNSServers(const IPAddress::List &servers) const
148126
{
149127
GVariantBuilder *b = glib2::Builder::Create("a(iay)");
150128
std::vector<std::string> applied{};
151129
for (const auto &srv : servers)
152130
{
153131
glib2::Builder::Add(b, srv.GetGVariant());
154-
applied.push_back(srv.server.str());
132+
applied.push_back(srv.str());
155133
}
156134

157135
GVariant *r = proxy->Call(tgt_link,
@@ -168,9 +146,9 @@ const std::string Link::GetCurrentDNSServer() const
168146
try
169147
{
170148
r = proxy->GetPropertyGVariant(tgt_link, "CurrentDNSServer");
171-
struct ResolverRecord d(r);
149+
IPAddress d(r);
172150
g_variant_unref(r);
173-
return d.server.str();
151+
return d.str();
174152
}
175153
catch (const Exception &)
176154
{

src/netcfg/dns/proxy-systemd-resolved.hpp

Lines changed: 1 addition & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -27,51 +27,6 @@ namespace NetCfg {
2727
namespace DNS {
2828
namespace resolved {
2929

30-
31-
/**
32-
* Helper struct to manage a resolver record used by the systemd-resolved
33-
* service.
34-
*
35-
* This is capable of converting between the D-Bus data types the D-Bus
36-
* service uses and C++ data types.
37-
*/
38-
struct ResolverRecord
39-
{
40-
/**
41-
* Defines a ResolverRecord::List as an alias to std::vector<ResolverRecord>
42-
*/
43-
using List = std::vector<ResolverRecord>;
44-
45-
/**
46-
* Registers a new resolver record
47-
*
48-
* @param family IPv4/IPv6 IP address identifier
49-
* @param server std::string containing the DNS server IP address
50-
*/
51-
ResolverRecord(const unsigned short family, const std::string &server);
52-
53-
/**
54-
* Registers a new resolver record, parsing a GVariant* D-Bus value
55-
* response from the systemd-resolved
56-
*
57-
* @param entry GVariant object containing the D-Bus values to parse
58-
*/
59-
ResolverRecord(GVariant *entry);
60-
61-
~ResolverRecord() = default;
62-
63-
/**
64-
* Retrieve the data stored in this struct as a D-Bus value object
65-
* which can be passed directly to the systemd-resolved service
66-
*
67-
* @return GVariant* D-Bus value object containing all the information
68-
*/
69-
GVariant *GetGVariant() const;
70-
71-
IPAddress server;
72-
};
73-
74-
7530
/**
7631
* Helper struct to manage search domain records used by the systemd-resolved
7732
* service.
@@ -175,7 +130,7 @@ class Link
175130
* @param servers ResolverRecord::List with all servers to use
176131
* @return std::vector<std:string> of servers applied
177132
*/
178-
std::vector<std::string> SetDNSServers(const ResolverRecord::List &servers) const;
133+
std::vector<std::string> SetDNSServers(const IPAddress::List &servers) const;
179134

180135
/**
181136
* Retrieve the DNS server currently being used for DNS queries

src/netcfg/dns/systemd-resolved.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,6 @@
1313
*/
1414

1515

16-
#include <algorithm>
17-
#include <cstdio>
18-
#include <fstream>
19-
#include <iostream>
2016
#include <sstream>
2117
#include <string>
2218
#include <vector>
@@ -25,7 +21,6 @@
2521
#include "build-config.h"
2622
#include <openvpn/addr/ip.hpp>
2723

28-
#include "common/timestamp.hpp"
2924
#include "netcfg/dns/resolver-settings.hpp"
3025
#include "netcfg/dns/resolver-backend-interface.hpp"
3126
#include "netcfg/dns/proxy-systemd-resolved.hpp"
@@ -87,8 +82,8 @@ void SystemdResolved::Apply(const ResolverSettings::Ptr settings)
8782
continue;
8883
}
8984
openvpn::IP::Addr addr(r);
90-
upd->resolver.push_back(ResolverRecord((addr.is_ipv6() ? AF_INET6 : AF_INET),
91-
addr.to_string()));
85+
upd->resolvers.push_back(resolved::IPAddress(addr.to_string(),
86+
addr.is_ipv6() ? AF_INET6 : AF_INET));
9287
}
9388

9489
for (const auto &sd : settings->GetSearchDomains())
@@ -135,7 +130,7 @@ void SystemdResolved::Commit(NetCfgSignals::Ptr signal)
135130
{
136131
signal->LogVerb2("systemd-resolved: [" + upd->link->GetPath()
137132
+ "] Committing DNS servers");
138-
auto applied_servers = upd->link->SetDNSServers(upd->resolver);
133+
auto applied_servers = upd->link->SetDNSServers(upd->resolvers);
139134
signal->LogVerb2("systemd-resolved: [" + upd->link->GetPath()
140135
+ "] Committing DNS search domains");
141136
auto applied_search = upd->link->SetDomains(upd->search);

src/netcfg/dns/systemd-resolved.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class SystemdResolved : public ResolverBackendInterface
5959
bool disabled = false; ///< disabled internally by errors
6060
bool default_routing = false; ///< set the default routing dns flag
6161
resolved::Link::Ptr link = nullptr; ///< Pointer to the resolved::Link interface object
62-
resolved::ResolverRecord::List resolver{}; ///< List of DNS resolver IP addresses for this link
62+
resolved::IPAddress::List resolvers{}; ///< List of DNS resolver IP addresses for this link
6363
resolved::SearchDomain::List search{}; ///< List of DNS search domains to add for this link
6464

6565

src/tests/dbus/netcfg-systemd-resolved-basic.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,21 +123,21 @@ int program(ParsedArgs::Ptr args)
123123
if (!op.empty())
124124
{
125125
// Set a new DNS resolver server
126-
resolved::ResolverRecord::List rslv;
126+
resolved::IPAddress::List rslv;
127127

128128
if (args->Present("add-resolver6"))
129129
{
130130
for (const auto &ip : args->GetAllValues("add-resolver6"))
131131
{
132-
rslv.push_back(resolved::ResolverRecord(AF_INET6, ip));
132+
rslv.push_back(resolved::IPAddress(ip, AF_INET6));
133133
}
134134
}
135135

136136
if (args->Present("add-resolver4"))
137137
{
138138
for (const auto &ip : args->GetAllValues("add-resolver4"))
139139
{
140-
rslv.push_back(resolved::ResolverRecord(AF_INET, ip));
140+
rslv.push_back(resolved::IPAddress(ip, AF_INET));
141141
}
142142
}
143143

0 commit comments

Comments
 (0)