mirror of
https://github.com/k8snetworkplumbingwg/multus-cni.git
synced 2025-09-03 01:46:12 +00:00
Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
e1a0d2a3fd | ||
|
ecf5854ca9 |
2
go.mod
2
go.mod
@@ -8,7 +8,7 @@ require (
|
|||||||
github.com/containernetworking/plugins v1.1.0
|
github.com/containernetworking/plugins v1.1.0
|
||||||
github.com/fsnotify/fsnotify v1.6.0
|
github.com/fsnotify/fsnotify v1.6.0
|
||||||
github.com/go-logr/logr v1.3.0 // indirect
|
github.com/go-logr/logr v1.3.0 // indirect
|
||||||
github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.7.4
|
github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.7.5
|
||||||
github.com/onsi/ginkgo/v2 v2.13.2
|
github.com/onsi/ginkgo/v2 v2.13.2
|
||||||
github.com/onsi/gomega v1.30.0
|
github.com/onsi/gomega v1.30.0
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
4
go.sum
4
go.sum
@@ -825,8 +825,8 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1
|
|||||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||||
github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
|
github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
|
||||||
github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
|
github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
|
||||||
github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.7.4 h1:vn0d/47rWzEHpDl3Ac7MiD9DfKK3gNBezI5khPKE7AQ=
|
github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.7.5 h1:CELpSMPSyicFBaVsxROmfrWlu9yr3Dduk+y7vGrIsx8=
|
||||||
github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.7.4/go.mod h1:CM7HAH5PNuIsqjMN0fGc1ydM74Uj+0VZFhob620nklw=
|
github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.7.5/go.mod h1:CM7HAH5PNuIsqjMN0fGc1ydM74Uj+0VZFhob620nklw=
|
||||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
||||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
|
@@ -122,6 +122,16 @@ func GetNetworkStatus(pod *corev1.Pod) ([]v1.NetworkStatus, error) {
|
|||||||
return netStatuses, err
|
return netStatuses, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// gatewayInterfaceIndex determines the index of the first interface that has a gateway
|
||||||
|
func gatewayInterfaceIndex(ips []*cni100.IPConfig) int {
|
||||||
|
for _, ipConfig := range ips {
|
||||||
|
if ipConfig.Gateway != nil && ipConfig.Interface != nil {
|
||||||
|
return *ipConfig.Interface
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
// CreateNetworkStatuses creates an array of NetworkStatus from CNI result
|
// CreateNetworkStatuses creates an array of NetworkStatus from CNI result
|
||||||
// Not to be confused with CreateNetworkStatus (singular)
|
// Not to be confused with CreateNetworkStatus (singular)
|
||||||
// This is the preferred method and picks up when CNI ADD results contain multiple container interfaces
|
// This is the preferred method and picks up when CNI ADD results contain multiple container interfaces
|
||||||
@@ -152,14 +162,36 @@ func CreateNetworkStatuses(r cnitypes.Result, networkName string, defaultNetwork
|
|||||||
// Same for DNS
|
// Same for DNS
|
||||||
v1dns := convertDNS(result.DNS)
|
v1dns := convertDNS(result.DNS)
|
||||||
|
|
||||||
|
// Check for a gateway-associated interface, we'll use this later if we did to mark as the default.
|
||||||
|
gwInterfaceIdx := -1
|
||||||
|
if defaultNetwork {
|
||||||
|
gwInterfaceIdx = gatewayInterfaceIndex(result.IPs)
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize NetworkStatus for each container interface (e.g. with sandbox present)
|
// Initialize NetworkStatus for each container interface (e.g. with sandbox present)
|
||||||
indexOfFoundPodInterface := 0
|
indexOfFoundPodInterface := 0
|
||||||
foundFirstSandboxIface := false
|
foundFirstSandboxIface := false
|
||||||
|
didSetDefault := false
|
||||||
for i, iface := range result.Interfaces {
|
for i, iface := range result.Interfaces {
|
||||||
if iface.Sandbox != "" {
|
if iface.Sandbox != "" {
|
||||||
|
isDefault := false
|
||||||
|
|
||||||
|
// If there's a gateway listed for this interface index found in the ips, we mark that interface as default
|
||||||
|
// notably, we use the first one we find.
|
||||||
|
if defaultNetwork && i == gwInterfaceIdx && !didSetDefault {
|
||||||
|
isDefault = true
|
||||||
|
didSetDefault = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, if we didn't find it, we use the first sandbox interface.
|
||||||
|
if defaultNetwork && gwInterfaceIdx == -1 && !foundFirstSandboxIface {
|
||||||
|
isDefault = true
|
||||||
|
foundFirstSandboxIface = true
|
||||||
|
}
|
||||||
|
|
||||||
ns := &v1.NetworkStatus{
|
ns := &v1.NetworkStatus{
|
||||||
Name: networkName,
|
Name: networkName,
|
||||||
Default: defaultNetwork && !foundFirstSandboxIface,
|
Default: isDefault,
|
||||||
Interface: iface.Name,
|
Interface: iface.Name,
|
||||||
Mac: iface.Mac,
|
Mac: iface.Mac,
|
||||||
Mtu: iface.Mtu,
|
Mtu: iface.Mtu,
|
||||||
@@ -172,7 +204,6 @@ func CreateNetworkStatuses(r cnitypes.Result, networkName string, defaultNetwork
|
|||||||
// Map original index to the new slice index
|
// Map original index to the new slice index
|
||||||
indexMap[i] = indexOfFoundPodInterface
|
indexMap[i] = indexOfFoundPodInterface
|
||||||
indexOfFoundPodInterface++
|
indexOfFoundPodInterface++
|
||||||
foundFirstSandboxIface = true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
vendor/modules.txt
vendored
8
vendor/modules.txt
vendored
@@ -114,7 +114,7 @@ github.com/josharian/intern
|
|||||||
# github.com/json-iterator/go v1.1.12
|
# github.com/json-iterator/go v1.1.12
|
||||||
## explicit; go 1.12
|
## explicit; go 1.12
|
||||||
github.com/json-iterator/go
|
github.com/json-iterator/go
|
||||||
# github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.7.4
|
# github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.7.5
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/apis/k8s.cni.cncf.io
|
github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/apis/k8s.cni.cncf.io
|
||||||
github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/apis/k8s.cni.cncf.io/v1
|
github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/apis/k8s.cni.cncf.io/v1
|
||||||
@@ -211,6 +211,8 @@ github.com/vishvananda/netlink/nl
|
|||||||
# github.com/vishvananda/netns v0.0.4
|
# github.com/vishvananda/netns v0.0.4
|
||||||
## explicit; go 1.17
|
## explicit; go 1.17
|
||||||
github.com/vishvananda/netns
|
github.com/vishvananda/netns
|
||||||
|
# golang.org/x/mod v0.13.0
|
||||||
|
## explicit; go 1.18
|
||||||
# golang.org/x/net v0.23.0
|
# golang.org/x/net v0.23.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/net/context
|
golang.org/x/net/context
|
||||||
@@ -783,6 +785,10 @@ k8s.io/client-go/util/homedir
|
|||||||
k8s.io/client-go/util/keyutil
|
k8s.io/client-go/util/keyutil
|
||||||
k8s.io/client-go/util/retry
|
k8s.io/client-go/util/retry
|
||||||
k8s.io/client-go/util/workqueue
|
k8s.io/client-go/util/workqueue
|
||||||
|
# k8s.io/code-generator v0.29.0 => k8s.io/code-generator v0.29.0
|
||||||
|
## explicit; go 1.21
|
||||||
|
# k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01
|
||||||
|
## explicit; go 1.13
|
||||||
# k8s.io/klog v1.0.0
|
# k8s.io/klog v1.0.0
|
||||||
## explicit; go 1.12
|
## explicit; go 1.12
|
||||||
k8s.io/klog
|
k8s.io/klog
|
||||||
|
Reference in New Issue
Block a user