]>
Commit | Line | Data |
---|---|---|
6501dd31 DR |
1 | #pragma once |
2 | ||
400f54fb DR |
3 | #include "list.h" |
4 | ||
6501dd31 | 5 | typedef struct DnssdService DnssdService; |
400f54fb | 6 | typedef struct DnssdTxtData DnssdTxtData; |
6501dd31 DR |
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 | ||
400f54fb DR |
17 | struct DnssdTxtData { |
18 | DnsResourceRecord *rr; | |
19 | ||
20 | LIST_HEAD(DnsTxtItem, txt); | |
21 | ||
22 | LIST_FIELDS(DnssdTxtData, items); | |
23 | }; | |
24 | ||
6501dd31 DR |
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; | |
6501dd31 DR |
33 | |
34 | DnsResourceRecord *ptr_rr; | |
35 | DnsResourceRecord *srv_rr; | |
400f54fb DR |
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); | |
6501dd31 DR |
40 | |
41 | Manager *manager; | |
c3036641 DR |
42 | |
43 | bool withdrawn:1; | |
84b0f133 | 44 | uid_t originator; |
6501dd31 DR |
45 | }; |
46 | ||
47 | DnssdService *dnssd_service_free(DnssdService *service); | |
400f54fb DR |
48 | DnssdTxtData *dnssd_txtdata_free(DnssdTxtData *txt_data); |
49 | DnssdTxtData *dnssd_txtdata_free_all(DnssdTxtData *txt_data); | |
6501dd31 DR |
50 | |
51 | DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdService*, dnssd_service_free); | |
400f54fb | 52 | DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdTxtData*, dnssd_txtdata_free); |
6501dd31 DR |
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); | |
6db6a464 | 58 | int dnssd_update_rrs(DnssdService *s); |
c3036641 | 59 | void dnssd_signal_conflict(Manager *manager, const char *name); |