host

package
v0.0.0-...-27d1e00 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 14, 2024 License: Apache-2.0 Imports: 2 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MoreSpecific

func MoreSpecific(a, b Name) bool

MoreSpecific returns true if hostname a is more specific than b.

Types

type Name

type Name string

Name describes a (possibly wildcarded) hostname

func (Name) IsWildCarded

func (n Name) IsWildCarded() bool

func (Name) Matches

func (n Name) Matches(o Name) bool

Matches returns true if this hostname overlaps with the other hostname. Names overlap if: - they're fully resolved (i.e. not wildcarded) and match exactly (i.e. an exact string match) - one or both are wildcarded (e.g. "*.foo.com"), in which case we use wildcard resolution rules to determine if n is covered by o or o is covered by n. e.g.:

Name("foo.com").Matches("foo.com")   = true
Name("foo.com").Matches("bar.com")   = false
Name("*.com").Matches("foo.com")     = true
Name("bar.com").Matches("*.com")     = true
Name("*.foo.com").Matches("foo.com") = false
Name("*").Matches("foo.com")         = true
Name("*").Matches("*.com")           = true

func (Name) String

func (n Name) String() string

func (Name) SubsetOf

func (n Name) SubsetOf(o Name) bool

SubsetOf returns true if this hostname is a valid subset of the other hostname. The semantics are the same as "Matches", but only in one direction (i.e., n is covered by o).

type Names

type Names []Name

Names is a collection of Name; it exists so it's easy to sort hostnames consistently across Istio. In a few locations we care about the order hostnames appear in Envoy config: primarily HTTP routes, but also in gateways, and for SNI. In those locations, we sort hostnames longest to shortest with wildcards last.

func NamesForNamespace

func NamesForNamespace(hosts []string, namespace string) Names

NamesForNamespace returns the subset of hosts that are in the specified namespace. The list of hosts contains host names optionally qualified with namespace/ or */. If not qualified or qualified with *, the host name is considered to be in every namespace. e.g.: NamesForNamespace(["ns1/foo.com","ns2/bar.com"], "ns1") = Names(["foo.com"]) NamesForNamespace(["ns1/foo.com","ns2/bar.com"], "ns3") = Names([]) NamesForNamespace(["ns1/foo.com","*/bar.com"], "ns1") = Names(["foo.com","bar.com"]) NamesForNamespace(["ns1/foo.com","*/bar.com"], "ns3") = Names(["bar.com"]) NamesForNamespace(["foo.com","ns2/bar.com"], "ns2") = Names(["foo.com","bar.com"]) NamesForNamespace(["foo.com","ns2/bar.com"], "ns3") = Names(["foo.com"])

func NewNames

func NewNames(hosts []string) Names

NewNames converts a slice of host name strings to type Names.

func (Names) Contains

func (h Names) Contains(host Name) bool

func (Names) Intersection

func (h Names) Intersection(other Names) Names

Intersection returns the subset of host names that are covered by both h and other. e.g.:

Names(["foo.com","bar.com"]).Intersection(Names(["*.com"]))         = Names(["foo.com","bar.com"])
Names(["foo.com","*.net"]).Intersection(Names(["*.com","bar.net"])) = Names(["foo.com","bar.net"])
Names(["foo.com","*.net"]).Intersection(Names(["*.bar.net"]))       = Names(["*.bar.net"])
Names(["foo.com"]).Intersection(Names(["bar.com"]))                 = Names([])
Names([]).Intersection(Names(["bar.com"])                           = Names([])

func (Names) Len

func (h Names) Len() int

func (Names) Less

func (h Names) Less(i, j int) bool

func (Names) Swap

func (h Names) Swap(i, j int)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL