Chapter 194. API
Table of Contents
- 194.1. API
- cyg_mdns_init — Initialise mDNS Responder
- cyg_mdns_terminate — Terminate mDNS Responder
- cyg_mdns_enable — Enable mDNS
- cyg_mdns_disable — Disable mDNS
- cyg_mdns_service_register — Register set of services
- cyg_mdns_service_unregister — Remove registered services
- cyg_mdns_sethostname — Set base hostname
- cyg_mdns_hostname_callback_register — Register hostname generation callback
- cyg_mdns_gethostname — Get current hostname value
- cyg_mdns_setservicelabel — Set service label
- cyg_mdns_getservicelabel — Get current service label value
- cyg_mdns_servicelabel_callback_register — Register service label generation callback
- cyg_mdns_hinfo_register — Register HINFO record data
- cyg_mdns_discovery_callback_register — Register DNS-SD response callback
- cyg_mdns_discovery_callback_unregister — Unregister DNS-SD response callback
- cyg_mdns_discovery_callback_flags — Read/Modify DNS-SD response callback control flags
- cyg_mdns_discovery_query — Issue a DNS-SD query
 
- 194.2. Example Responder
- 194.3. Example DNS-SD Queries
The main mDNS API provides a serialisation layer between the low-level (lwIP) networking based operations and client application threads.
194.1. API
- cyg_mdns_init — Initialise mDNS Responder
- cyg_mdns_terminate — Terminate mDNS Responder
- cyg_mdns_enable — Enable mDNS
- cyg_mdns_disable — Disable mDNS
- cyg_mdns_service_register — Register set of services
- cyg_mdns_service_unregister — Remove registered services
- cyg_mdns_sethostname — Set base hostname
- cyg_mdns_hostname_callback_register — Register hostname generation callback
- cyg_mdns_gethostname — Get current hostname value
- cyg_mdns_setservicelabel — Set service label
- cyg_mdns_getservicelabel — Get current service label value
- cyg_mdns_servicelabel_callback_register — Register service label generation callback
- cyg_mdns_hinfo_register — Register HINFO record data
- cyg_mdns_discovery_callback_register — Register DNS-SD response callback
- cyg_mdns_discovery_callback_unregister — Unregister DNS-SD response callback
- cyg_mdns_discovery_callback_flags — Read/Modify DNS-SD response callback control flags
- cyg_mdns_discovery_query — Issue a DNS-SD query
194.2. Example Responder
        The tests/mdns_example.c source file included in
        the package provides a complete, simple, real-world example of the
        mDNS Responder usage. It registers two services, a dummy (port 9)
        service _workstation._tcp.local and a HTTP daemon
        using service _http._tcp.local on port 80.
      
Normally the first task after the lwIP networking has been initialised is to call the C function:
cyg_bool cyg_mdns_init(void);
        The following is a very simple example of declaring
        a <hostname>._http._tcp.local service for
        the <hostname>.local address, where
        <hostname> is the default as configured by
        the CYGDAT_NET_MDNS_HOSTNAME CDL option.
      
static const cyg_uint8 label_http[] = { 0x05,'_','h','t','t','p' };
static const cyg_mdns_service_identity httpd80 = {
  .service = label_http,
  .proto = cyg_mdns_label_tcp,
  .port = 80
};
static const struct cyg_mdns_service httpd80_service = {
  .id = &httpd80,
  .txt_vector = NULL,
  .txt_count = 0,
};
…
if (cyg_mdns_init()) {
  if (cyg_mdns_service_register(1,(struct mdns_service *)&httpd80_service)) {
    if (cyg_mdns_enable()) {
      // other application processing as needed ...
    } else {
      (void)cyg_mdns_service_unregister(1,(struct mdns_service *)&httpd80_service);
      // report error
    }
  } else {
    cyg_mdns_terminate();
    // report error
  }
} else {
  // report error
}194.3. Example DNS-SD Queries
        The tests/dnssd_example.c source file included in
        the package provides a complete, simple, real-world example of the
        DNS-SD API usage. See Section 197.2.6, “DNS-SD Example” for more
        detail.
      
| 2025-10-02 | eCosPro Non-Commercial Public License | 



