summaryrefslogtreecommitdiff
path: root/vcnet/dns_sd.c
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>2018-10-16 16:09:17 -0400
committerMichael R Sweet <michael.r.sweet@gmail.com>2018-10-16 16:09:17 -0400
commit86206ccf13c909e67fdbe0a4ddba0152a571cd9d (patch)
tree4b3eb663d139309bdbbe408d4671695ca6ce5d4d /vcnet/dns_sd.c
parentd3a97696d785af4fd1c00254b3b26150d915f921 (diff)
downloadcups-86206ccf13c909e67fdbe0a4ddba0152a571cd9d.tar.gz
Add missing DNSSD.LIB functions.
Diffstat (limited to 'vcnet/dns_sd.c')
-rw-r--r--vcnet/dns_sd.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/vcnet/dns_sd.c b/vcnet/dns_sd.c
index d135e9aa8..25131dd6c 100644
--- a/vcnet/dns_sd.c
+++ b/vcnet/dns_sd.c
@@ -34,7 +34,10 @@ static DNSServiceErrorType (*dnssd_update_record)(DNSServiceRef sdRef, DNSRecord
static void (*dnssd_txt_create)(TXTRecordRef *txtRecord, uint16_t bufferLen, void *buffer);
static void (*dnssd_txt_deallocate)(TXTRecordRef *txtRecord);
static const void *(*dnssd_txt_get_bytes_ptr)(const TXTRecordRef *txtRecord);
+static uint16_t (*dnssd_txt_get_count)(uint16_t txtLen, const void *txtRecord);
static uint16_t (*dnssd_txt_get_length)(const TXTRecordRef *txtRecord);
+static DNSServiceErrorType (*dnssd_txt_get_item_at_index)(uint16_t txtLen, const void *txtRecord, uint16_t itemIndex, uint16_t keyBufLen, char *key, uint8_t *valueLen, const void **value);
+static const void *(*dnssd_txt_get_value_ptr)(uint16_t txtLen, const void *txtRecord, const char *key, uint8_t *valueLen);
static DNSServiceErrorType (*dnssd_txt_set_value)(TXTRecordRef *txtRecord, const char *key, uint8_t valueSize, const void *value);
@@ -68,7 +71,10 @@ dnssd_init(void)
dnssd_txt_create = (void (*)(TXTRecordRef *, uint16_t, void *))GetProcAddress(dll_handle, "TXTRecordCreate");
dnssd_txt_deallocate = (void (*)(TXTRecordRef *))GetProcAddress(dll_handle, "TXTRecordDeallocate");
dnssd_txt_get_bytes_ptr = (const void *(*)(const TXTRecordRef *))GetProcAddress(dll_handle, "TXTRecordGetBytesPtr");
+ dnssd_txt_get_count = (uint16_t (*)(uint16_t, const void *))GetProcAddress(dll_handle, "TXTRecordGetCount");
+ dnssd_txt_get_item_at_index = (DNSServiceErrorType (*)(uint16_t, const void *, uint16_t, uint16_t, char *, uint8_t *, const void **))GetProcAddress(dll_handle, "TXTRecordGetItemAtIndex");
dnssd_txt_get_length = (uint16_t (*)(const TXTRecordRef *))GetProcAddress(dll_handle, "TXTRecordGetLength");
+ dnssd_txt_get_value_ptr = (const void *(*)(uint16_t, const void *, const char *, uint8_t *))GetProcAddress(dll_handle, "TXTRecordGetValuePtr");
dnssd_txt_set_value = (DNSServiceErrorType (*)(TXTRecordRef *, const char *, uint8_t, const void *))GetProcAddress(dll_handle, "TXTRecordSetValue");
}
@@ -383,3 +389,56 @@ DNSServiceErrorType DNSSD_API TXTRecordSetValue
}
+// TXTRecordGetCount
+uint16_t DNSSD_API
+TXTRecordGetCount(
+ uint16_t txtLen,
+ const void *txtRecord)
+{
+ if (!dnssd_initialized)
+ dnssd_init();
+
+ if (dnssd_txt_get_count)
+ return (*dnssd_txt_get_count)(txtLen, txtRecord);
+ else
+ return (0);
+}
+
+
+// TXTRecordGetItemAtIndex
+DNSServiceErrorType DNSSD_API
+TXTRecordGetItemAtIndex(
+ uint16_t txtLen,
+ const void *txtRecord,
+ uint16_t itemIndex,
+ uint16_t keyBufLen,
+ char *key,
+ uint8_t *valueLen,
+ const void **value)
+{
+ if (!dnssd_initialized)
+ dnssd_init();
+
+ if (dnssd_txt_get_item_at_index)
+ return (*dnssd_txt_get_item_at_index)(txtLen, txtRecord, itemIndex, keyBufLen, key, valueLen, value);
+ else
+ return (-1);
+}
+
+
+// TXTRecordGetValuePtr
+const void * DNSSD_API
+TXTRecordGetValuePtr(
+ uint16_t txtLen,
+ const void *txtRecord,
+ const char *key,
+ uint8_t *valueLen)
+{
+ if (!dnssd_initialized)
+ dnssd_init();
+
+ if (dnssd_txt_get_value_ptr)
+ return (*dnssd_txt_get_value_ptr)(txtLen, txtRecord, key, valueLen);
+ else
+ return (NULL);
+}