Documentation
¶
Index ¶
- func Domain(s string) string
- func Path(s string) string
- func PathWithWildcard(s string) (string, bool)
- type Service
- func (s *Service) NewA(name string, ip net.IP) *dns.A
- func (s *Service) NewAAAA(name string, ip net.IP) *dns.AAAA
- func (s *Service) NewCNAME(name string, target string) *dns.CNAME
- func (s *Service) NewMX(name string) *dns.MX
- func (s *Service) NewNS(name string, target string) *dns.NS
- func (s *Service) NewPTR(name string, ttl uint32) *dns.PTR
- func (s *Service) NewSRV(name string, weight uint16) *dns.SRV
- func (s *Service) NewTXT(name string) *dns.TXT
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Path ¶
Path converts a domainname to an etcd path. If s looks like service.staging.skydns.local., the resulting key will be /skydns/local/skydns/staging/service .
func PathWithWildcard ¶
As Path, but if a name contains wildcards (* or any), the name will be chopped of before the (first) wildcard, and we do a highler evel search and later find the matching names. So service.*.skydns.local, will look for all services under skydns.local and will later check for names that match service.*.skydns.local. If a wildcard is found the returned bool is true.
Types ¶
type Service ¶
type Service struct {
Host string `json:"host,omitempty"`
Port int `json:"port,omitempty"`
Priority int `json:"priority,omitempty"`
Weight int `json:"weight,omitempty"`
Text string `json:"text,omitempty"`
Mail bool `json:"mail,omitempty"` // Be an MX record. Priority becomes Preference.
Ttl uint32 `json:"ttl,omitempty"`
// When a SRV record with a "Host: IP-address" is added, we synthesize
// a srv.Target domain name. Normally we convert the full Key where
// the record lives to a DNS name and use this as the srv.Target. When
// TargetStrip > 0 we strip the left most TargetStrip labels from the
// DNS name.
TargetStrip int `json:"targetstrip",omitempty"`
// Group is used to group (or *not* to group) different services
// together. Services with an identical Group are returned in the same
// answer.
Group string `json:"group,omitempty"`
// Etcd key where we found this service and ignored from json un-/marshalling
Key string `json:"-"`
}
This *is* the rdata from a SRV record, but with a twist. Host (Target in SRV) must be a domain name, but if it looks like an IP address (4/6), we will treat it like an IP address.
func Group ¶ added in v0.20.0
Group checks the services in sx, it looks for a Group attribute on the shortest keys. If there are multiple shortest keys *and* the group attribute disagrees (and is not empty), we don't consider it a group. If a group is found, only services with *that* group (or no group) will be returned.