Branch data Line data Source code
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 [ # # ]: 0 : DEFINE_TRIVIAL_CLEANUP_FUNC(DnssdService*, dnssd_service_free); 52 [ # # ]: 0 : 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);