]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/resolve/resolved-dnssd.h
resolved: add missing error code check when initializing DNS-over-TLS
[thirdparty/systemd.git] / src / resolve / resolved-dnssd.h
1 #pragma once
2
3 #include "list.h"
4
5 typedef struct DnssdService DnssdService;
6 typedef struct DnssdTxtData DnssdTxtData;
7
8 typedef struct Manager Manager;
9 typedef struct DnsResourceRecord DnsResourceRecord;
10 typedef struct DnsTxtItem DnsTxtItem;
11
12 enum {
13 DNS_TXT_ITEM_TEXT,
14 DNS_TXT_ITEM_DATA
15 };
16
17 struct DnssdTxtData {
18 DnsResourceRecord *rr;
19
20 LIST_HEAD(DnsTxtItem, txt);
21
22 LIST_FIELDS(DnssdTxtData, items);
23 };
24
25 struct DnssdService {
26 char *filename;
27 char *name;
28 char *name_template;
29 char *type;
30 uint16_t port;
31 uint16_t priority;
32 uint16_t weight;
33
34 DnsResourceRecord *ptr_rr;
35 DnsResourceRecord *srv_rr;
36
37 /* Section 6.8 of RFC 6763 allows having service
38 * instances with multiple TXT resource records. */
39 LIST_HEAD(DnssdTxtData, txt_data_items);
40
41 Manager *manager;
42
43 bool withdrawn:1;
44 uid_t originator;
45 };
46
47 DnssdService *dnssd_service_free(DnssdService *service);
48 DnssdTxtData *dnssd_txtdata_free(DnssdTxtData *txt_data);
49 DnssdTxtData *dnssd_txtdata_free_all(DnssdTxtData *txt_data);
50
51 DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdService*, dnssd_service_free);
52 DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdTxtData*, dnssd_txtdata_free);
53
54 int dnssd_render_instance_name(DnssdService *s, char **ret_name);
55 int dnssd_load(Manager *manager);
56 int dnssd_txt_item_new_from_string(const char *key, const char *value, DnsTxtItem **ret_item);
57 int dnssd_txt_item_new_from_data(const char *key, const void *value, const size_t size, DnsTxtItem **ret_item);
58 int dnssd_update_rrs(DnssdService *s);
59 void dnssd_signal_conflict(Manager *manager, const char *name);