code: func NewAgentMDNS(agent *Agent, logOutput io.Writer, replay bool,
  	node, discover string, iface *net.Interface, bind net.IP, port int) (*AgentMDNS, error) {
  	// Create the service
  	service, err := mdns.NewMDNSService(
  		node,
  		mdnsName(discover),
  		"",
  		"",
  		port,
  		[]net.IP{bind},
  		[]string{fmt.Sprintf("Serf '%s' cluster", discover)})
  	if err != nil {
  		return nil, err
  	}
  
  	// Configure mdns server
  	conf := &mdns.Config{
  		Zone:  service,
  		Iface: iface,
  	}
  
  	// Create the server
  	server, err := mdns.NewServer(conf)
  	if err != nil {
  		return nil, err
  	}
  
  	// Initialize the AgentMDNS
  	m := &AgentMDNS{
  		agent:    agent,
  		discover: discover,
  		logger:   log.New(logOutput, "", log.LstdFlags),
  		seen:     make(map[string]struct{}),
  		server:   server,
  		replay:   replay,
  		iface:    iface,
  	}
  
  	// Start the background workers
  	go m.run()
  	return m, nil
  }
docs: // NewAgentMDNS is used to create a new AgentMDNS