mirror of
https://github.com/k8snetworkplumbingwg/multus-cni.git
synced 2025-06-27 16:16:53 +00:00
Merge pull request #906 from TimFroidcoeur/fix_multiple_default_gw
fix multiple default gw
This commit is contained in:
commit
371123659b
@ -628,16 +628,14 @@ func CheckGatewayConfig(delegates []*DelegateNetConf) error {
|
||||
|
||||
// set filter flag for each delegate
|
||||
for i, delegate := range delegates {
|
||||
// no GatewayRequest
|
||||
if delegate.GatewayRequest == nil {
|
||||
delegates[i].IsFilterV4Gateway = true
|
||||
delegates[i].IsFilterV6Gateway = true
|
||||
} else {
|
||||
delegates[i].IsFilterV4Gateway = true
|
||||
delegates[i].IsFilterV6Gateway = true
|
||||
if delegate.GatewayRequest != nil {
|
||||
for _, gw := range *delegate.GatewayRequest {
|
||||
if gw.To4() != nil {
|
||||
delegates[i].IsFilterV6Gateway = true
|
||||
delegates[i].IsFilterV4Gateway = false
|
||||
} else {
|
||||
delegates[i].IsFilterV4Gateway = true
|
||||
delegates[i].IsFilterV6Gateway = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -928,7 +928,12 @@ var _ = Describe("config operations", func() {
|
||||
|
||||
netconf, err := LoadDelegateNetConf([]byte(conf), ns, "", "")
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
Expect(CheckGatewayConfig([]*DelegateNetConf{netconf})).To(Succeed())
|
||||
|
||||
Expect(netconf.GatewayRequest).To(BeNil())
|
||||
Expect(netconf.IsFilterV4Gateway).To(BeTrue())
|
||||
Expect(netconf.IsFilterV6Gateway).To(BeTrue())
|
||||
})
|
||||
|
||||
It("test LoadDelegateNetConf keeps empty GatewayRequest", func() {
|
||||
@ -950,8 +955,13 @@ var _ = Describe("config operations", func() {
|
||||
|
||||
netconf, err := LoadDelegateNetConf([]byte(conf), ns, "", "")
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
Expect(CheckGatewayConfig([]*DelegateNetConf{netconf})).To(Succeed())
|
||||
|
||||
Expect(netconf.GatewayRequest).NotTo(BeNil())
|
||||
Expect(len(*netconf.GatewayRequest)).To(BeEquivalentTo(0))
|
||||
Expect(len(*netconf.GatewayRequest)).To(Equal(0))
|
||||
Expect(netconf.IsFilterV4Gateway).To(BeTrue())
|
||||
Expect(netconf.IsFilterV6Gateway).To(BeTrue())
|
||||
})
|
||||
|
||||
It("test LoadDelegateNetConf keeps GatewayRequest", func() {
|
||||
@ -973,8 +983,41 @@ var _ = Describe("config operations", func() {
|
||||
|
||||
netconf, err := LoadDelegateNetConf([]byte(conf), ns, "", "")
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
Expect(CheckGatewayConfig([]*DelegateNetConf{netconf})).To(Succeed())
|
||||
|
||||
Expect(netconf.GatewayRequest).NotTo(BeNil())
|
||||
Expect(len(*netconf.GatewayRequest)).To(BeEquivalentTo(1))
|
||||
Expect(len(*netconf.GatewayRequest)).To(Equal(1))
|
||||
Expect(netconf.IsFilterV4Gateway).To(BeFalse())
|
||||
Expect(netconf.IsFilterV6Gateway).To(BeTrue())
|
||||
})
|
||||
|
||||
It("test LoadDelegateNetConf keeps dual GatewayRequest", func() {
|
||||
conf := `{
|
||||
"name": "node-cni-network",
|
||||
"type": "multus",
|
||||
"kubeconfig": "/etc/kubernetes/node-kubeconfig.yaml",
|
||||
"delegates": [{
|
||||
"name": "weave-list",
|
||||
"plugins": [ {"type" :"weave"} ]
|
||||
}]
|
||||
}`
|
||||
|
||||
nsJSON := `{ "name": "foobar", "default-route": [ "10.1.1.1", "fc00::1" ] }`
|
||||
ns := &NetworkSelectionElement{}
|
||||
|
||||
err := json.Unmarshal([]byte(nsJSON), ns)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
netconf, err := LoadDelegateNetConf([]byte(conf), ns, "", "")
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
Expect(CheckGatewayConfig([]*DelegateNetConf{netconf})).To(Succeed())
|
||||
|
||||
Expect(netconf.GatewayRequest).NotTo(BeNil())
|
||||
Expect(len(*netconf.GatewayRequest)).To(Equal(2))
|
||||
Expect(netconf.IsFilterV4Gateway).To(BeFalse())
|
||||
Expect(netconf.IsFilterV6Gateway).To(BeFalse())
|
||||
})
|
||||
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user