Skip to content

Commit af49ca2

Browse files
committed
resolved,networkd: unify ResolveSupport enum
networkd previously knew an enum "ResolveSupport" for configuring per-interface LLMNR support, resolved had a similar enum just called "Support", with the same value and similar pasers. Unify this, call the enum ResolveSupport, and port both daemons to it.
1 parent b18b866 commit af49ca2

16 files changed

+108
-113
lines changed

Makefile.am

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1054,7 +1054,9 @@ libshared_la_SOURCES = \
10541054
src/shared/machine-image.c \
10551055
src/shared/machine-image.h \
10561056
src/shared/machine-pool.c \
1057-
src/shared/machine-pool.h
1057+
src/shared/machine-pool.h \
1058+
src/shared/resolve-util.c \
1059+
src/shared/resolve-util.h
10581060

10591061
if HAVE_UTMP
10601062
libshared_la_SOURCES += \

src/network/networkd-network-gperf.gperf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Network.Address, config_parse_address,
4545
Network.Gateway, config_parse_gateway, 0, 0
4646
Network.Domains, config_parse_domains, 0, offsetof(Network, domains)
4747
Network.DNS, config_parse_strv, 0, offsetof(Network, dns)
48-
Network.LLMNR, config_parse_resolve, 0, offsetof(Network, llmnr)
48+
Network.LLMNR, config_parse_resolve_support, 0, offsetof(Network, llmnr)
4949
Network.NTP, config_parse_strv, 0, offsetof(Network, ntp)
5050
Network.IPForward, config_parse_address_family_boolean_with_kernel,0, offsetof(Network, ip_forward)
5151
Network.IPMasquerade, config_parse_bool, 0, offsetof(Network, ip_masquerade)

src/network/networkd-network.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
***/
2323

2424
#include "condition.h"
25+
#include "resolve-util.h"
2526

2627
typedef struct Network Network;
2728

src/network/networkd-util.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,3 @@ int config_parse_address_family_boolean_with_kernel(
101101

102102
return 0;
103103
}
104-
105-
static const char* const resolve_support_table[_RESOLVE_SUPPORT_MAX] = {
106-
[RESOLVE_SUPPORT_NO] = "no",
107-
[RESOLVE_SUPPORT_YES] = "yes",
108-
[RESOLVE_SUPPORT_RESOLVE] = "resolve",
109-
};
110-
111-
DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(resolve_support, ResolveSupport, RESOLVE_SUPPORT_YES);
112-
113-
DEFINE_CONFIG_PARSE_ENUM(config_parse_resolve, resolve_support, ResolveSupport, "Failed to parse resolve support");

src/network/networkd-util.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,8 @@ typedef enum AddressFamilyBoolean {
3333
_ADDRESS_FAMILY_BOOLEAN_INVALID = -1,
3434
} AddressFamilyBoolean;
3535

36-
typedef enum ResolveSupport {
37-
RESOLVE_SUPPORT_NO,
38-
RESOLVE_SUPPORT_YES,
39-
RESOLVE_SUPPORT_RESOLVE,
40-
_RESOLVE_SUPPORT_MAX,
41-
_RESOLVE_SUPPORT_INVALID = -1,
42-
} ResolveSupport;
43-
44-
int config_parse_resolve(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
4536
int config_parse_address_family_boolean(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
4637
int config_parse_address_family_boolean_with_kernel(const char* unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
4738

48-
const char* resolve_support_to_string(ResolveSupport i) _const_;
49-
ResolveSupport resolve_support_from_string(const char *s) _pure_;
50-
5139
const char *address_family_boolean_to_string(AddressFamilyBoolean b) _const_;
5240
AddressFamilyBoolean address_family_boolean_from_string(const char *s) _const_;

src/resolve/resolved-conf.c

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -200,40 +200,6 @@ int config_parse_search_domains(
200200
return 0;
201201
}
202202

203-
int config_parse_support(
204-
const char *unit,
205-
const char *filename,
206-
unsigned line,
207-
const char *section,
208-
unsigned section_line,
209-
const char *lvalue,
210-
int ltype,
211-
const char *rvalue,
212-
void *data,
213-
void *userdata) {
214-
215-
Support support, *v = data;
216-
int r;
217-
218-
assert(filename);
219-
assert(lvalue);
220-
assert(rvalue);
221-
222-
support = support_from_string(rvalue);
223-
if (support < 0) {
224-
r = parse_boolean(rvalue);
225-
if (r < 0) {
226-
log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse support level '%s'. Ignoring.", rvalue);
227-
return 0;
228-
}
229-
230-
support = r ? SUPPORT_YES : SUPPORT_NO;
231-
}
232-
233-
*v = support;
234-
return 0;
235-
}
236-
237203
int config_parse_dnssec(
238204
const char *unit,
239205
const char *filename,

src/resolve/resolved-conf.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,4 @@ const struct ConfigPerfItem* resolved_gperf_lookup(const char *key, unsigned len
3535

3636
int config_parse_dns_servers(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
3737
int config_parse_search_domains(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
38-
int config_parse_support(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
3938
int config_parse_dnssec(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);

src/resolve/resolved-gperf.gperf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ struct ConfigPerfItem;
1717
Resolve.DNS, config_parse_dns_servers, DNS_SERVER_SYSTEM, 0
1818
Resolve.FallbackDNS, config_parse_dns_servers, DNS_SERVER_FALLBACK, 0
1919
Resolve.Domains, config_parse_search_domains, 0, 0
20-
Resolve.LLMNR, config_parse_support, 0, offsetof(Manager, llmnr_support)
20+
Resolve.LLMNR, config_parse_resolve_support,0, offsetof(Manager, llmnr_support)
2121
Resolve.DNSSEC, config_parse_dnssec, 0, 0

src/resolve/resolved-link.c

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ int link_new(Manager *m, Link **ret, int ifindex) {
4646
return -ENOMEM;
4747

4848
l->ifindex = ifindex;
49-
l->llmnr_support = SUPPORT_YES;
49+
l->llmnr_support = RESOLVE_SUPPORT_YES;
5050

5151
r = hashmap_put(m->links, INT_TO_PTR(ifindex), l);
5252
if (r < 0)
@@ -99,8 +99,8 @@ static void link_allocate_scopes(Link *l) {
9999
l->unicast_scope = dns_scope_free(l->unicast_scope);
100100

101101
if (link_relevant(l, AF_INET) &&
102-
l->llmnr_support != SUPPORT_NO &&
103-
l->manager->llmnr_support != SUPPORT_NO) {
102+
l->llmnr_support != RESOLVE_SUPPORT_NO &&
103+
l->manager->llmnr_support != RESOLVE_SUPPORT_NO) {
104104
if (!l->llmnr_ipv4_scope) {
105105
r = dns_scope_new(l->manager, &l->llmnr_ipv4_scope, l, DNS_PROTOCOL_LLMNR, AF_INET);
106106
if (r < 0)
@@ -110,8 +110,8 @@ static void link_allocate_scopes(Link *l) {
110110
l->llmnr_ipv4_scope = dns_scope_free(l->llmnr_ipv4_scope);
111111

112112
if (link_relevant(l, AF_INET6) &&
113-
l->llmnr_support != SUPPORT_NO &&
114-
l->manager->llmnr_support != SUPPORT_NO &&
113+
l->llmnr_support != RESOLVE_SUPPORT_NO &&
114+
l->manager->llmnr_support != RESOLVE_SUPPORT_NO &&
115115
socket_ipv6_is_supported()) {
116116
if (!l->llmnr_ipv6_scope) {
117117
r = dns_scope_new(l->manager, &l->llmnr_ipv6_scope, l, DNS_PROTOCOL_LLMNR, AF_INET6);
@@ -122,8 +122,8 @@ static void link_allocate_scopes(Link *l) {
122122
l->llmnr_ipv6_scope = dns_scope_free(l->llmnr_ipv6_scope);
123123

124124
if (link_relevant(l, AF_INET) &&
125-
l->mdns_support != SUPPORT_NO &&
126-
l->manager->mdns_support != SUPPORT_NO) {
125+
l->mdns_support != RESOLVE_SUPPORT_NO &&
126+
l->manager->mdns_support != RESOLVE_SUPPORT_NO) {
127127
if (!l->mdns_ipv4_scope) {
128128
r = dns_scope_new(l->manager, &l->mdns_ipv4_scope, l, DNS_PROTOCOL_MDNS, AF_INET);
129129
if (r < 0)
@@ -133,8 +133,8 @@ static void link_allocate_scopes(Link *l) {
133133
l->mdns_ipv4_scope = dns_scope_free(l->mdns_ipv4_scope);
134134

135135
if (link_relevant(l, AF_INET6) &&
136-
l->mdns_support != SUPPORT_NO &&
137-
l->manager->mdns_support != SUPPORT_NO) {
136+
l->mdns_support != RESOLVE_SUPPORT_NO &&
137+
l->manager->mdns_support != RESOLVE_SUPPORT_NO) {
138138
if (!l->mdns_ipv6_scope) {
139139
r = dns_scope_new(l->manager, &l->mdns_ipv6_scope, l, DNS_PROTOCOL_MDNS, AF_INET6);
140140
if (r < 0)
@@ -233,22 +233,16 @@ static int link_update_llmnr_support(Link *l) {
233233
if (r < 0)
234234
goto clear;
235235

236-
r = parse_boolean(b);
237-
if (r < 0) {
238-
if (streq(b, "resolve"))
239-
l->llmnr_support = SUPPORT_RESOLVE;
240-
else
241-
goto clear;
242-
243-
} else if (r > 0)
244-
l->llmnr_support = SUPPORT_YES;
245-
else
246-
l->llmnr_support = SUPPORT_NO;
236+
l->llmnr_support = resolve_support_from_string(b);
237+
if (l->llmnr_support < 0) {
238+
r = -EINVAL;
239+
goto clear;
240+
}
247241

248242
return 0;
249243

250244
clear:
251-
l->llmnr_support = SUPPORT_YES;
245+
l->llmnr_support = RESOLVE_SUPPORT_YES;
252246
return r;
253247
}
254248

@@ -459,8 +453,8 @@ void link_address_add_rrs(LinkAddress *a, bool force_remove) {
459453
if (!force_remove &&
460454
link_address_relevant(a) &&
461455
a->link->llmnr_ipv4_scope &&
462-
a->link->llmnr_support == SUPPORT_YES &&
463-
a->link->manager->llmnr_support == SUPPORT_YES) {
456+
a->link->llmnr_support == RESOLVE_SUPPORT_YES &&
457+
a->link->manager->llmnr_support == RESOLVE_SUPPORT_YES) {
464458

465459
if (!a->link->manager->llmnr_host_ipv4_key) {
466460
a->link->manager->llmnr_host_ipv4_key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, a->link->manager->llmnr_hostname);
@@ -516,8 +510,8 @@ void link_address_add_rrs(LinkAddress *a, bool force_remove) {
516510
if (!force_remove &&
517511
link_address_relevant(a) &&
518512
a->link->llmnr_ipv6_scope &&
519-
a->link->llmnr_support == SUPPORT_YES &&
520-
a->link->manager->llmnr_support == SUPPORT_YES) {
513+
a->link->llmnr_support == RESOLVE_SUPPORT_YES &&
514+
a->link->manager->llmnr_support == RESOLVE_SUPPORT_YES) {
521515

522516
if (!a->link->manager->llmnr_host_ipv6_key) {
523517
a->link->manager->llmnr_host_ipv6_key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_AAAA, a->link->manager->llmnr_hostname);

src/resolve/resolved-link.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
#include "in-addr-util.h"
2727
#include "ratelimit.h"
28+
#include "resolve-util.h"
2829

2930
typedef struct Link Link;
3031
typedef struct LinkAddress LinkAddress;
@@ -66,8 +67,8 @@ struct Link {
6667
LIST_HEAD(DnsSearchDomain, search_domains);
6768
unsigned n_search_domains;
6869

69-
Support llmnr_support;
70-
Support mdns_support;
70+
ResolveSupport llmnr_support;
71+
ResolveSupport mdns_support;
7172

7273
DnsScope *unicast_scope;
7374
DnsScope *llmnr_ipv4_scope;

0 commit comments

Comments
 (0)