1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
6 #include "resolved-conf.h"
8 typedef struct DnssdService DnssdService
;
9 typedef struct DnssdTxtData DnssdTxtData
;
11 typedef struct Manager Manager
;
12 typedef struct DnsResourceRecord DnsResourceRecord
;
13 typedef struct DnsTxtItem DnsTxtItem
;
21 DnsResourceRecord
*rr
;
23 LIST_HEAD(DnsTxtItem
, txts
);
25 LIST_FIELDS(DnssdTxtData
, items
);
38 DnsResourceRecord
*ptr_rr
;
39 DnsResourceRecord
*sub_ptr_rr
;
40 DnsResourceRecord
*srv_rr
;
42 /* Section 6.8 of RFC 6763 allows having service
43 * instances with multiple TXT resource records. */
44 LIST_HEAD(DnssdTxtData
, txt_data_items
);
48 /* Services registered via D-Bus are not removed on reload */
49 ResolveConfigSource config_source
;
55 DnssdService
*dnssd_service_free(DnssdService
*service
);
56 DnssdTxtData
*dnssd_txtdata_free(DnssdTxtData
*txt_data
);
57 DnssdTxtData
*dnssd_txtdata_free_all(DnssdTxtData
*txt_data
);
58 void dnssd_service_clear_on_reload(Hashmap
*services
);
60 DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdService
*, dnssd_service_free
);
61 DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdTxtData
*, dnssd_txtdata_free
);
63 int dnssd_render_instance_name(Manager
*m
, DnssdService
*s
, char **ret
);
64 int dnssd_load(Manager
*manager
);
65 int dnssd_txt_item_new_from_string(const char *key
, const char *value
, DnsTxtItem
**ret_item
);
66 int dnssd_txt_item_new_from_data(const char *key
, const void *value
, const size_t size
, DnsTxtItem
**ret_item
);
67 int dnssd_update_rrs(DnssdService
*s
);
68 int dnssd_signal_conflict(Manager
*manager
, const char *name
);