Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Lookup ¶
func Lookup(service string, entries chan<- *ServiceEntry) error
Lookup is the same as Query, however it uses all the default parameters
func Query ¶
func Query(params *QueryParam) error
Query looks up a given service, in a domain, waiting at most for a timeout before finishing the query. The results are streamed to a channel. Sends will not block, so clients should make sure to either read or buffer.
func QueryContext ¶
func QueryContext(ctx context.Context, params *QueryParam) error
QueryContext looks up a given service, in a domain, waiting at most for a timeout before finishing the query. The results are streamed to a channel. Sends will not block, so clients should make sure to either read or buffer. QueryContext will attempt to stop the query on cancellation.
Types ¶
type Config ¶
type Config struct { // For publish multiple MDNSService Zones MDNSServices // Iface if provided binds the multicast listener to the given // interface. If not provided, the system default multicase interface // is used. Iface *net.Interface // LogEmptyResponses indicates the server should print an informative message // when there is an mDNS query for which the server has no response. LogEmptyResponses bool }
Config is used to configure the mDNS server
type MDNSService ¶
type MDNSService struct { Instance string // Instance name (e.g. "hostService name") Service string // Service name (e.g. "_http._tcp.") Domain string // If blank, assumes "local" HostName string // Host machine DNS name (e.g. "mymachine.net.") Port int // Service Port IPs []net.IP // IP addresses for the service's host TXT []string // Service TXT records // contains filtered or unexported fields }
MDNSService is used to export a named service by implementing a Zone
func NewMDNSService ¶
func NewMDNSService(instance, service, domain, hostName string, port int, ips []net.IP, txt []string) (*MDNSService, error)
NewMDNSService returns a new instance of MDNSService.
If domain, hostName, or ips is set to the zero value, then a default value will be inferred from the operating system.
TODO(reddaly): This interface may need to change to account for "unique record" conflict rules of the mDNS protocol. Upon startup, the server should check to ensure that the instance name does not conflict with other instance names, and, if required, select a new name. There may also be conflicting hostName A/AAAA records.
type MDNSServices ¶
type MDNSServices []*MDNSService
type QueryParam ¶
type QueryParam struct { Service string // Service to lookup Domain string // Lookup domain, default "local" Timeout time.Duration // Lookup timeout, default 1 second Interface *net.Interface // Multicast interface to use Entries chan<- *ServiceEntry // Entries Channel WantUnicastResponse bool // Unicast response desired, as per 5.4 in RFC DisableIPv4 bool // Whether to disable usage of IPv4 for MDNS operations. Does not affect discovered addresses. DisableIPv6 bool // Whether to disable usage of IPv6 for MDNS operations. Does not affect discovered addresses. }
QueryParam is used to customize how a Lookup is performed
func DefaultParams ¶
func DefaultParams(service string) *QueryParam
DefaultParams is used to return a default set of QueryParam's
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
mDNS server is used to listen for mDNS queries and respond if we have a matching local record
type ServiceEntry ¶
type ServiceEntry struct { Name string Host string AddrV4 net.IP AddrV6 net.IP // @Deprecated AddrV6IPAddr *net.IPAddr Port int Info string InfoFields []string Addr net.IP // @Deprecated // contains filtered or unexported fields }
ServiceEntry is returned after we query for a service