]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/resolve/resolved-dnssd.h
resolved: rename DnssdService.filename field to .path
[thirdparty/systemd.git] / src / resolve / resolved-dnssd.h
CommitLineData
db9ecf05 1/* SPDX-License-Identifier: LGPL-2.1-or-later */
4368277c 2
6501dd31
DR
3#pragma once
4
400f54fb 5#include "list.h"
14a52176 6#include "resolved-conf.h"
400f54fb 7
6501dd31 8typedef struct DnssdService DnssdService;
400f54fb 9typedef struct DnssdTxtData DnssdTxtData;
6501dd31
DR
10
11typedef struct Manager Manager;
12typedef struct DnsResourceRecord DnsResourceRecord;
13typedef struct DnsTxtItem DnsTxtItem;
14
15enum {
16 DNS_TXT_ITEM_TEXT,
d70f15f5 17 DNS_TXT_ITEM_DATA,
6501dd31
DR
18};
19
400f54fb
DR
20struct DnssdTxtData {
21 DnsResourceRecord *rr;
22
d70f15f5 23 LIST_HEAD(DnsTxtItem, txts);
400f54fb
DR
24
25 LIST_FIELDS(DnssdTxtData, items);
26};
27
6501dd31 28struct DnssdService {
40763016 29 char *path;
6501dd31
DR
30 char *name;
31 char *name_template;
32 char *type;
88123aa2 33 char *subtype;
6501dd31
DR
34 uint16_t port;
35 uint16_t priority;
36 uint16_t weight;
6501dd31
DR
37
38 DnsResourceRecord *ptr_rr;
88123aa2 39 DnsResourceRecord *sub_ptr_rr;
6501dd31 40 DnsResourceRecord *srv_rr;
400f54fb
DR
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);
6501dd31
DR
45
46 Manager *manager;
c3036641 47
14a52176
LB
48 /* Services registered via D-Bus are not removed on reload */
49 ResolveConfigSource config_source;
50
c3036641 51 bool withdrawn:1;
84b0f133 52 uid_t originator;
6501dd31
DR
53};
54
55DnssdService *dnssd_service_free(DnssdService *service);
400f54fb
DR
56DnssdTxtData *dnssd_txtdata_free(DnssdTxtData *txt_data);
57DnssdTxtData *dnssd_txtdata_free_all(DnssdTxtData *txt_data);
14a52176 58void dnssd_service_clear_on_reload(Hashmap *services);
6501dd31
DR
59
60DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdService*, dnssd_service_free);
400f54fb 61DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdTxtData*, dnssd_txtdata_free);
6501dd31 62
a3f87e32 63int dnssd_render_instance_name(Manager *m, DnssdService *s, char **ret);
6501dd31
DR
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);
6db6a464 67int dnssd_update_rrs(DnssdService *s);
b8d6689a 68int dnssd_signal_conflict(Manager *manager, const char *name);