Merge pull request #906 from TimFroidcoeur/fix_multiple_default_gw

fix multiple default gw
This commit is contained in:
Doug Smith 2022-09-01 16:18:38 -04:00 committed by GitHub
commit 371123659b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 9 deletions

View File

@ -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
}
}
}

View File

@ -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())
})
})