From 0a7385034a0ab4dbf09cd3611e968954cafb28fb Mon Sep 17 00:00:00 2001 From: Antoni Segura Puimedon Date: Wed, 13 Mar 2019 12:08:57 +0100 Subject: [PATCH] Allow Registering specifc ServiceEntries This patch allows the library user more control in the registry flow by giving them the chance to pass the ServiceEntries they crafted. --- server.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/server.go b/server.go index 86701514..d368bf15 100644 --- a/server.go +++ b/server.go @@ -23,6 +23,24 @@ const ( multicastRepetitions = 2 ) +// Register a service from a given ServiceEntry. +func RegisterSvcEntry(entry *ServiceEntry, ifaces []net.Interface) (*Server, error) { + if entry.AddrIPv4 == nil && entry.AddrIPv6 == nil { + return nil, fmt.Errorf("Could not determine host IP addresses") + } + + s, err := newServer(ifaces) + if err != nil { + return nil, err + } + + s.service = entry + go s.mainloop() + go s.probe() + + return s, nil +} + // Register a service by given arguments. This call will take the system's hostname // and lookup IP by that hostname. func Register(instance, service, domain string, port int, text []string, ifaces []net.Interface) (*Server, error) {