util

package
v1.9.9 Latest Latest
Warning

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

Go to latest
Published: Aug 30, 2022 License: Apache-2.0 Imports: 28 Imported by: 10

Documentation

Index

Constants

View Source
const (
	CniTypeName = "kube-ovn"

	ControllerName = "kube-ovn-controller"

	AllocatedAnnotation  = "ovn.kubernetes.io/allocated"
	RoutedAnnotation     = "ovn.kubernetes.io/routed"
	MacAddressAnnotation = "ovn.kubernetes.io/mac_address"
	IpAddressAnnotation  = "ovn.kubernetes.io/ip_address"
	CidrAnnotation       = "ovn.kubernetes.io/cidr"
	GatewayAnnotation    = "ovn.kubernetes.io/gateway"
	IpPoolAnnotation     = "ovn.kubernetes.io/ip_pool"
	BgpAnnotation        = "ovn.kubernetes.io/bgp"
	SnatAnnotation       = "ovn.kubernetes.io/snat"
	EipAnnotation        = "ovn.kubernetes.io/eip"
	ChassisAnnotation    = "ovn.kubernetes.io/chassis"

	VpcNatGatewayAnnotation     = "ovn.kubernetes.io/vpc_nat_gw"
	VpcNatGatewayInitAnnotation = "ovn.kubernetes.io/vpc_nat_gw_init"
	VpcEipsAnnotation           = "ovn.kubernetes.io/vpc_eips"
	VpcFloatingIpMd5Annotation  = "ovn.kubernetes.io/vpc_floating_ips"
	VpcDnatMd5Annotation        = "ovn.kubernetes.io/vpc_dnat_md5"
	VpcSnatMd5Annotation        = "ovn.kubernetes.io/vpc_snat_md5"
	VpcCIDRsAnnotation          = "ovn.kubernetes.io/vpc_cidrs"
	VpcLbAnnotation             = "ovn.kubernetes.io/vpc_lb"
	VpcExternalLabel            = "ovn.kubernetes.io/vpc_external"

	LogicalRouterAnnotation = "ovn.kubernetes.io/logical_router"
	VpcAnnotation           = "ovn.kubernetes.io/vpc"

	PortSecurityAnnotationTemplate = "%s.kubernetes.io/port_security"
	PortVipAnnotationTemplate      = "%s.kubernetes.io/port_vips"
	PortSecurityAnnotation         = "ovn.kubernetes.io/port_security"
	NorthGatewayAnnotation         = "ovn.kubernetes.io/north_gateway"

	AllocatedAnnotationSuffix       = ".kubernetes.io/allocated"
	AllocatedAnnotationTemplate     = "%s.kubernetes.io/allocated"
	RoutedAnnotationTemplate        = "%s.kubernetes.io/routed"
	MacAddressAnnotationTemplate    = "%s.kubernetes.io/mac_address"
	IpAddressAnnotationTemplate     = "%s.kubernetes.io/ip_address"
	CidrAnnotationTemplate          = "%s.kubernetes.io/cidr"
	GatewayAnnotationTemplate       = "%s.kubernetes.io/gateway"
	IpPoolAnnotationTemplate        = "%s.kubernetes.io/ip_pool"
	LogicalSwitchAnnotationTemplate = "%s.kubernetes.io/logical_switch"
	LogicalRouterAnnotationTemplate = "%s.kubernetes.io/logical_router"
	VlanIdAnnotationTemplate        = "%s.kubernetes.io/vlan_id"
	NetworkTypeTemplate             = "%s.kubernetes.io/network_type"
	IngressRateAnnotationTemplate   = "%s.kubernetes.io/ingress_rate"
	EgressRateAnnotationTemplate    = "%s.kubernetes.io/egress_rate"
	SecurityGroupAnnotationTemplate = "%s.kubernetes.io/security_groups"
	LiveMigrationAnnotationTemplate = "%s.kubernetes.io/allow_live_migration"
	DefaultRouteAnnotationTemplate  = "%s.kubernetes.io/default_route"

	ProviderNetworkTemplate          = "%s.kubernetes.io/provider_network"
	ProviderNetworkReadyTemplate     = "%s.provider-network.kubernetes.io/ready"
	ProviderNetworkExcludeTemplate   = "%s.provider-network.kubernetes.io/exclude"
	ProviderNetworkInterfaceTemplate = "%s.provider-network.kubernetes.io/interface"
	ProviderNetworkMtuTemplate       = "%s.provider-network.kubernetes.io/mtu"
	MirrorControlAnnotationTemplate  = "%s.kubernetes.io/mirror"
	PodNicAnnotationTemplate         = "%s.kubernetes.io/pod_nic_type"
	VmTemplate                       = "%s.kubernetes.io/virtualmachine"

	ExcludeIpsAnnotation = "ovn.kubernetes.io/exclude_ips"

	IngressRateAnnotation = "ovn.kubernetes.io/ingress_rate"
	EgressRateAnnotation  = "ovn.kubernetes.io/egress_rate"

	PortNameAnnotation      = "ovn.kubernetes.io/port_name"
	LogicalSwitchAnnotation = "ovn.kubernetes.io/logical_switch"

	TunnelInterfaceAnnotation = "ovn.kubernetes.io/tunnel_interface"

	SubnetNameLabel    = "ovn.kubernetes.io/subnet"
	ICGatewayLabel     = "ovn.kubernetes.io/ic-gw"
	ExGatewayLabel     = "ovn.kubernetes.io/external-gw"
	VpcNatGatewayLabel = "ovn.kubernetes.io/vpc-nat-gw"
	VpcLbLabel         = "ovn.kubernetes.io/vpc_lb"

	NetworkPolicyLogAnnotation = "ovn.kubernetes.io/enable_log"

	ProtocolTCP = "tcp"
	ProtocolUDP = "udp"

	NetworkTypeVlan   = "vlan"
	NetworkTypeGeneve = "geneve"

	NodeNic           = "ovn0"
	NodeAllowPriority = "3000"

	SecurityGroupHighestPriority = "2300"
	SecurityGroupAllowPriority   = "2004"
	SecurityGroupDropPriority    = "2003"

	IngressAllowPriority = "2001"
	IngressDefaultDrop   = "2000"

	EgressAllowPriority = "2001"
	EgressDefaultDrop   = "2000"

	SubnetAllowPriority = "1001"
	DefaultDropPriority = "1000"

	GeneveHeaderLength = 100
	TcpIpHeaderLength  = 40

	OvnProvider                 = "ovn"
	AttachmentNetworkAnnotation = "k8s.v1.cni.cncf.io/networks"
	DefaultNetworkAnnotation    = "v1.multus-cni.io/default-network"

	SRIOVResourceName = "mellanox.com/cx5_sriov_switchdev"

	InterconnectionConfig  = "ovn-ic-config"
	ExternalGatewayConfig  = "ovn-external-gw-config"
	InterconnectionSwitch  = "ts"
	ExternalGatewaySwitch  = "ovn-external"
	VpcNatGatewayConfig    = "ovn-vpc-nat-gw-config"
	VpcExternalNet         = "ovn-vpc-external-network"
	VpcLbNetworkAttachment = "ovn-vpc-lb"

	DefaultVpc    = "ovn-cluster"
	DefaultSubnet = "ovn-default"

	EcmpRouteType   = "ecmp"
	NormalRouteType = "normal"

	GatewayRouterPolicyPriority = 29000
	NodeRouterPolicyPriority    = 30000
	SubnetRouterPolicyPriority  = 31000
	OvnICPolicyPriority         = 29500

	VethType     = "veth-pair"
	OffloadType  = "offload-port"
	InternalType = "internal-port"

	ChassisLoc     = "/etc/openvswitch/system-id.conf"
	HostnameEnv    = "KUBE_NODE_NAME"
	ChasRetryTime  = 5
	ChasRetryIntev = 1
	Vm             = "VirtualMachine"
	VmInstance     = "VirtualMachineInstance"

	VfioSysDir = "/sys/bus/pci/drivers/vfio-pci"
	NetSysDir  = "/sys/class/net"

	MirrorControlAnnotation = "ovn.kubernetes.io/mirror"
	MirrorDefaultName       = "m0"

	DenyAllSecurityGroup = "kubeovn_deny_all"

	HtbQos   = "linux-htb"
	NetemQos = "linux-netem"

	HtbQosHigh   = "htbqos-high"
	HtbQosMedium = "htbqos-medium"
	HtbQosLow    = "htbqos-low"

	PriorityAnnotation        = "ovn.kubernetes.io/priority"
	NetemQosLatencyAnnotation = "ovn.kubernetes.io/latency"
	NetemQosLimitAnnotation   = "ovn.kubernetes.io/limit"
	NetemQosLossAnnotation    = "ovn.kubernetes.io/loss"

	PriorityAnnotationTemplate        = "%s.kubernetes.io/priority"
	NetemQosLatencyAnnotationTemplate = "%s.kubernetes.io/latency"
	NetemQosLimitAnnotationTemplate   = "%s.kubernetes.io/limit"
	NetemQosLossAnnotationTemplate    = "%s.kubernetes.io/loss"

	POD_IP             = "POD_IP"
	ContentType        = "application/vnd.kubernetes.protobuf"
	AcceptContentTypes = "application/vnd.kubernetes.protobuf,application/json"

	AttachmentProvider = "ovn.kubernetes.io/attchmentprovider"
	LbSvcPodImg        = "ovn.kubernetes.io/lb_svc_img"

	OvnICKey    = "origin"
	OvnICValue  = "connected"
	OvnICExtKey = "ic-learned-route"

	MatchV4Src = "ip4.src"
	MatchV4Dst = "ip4.dst"
)
View Source
const (
	V6Multicast = "ff00::/8"
	V4Multicast = "224.0.0.0/4"
	V4Loopback  = "127.0.0.1/8"
	V6Loopback  = "::1/128"
)

Variables

This section is empty.

Functions

func AddressCount added in v1.7.0

func AddressCount(network *net.IPNet) float64

func AppendGwByCidr added in v1.7.0

func AppendGwByCidr(gateway, cidrStr string) (string, error)

func Arping added in v1.9.0

func Arping(nic, srcIP, dstIP string, timeout time.Duration, maxRetry int) (net.HardwareAddr, int, error)

func BigInt2Ip added in v1.7.0

func BigInt2Ip(ipInt *big.Int) string

func CIDRConflict added in v1.7.0

func CIDRConflict(a, b string) bool

func CIDRContainIP added in v1.7.0

func CIDRContainIP(cidrStr, ipStr string) bool

func CheckCidrs added in v1.7.0

func CheckCidrs(cidr string) error

func CheckProtocol added in v1.7.0

func CheckProtocol(address string) string

func ContainsIPs added in v1.7.0

func ContainsIPs(excludeIP string, ip string) bool

func ContainsString added in v1.7.0

func ContainsString(slice []string, s string) bool

Helper functions to check and remove string from a slice of strings.

func CountIpNums added in v1.7.0

func CountIpNums(excludeIPs []string) float64

func DiffStringSlice added in v0.5.0

func DiffStringSlice(slice1, slice2 []string) []string

func ExecuteCommandInContainer added in v1.7.0

func ExecuteCommandInContainer(client kubernetes.Interface, cfg *rest.Config, namespace string, podName string, containerName string, cmd ...string) (
	string, string, error)

func ExecuteWithOptions added in v1.7.0

func ExecuteWithOptions(client kubernetes.Interface, cfg *rest.Config, options ExecOptions) (string, string, error)

func ExpandExcludeIPs added in v1.7.0

func ExpandExcludeIPs(excludeIPs []string, cidr string) []string

ExpandExcludeIPs used to get exclude ips in range of subnet cidr, excludes cidr addr and broadcast addr

func ExternalBridgeName added in v1.7.1

func ExternalBridgeName(provider string) string

ExternalBridgeName returns external bridge name of the provider network

func FirstIP added in v1.7.1

func FirstIP(subnet string) (string, error)

func GatewayContains added in v1.7.0

func GatewayContains(gatewayNodeStr, gateway string) bool

func GenerateMac

func GenerateMac() string

GenerateMac generates mac address.

func GenerateRandomV4IP added in v1.7.0

func GenerateRandomV4IP(cidr string) string

func GetGwByCidr added in v1.7.0

func GetGwByCidr(cidrStr string) (string, error)

func GetIpAddrWithMask added in v1.7.0

func GetIpAddrWithMask(ip, cidr string) string

func GetIpWithoutMask added in v1.7.0

func GetIpWithoutMask(ipStr string) string

func GetNodeInternalIP added in v1.7.0

func GetNodeInternalIP(node v1.Node) (ipv4, ipv6 string)

func GetStringIP added in v1.7.0

func GetStringIP(v4IP, v6IP string) string

func IPToString added in v1.7.0

func IPToString(ip string) string

func InitKlogMetrics added in v1.8.3

func InitKlogMetrics()

func Ip2BigInt added in v1.7.0

func Ip2BigInt(ipStr string) *big.Int

func IsDefaultNet added in v1.7.0

func IsDefaultNet(defaultNetAnnotation string, attach *types.NetworkSelectionElement) bool

func IsOvnNetwork added in v1.7.0

func IsOvnNetwork(netCfg *types.DelegateNetConf) bool

func IsStringIn added in v1.7.0

func IsStringIn(str string, slice []string) bool

func IsStringsOverlap added in v1.7.0

func IsStringsOverlap(a, b []string) bool

IsStringsOverlap check if two string slices are overlapped

func IsValidIP added in v1.7.0

func IsValidIP(ip string) bool

func JoinHostPort added in v1.8.2

func JoinHostPort(host string, port int32) string

func LastIP added in v1.7.0

func LastIP(subnet string) (string, error)

func ParsePodNetworkAnnotation added in v1.7.0

func ParsePodNetworkAnnotation(podNetworks, defaultNamespace string) ([]*types.NetworkSelectionElement, error)

func ProtocolToFamily added in v1.7.0

func ProtocolToFamily(protocol string) (int, error)

ProtocolToFamily converts protocol string to netlink family

func RemoveString added in v1.7.0

func RemoveString(slice []string, s string) (result []string)

func SplitIpsByProtocol added in v1.7.0

func SplitIpsByProtocol(excludeIps []string) ([]string, []string)

func SplitStringIP added in v1.7.0

func SplitStringIP(ipStr string) (string, string)

func SubnetBroadcast added in v1.7.1

func SubnetBroadcast(subnet string) string

func SubnetNumber added in v1.7.0

func SubnetNumber(subnet string) string

func UniqString added in v1.7.0

func UniqString(a []string) []string

UniqString creates an array of string with unique values.

func ValidateCidrConflict added in v1.9.0

func ValidateCidrConflict(subnet kubeovnv1.Subnet, subnetList []kubeovnv1.Subnet) error

func ValidatePodCidr added in v1.7.0

func ValidatePodCidr(cidr, ip string) error

func ValidatePodNetwork added in v0.4.0

func ValidatePodNetwork(annotations map[string]string) error

func ValidateSubnet added in v1.7.0

func ValidateSubnet(subnet kubeovnv1.Subnet) error

Types

type ExecOptions added in v1.7.0

type ExecOptions struct {
	Command            []string
	Namespace          string
	PodName            string
	ContainerName      string
	Stdin              io.Reader
	CaptureStdout      bool
	CaptureStderr      bool
	PreserveWhitespace bool
}

type IPTableRule

type IPTableRule struct {
	Table string
	Chain string
	Rule  []string
}

IPTableRule wraps iptables rule

type LogicalRouter added in v1.8.0

type LogicalRouter struct {
	Name            string
	Ports           []Port
	LogicalSwitches []LogicalSwitch
}

type LogicalSwitch added in v1.8.0

type LogicalSwitch struct {
	Name  string
	Ports []Port
}

type Port added in v1.8.0

type Port struct {
	Name   string
	Subnet string
}

Jump to

Keyboard shortcuts

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