]> git.ipfire.org Git - thirdparty/systemd.git/blame_incremental - src/resolve/resolved-dnssd.h
resolved: rename DnssdService.filename field to .path
[thirdparty/systemd.git] / src / resolve / resolved-dnssd.h
... / ...
CommitLineData
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2
3#pragma once
4
5#include "list.h"
6#include "resolved-conf.h"
7
8typedef struct DnssdService DnssdService;
9typedef struct DnssdTxtData DnssdTxtData;
10
11typedef struct Manager Manager;
12typedef struct DnsResourceRecord DnsResourceRecord;
13typedef struct DnsTxtItem DnsTxtItem;
14
15enum {
16 DNS_TXT_ITEM_TEXT,
17 DNS_TXT_ITEM_DATA,
18};
19
20struct DnssdTxtData {
21 DnsResourceRecord *rr;
22
23 LIST_HEAD(DnsTxtItem, txts);
24
25 LIST_FIELDS(DnssdTxtData, items);
26};
27
28struct DnssdService {
29 char *path;
30 char *name;
31 char *name_template;
32 char *type;
33 char *subtype;
34 uint16_t port;
35 uint16_t priority;
36 uint16_t weight;
37
38 DnsResourceRecord *ptr_rr;
39 DnsResourceRecord *sub_ptr_rr;
40 DnsResourceRecord *srv_rr;
41
42 /* Section 6.8 of RFC 6763 allows having service
43 * instances with multiple TXT resource records. */
44 LIST_HEAD(DnssdTxtData, txt_data_items);
45
46 Manager *manager;
47
48 /* Services registered via D-Bus are not removed on reload */
49 ResolveConfigSource config_source;
50
51 bool withdrawn:1;
52 uid_t originator;
53};
54
55DnssdService *dnssd_service_free(DnssdService *service);
56DnssdTxtData *dnssd_txtdata_free(DnssdTxtData *txt_data);
57DnssdTxtData *dnssd_txtdata_free_all(DnssdTxtData *txt_data);
58void dnssd_service_clear_on_reload(Hashmap *services);
59
60DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdService*, dnssd_service_free);
61DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdTxtData*, dnssd_txtdata_free);
62
63int dnssd_render_instance_name(Manager *m, DnssdService *s, char **ret);
64int dnssd_load(Manager *manager);
65int dnssd_txt_item_new_from_string(const char *key, const char *value, DnsTxtItem **ret_item);
66int dnssd_txt_item_new_from_data(const char *key, const void *value, const size_t size, DnsTxtItem **ret_item);
67int dnssd_update_rrs(DnssdService *s);
68int dnssd_signal_conflict(Manager *manager, const char *name);