File syn_dnssd.h¶
FileList > net > syn_dnssd.h
Go to the source code of this file
DNS-Based Service Discovery (DNS-SD - RFC 6763 / RFC 6762). More...
#include "../common/syn_defs.h"#include "../port/syn_port_socket.h"#include "../pt/syn_pt.h"#include "../sched/syn_task.h"#include <stdbool.h>#include <stddef.h>#include <stdint.h>
Classes¶
| Type | Name |
|---|---|
| struct | SYN_DnsSd DNS-SD Daemon Context. |
| struct | SYN_DnsSd_Browser DNS-SD Service Discovery Browser Context. |
| struct | SYN_DnsSd_Discovered Discovered Service Information received from mDNS response. |
| struct | SYN_DnsSd_Service DNS-SD Service Definition. |
Public Types¶
| Type | Name |
|---|---|
| typedef void(* | SYN_DnsSd_DiscoverCallback Callback invoked when a remote service is discovered via DNS-SD. |
Public Functions¶
| Type | Name |
|---|---|
| SYN_Status | syn_dnssd_announce (const SYN_DnsSd * sd, size_t service_index, uint8_t * resp_buf, size_t max_resp_len, size_t * resp_len) Format and send gratuitous multicast DNS-SD announcement (RFC 6762 §8.3). |
| SYN_PT_Status | syn_dnssd_browse_task (SYN_PT * pt, SYN_Task * task) Cooperative protothread coroutine for background DNS-SD browsing. |
| SYN_Status | syn_dnssd_browser_init (SYN_DnsSd_Browser * browser, const SYN_DnsSd * sd, const char * service_type, SYN_DnsSd_DiscoverCallback cb, void * user_data, uint32_t timeout_ms) Initialize and start a DNS-SD service browsing session. |
| SYN_Status | syn_dnssd_build_query (const char * service_type, uint8_t * query_buf, size_t max_len, size_t * query_len) Build an mDNS service discovery query (RFC 6762 / RFC 6763). |
| SYN_Status | syn_dnssd_discover (const SYN_DnsSd * sd, const char * service_type) Send an mDNS discovery query for a specific service type on multicast UDP. |
| SYN_Status | syn_dnssd_init (SYN_DnsSd * sd) Initialize DNS-SD daemon context. |
| SYN_Status | syn_dnssd_parse_response (const uint8_t * resp_buf, size_t resp_len, SYN_DnsSd_Discovered * out_disc) Parse an incoming mDNS response packet into a discovered service structure. |
| SYN_Status | syn_dnssd_process_query (const SYN_DnsSd * sd, const uint8_t * query_buf, size_t query_len, uint8_t * resp_buf, size_t max_resp_len, size_t * resp_len) Process an incoming mDNS / DNS-SD query packet and format response. |
| SYN_Status | syn_dnssd_register (SYN_DnsSd * sd, const SYN_DnsSd_Service * svc) Register a service for DNS-SD broadcast/discovery. |
| SYN_PT_Status | syn_dnssd_task (SYN_PT * pt, SYN_Task * task) Cooperative protothread task for responding to DNS-SD discovery queries. |
Macros¶
| Type | Name |
|---|---|
| define | SYN_DNSSD_MAX_SERVICES 4UMaximum registered services per DNS-SD instance. |
| define | SYN_DNSSD_MAX_TXT_RECORDS 8UMaximum TXT key-value attributes per service. |
| define | SYN_DNSSD_PORT 5353UStandard mDNS / DNS-SD Multicast Port. |
Detailed Description¶
Provides zero-allocation, cleanroom multicast DNS-SD service announcement and query responding for embedded devices (PTR, SRV, TXT, and A records).
Public Types Documentation¶
typedef SYN_DnsSd_DiscoverCallback¶
Callback invoked when a remote service is discovered via DNS-SD.
Parameters:
servicePointer to the discovered service attributes.user_dataUser context pointer passed to syn_dnssd_browser_init().
Public Functions Documentation¶
function syn_dnssd_announce¶
Format and send gratuitous multicast DNS-SD announcement (RFC 6762 §8.3).
SYN_Status syn_dnssd_announce (
const SYN_DnsSd * sd,
size_t service_index,
uint8_t * resp_buf,
size_t max_resp_len,
size_t * resp_len
)
Parameters:
sdDNS-SD context.service_indexIndex of service to announce.resp_buf[out] Buffer to receive formatted response packet.max_resp_lenCapacity of resp_buf.resp_len[out] Number of bytes written to resp_buf.
Returns:
SYN_OK on success, SYN_ERROR on invalid parameters or send failure.
function syn_dnssd_browse_task¶
Cooperative protothread coroutine for background DNS-SD browsing.
Yields until responses arrive or timeout expires. Parses incoming packets and invokes the discovery callback.
Parameters:
ptProtothread pointer.taskTask descriptor with user_data pointing to SYN_DnsSd_Browser.
Returns:
PT_WAITING while running, PT_EXITED when discovery timeout elapses.
function syn_dnssd_browser_init¶
Initialize and start a DNS-SD service browsing session.
SYN_Status syn_dnssd_browser_init (
SYN_DnsSd_Browser * browser,
const SYN_DnsSd * sd,
const char * service_type,
SYN_DnsSd_DiscoverCallback cb,
void * user_data,
uint32_t timeout_ms
)
Transmits the initial multicast PTR query and arms the browser context.
Parameters:
browserBrowser context instance.sdInitialized DNS-SD daemon instance (provides socket).service_typeService type to search for (e.g. "_http._tcp", "_coap._udp").cbCallback invoked whenever a valid response is received.user_dataOptional user context pointer.timeout_msMaximum time in ms to listen for discovery responses.
Returns:
SYN_OK on success, SYN_ERROR on invalid parameters.
function syn_dnssd_build_query¶
Build an mDNS service discovery query (RFC 6762 / RFC 6763).
SYN_Status syn_dnssd_build_query (
const char * service_type,
uint8_t * query_buf,
size_t max_len,
size_t * query_len
)
Formats a standard PTR query for _service._proto.local.
Parameters:
service_typeService type to search for (e.g. "_http._tcp", "_coap._udp").query_buf[out] Output buffer for DNS query packet.max_lenCapacity of query_buf.query_len[out] Written length of query packet.
Returns:
SYN_OK on success, SYN_ERROR on buffer overflow or invalid arguments.
function syn_dnssd_discover¶
Send an mDNS discovery query for a specific service type on multicast UDP.
Parameters:
sdDNS-SD context containing open multicast socket.service_typeService type to query for (e.g. "_http._tcp").
Returns:
SYN_OK on successful multicast transmit, SYN_ERROR otherwise.
function syn_dnssd_init¶
Initialize DNS-SD daemon context.
Parameters:
sdDNS-SD instance.
Returns:
SYN_OK on success, SYN_ERROR on socket/multicast error.
function syn_dnssd_parse_response¶
Parse an incoming mDNS response packet into a discovered service structure.
SYN_Status syn_dnssd_parse_response (
const uint8_t * resp_buf,
size_t resp_len,
SYN_DnsSd_Discovered * out_disc
)
Parameters:
resp_bufBuffer containing raw DNS response.resp_lenLength of raw DNS response.out_disc[out] Structure to receive parsed service attributes.
Returns:
SYN_OK if successfully parsed, SYN_ERROR otherwise.
function syn_dnssd_process_query¶
Process an incoming mDNS / DNS-SD query packet and format response.
SYN_Status syn_dnssd_process_query (
const SYN_DnsSd * sd,
const uint8_t * query_buf,
size_t query_len,
uint8_t * resp_buf,
size_t max_resp_len,
size_t * resp_len
)
Parameters:
sdDNS-SD context containing registered services.query_bufIncoming raw DNS packet.query_lenQuery packet byte length.resp_buf[out] Buffer to receive formatted response packet.max_resp_lenCapacity of resp_buf.resp_len[out] Number of bytes written to resp_buf.
Returns:
SYN_OK if query matched and response generated, SYN_ERROR/SYN_NOT_FOUND otherwise.
function syn_dnssd_register¶
Register a service for DNS-SD broadcast/discovery.
Parameters:
sdDNS-SD instance.svcService configuration to register.
Returns:
SYN_OK on success, SYN_ERROR if table is full or invalid parameters.
function syn_dnssd_task¶
Cooperative protothread task for responding to DNS-SD discovery queries.
Parameters:
ptProtothread pointer.taskTask structure with user_data pointing to SYN_DnsSd instance.
Returns:
PT_WAITING while running, PT_EXITED when done.
Macro Definition Documentation¶
define SYN_DNSSD_MAX_SERVICES¶
Maximum registered services per DNS-SD instance.
define SYN_DNSSD_MAX_TXT_RECORDS¶
Maximum TXT key-value attributes per service.
define SYN_DNSSD_PORT¶
Standard mDNS / DNS-SD Multicast Port.
The documentation for this class was generated from the following file src/syntropic/net/syn_dnssd.h