Documentation ¶
Index ¶
- Constants
- Variables
- func AddressSet(isValid func(ip net.IP) bool, addrs []net.Addr) sets.String
- func AppendPortIfNeeded(addr string, port int32) string
- func BuildPortsToEndpointsMap(endpoints *v1.Endpoints) map[string][]string
- func CountBytesLines(b []byte) int
- func EnsureSysctl(sysctl utilsysctl.Interface, name string, newVal int) error
- func GetClusterIPByFamily(ipFamily v1.IPFamily, service *v1.Service) string
- func GetLocalAddrSet() netutils.IPSet
- func GetLocalAddrs() ([]net.IP, error)
- func GetNodeAddresses(cidrs []string, nw NetworkInterfacer) (sets.String, error)
- func IPPart(s string) string
- func IsAllowedHost(host net.IP, denied []*net.IPNet) error
- func IsProxyableHostname(ctx context.Context, resolv Resolver, hostname string) error
- func IsProxyableIP(ip string) error
- func IsZeroCIDR(cidr string) bool
- func LogAndEmitIncorrectIPVersionEvent(recorder events.EventRecorder, ...)
- func MapCIDRsByIPFamily(cidrStrings []string) map[v1.IPFamily][]string
- func MapIPsByIPFamily(ipStrings []string) map[v1.IPFamily][]string
- func OtherIPFamily(ipFamily v1.IPFamily) v1.IPFamily
- func PortPart(s string) (int, error)
- func RevertPorts(...)
- func ShouldSkipService(service *v1.Service) bool
- func ShuffleStrings(s []string) []string
- type DialContext
- type FilteredDialOptions
- type LineBuffer
- type NetworkInterfacer
- type RealNetwork
- type Resolver
Constants ¶
const ( // IPv4ZeroCIDR is the CIDR block for the whole IPv4 address space IPv4ZeroCIDR = "0.0.0.0/0" // IPv6ZeroCIDR is the CIDR block for the whole IPv6 address space IPv6ZeroCIDR = "::/0" )
Variables ¶
var ( // ErrAddressNotAllowed indicates the address is not allowed ErrAddressNotAllowed = errors.New("address not allowed") // ErrNoAddresses indicates there are no addresses for the hostname ErrNoAddresses = errors.New("no addresses for hostname") )
Functions ¶
func AddressSet ¶ added in v1.23.0
AddressSet validates the addresses in the slice using the "isValid" function. Addresses that pass the validation are returned as a string Set.
func AppendPortIfNeeded ¶ added in v1.15.0
AppendPortIfNeeded appends the given port to IP address unless it is already in "ipv4:port" or "[ipv6]:port" format.
func BuildPortsToEndpointsMap ¶ added in v1.16.0
BuildPortsToEndpointsMap builds a map of portname -> all ip:ports for that portname. Explode Endpoints.Subsets[*] into this structure.
func CountBytesLines ¶ added in v1.21.0
CountBytesLines counts the number of lines in a bytes slice
func EnsureSysctl ¶ added in v1.19.0
func EnsureSysctl(sysctl utilsysctl.Interface, name string, newVal int) error
EnsureSysctl sets a kernel sysctl to a given numeric value.
func GetClusterIPByFamily ¶ added in v1.20.0
GetClusterIPByFamily returns a service clusterip by family
func GetLocalAddrSet ¶ added in v1.21.0
GetLocalAddrSet return a local IPSet. If failed to get local addr, will assume no local ips.
func GetLocalAddrs ¶ added in v1.18.0
GetLocalAddrs returns a list of all network addresses on the local system
func GetNodeAddresses ¶ added in v1.10.0
func GetNodeAddresses(cidrs []string, nw NetworkInterfacer) (sets.String, error)
GetNodeAddresses return all matched node IP addresses based on given cidr slice. Some callers, e.g. IPVS proxier, need concrete IPs, not ranges, which is why this exists. NetworkInterfacer is injected for test purpose. We expect the cidrs passed in is already validated. Given an empty input `[]`, it will return `0.0.0.0/0` and `::/0` directly. If multiple cidrs is given, it will return the minimal IP sets, e.g. given input `[1.2.0.0/16, 0.0.0.0/0]`, it will only return `0.0.0.0/0`. NOTE: GetNodeAddresses only accepts CIDRs, if you want concrete IPs, e.g. 1.2.3.4, then the input should be 1.2.3.4/32.
func IPPart ¶ added in v1.9.0
IPPart returns just the IP part of an IP or IP:port or endpoint string. If the IP part is an IPv6 address enclosed in brackets (e.g. "[fd00:1::5]:9999"), then the brackets are stripped as well.
func IsAllowedHost ¶ added in v1.20.0
IsAllowedHost checks if the given IP host address is in a network in the denied list.
func IsProxyableHostname ¶ added in v1.10.12
IsProxyableHostname checks if the IP addresses for a given hostname are permitted to be proxied
func IsProxyableIP ¶ added in v1.10.12
IsProxyableIP checks if a given IP address is permitted to be proxied
func IsZeroCIDR ¶ added in v1.10.0
IsZeroCIDR checks whether the input CIDR string is either the IPv4 or IPv6 zero CIDR
func LogAndEmitIncorrectIPVersionEvent ¶ added in v1.10.0
func LogAndEmitIncorrectIPVersionEvent(recorder events.EventRecorder, fieldName, fieldValue, svcNamespace, svcName string, svcUID types.UID)
LogAndEmitIncorrectIPVersionEvent logs and emits incorrect IP version event.
func MapCIDRsByIPFamily ¶ added in v1.21.0
MapCIDRsByIPFamily maps a slice of IPs to their respective IP families (v4 or v6)
func MapIPsByIPFamily ¶ added in v1.21.0
MapIPsByIPFamily maps a slice of IPs to their respective IP families (v4 or v6)
func OtherIPFamily ¶ added in v1.21.0
OtherIPFamily returns the other ip family
func RevertPorts ¶ added in v1.8.0
RevertPorts is closing ports in replacementPortsMap but not in originalPortsMap. In other words, it only closes the ports opened in this sync.
func ShouldSkipService ¶ added in v1.8.0
ShouldSkipService checks if a given service should skip proxying
func ShuffleStrings ¶ added in v1.16.0
ShuffleStrings copies strings from the specified slice into a copy in random order. It returns a new slice.
Types ¶
type DialContext ¶ added in v1.20.0
DialContext is a dial function matching the signature of net.Dialer.DialContext.
func NewFilteredDialContext ¶ added in v1.20.0
func NewFilteredDialContext(wrapped DialContext, resolv Resolver, opts *FilteredDialOptions) DialContext
NewFilteredDialContext returns a DialContext function that filters connections based on a FilteredDialOptions.
type FilteredDialOptions ¶ added in v1.20.0
type FilteredDialOptions struct { // DialHostIPDenylist restricts hosts from being dialed. DialHostCIDRDenylist []*net.IPNet // AllowLocalLoopback controls connections to local loopback hosts (as defined by // IsProxyableIP). AllowLocalLoopback bool }
FilteredDialOptions configures how a DialContext is wrapped by NewFilteredDialContext.
type LineBuffer ¶ added in v1.23.0
type LineBuffer struct {
// contains filtered or unexported fields
}
func (*LineBuffer) Bytes ¶ added in v1.23.0
func (buf *LineBuffer) Bytes() []byte
func (*LineBuffer) Reset ¶ added in v1.23.0
func (buf *LineBuffer) Reset()
func (*LineBuffer) Write ¶ added in v1.23.0
func (buf *LineBuffer) Write(args ...interface{})
Write takes a list of arguments, each a string or []string, joins all the individual strings with spaces, terminates with newline, and writes to buf. Any other argument type will panic.
func (*LineBuffer) WriteBytes ¶ added in v1.23.0
func (buf *LineBuffer) WriteBytes(bytes []byte)
WriteBytes writes bytes to buffer, and terminates with newline.
type NetworkInterfacer ¶ added in v1.10.0
NetworkInterfacer defines an interface for several net library functions. Production code will forward to net library functions, and unit tests will override the methods for testing purposes.
type RealNetwork ¶ added in v1.10.0
type RealNetwork struct{}
RealNetwork implements the NetworkInterfacer interface for production code, just wrapping the underlying net library function calls.
func (RealNetwork) InterfaceAddrs ¶ added in v1.22.0
func (RealNetwork) InterfaceAddrs() ([]net.Addr, error)
InterfaceAddrs wraps net.InterfaceAddrs(), it's a part of NetworkInterfacer interface.