aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Holzinger <paul.holzinger@web.de>2020-12-16 20:28:07 +0100
committerPaul Holzinger <paul.holzinger@web.de>2020-12-16 20:59:45 +0100
commitedf0e918e32f4f109329881310b798f3b2c7defb (patch)
tree56006ac73fd1462c5c7141f1b67567cb3cb19d83
parentbacb2fc526dba7214e3c8420eccc5cf22bbb1a29 (diff)
downloadpodman-edf0e918e32f4f109329881310b798f3b2c7defb.tar.gz
podman-edf0e918e32f4f109329881310b798f3b2c7defb.tar.bz2
podman-edf0e918e32f4f109329881310b798f3b2c7defb.zip
Always add the default gateway to the cni config file
`podman network create` should always add a gateway to the cni config. If no gateway is given use the first ip in the subnet. CNI does not require the gateway field but we need it because of network inspect. This worked with previous version but was dropped in Commit(e7a72d72fd59). Fixes #8748 Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
-rw-r--r--libpod/network/netconflist.go4
-rw-r--r--libpod/network/netconflist_test.go6
-rw-r--r--test/e2e/network_create_test.go3
3 files changed, 11 insertions, 2 deletions
diff --git a/libpod/network/netconflist.go b/libpod/network/netconflist.go
index d61b96ecb..af25ee59c 100644
--- a/libpod/network/netconflist.go
+++ b/libpod/network/netconflist.go
@@ -95,6 +95,10 @@ func NewIPAMLocalHostRange(subnet *net.IPNet, ipRange *net.IPNet, gw net.IP) ([]
}
if gw != nil {
hostRange.Gateway = gw.String()
+ } else {
+ // Add first ip in subnet as gateway. It is not required
+ // by cni but should be included because of network inspect.
+ hostRange.Gateway = CalcGatewayIP(subnet).String()
}
ranges = append(ranges, hostRange)
return ranges, nil
diff --git a/libpod/network/netconflist_test.go b/libpod/network/netconflist_test.go
index 6bf1a9777..5ff733f0f 100644
--- a/libpod/network/netconflist_test.go
+++ b/libpod/network/netconflist_test.go
@@ -51,7 +51,8 @@ func TestNewIPAMLocalHostRange(t *testing.T) {
subnet: &net.IPNet{IP: net.IPv4(192, 168, 0, 0), Mask: net.IPv4Mask(255, 255, 255, 0)},
want: []IPAMLocalHostRangeConf{
{
- Subnet: "192.168.0.0/24",
+ Subnet: "192.168.0.0/24",
+ Gateway: "192.168.0.1",
},
},
},
@@ -74,7 +75,8 @@ func TestNewIPAMLocalHostRange(t *testing.T) {
subnet: &net.IPNet{IP: net.ParseIP("2001:DB8::"), Mask: net.IPMask(net.ParseIP("ffff:ffff:ffff::"))},
want: []IPAMLocalHostRangeConf{
{
- Subnet: "2001:db8::/48",
+ Subnet: "2001:db8::/48",
+ Gateway: "2001:db8::1",
},
},
},
diff --git a/test/e2e/network_create_test.go b/test/e2e/network_create_test.go
index 21b3074fc..7e9a18ab2 100644
--- a/test/e2e/network_create_test.go
+++ b/test/e2e/network_create_test.go
@@ -106,6 +106,7 @@ var _ = Describe("Podman network create", func() {
Expect(bridgePlugin.IPAM.Routes[0].Dest).To(Equal("0.0.0.0/0"))
Expect(bridgePlugin.IsGW).To(BeTrue())
Expect(bridgePlugin.IPMasq).To(BeTrue())
+ Expect(bridgePlugin.IPAM.Ranges[0][0].Gateway).ToNot(BeEmpty())
Expect(portMapPlugin.Capabilities["portMappings"]).To(BeTrue())
})
@@ -153,6 +154,8 @@ var _ = Describe("Podman network create", func() {
// JSON the bridge info
bridgePlugin, err := genericPluginsToBridge(result["plugins"], "bridge")
Expect(err).To(BeNil())
+ // check that gateway is added to config
+ Expect(bridgePlugin.IPAM.Ranges[0][0].Gateway).To(Equal("10.11.12.1"))
// Once a container executes a new network, the nic will be created. We should clean those up
// best we can