xref: /titanic_51/usr/src/man/man3dns_sd/DNSServiceResolve.3dns_sd (revision 45e662eb8429b38c18931ebeed30f2e5287ae51b)
te
Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
DNSSERVICERESOLVE 3DNS_SD "Aug 20, 2007"
NAME
DNSServiceResolve - resolve service instances with DNS
SYNOPSIS

cc [ flag ... ] file ... -ldns_sd [ library ... ]
#include <dns_sd.h>

DNSServiceErrorType DNSServiceResolve(DNSServiceRef *sdRef,
 DNSServiceFlags flags, uint32_t interfaceIndex, const char *name,
 const char *regtype, const char *domain,
 DNSServiceServiceResolveReply callBack, void *context);

typedef void(*DNSServiceResolveReply)(DNSServiceRef sdRef,
 DNSServiceFlags flags, uint32_t interfaceIndex,
 DNSServiceErrorType errorCode, const char *fullname,
 const char *hosttarget, uint16_t port, uint16_t txtLen,
 const char *txtRecord, void *context);
DESCRIPTION

The DNSServiceResolve() function is used to resolve a service name returned by DNSServiceBrowse() to host IP address, port number, and TXT record. The DNSServiceResolve() function returns results asynchronously. A DNSServiceResolve() call to resolve service name can be ended by calling DNSServiceRefDeallocate(). The callback argument points to a function of type DNSServiceResolveReply as listed above. The callback function is invoked on finding a result or when the asynch resolve call fails. The sdRef argument to DNSServiceResolve() points to an uninitialized DNSServiceRef. If the call to DNSServiceResolve() succeeds, sdRef is initialized and kDNSServiceErr_NoError is returned.

The flags argument to DNSServiceResolve() is currently unused and reserved for future use. The interfaceIndex argument indicates the interface on which to resolve the service. If the DNSServiceResolve() call is the result of an earlier DNSServiceBrowse() operation, pass the interfaceIndex to perform a resolve on all interfaces. See the section "Constants for specifying an interface index" in <dns_sd.h> for more details. The name parameter is the service instance name to be resolved, as returned from a DNSServiceBrowse() call. The regtype holds the service type and the domain parameter indicates the domain in which the service instance was found. The context parameter points to a value that is passed to the callback function.

The sdRef argument passed to the callback function is initialized by DNSServiceResolve() call. The flags parameter in the callback function is currently unused and reserved for future use. The errorCode parameter is kDNSServiceErr_NoError on success. Otherwise, it will hold the error defined in <dns_sd.h> and other parameters are undefined when errorCode is nonzero. The fullname parameter in the callback holds the full service domain name in the format <servicename>.<protocol>.<domain>. The full service domain name is escaped to follow standard DNS rules. The hosttarget parameter holds the target hostname of the machine providing the service. The port parameter indicates the port in network byte order on which the service accepts connections. The txtLen and txtRecord parameters hold the length and the TXT record of the service's primary TXT record. The context parameter points to the value that was passed as context to the DNSServiceResolve() call.

RETURN VALUES

The DNSServiceResolve function returns kDNSServiceErr_NoError on success. Otherwise, an error code defined in <dns_sd.h> is returned to indicate an error has occurred. When an error is returned by DNSServiceResolve, the callback function is not invoked and the DNSServiceRef argument is not initialized.

ATTRIBUTES

See attributes(5) for description of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
Interface Stability Committed
MT-Level Safe
SEE ALSO

DNSServiceBrowse(3DNS_SD), DNSServiceRefDeallocate(3DNS_SD), attributes(5)