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]
DNSSERVICEBROWSE 3DNS_SD "Aug 20, 2007"
NAME
DNSServiceBrowse - browse service instances with DNS
SYNOPSIS

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

DNSServiceErrorType DNSServiceBrowse(DNSServiceRef *sdRef,
 DNSServiceFlags flags, uint32_t interfaceIndex,
 const char *regtype, const char *domain,
 DNSServiceServiceBrowseReply callBack, void *context);

typedef void(*DNSServiceBrowseReply)(DNSServiceRef sdRef,
 DNSServiceFlags flags, uint32_t interfaceIndex,
 DNSServiceErrorType errorCode, const char *serviceName,
 const char *regtype, const char *replyDomain,
 void *context);
DESCRIPTION

The DNSServiceBrowse() function is used to browse for service instances of a particular service and protocol type. The sdRef argument points to an uninitialized DNSServiceRef. If the call to DNSServiceBrowse succeeds sdRef is initialized. The flags argument to DNSServiceBrowse() is currently unused and reserved for future use. A nonzero value to interfaceIndex indicates DNSServiceBrowse() should do a browse on all interfaces. Most applications will use an interfaceIndex value of 0 to perform a browse on all interfaces. See the section "Constants for specifying an interface index" in <dns_sd.h> for more details.

The callback function is invoked for every service instance found matching the service type and protocol. The callback argument points to a function of type DNSServiceBrowseReply listed above. The DNSServiceBrowse() call returns browse results asynchronously. The service browse call can be terminated by applications with a call to DNSServiceRefDeallocate().

The regtype parameter is used to specify the service type and protocol (e.g. _ftp._tcp). The protocol type must be TCP or UDP. The domain argument to DNSServiceBrowse() specifies the domain on which to browse for services. Most applications will not specify a domain and will perform a browse on the default domain(s). The context argument can be NULL and points to a value passed to the callback function.

The sdRef argument passed to the callback function is initialized by DNSServiceBrowse() call. The possible values passed to flags in the callback function are: kDNSServiceFlagsMoreComing and kDNSServiceFlagsAdd. The kDNSServiceFlagsMoreComing value indicates to a callback that at least one more result is immediately available. The kDNSServiceFlagsAdd value indicates that a service instance was found. The errorCode argument will be kDNSServiceErr_NoError on success. Otherwise, failure is indicated. The discovered service name is returned to the callback via the serviceName argument. The regtype argument in the callback holds the service type of the found service instance. The discovered service type can be different from the requested service type in the browse request when the discovered service type has subtypes. The domain argument to the callback holds the domain name of the discovered service instance. The service type and the domain name must be stored and passed along with the service name to resolve a service instance using DNSServiceResolve().

RETURN VALUES

The DNSServiceBrowse 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 DNSServiceBrowse, 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

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