Multicast DNS
This module includes APIs for Multicast DNS (mDNS).
Summary
The mDNS APIs are available when the mDNS support OPENTHREAD_CONFIG_MULTICAST_DNS_ENABLE is enabled and the OPENTHREAD_CONFIG_MULTICAST_DNS_PUBLIC_API_ENABLE is also enabled.
Enumerations |
|
|---|---|
otMdnsEntryState{
|
enum Represents a host/service/key entry state. |
Typedefs |
|
|---|---|
otMdnsAddressAndTtl
|
typedef Represents a discovered host address and its TTL. |
otMdnsAddressCallback
|
typedef Represents the callback function pointer type use to report an IPv6/IPv4 address resolve result. |
otMdnsAddressResolver
|
typedef Represents an address resolver. |
otMdnsAddressResult
|
typedef Represents address resolver result. |
otMdnsBrowseCallback
|
typedef Represents the callback function pointer type used to report a browse result. |
otMdnsBrowseResult
|
typedef Represents a browse result. |
otMdnsBrowser
|
typedef Represents a service browser. |
otMdnsCacheInfo
|
typedefstruct otMdnsCacheInfo
Represents additional information about a browser/resolver and its cached results. |
otMdnsConflictCallback)(otInstance *aInstance, const char *aName, const char *aServiceType)
|
typedefvoid(*
Represents the callback function to report a detected name conflict after successful registration of an entry. |
otMdnsEntryState
|
typedefenum otMdnsEntryState
Represents a host/service/key entry state. |
otMdnsHost
|
typedef Represents an mDNS host. |
otMdnsIterator
|
typedefstruct otMdnsIterator
Represents an mDNS entry iterator. |
otMdnsKey
|
typedef Represents an mDNS key record. |
otMdnsLocalHostAddress
|
typedefstruct otMdnsLocalHostAddress
Represents a local host IPv4 or IPv6 address entry. |
otMdnsRecordCallback
|
typedef Represents the callback function used to report a record querier result. |
otMdnsRecordQuerier
|
typedef Represents a record querier. |
otMdnsRecordResult
|
typedef Represents a record query result. |
otMdnsRegisterCallback
|
typedef Represents the callback function to report the outcome of a host, service, or key registration request. |
otMdnsRequestId
|
typedef Represents a request ID ( uint32_t value) for registering a host, a service, or a key service. |
otMdnsService
|
typedef Represents an mDNS service. |
otMdnsSrvCallback
|
typedef Represents the callback function pointer type used to report an SRV resolve result. |
otMdnsSrvResolver
|
typedef Represents an SRV service resolver. |
otMdnsSrvResult
|
typedef Represents an SRV resolver result. |
otMdnsTxtCallback
|
typedef Represents the callback function pointer type used to report a TXT resolve result. |
otMdnsTxtResolver
|
typedef Represents a TXT service resolver. |
otMdnsTxtResult
|
typedef Represents a TXT resolver result. |
Functions |
|
|---|---|
otMdnsAllocateIterator(otInstance *aInstance)
|
Allocates a new iterator.
|
otMdnsFreeIterator(otInstance *aInstance, otMdnsIterator *aIterator)
|
void
Frees a previously allocated iterator.
|
otMdnsGetAutoEnableMode(otInstance *aInstance)
|
bool
Indicates whether the auto-enable mode is enabled or disabled.
|
otMdnsGetLocalHostName(otInstance *aInstance)
|
const char *
Gets the local host name.
|
otMdnsGetNextBrowser(otInstance *aInstance, otMdnsIterator *aIterator, otMdnsBrowser *aBrowser, otMdnsCacheInfo *aInfo)
|
Iterates over browsers.
|
otMdnsGetNextHost(otInstance *aInstance, otMdnsIterator *aIterator, otMdnsHost *aHost, otMdnsEntryState *aState)
|
Iterates over registered host entries.
|
otMdnsGetNextIp4AddressResolver(otInstance *aInstance, otMdnsIterator *aIterator, otMdnsAddressResolver *aResolver, otMdnsCacheInfo *aInfo)
|
Iterates over IPv4 address resolvers.
|
otMdnsGetNextIp6AddressResolver(otInstance *aInstance, otMdnsIterator *aIterator, otMdnsAddressResolver *aResolver, otMdnsCacheInfo *aInfo)
|
Iterates over IPv6 address resolvers.
|
otMdnsGetNextKey(otInstance *aInstance, otMdnsIterator *aIterator, otMdnsKey *aKey, otMdnsEntryState *aState)
|
Iterates over registered key entries.
|
otMdnsGetNextLocalHostAddress(otInstance *aInstance, otMdnsIterator *aIterator, otMdnsLocalHostAddress *aAddress)
|
Iterates over the local host IPv6 and IPv4 addresses tracked by OpenThread mDNS module.
|
otMdnsGetNextRecordQuerier(otInstance *aInstance, otMdnsIterator *aIterator, otMdnsRecordQuerier *aQuerier, otMdnsCacheInfo *aInfo)
|
Iterates over record querier entries.
|
otMdnsGetNextService(otInstance *aInstance, otMdnsIterator *aIterator, otMdnsService *aService, otMdnsEntryState *aState)
|
Iterates over registered service entries.
|
otMdnsGetNextSrvResolver(otInstance *aInstance, otMdnsIterator *aIterator, otMdnsSrvResolver *aResolver, otMdnsCacheInfo *aInfo)
|
Iterates over SRV resolvers.
|
otMdnsGetNextTxtResolver(otInstance *aInstance, otMdnsIterator *aIterator, otMdnsTxtResolver *aResolver, otMdnsCacheInfo *aInfo)
|
Iterates over TXT resolvers.
|
otMdnsIsEnabled(otInstance *aInstance)
|
bool
Indicates whether the mDNS module is enabled.
|
otMdnsIsQuestionUnicastAllowed(otInstance *aInstance)
|
bool
Indicates whether mDNS module is allowed to send "QU" questions requesting unicast response.
|
otMdnsIsVerboseLoggingEnabled(otInstance *aInstance)
|
bool
Indicates whether verbose logging is enabled for the mDNS module.
|
otMdnsRegisterHost(otInstance *aInstance, const otMdnsHost *aHost, otMdnsRequestId aRequestId, otMdnsRegisterCallback aCallback)
|
Registers or updates a host on mDNS.
|
otMdnsRegisterKey(otInstance *aInstance, const otMdnsKey *aKey, otMdnsRequestId aRequestId, otMdnsRegisterCallback aCallback)
|
Registers or updates a key record on mDNS module.
|
otMdnsRegisterService(otInstance *aInstance, const otMdnsService *aService, otMdnsRequestId aRequestId, otMdnsRegisterCallback aCallback)
|
Registers or updates a service on mDNS.
|
otMdnsSetAutoEnableMode(otInstance *aInstance, bool aEnable)
|
void
Enables or disables the mDNS auto-enable mode.
|
otMdnsSetConflictCallback(otInstance *aInstance, otMdnsConflictCallback aCallback)
|
void
Sets the post-registration conflict callback.
|
otMdnsSetEnabled(otInstance *aInstance, bool aEnable, uint32_t aInfraIfIndex)
|
Enables or disables the mDNS module.
|
otMdnsSetLocalHostName(otInstance *aInstance, const char *aName)
|
Sets the local host name.
|
otMdnsSetQuestionUnicastAllowed(otInstance *aInstance, bool aAllow)
|
void
Sets whether the mDNS module is allowed to send questions requesting unicast responses referred to as "QU" questions.
|
otMdnsSetVerboseLoggingEnabled(otInstance *aInstance, bool aEnable)
|
void
Enables or disables verbose logging for the mDNS module at run-time.
|
otMdnsStartBrowser(otInstance *aInstance, const otMdnsBrowser *aBrowser)
|
Starts a service browser.
|
otMdnsStartIp4AddressResolver(otInstance *aInstance, const otMdnsAddressResolver *aResolver)
|
Starts an IPv4 address resolver.
|
otMdnsStartIp6AddressResolver(otInstance *aInstance, const otMdnsAddressResolver *aResolver)
|
Starts an IPv6 address resolver.
|
otMdnsStartRecordQuerier(otInstance *aInstance, const otMdnsRecordQuerier *aQuerier)
|
Starts a record querier.
|
otMdnsStartSrvResolver(otInstance *aInstance, const otMdnsSrvResolver *aResolver)
|
Starts an SRV record resolver.
|
otMdnsStartTxtResolver(otInstance *aInstance, const otMdnsTxtResolver *aResolver)
|
Starts a TXT record resolver.
|
otMdnsStopBrowser(otInstance *aInstance, const otMdnsBrowser *aBroswer)
|
Stops a service browser.
|
otMdnsStopIp4AddressResolver(otInstance *aInstance, const otMdnsAddressResolver *aResolver)
|
Stops an IPv4 address resolver.
|
otMdnsStopIp6AddressResolver(otInstance *aInstance, const otMdnsAddressResolver *aResolver)
|
Stops an IPv6 address resolver.
|
otMdnsStopRecordQuerier(otInstance *aInstance, const otMdnsRecordQuerier *aQuerier)
|
Stops a record querier.
|
otMdnsStopSrvResolver(otInstance *aInstance, const otMdnsSrvResolver *aResolver)
|
Stops an SRV record resolver.
|
otMdnsStopTxtResolver(otInstance *aInstance, const otMdnsTxtResolver *aResolver)
|
Stops a TXT record resolver.
|
otMdnsUnregisterHost(otInstance *aInstance, const otMdnsHost *aHost)
|
Unregisters a host on mDNS.
|
otMdnsUnregisterKey(otInstance *aInstance, const otMdnsKey *aKey)
|
Unregisters a key record on mDNS.
|
otMdnsUnregisterService(otInstance *aInstance, const otMdnsService *aService)
|
Unregisters a service on mDNS module.
|
Structs |
|
|---|---|
| otMdnsCacheInfo |
Represents additional information about a browser/resolver and its cached results. |
| otMdnsLocalHostAddress |
Represents a local host IPv4 or IPv6 address entry. |
Enumerations
otMdnsEntryState
otMdnsEntryState
Represents a host/service/key entry state.
Typedefs
otMdnsAddressAndTtl
otPlatDnssdAddressAndTtl otMdnsAddressAndTtl
Represents a discovered host address and its TTL.
otMdnsAddressCallback
otPlatDnssdAddressCallback otMdnsAddressCallback
Represents the callback function pointer type use to report an IPv6/IPv4 address resolve result.
otMdnsAddressResolver
otPlatDnssdAddressResolver otMdnsAddressResolver
Represents an address resolver.
Refer to otPlatDnssdAddressResolver for documentation of member fields and otMdnsStartIp6AddressResolver() or otMdnsStartIp4AddressResolver() for how they are used.
otMdnsAddressResult
otPlatDnssdAddressResult otMdnsAddressResult
Represents address resolver result.
otMdnsBrowseCallback
otPlatDnssdBrowseCallback otMdnsBrowseCallback
Represents the callback function pointer type used to report a browse result.
otMdnsBrowser
otPlatDnssdBrowser otMdnsBrowser
Represents a service browser.
Refer to otPlatDnssdBrowser for documentation of member fields and otMdnsStartBrowser() for how they are used.
otMdnsCacheInfo
struct otMdnsCacheInfo otMdnsCacheInfo
Represents additional information about a browser/resolver and its cached results.
otMdnsConflictCallback
void(* otMdnsConflictCallback)(otInstance *aInstance, const char *aName, const char *aServiceType)
Represents the callback function to report a detected name conflict after successful registration of an entry.
If a conflict is detected while registering an entry, it is reported through the provided otMdnsRegisterCallback. The otMdnsConflictCallback is used only when a name conflict is detected after an entry has been successfully registered.
A non-NULL aServiceType indicates that conflict is for a service entry. In this case aName specifies the service instance label (treated as as a single DNS label and can potentially include dot . character).
A NULL aServiceType indicates that conflict is for a host entry. In this case Name specifies the host name. It does not include the domain name.
| Details | |||||||
|---|---|---|---|---|---|---|---|
| Parameters |
|
otMdnsHost
otPlatDnssdHost otMdnsHost
Represents an mDNS host.
This type is used to register or unregister a host (otMdnsRegisterHost() and otMdnsUnregisterHost()).
See the description of each function for more details on how different fields are used in each case.
otMdnsKey
otPlatDnssdKey otMdnsKey
Represents an mDNS key record.
See otMdnsRegisterKey(), otMdnsUnregisterKey() for more details about fields in each case.
otMdnsLocalHostAddress
struct otMdnsLocalHostAddress otMdnsLocalHostAddress
Represents a local host IPv4 or IPv6 address entry.
otMdnsRecordCallback
otPlatDnssdRecordCallback otMdnsRecordCallback
Represents the callback function used to report a record querier result.
otMdnsRegisterCallback
otPlatDnssdRegisterCallback otMdnsRegisterCallback
Represents the callback function to report the outcome of a host, service, or key registration request.
The outcome of a registration request is reported back by invoking this callback with one of the following aError inputs:
OT_ERROR_NONEindicates registration was successful.OT_ERROR_DUPLICATEDindicates a name conflict while probing, i.e., name is claimed by another mDNS responder.
See otMdnsRegisterHost(), otMdnsRegisterService(), and otMdnsRegisterKey() for more details about when the callback will be invoked.
| Details | |||||||
|---|---|---|---|---|---|---|---|
| Parameters |
|
otMdnsRequestId
otPlatDnssdRequestId otMdnsRequestId
Represents a request ID (uint32_t value) for registering a host, a service, or a key service.
otMdnsService
otPlatDnssdService otMdnsService
Represents an mDNS service.
This type is used to register or unregister a service (otMdnsRegisterService() and otMdnsUnregisterService()).
See the description of each function for more details on how different fields are used in each case.
otMdnsSrvCallback
otPlatDnssdSrvCallback otMdnsSrvCallback
Represents the callback function pointer type used to report an SRV resolve result.
otMdnsSrvResolver
otPlatDnssdSrvResolver otMdnsSrvResolver
Represents an SRV service resolver.
Refer to otPlatDnssdSrvResolver for documentation of member fields and otMdnsStartSrvResolver() for how they are used.
otMdnsTxtCallback
otPlatDnssdTxtCallback otMdnsTxtCallback
Represents the callback function pointer type used to report a TXT resolve result.
otMdnsTxtResolver
otPlatDnssdTxtResolver otMdnsTxtResolver
Represents a TXT service resolver.
Refer to otPlatDnssdTxtResolver for documentation of member fields and otMdnsStartTxtResolver() for how they are used.
Functions
otMdnsAllocateIterator
otMdnsIterator * otMdnsAllocateIterator( otInstance *aInstance )
Allocates a new iterator.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE.
An allocated iterator must be freed by the caller using otMdnsFreeIterator().
| Details | |||
|---|---|---|---|
| Parameters |
|
||
| Returns |
A pointer to the allocated iterator, or
NULL if it fails to allocate. |
otMdnsFreeIterator
void otMdnsFreeIterator( otInstance *aInstance, otMdnsIterator *aIterator )
Frees a previously allocated iterator.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
otMdnsGetAutoEnableMode
bool otMdnsGetAutoEnableMode( otInstance *aInstance )
Indicates whether the auto-enable mode is enabled or disabled.
Requires OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
otMdnsGetLocalHostName
const char * otMdnsGetLocalHostName( otInstance *aInstance )
Gets the local host name.
| Details | |||
|---|---|---|---|
| Parameters |
|
||
| Returns |
The local host name.
|
otMdnsGetNextBrowser
otError otMdnsGetNextBrowser( otInstance *aInstance, otMdnsIterator *aIterator, otMdnsBrowser *aBrowser, otMdnsCacheInfo *aInfo )
Iterates over browsers.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE.
On success, aBrowser is populated with information about the next browser. The mCallback field is always set to NULL as there may be multiple active browsers with different callbacks. Other pointers within the otMdnsBrowser structure remain valid until the next call to any OpenThread stack's public or platform API/callback.
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsGetNextHost
otError otMdnsGetNextHost( otInstance *aInstance, otMdnsIterator *aIterator, otMdnsHost *aHost, otMdnsEntryState *aState )
Iterates over registered host entries.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE.
On success, aHost is populated with information about the next host. Pointers within the otMdnsHost structure (like mName) remain valid until the next call to any OpenThread stack's public or platform API/callback.
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsGetNextIp4AddressResolver
otError otMdnsGetNextIp4AddressResolver( otInstance *aInstance, otMdnsIterator *aIterator, otMdnsAddressResolver *aResolver, otMdnsCacheInfo *aInfo )
Iterates over IPv4 address resolvers.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE.
On success, aResolver is populated with information about the next resolver. The mCallback field is always set to NULL as there may be multiple active resolvers with different callbacks. Other pointers within the otMdnsAddressResolver structure remain valid until the next call to any OpenThread stack's public or platform API/callback.
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsGetNextIp6AddressResolver
otError otMdnsGetNextIp6AddressResolver( otInstance *aInstance, otMdnsIterator *aIterator, otMdnsAddressResolver *aResolver, otMdnsCacheInfo *aInfo )
Iterates over IPv6 address resolvers.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE.
On success, aResolver is populated with information about the next resolver. The mCallback field is always set to NULL as there may be multiple active resolvers with different callbacks. Other pointers within the otMdnsAddressResolver structure remain valid until the next call to any OpenThread stack's public or platform API/callback.
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsGetNextKey
otError otMdnsGetNextKey( otInstance *aInstance, otMdnsIterator *aIterator, otMdnsKey *aKey, otMdnsEntryState *aState )
Iterates over registered key entries.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE.
On success, aKey is populated with information about the next key. Pointers within the otMdnsKey structure (like mName) remain valid until the next call to any OpenThread stack's public or platform API/callback.
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsGetNextLocalHostAddress
otError otMdnsGetNextLocalHostAddress( otInstance *aInstance, otMdnsIterator *aIterator, otMdnsLocalHostAddress *aAddress )
Iterates over the local host IPv6 and IPv4 addresses tracked by OpenThread mDNS module.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE.
The platform layer is responsible for monitoring and reporting all host IPv4 and IPv6 addresses to the OpenThread mDNS module, which then tracks the full address list (see otPlatMdnsHandleHostAddressEvent()). This function allows iteration through this tracked list, primarily intended for information and debugging purposes.
| Details | |||||||
|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||
| Return Values |
|
otMdnsGetNextRecordQuerier
otError otMdnsGetNextRecordQuerier( otInstance *aInstance, otMdnsIterator *aIterator, otMdnsRecordQuerier *aQuerier, otMdnsCacheInfo *aInfo )
Iterates over record querier entries.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE.
On success, aQuerier is populated with information about the next querier . The mCallback field is always set to NULL as there may be multiple active querier with different callbacks. Other pointers within the otMdnsRecordQuerier structure remain valid until the next call to any OpenThread stack's public or platform API/callback.
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsGetNextService
otError otMdnsGetNextService( otInstance *aInstance, otMdnsIterator *aIterator, otMdnsService *aService, otMdnsEntryState *aState )
Iterates over registered service entries.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE.
On success, aService is populated with information about the next service . Pointers within the otMdnsService structure (like mServiceType, mSubTypeLabels) remain valid until the next call to any OpenThread stack's public or platform API/callback.
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsGetNextSrvResolver
otError otMdnsGetNextSrvResolver( otInstance *aInstance, otMdnsIterator *aIterator, otMdnsSrvResolver *aResolver, otMdnsCacheInfo *aInfo )
Iterates over SRV resolvers.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE.
On success, aResolver is populated with information about the next resolver. The mCallback field is always set to NULL as there may be multiple active resolvers with different callbacks. Other pointers within the otMdnsSrvResolver structure remain valid until the next call to any OpenThread stack's public or platform API/callback.
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsGetNextTxtResolver
otError otMdnsGetNextTxtResolver( otInstance *aInstance, otMdnsIterator *aIterator, otMdnsTxtResolver *aResolver, otMdnsCacheInfo *aInfo )
Iterates over TXT resolvers.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_ENTRY_ITERATION_API_ENABLE.
On success, aResolver is populated with information about the next resolver. The mCallback field is always set to NULL as there may be multiple active resolvers with different callbacks. Other pointers within the otMdnsTxtResolver structure remain valid until the next call to any OpenThread stack's public or platform API/callback.
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsIsEnabled
bool otMdnsIsEnabled( otInstance *aInstance )
Indicates whether the mDNS module is enabled.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
otMdnsIsQuestionUnicastAllowed
bool otMdnsIsQuestionUnicastAllowed( otInstance *aInstance )
Indicates whether mDNS module is allowed to send "QU" questions requesting unicast response.
| Details | |||||
|---|---|---|---|---|---|
| Return Values |
|
otMdnsIsVerboseLoggingEnabled
bool otMdnsIsVerboseLoggingEnabled( otInstance *aInstance )
Indicates whether verbose logging is enabled for the mDNS module.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_VERBOSE_LOGGING_ENABLE.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
otMdnsRegisterHost
otError otMdnsRegisterHost( otInstance *aInstance, const otMdnsHost *aHost, otMdnsRequestId aRequestId, otMdnsRegisterCallback aCallback )
Registers or updates a host on mDNS.
The fields in aHost follow these rules:
- The
mHostNamefield specifies the host name to register (e.g., "myhost"). MUST NOT contain the domain name. - The
mAddressesis array of IPv6 addresses to register with the host.mAddressesLengthprovides the number of entries inmAddressesarray. - The
mAddressesarray can be empty with zeromAddressesLength. In this case, mDNS will treat it as if host is unregistered and stops advertising any addresses for this the host name. - The
mTtlspecifies the TTL if non-zero. If zero, the mDNS core will choose the default TTL of 120 seconds. - Other fields in
aHoststructure are ignored in anotMdnsRegisterHost()call.
This function can be called again for the same mHostName to update a previously registered host entry, for example, to change the list of addresses of the host. In this case, the mDNS module will send "goodbye" announcements for any previously registered and now removed addresses and announce any newly added addresses.
The outcome of the registration request is reported back by invoking the provided aCallback with aRequestId as its input and one of the following aError inputs:
OT_ERROR_NONEindicates registration was successful.OT_ERROR_DULICATEDindicates a name conflict while probing, i.e., name is claimed by another mDNS responder.
For caller convenience, the OpenThread mDNS module guarantees that the callback will be invoked after this function returns, even in cases of immediate registration success. The aCallback can be NULL if caller does not want to be notified of the outcome.
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsRegisterKey
otError otMdnsRegisterKey( otInstance *aInstance, const otMdnsKey *aKey, otMdnsRequestId aRequestId, otMdnsRegisterCallback aCallback )
Registers or updates a key record on mDNS module.
The fields in aKey follow these rules:
- If the key is associated with a host entry, the
mNamefield specifies the host name and themServiceTypeMUST be NULL. - If the key is associated with a service entry, the
mNamefiled specifies the service instance label (always treated as a single label) and themServiceTypefiled specifies the service type (e.g., "_tst._udp"). In this case the DNS name for key record is.. - The
mKeyDatafield contains the key record's data withmKeyDataLengthas its length in byes. - The
mTtlspecifies the TTL if non-zero. If zero, the mDNS module will use the default TTL of 120 seconds. - Other fields in
aKeystructure are ignored in anotMdnsRegisterKey()call.
This function can be called again for the same name to updated a previously registered key entry, for example, to change the key data or TTL.
Regarding the invocation of the aCallback, this function behaves in the same way as described in otMdnsRegisterHost().
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsRegisterService
otError otMdnsRegisterService( otInstance *aInstance, const otMdnsService *aService, otMdnsRequestId aRequestId, otMdnsRegisterCallback aCallback )
Registers or updates a service on mDNS.
The fields in aService follow these rules:
- The
mServiceInstancespecifies the service instance label. It is treated as a single DNS name label. It may contain dot.character which is allowed in a service instance label. - The
mServiceTypespecifies the service type (e.g., "_tst._udp"). It is treated as multiple dot.separated labels. It MUST NOT contain the domain name. - The
mHostNamefield specifies the host name of the service if it is not NULL. Otherwise, if it is NULL, it indicates that this service is for the local host (this device itself). - The
mSubTypeLabelsis an array of strings representing sub-types associated with the service. Each array entry is a sub-type label. ThemSubTypeLabels can be NULL if there is no sub-type. Otherwise, the array length is specified bymSubTypeLabelsLength. ThemTxtDataandmTxtDataLengthspecify the encoded TXT data. ThemTxtDatacan be NULL ormTxtDataLengthcan be zero to specify an empty TXT data. In this case mDNS module will use a single zero byte[ 0 ]` as the TXT data.- The
mPort,mWeight, andmPriorityspecify the service's parameters as specified in DNS SRV record. - The
mTtlspecifies the TTL if non-zero. If zero, the mDNS module will use the default TTL of 120 seconds. - Other fields in
aServicestructure are ignored in anotMdnsRegisterService()call.
This function can be called again for the same mServiceInstance and mServiceType to update a previously registered service entry, for example, to change the sub-types list, or update any parameter such as port, weight, priority, TTL, or host name. The mDNS module will send announcements for any changed info, e.g., will send "goodbye" announcements for any removed sub-types and announce any newly added sub-types.
Regarding the invocation of the aCallback, this function behaves in the same way as described in otMdnsRegisterHost().
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsSetAutoEnableMode
void otMdnsSetAutoEnableMode( otInstance *aInstance, bool aEnable )
Enables or disables the mDNS auto-enable mode.
Requires OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE.
When this mode is enabled, the mDNS module uses the same infrastructure network interface as the Border Routing manager. The mDNS module is then automatically enabled or disabled based on the operational state of that interface (see otBorderRoutingInit() and otPlatInfraIfStateChanged()).
It is recommended to use the auto-enable mode on Border Routers. The default state of this mode at initialization is controlled by the OPENTHREAD_CONFIG_MULTICAST_DNS_AUTO_ENABLE_ON_INFRA_IF configuration.
The auto-enable mode can be disabled by a call to otMdnsSetAutoEnableMode(false) or by an explicit call to otMdnsSetEnabled(). Deactivating the auto-enable mode with otMdnsSetAutoEnableMode(false) will not change the current operational state of the mDNS module (e.g., if it is currently enabled, it remains enabled).
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
otMdnsSetConflictCallback
void otMdnsSetConflictCallback( otInstance *aInstance, otMdnsConflictCallback aCallback )
Sets the post-registration conflict callback.
If a conflict is detected while registering an entry, it is reported through the provided otMdnsRegisterCallback. The otMdnsConflictCallback is used only when a name conflict is detected after an entry has been successfully registered.
aCallback can be set to NULL if not needed. Subsequent calls will replace any previously set callback.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
otMdnsSetEnabled
otError otMdnsSetEnabled( otInstance *aInstance, bool aEnable, uint32_t aInfraIfIndex )
Enables or disables the mDNS module.
The mDNS module should be enabled before registration any host, service, or key entries. Disabling mDNS will immediately stop all operations and any communication (multicast or unicast tx) and remove any previously registered entries without sending any "goodbye" announcements or invoking their callback. Once disabled, all currently active browsers and resolvers are stopped.
| Details | |||||||
|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||
| Return Values |
|
otMdnsSetLocalHostName
otError otMdnsSetLocalHostName( otInstance *aInstance, const char *aName )
Sets the local host name.
The local host name can be set only when the mDNS module is disabled. If not set the mDNS module itself will auto-generate the local host name.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
otMdnsSetQuestionUnicastAllowed
void otMdnsSetQuestionUnicastAllowed( otInstance *aInstance, bool aAllow )
Sets whether the mDNS module is allowed to send questions requesting unicast responses referred to as "QU" questions.
The "QU" questions request unicast responses, in contrast to "QM" questions which request multicast responses.
When allowed, the first probe will be sent as a "QU" question. This API can be used to address platform limitation where platform socket cannot accept unicast response received on mDNS port (due to it being already bound).
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
otMdnsSetVerboseLoggingEnabled
void otMdnsSetVerboseLoggingEnabled( otInstance *aInstance, bool aEnable )
Enables or disables verbose logging for the mDNS module at run-time.
Requires OPENTHREAD_CONFIG_MULTICAST_DNS_VERBOSE_LOGGING_ENABLE.
The initial state of verbose logging (enabled or disabled at startup) is determined by the configuration OPENTHREAD_CONFIG_MULTICAST_DEFAULT_DNS_VERBOSE_LOGGING_STATE.
When enabled, the mDNS module emits verbose logs for every sent or received mDNS message, including the header and all question and resource records. These logs are generated regardless of the current log level configured on the device.
This feature can generate a large volume of logs, so its use is recommended only during development, integration, or debugging.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
otMdnsStartBrowser
otError otMdnsStartBrowser( otInstance *aInstance, const otMdnsBrowser *aBrowser )
Starts a service browser.
Initiates a continuous search for the specified mServiceType in aBrowser. For sub-type services, use mSubTypeLabel to define the sub-type, for base services, set mSubTypeLabel to NULL.
Discovered services are reported through the mCallback function in aBrowser. Services that have been removed are reported with a TTL value of zero. The callback may be invoked immediately with cached information (if available) and potentially before this function returns. When cached results are used, the reported TTL value will reflect the original TTL from the last received response.
Multiple browsers can be started for the same service, provided they use different callback functions.
| Details | |||||||
|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||
| Return Values |
|
otMdnsStartIp4AddressResolver
otError otMdnsStartIp4AddressResolver( otInstance *aInstance, const otMdnsAddressResolver *aResolver )
Starts an IPv4 address resolver.
Initiates a continuous IPv4 address resolver for the specified host name in aResolver.
Discovered addresses are reported through the mCallback function in aResolver. The IPv4 addresses are represented using the IPv4-mapped IPv6 address format in mAddresses array. The callback is invoked whenever addresses are added or removed, providing an updated list. If all addresses are removed, the callback is invoked with an empty list (mAddresses will be NULL, and mAddressesLength will be zero).
The callback may be invoked immediately with cached information (if available) and potentially before this function returns. When cached result is used, the reported TTL values will reflect the original TTL from the last received response.
Multiple resolvers can be started for the same host name, provided they use different callback functions.
| Details | |||||||
|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||
| Return Values |
|
otMdnsStartIp6AddressResolver
otError otMdnsStartIp6AddressResolver( otInstance *aInstance, const otMdnsAddressResolver *aResolver )
Starts an IPv6 address resolver.
Initiates a continuous IPv6 address resolver for the specified host name in aResolver.
Discovered addresses are reported through the mCallback function in aResolver. The callback is invoked whenever addresses are added or removed, providing an updated list. If all addresses are removed, the callback is invoked with an empty list (mAddresses will be NULL, and mAddressesLength will be zero).
The callback may be invoked immediately with cached information (if available) and potentially before this function returns. When cached result is used, the reported TTL values will reflect the original TTL from the last received response.
Multiple resolvers can be started for the same host name, provided they use different callback functions.
| Details | |||||||
|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||
| Return Values |
|
otMdnsStartRecordQuerier
otError otMdnsStartRecordQuerier( otInstance *aInstance, const otMdnsRecordQuerier *aQuerier )
Starts a record querier.
Initiates a continuous query for a given mRecordType as specified in aQuerier. The queried name is specified by the combination of mFirstLabel and mNextLabels (optional rest of the labels) in aQuerier. The mFirstLabel MUST be non-NULL but mNextLabels can be NULL if there are no other labels. The mNextLabels MUST NOT include the domain name. The reason for a separate first label is to allow it to include a dot . character (as allowed for service instance labels).
Discovered results are reported through the mCallback function in aQuerier, providing the record data bytes (RDATA). For NS, CNAME, SOA, PTR, MX, RP, AFSDB, RT, PX, SRV, KX, DNAME, and NSEC record types, the RDATA format contains one or more DNS names (which may use DNS name compression). For the above list, the reported record data bytes via mCallback will be decompressed to contain the full DNS name(s). For all other record types, the record data bytes are provided exactly as they appear in the received mDNS response. This aligns the implementation with RFC 6762 (section 18.14) regarding the use of name compression.
A removed record data is indicated with a TTL value of zero. The callback may be invoked immediately with cached information (if available) and potentially before this function returns. When cached results are used, the reported TTL value will reflect the original TTL from the last received response.
Multiple querier instances can be started for the same name, provided they use different callback functions.
The record querier MUST not be used for record types PTR, SRV, TXT, A, and AAAA. Otherwise, OT_ERROR_INVALID_ARGS will be returned. For these, browsers/resolvers can be used. This design is intentional to enable the implementation of an "opportunistic cache mechanism", where, depending on currently active service browsers/resolvers, the mDNS implementation will also monitor and cache related records (e.g., when a service is resolved, the address records associated with its host name are cached even if there is no active address resolver for this hostname).
The aQuerier and all its contained information (strings) are only valid during this call. The platform MUST save a copy of the information if it wants to retain the information after returning from this function.
| Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||||
| Return Values |
|
otMdnsStartSrvResolver
otError otMdnsStartSrvResolver( otInstance *aInstance, const otMdnsSrvResolver *aResolver )
Starts an SRV record resolver.
Initiates a continuous SRV record resolver for the specified service in aResolver.
Discovered information is reported through the mCallback function in aResolver. When the service is removed it is reported with a TTL value of zero. In this case, mHostName may be NULL and other result fields (such as mPort) should be ignored.
The callback may be invoked immediately with cached information (if available) and potentially before this function returns. When cached result is used, the reported TTL value will reflect the original TTL from the last received response.
Multiple resolvers can be started for the same service, provided they use different callback functions.
| Details | |||||||
|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||
| Return Values |
|
otMdnsStartTxtResolver
otError otMdnsStartTxtResolver( otInstance *aInstance, const otMdnsTxtResolver *aResolver )
Starts a TXT record resolver.
Initiates a continuous TXT record resolver for the specified service in aResolver.
Discovered information is reported through the mCallback function in aResolver. When the TXT record is removed it is reported with a TTL value of zero. In this case, mTxtData may be NULL, and other result fields (such as mTxtDataLength) should be ignored.
The callback may be invoked immediately with cached information (if available) and potentially before this function returns. When cached result is used, the reported TTL value will reflect the original TTL from the last received response.
Multiple resolvers can be started for the same service, provided they use different callback functions.
| Details | |||||||
|---|---|---|---|---|---|---|---|
| Parameters |
|
||||||
| Return Values |
|
otMdnsStopBrowser
otError otMdnsStopBrowser( otInstance *aInstance, const otMdnsBrowser *aBroswer )
Stops a service browser.
No action is performed if no matching browser with the same service and callback is currently active.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
otMdnsStopIp4AddressResolver
otError otMdnsStopIp4AddressResolver( otInstance *aInstance, const otMdnsAddressResolver *aResolver )
Stops an IPv4 address resolver.
No action is performed if no matching resolver with the same host name and callback is currently active.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
otMdnsStopIp6AddressResolver
otError otMdnsStopIp6AddressResolver( otInstance *aInstance, const otMdnsAddressResolver *aResolver )
Stops an IPv6 address resolver.
No action is performed if no matching resolver with the same host name and callback is currently active.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
otMdnsStopRecordQuerier
otError otMdnsStopRecordQuerier( otInstance *aInstance, const otMdnsRecordQuerier *aQuerier )
Stops a record querier.
No action is performed if no matching querier with the same name and callback is currently active.
The aQuerier and all its contained information (strings) are only valid during this call. The platform MUST save a copy of the information if it wants to retain the information after returning from this function.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
otMdnsStopSrvResolver
otError otMdnsStopSrvResolver( otInstance *aInstance, const otMdnsSrvResolver *aResolver )
Stops an SRV record resolver.
No action is performed if no matching resolver with the same service and callback is currently active.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
otMdnsStopTxtResolver
otError otMdnsStopTxtResolver( otInstance *aInstance, const otMdnsTxtResolver *aResolver )
Stops a TXT record resolver.
No action is performed if no matching resolver with the same service and callback is currently active.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
otMdnsUnregisterHost
otError otMdnsUnregisterHost( otInstance *aInstance, const otMdnsHost *aHost )
Unregisters a host on mDNS.
The fields in aHost follow these rules:
- The
mHostNamefield specifies the host name to unregister (e.g., "myhost"). MUST NOT contain the domain name. - Other fields in
aHoststructure are ignored in anotMdnsUnregisterHost()call.
If there is no previously registered host with the same name, no action is performed.
If there is a previously registered host with the same name, the mDNS module will send "goodbye" announcement for all previously advertised address records.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
otMdnsUnregisterKey
otError otMdnsUnregisterKey( otInstance *aInstance, const otMdnsKey *aKey )
Unregisters a key record on mDNS.
The fields in aKey follow these rules:
- If the key is associated with a host entry, the
mNamefield specifies the host name and themServiceTypeMUST be NULL. - If the key is associated with a service entry, the
mNamefiled specifies the service instance label (always treated as a single label) and themServiceTypefiled specifies the service type (e.g., "_tst._udp"). In this case the DNS name for key record is.. - Other fields in
aKeystructure are ignored in anotMdnsUnregisterKey()call.
If there is no previously registered key with the same name, no action is performed.
If there is a previously registered key with the same name, the mDNS module will send "goodbye" announcements for the key record.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
otMdnsUnregisterService
otError otMdnsUnregisterService( otInstance *aInstance, const otMdnsService *aService )
Unregisters a service on mDNS module.
The fields in aService follow these rules:
- The
mServiceInstancespecifies the service instance label. It is treated as a single DNS name label. It may contain dot.character which is allowed in a service instance label. - The
mServiceTypespecifies the service type (e.g., "_tst._udp"). It is treated as multiple dot.separated labels. It MUST NOT contain the domain name. - Other fields in
aServicestructure are ignored in anotMdnsUnregisterService()call.
If there is no previously registered service with the same name, no action is performed.
If there is a previously registered service with the same name, the mDNS module will send "goodbye" announcements for all related records.
| Details | |||||
|---|---|---|---|---|---|
| Parameters |
|
||||
| Return Values |
|
Resources
OpenThread API Reference topics originate from the source code, available on GitHub. For more information, or to contribute to our documentation, refer to Resources.